Получение списка реквизитов формы

Программирование - Инструментарий

Все в сабже.

    Получение списка реквизитов формы - тема, поднимающаяся на форумах с постоянной периодичностью, не нова, и давно решена с пом. богатых возможностей formex. Если есть возможность - используйте эту компоненту.
    Рассмотренные в этой публикации методы получения реквизитов, - их можно назвать штатными с точки зрения не использования ВК, не гарантируют полноту данных, и поэтому отнесены мной к разряду занимательного программирования.
    Лучше всего получилось пропарсить файл внешнего отчета и вытащить все реквизиты формы, которые там записаны, вместе с их свойствами (ограничился типом реквизита и флажком его неопределенности).
    Встроенные формы конфигурации, однако, так не пропарсишь. Тут удалось: определить что это за форма, тип, вид объекта, и по ним определить все привязанные реквизиты (например, "ДатаДок" для документа, "ВремяДок", для формы  журнала документа, и.т.д.), и те из них, которые присутствуют на форме (через попытку). Оставщиеся реквизиты формы: таблицы, списки, реквизиты диалога... просто обойдем эмулированием нажатия клавиши {TAB} . Конечно, получилось не просто, - обойти слои, закладки, табличные многореквизитные формы списка, но все же - это получилось.
        В итоге - набор универсальных функций:
глРеквизитыДиалогаФормыВнешнегоОтчета()  - Реквизиты из файла.   Определение реквизитов формы по содержимому файла внешнего отчета
глНачатьПоискРеквизитовОбходом()   - Инициировать обход реквизитов в форме эмулированием TAB
глСчитатьТекущийАктивныйЭлемент()   - При обходе получить текущий активный элемент формы. Вставляется в ПриЗакрытии().
глФункцияВТекстеНаФорме()     - Функция для обхода в текст на форме.
глЭтоФормаСписка()       - По переданному контексту возвращает признак формы списка.
глПолучитьРеквизитыОбъекта()     - По переданному контексту открываемого объекта метаданных формирует его список реквизитов, расположенных на форме.

Смотрите их реализацию в прилагаемом внешнем отчете.

Скачать файлы

Наименование Файл Версия Размер
Получение списка реквизитов формы
.ert 20,50Kb
02.07.13
113
.ert 20,50Kb 113 Скачать

См. также

Комментарии
1. Александр Рытов (Арчибальд) 2660 29.03.10 10:21 Сейчас в теме
Мне тоже частенько на форумах эти вопросы попадались, и тоже решил попробовать. Правда, ограничился внешними отчетами, сделал что-то вроде глРеквизитыДиалогаФормыВнешнегоОтчета() у автора в виде диалога настройки порядка обхода (без самой настройки, конечно), и запал кончился... :(
2. Ёпрст (Ёпрст) 1021 29.03.10 11:10 Сейчас в теме
3. Михаил Семенов (Shaman100M) 1180 29.03.10 12:44 Сейчас в теме
(2) Обходом? Ну, не всё, конечно. По форме списка ползает, по слоям - тоже, невидимые реквизиты - ищет. Вот с недоступными кнопками, списками, таблицами, галками - никак. Из недоступных только реквизиты с значением можно, - их табуляция обходит.
4. Михаил Семенов (Shaman100M) 1180 29.03.10 13:24 Сейчас в теме
(1) да, сюрпризы были, и еще, наверно, остались.
5. Ёпрст (Ёпрст) 1021 30.03.10 08:54 Сейчас в теме
(3) не все контролы табом можно обойти.. например, картинки
6. Ёпрст (Ёпрст) 1021 30.03.10 08:55 Сейчас в теме
+5 да и толку то от половины найденых ? Доступ к атрибуту не получишь никакой, ежели нет идентификатора у него.
7. Михаил Семенов (Shaman100M) 1180 31.03.10 10:59 Сейчас в теме
... еще рамки и тексты, - полный список в конце модуля. Если у реквизита нет идентификатора, видимо, управлять им не планируется.
Оставьте свое сообщение