[Практика программирования] Управляемые формы 1С 8: как программно определить основной реквизит формы
Среди зарезервированных методов и функций 1С 8 на момент написания данной публикации (последний релиз платформы 8.3.20) до сих пор отсутствует код, который бы позволял получить или определить, какой из реквизитов управляемой формы является основным.
Основной реквизит формы в списке реквизитов выделяется жирным шрифтом. Не будем в этом тексте описывать всю суть относительно основного реквизита управляемой формы в 1С, достаточно обратиться к статье на эту тему: "Основной реквизит формы 1С 8". Необходимость определять основной реквизит управляемой формы возникла в рамках прикладной задачи, которая выразилась в доработке по реализации механизма "печать по умолчанию" в формах документов и справочников, как это было в типовых конфигурациях, работающих в режиме обычного приложения. И, как показала практика, поиск основного реквизита формы возможен и в других прикладных задачах. Поэтому можно найти обсуждения по этому вопросу начиная с 2012 года, например в обсуждении на форуме программирования 1С "Можно ли программно узнать основной реквизит управляемой формы?". Из близких по сути вопроса функций подходит только "Форма.ПолучитьРеквизиты()", но она не является решением, т.к. она только возвращает список всех реквизитов формы, представленный в виде коллекции значений типа "Массив". Проблема отсутствия в коде предопределенной процедуры или функции языка программирования 1С сохраняется. Поэтому не остается ничего, как только с помощью дополнительного кода описать поиск основного реквизита. Исходник кода был найден на странице форума mista. Благодаря тому, что с помощью "ПолучитьРеквизиты()" можно получить список реквизитов формы, а каждый реквизит имеет свойства "Заголовок" типа "Строка", "Имя" типа "Строка", "Путь" типа "Строка", "Сохраняемые данные" типа "Булево", "Тип значения" типа "ОписаниеТипов", становится возможным с помощью кода, пример которого приведен ниже определить основной реквизит управляемой формы в 1С 8: Реквизиты = Форма.ПолучитьРеквизиты(); Решение базируется на том основании, что в зачастую в типовых решениях 1С 8 основным реквизитом формы является либо реквизит типа "ДанныеФормыСтруктура", либо "ДинамическийСписок". Конечно, в нетиповых решениях или даже в вручную сконфигурированных формах ситуация может быть другой и тогда нужно придумывать еще другой вариант поиска с помощью кода. Но это будет встречаться крайне редко. Оцените, оказалась ли эта публикация полезна для Вас?
© www.azhur-c.ru 2013-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу. 10-05-2022 Журавлев А.С. (Сайт azhur-c.ru) |
|
|||||||||||||
Copyright 2013-. Azhur-c.ru
ИП Журавлев Александр Сергеевич ИНН 667000271590 ОГРНИП 312667014300041 |