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


Все в сабже.

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

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

Файлы обработки:

-