gifts2017

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

Опубликовал Михаил Семенов (Shaman100M) в раздел Программирование - Инструментарий

Все в сабже.

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

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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

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