Как обратиться к текущему элементу формы 1с

от admin

Как обратиться програмно к элементу формы документа 8,3

(1) Действительно, он для отображения только.
"РегистрацияВНалоговомОргане" она только на форме.

При изменении его заполняются другие реквизиты табличной части

&НаКлиенте
Процедура НачисленныйНДФЛРегистрацияВНалоговомОрганеПриИзменении(Элемент)

ТекущиеДанные = Элементы.НачисленныйНДФЛ.ТекущиеДанные;
Если Не ЗначениеЗаполнено(ТекущиеДанные.РегистрацияВНалоговомОргане) Тогда
ТекущиеДанные.КодПоОКАТО = Неопределено;
ТекущиеДанные.КодПоОКТМО = Неопределено;
ТекущиеДанные.КПП = Неопределено;
ТекущиеДанные.КодНалоговогоОргана = Неопределено;
Возврат;
КонецЕсли;

ЗаполнитьЗначенияСвойств(ТекущиеДанные, СведенияОРегистрацииВНалоговомОргане(ТекущиеДанные.РегистрацияВНалоговомОргане), "КодПоОКАТО,КодПоОКТМО,КПП,КодНалоговогоОргана");

(9) Вот так :
ТекущиеДанные = Элементы.НачисленныйНДФЛ.ТекущиеДанные;
.
ТекущиеДанные.РегистрацияВНалоговомОргане

должно быть видно, что доп.колонка находится в коллекции всех реквизитов. Ничем от них не отличаясь. Конечно она в коллекции реквизитов формы есть, а в коллекции реквизитов объекта ее нет. Поэтому — смотри (2).

Шаблон кода: Как в 1С обратиться к элементу формы

Для того чтобы обратиться к элементу формы из модуля объекта этой формы и передать значение в переменную:

Шаблон кода:

мМойДокумент = ЭтотОбъект.Ссылка.ПолучитьФорму(«ФормаДокумента»); // получаем форму документа
НашаПеременная = мМойДокумент.ЭлементыФормы.Дата.Значение; // передаем значение переменной

Для того чтобы обратиться к элементу формы из модуля формы документа:

Шаблон кода:

УПРАВЛЯЕМЫЕ ФОРМЫ

Для того чтобы обратиться к элементу формы из модуля формы документа:

Для того чтобы программно установить значение поля в табличной части документа в :

&НаКлиенте
Процедура ТабличнаяЧасть1ТекущаяДатаПриИзменении(Элемент)
ТекСтрока = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
ТекСтрока.ОстатокОплаченыхДней = 111;
КонецПроцедуры

В данном случае при изменении поля ТекущаяДата происходит автозаполнение поля ОстатокОплаченыхДней.

Еще один пример — заполнение полей табличной части формы при начале редактирования:

Процедура ТабличнаяЧасть1ПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущаяДата = Формат (ТекущаяДата (), «ДФ=dd.MM.yyyy» );
Если НоваяСтрока И Не Копирование Тогда
Элемент.ТекущиеДанные.ТекущаяДата = ТекущаяДата;
Элемент.ТекущиеДанные.Комментарий = «наш комментарий»;
КонецЕсли;
КонецПроцедуры

Для того чтобы записать какие-то данные в поле управляемой формы нужно создать прямо на форме элемент (реквизит создавать не нужно), например, поле ввода и прописать для него, например, результат функции в модуле формы:

Процедура ПриОткрытии(Отказ)
Реквизит1 = ПодсчетИтогаКассы();
КонецПроцедуры

Как обратиться к текущему элементу формы 1с

Ниже перечислены основные объекты 1С, которые используются при работе с управляемыми формами. Даны краткие примеры кода, демонстрирующие традиционное использование данных объектов при написании конфигураций 1С.

Используется в модуле формы, в процедурах &НаКлиенте и &НаСервере .

Читать:
Почему сайт не показывается в гугле

Позволяет обращаться и к элементам формы и к реквизитам.

Обращение к элементу формы происходит через объект Элементы и выглядит так:

Обращение к реквизиту, существующему на форме, происходит так:

Упрощенное обращение к элементам формы и реквизитам

В модуле формы, в принципе, можно не указывать ключевое слово ЭтаФорма . Можно обращаться к элементам формы и к реквизитам упрощенно:

Особенности получения реквизитов форм (важно!)

Если реквизит формы имеет простой тип — Строка , Число , Дата . то получить (установить) значение реквизита можно просто по имени:

Текст=НаименованиеТовара; // Наименование товара — это реквизит формы

Однако, таким образом невозможно получить реквизиты "сложного" типа — ТаблицаЗначений , ДеревоЗначений . При попытке получить реквизит с таким типом по наименованию, будет возвращен объект типа ДанныеФормыКоллекция .

Чтобы получить значение реквизита со "сложным" типом, нужно воспользоваться функцией РеквизитФормыВЗначение() :

Для установки значения "сложного" реквизита, можно воспользоваться функцией ЗначениеВРеквизитФормы(<Значение>, <ИмяРеквизита>) , оба параметра обязательны.

Функции РеквизитФормыВЗначение() и ЗначениеВРеквизитФормы() доступны только на Сервере.

Строго говоря, такого ключевого слова в пределах формы нет. Просто, когда создается форма, например, форма элемента, 1С автоматически создает на форме реквизит с именем Объект . Через данный реквизит доступны свойства текущего объекта, который редактируется на форме.

Например, можно получать ссылку на текущий открытый элемент справочника:

или, более полная запись:

Содержит сам объект. Предназначено для получения объекта в модуле объекта или модуле формы.

Как в форме списка справочника получить ссылку на текущий элемент?

Для получения ссылки на текущий элемент справочника можно обратиться к свойству ТекущаяСтрока элемента управления ТабличноеПоле. Например:

Сообщить(«Текущий элемент: » + ЭлементыФормы.СправочникСписок.ТекущаяСтрока);

Другой способ — обратиться к полю Ссылка текущих данных табличного поля:

Сообщить(«Текущий элемент: » + ЭлементыФормы.СправочникСписок.ТекущиеДанные.Ссылка);

Для списков объектных данных (Справочников, Документов,…) эти способы равнозначны, так как поле Ссылка является идентификатором записи. При обращении к спискам регистров свойство ТекущаяСтрока будет выдавать ключ записи регистра, который состоит из нескольких полей. Таким образом, свойство ТекущаяСтрока для всех типов данных выдает значение, идентифицирующее текущую строку.

Похожие статьи