Принадлежность формы тому или иному объекту конфигурации не определяет состав данных, которые отображаются в форме. То, что форма принадлежит, например, справочнику "Номенклатура", позволяет назначить ее одной из основных форм для этого справочника, но никак не определяет:
- какие же именно данные будет отображать эта форма, и
- каково будет ее поведение.
Все формы, сами по себе, имеют одинаковое поведение, независимо от того, какие данные они отображают.
Для того чтобы связать форму с данными, используются реквизиты формы, в которых указывается перечень данных, отображаемых формой.
Реквизиты формы предназначены для хранения данных, которые редактируются в форме.
Один из реквизитов может быть назначен основным реквизитом формы.
Основной реквизит формы 1С предназначен для определения:
- источника данных для формы в целом;
- стандартных возможностей платформы для работы формы с данными типа, заданного у основного реквизита.
Для назначения реквизита формы основным реквизитом необходимо:
- произвольной управляемой форме - в свойствах реквизита формы установить флажок "Основной реквизит";
Рисунок "Основной реквизит формы 1С"[свернуть]
- произвольной обычной форме - заполнить свойство "Данные" формы, выбрав нужный реквизит формы (не имеют основного реквизита, поведение формы определяется только настройками пользователя).
При назначении основного реквизита формы происходит следующее:
- поведение формы изменяется в соответствии с типом этого реквизита;
- изменяется контекст модуля формы (наряду с методами и свойствами формы, в нем становятся доступны методы и свойства объекта, являющегося значением основного реквизита).
Вследствие объединения контекстов формы и объекта могут возникать конфликты имен методов и свойств. Методы и свойства формы имеют приоритет над методами и свойствами объекта.
Обращение к свойству объекта можно осуществлять через имя основного реквизита формы.
Есть форма с двумя реквизитами: ДокументОбъект, Реквизит1.
Реквизит ДокументОбъект является основным реквизитом и имеет в свою очередь реквизиты с именами Реквизит1, Реквизит2. Тогда обращение к реквизитам в модуле формы будет осуществляться следующим образом:
1 2 3 4 |
Реквизит1 = 12; // Обращение к реквизиту формы Реквизит2 = 34; // Неявное обращение к реквизиту реквизита ДокументОбъект ДокументОбъект.Реквизит1 = 56; // Явное обращение к реквизиту реквизита ДокументОбъект ДокументОбъект.Реквизит2 = 78; // Явное обращение к реквизиту реквизита ДокументОбъект |
Таким образом, стандартное поведение формы и ее свойства будут дополнены в зависимости от того, какой тип имеет основной реквизит формы.
Например, если в качестве основного реквизита формы будет назначен документ Поступление товаров и услуг, то при закрытии формы система будет запрашивать подтверждение записи и проведения этого документа. Если же основным реквизитом формы назначить, скажем, справочник Номенклатура, то подобного запроса подтверждения при закрытии формы возникать не будет.
Обращение к реквизиту через переменную
1 2 3 4 5 6 7 8 9 |
// отключаем все ТСД2...ТСД6 и делаем их недоступными Для ПеременнаяРеквизита = 2 По 6 Цикл Выполнить("ТСД"+ПеременнаяРеквизита+" = ЛОЖЬ"); КонецЦикла; Для ПеременнаяРеквизита = 2 По 6 Цикл Выполнить("ЭлементыФормы.ТСД"+ПеременнаяРеквизита+".Доступность = ЛОЖЬ"); Выполнить("ЭлементыФормы.ТСДКол"+ПеременнаяРеквизита+".Доступность = ЛОЖЬ"); КонецЦикла; |