Как обратиться програмно к элементу формы документа 8,3
(1) Действительно, он для отображения только.
"РегистрацияВНалоговомОргане" она только на форме.
При изменении его заполняются другие реквизиты табличной части
&НаКлиенте
Процедура НачисленныйНДФЛРегистрацияВНалоговомОрганеПриИзменении(Элемент)
ТекущиеДанные = Элементы.НачисленныйНДФЛ.ТекущиеДанные;
Если Не ЗначениеЗаполнено(ТекущиеДанные.РегистрацияВНалоговомОргане) Тогда
ТекущиеДанные.КодПоОКАТО = Неопределено;
ТекущиеДанные.КодПоОКТМО = Неопределено;
ТекущиеДанные.КПП = Неопределено;
ТекущиеДанные.КодНалоговогоОргана = Неопределено;
Возврат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ТекущиеДанные, СведенияОРегистрацииВНалоговомОргане(ТекущиеДанные.РегистрацияВНалоговомОргане), "КодПоОКАТО,КодПоОКТМО,КПП,КодНалоговогоОргана");
(9) Вот так :
ТекущиеДанные = Элементы.НачисленныйНДФЛ.ТекущиеДанные;
.
ТекущиеДанные.РегистрацияВНалоговомОргане
должно быть видно, что доп.колонка находится в коллекции всех реквизитов. Ничем от них не отличаясь. Конечно она в коллекции реквизитов формы есть, а в коллекции реквизитов объекта ее нет. Поэтому — смотри (2).
Шаблон кода: Как в 1С обратиться к элементу формы
Для того чтобы обратиться к элементу формы из модуля объекта этой формы и передать значение в переменную:
Шаблон кода:
мМойДокумент = ЭтотОбъект.Ссылка.ПолучитьФорму(«ФормаДокумента»); // получаем форму документа
НашаПеременная = мМойДокумент.ЭлементыФормы.Дата.Значение; // передаем значение переменной
Для того чтобы обратиться к элементу формы из модуля формы документа:
Шаблон кода:
УПРАВЛЯЕМЫЕ ФОРМЫ
Для того чтобы обратиться к элементу формы из модуля формы документа:
Для того чтобы программно установить значение поля в табличной части документа в :
&НаКлиенте
Процедура ТабличнаяЧасть1ТекущаяДатаПриИзменении(Элемент)
ТекСтрока = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
ТекСтрока.ОстатокОплаченыхДней = 111;
КонецПроцедуры
В данном случае при изменении поля ТекущаяДата происходит автозаполнение поля ОстатокОплаченыхДней.
Еще один пример — заполнение полей табличной части формы при начале редактирования:
Процедура ТабличнаяЧасть1ПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущаяДата = Формат (ТекущаяДата (), «ДФ=dd.MM.yyyy» );
Если НоваяСтрока И Не Копирование Тогда
Элемент.ТекущиеДанные.ТекущаяДата = ТекущаяДата;
Элемент.ТекущиеДанные.Комментарий = «наш комментарий»;
КонецЕсли;
КонецПроцедуры
Для того чтобы записать какие-то данные в поле управляемой формы нужно создать прямо на форме элемент (реквизит создавать не нужно), например, поле ввода и прописать для него, например, результат функции в модуле формы:
Процедура ПриОткрытии(Отказ)
Реквизит1 = ПодсчетИтогаКассы();
КонецПроцедуры
Как обратиться к текущему элементу формы 1с
Ниже перечислены основные объекты 1С, которые используются при работе с управляемыми формами. Даны краткие примеры кода, демонстрирующие традиционное использование данных объектов при написании конфигураций 1С.
Используется в модуле формы, в процедурах &НаКлиенте и &НаСервере .
Позволяет обращаться и к элементам формы и к реквизитам.
Обращение к элементу формы происходит через объект Элементы и выглядит так:
Обращение к реквизиту, существующему на форме, происходит так:
Упрощенное обращение к элементам формы и реквизитам
В модуле формы, в принципе, можно не указывать ключевое слово ЭтаФорма . Можно обращаться к элементам формы и к реквизитам упрощенно:
Особенности получения реквизитов форм (важно!)
Если реквизит формы имеет простой тип — Строка , Число , Дата . то получить (установить) значение реквизита можно просто по имени:
Текст=НаименованиеТовара; // Наименование товара — это реквизит формы
Однако, таким образом невозможно получить реквизиты "сложного" типа — ТаблицаЗначений , ДеревоЗначений . При попытке получить реквизит с таким типом по наименованию, будет возвращен объект типа ДанныеФормыКоллекция .
Чтобы получить значение реквизита со "сложным" типом, нужно воспользоваться функцией РеквизитФормыВЗначение() :
Для установки значения "сложного" реквизита, можно воспользоваться функцией ЗначениеВРеквизитФормы(<Значение>, <ИмяРеквизита>) , оба параметра обязательны.
Функции РеквизитФормыВЗначение() и ЗначениеВРеквизитФормы() доступны только на Сервере.
Строго говоря, такого ключевого слова в пределах формы нет. Просто, когда создается форма, например, форма элемента, 1С автоматически создает на форме реквизит с именем Объект . Через данный реквизит доступны свойства текущего объекта, который редактируется на форме.
Например, можно получать ссылку на текущий открытый элемент справочника:
или, более полная запись:
Содержит сам объект. Предназначено для получения объекта в модуле объекта или модуле формы.
Как в форме списка справочника получить ссылку на текущий элемент?
Для получения ссылки на текущий элемент справочника можно обратиться к свойству ТекущаяСтрока элемента управления ТабличноеПоле. Например:
Сообщить(«Текущий элемент: » + ЭлементыФормы.СправочникСписок.ТекущаяСтрока);
Другой способ — обратиться к полю Ссылка текущих данных табличного поля:
Сообщить(«Текущий элемент: » + ЭлементыФормы.СправочникСписок.ТекущиеДанные.Ссылка);
Для списков объектных данных (Справочников, Документов,…) эти способы равнозначны, так как поле Ссылка является идентификатором записи. При обращении к спискам регистров свойство ТекущаяСтрока будет выдавать ключ записи регистра, который состоит из нескольких полей. Таким образом, свойство ТекущаяСтрока для всех типов данных выдает значение, идентифицирующее текущую строку.