Как программно определить элементы формы, скрытые функциональными опциями

29.07.26

Разработка - Механизмы платформы 1С

Поиск элементов формы, скрытых функциональными опциями. Описание метода поиска и ссылка на внешнюю обработку.

Задача: определить список элементов формы, которые скрываются определенной функциональной опцией

  1. Когда элемент формы скрывается функциональной опцией его свойство "Видимость" не изменяется.
  2. То есть, у элемента формы свойство "Видимость"=Истина, но он все равно - не показывается на форме
  3. Программно "понять" что элемент формы скрыт - невозможно, ни одно свойство у скрытого элемента не изменяется
  4. В конфигураторе найти связь скрытого элемента формы с функциональной опцией - является достаточно трудоемкой задачей

 

Решение (кратко): попытаться установить элемент формы - текущим элементом формы, если это возможно, то он не скрыт.

 

В форме функциональные опции могут влиять на ее реквизиты, а значит(и как следствие), и на элементы формы (поля ввода, таблицы, страницы и прочие), связанные с этими реквизитами, и на команды формы, а значит, на кнопки формы, кнопки командных панелей.(источник: https://its.1c.ru/db/pubv8devui#content:144:hdoc)

 

В итоге, функциональные опции могут скрывать следующие элементы формы:

  • таблица формы
  • поле формы
  • кнопка формы

 

Найти связь интерфейсной функциональной опции с элементом формы через конфигуратор - является достаточно трудоемкой задачей - необходимо проверить:

  1.  
    элемент формы связан с реквизитом объекта метаданных, который входит в состав функциональной опции
  2.  
    элемент формы связан с реквизитом объекта метаданных, тип этого реквизита входит в состав функциональной опции
  3.  
    элемент формы связан с реквизитом/командой формы у которых заполнено свойство "Функциональные опции"
 

В итоге есть только один способ программно "понять" - скрыт ли элемент формы:

  • Способ: попытаться установить элемент формы - текущим элементом формы
  • Для скрытого элемента формы - установить его текущим элементом не получится
  • Таблица формы - полностью работает
  • Поле формы - полностью работает (для поля формы которое является колонкой таблицы - попытаться установить это поле текущим элементом таблицы, следует учитывать, что в этом случае, при проверке - автоматически вызываются обработчики таблицы: ПриАктивацииЯчейки() и ПриАктивацииПоля())
  • Кнопка формы - работает только для вида "Обычная кнопка" (для кнопок в командной панели или контекстном меню - не получится)
  • Этот способ не отличает элементы формы, скрытые функциональными опциями от отключенных через меню формы  "Еще --> Изменить форму". По этому, рекомендуется или установить стандартные настройки (Еще --> Установить стандартные настройки) или включить вручную все отслеживаемые элементы.

 

Внешняя обработка Менеджер открытых форм, в обработке есть два варианта поиска скрытых элементов формы:

  1.  
     Показать все скрытые элементы формы
  2.  
     Отследить действие конкретной функциональной опции

    Инструкция:

    1. Включить функциональную опцию (если она отключена)
    2. В отслеживаемой форме через меню формы ЕЩЕ --> Изменить форму... включить все отключенные пользователем реквизиты, если таковые есть. (этот пункт не обязателен)
    3. Во внешней обработке Менеджер открытых форм: в списке форм - открыть отслеживаемую форму
    4. Во внешней обработке Менеджер открытых форм: Элементы формы --> Контекcтное меню --> Функциональные опции --> Показать элементы формы, скрытые функциональными опциями
    5. Отключить функциональную опцию
    6. Во внешней обработке Менеджер открытых форм: Элементы формы --> Контекcтное меню --> Функциональные опции --> Показать отличия
    7. Результат: список элементов формы, состояния которых (скрыт/показан) изменилось после отключения функциональной опции. Отслеживаемые элементы формы: таблица формы, поле формы и кнопка формы (кроме кнопок в командном меню или контекстном меню)

Вступайте в нашу телеграмм-группу Инфостарт

функциональные опции видимость скрыт элемент формы невидимый элемент формы скрытый реквизит

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Механизмы платформы 1С Программист Бесплатно (free)

Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?

16.07.2025    39979    TitanLuchs    109    

151

Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    22560    bayselonarrend    127    

68

Механизмы платформы 1С Программист 1С:Предприятие 8 Бесплатно (free)

В этой статье подробно рассматривается работа с JSON в XDTO в 1С:Предприятие. Вы узнаете, как сериализовать и десериализовать объекты XDTO в JSON, интегрировать 1С с веб-сервисами и API, а также корректно обрабатывать данные при обмене. Разбираются особенности работы с коллекциями, использование функций восстановления и частые ошибки при работе с JSON и XDTO.

30.01.2025    28440    user2122906    10    

67

Механизмы платформы 1С Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 Бесплатно (free)

Этот материал познакомит вас с механизмом XDTO (XML Data Transfer Objects) в 1С и научит эффективно использовать его возможности. Мы разберёмся, как работать с XML-схемами, создавать модели данных, манипулировать объектами XDTO, а также сериализовать и десериализовать их в XML. Вы узнаете, как использовать XDTO для интеграции с внешними системами, избегать типичных ошибок и оптимизировать код. К концу вы будете уверенно применять XDTO для решения сложных задач обмена данными и автоматизации процессов.

17.01.2025    47999    user2122906    12    

63

Механизмы платформы 1С WEB-интеграция Программист 1С:Предприятие 8 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    40872    dsdred    108    

155

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    35818    bayselonarrend    22    

179

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    20404    dsdred    22    

89
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kalyaka 1182 29.07.26 21:00 Сейчас в теме
не понял, какую задачу решаете: найти элементы формы, на которые влияет функциональная опция? Может просто собрать информацию по типам в элементах формы и по ним вывести функциональные опции?
2. G_106287686440448403698 18 29.07.26 23:38 Сейчас в теме
не понял, какую задачу решаете: найти элементы формы, на которые влияет функциональная опция?

Как программно определить элементы формы, скрытые функциональными опциями

Может просто собрать информацию по типам в элементах формы и по ним вывести функциональные опции?

А что значит просто собрать ? Например в ERP в форме элемента справочника номенклатура - более 100 реквизитов и около 40 команд. Нужно в конфигураторе - вручную - зайти в свойство "Функциональные опции" каждого реквизита и каждой команды. В этом свойстве, выбранные опции перечислены в строке через запятую, если раскрыть свойство - откроется список из 800 интерфейсных функциональных опций.
V.Nikonov; +1 Ответить
4. kalyaka 1182 30.07.26 14:11 Сейчас в теме
(2)
Как программно определить элементы формы, скрытые функциональными опциями
точнее найти влияние функциональных опций на элементы формы. Функциональные опции могут быть и программными, а не только декларативно заданные.
Ок.
Предложу еще способ: анализ исходников и сверка по типам реквизитов из состава функциональных опций.
5. kalyaka 1182 30.07.26 14:13 Сейчас в теме
(2) еще Ваше решение хорошо подойдет для исследования того, как меняется форма в разных состояниях.
3. dhurricane 30.07.26 11:09 Сейчас в теме
Как программно определить элементы формы, скрытые функциональными опциями

Из спортивного интереса? :)
6. Pr-Mex 187 02.08.26 13:19 Сейчас в теме
Такое может быть использовано при работе автотестов. Там тоже возникает проблема определения реальной видимости элемента формы.
Вопрос:
1. Что делать, если у поля есть обработчик ПриАктивизации? Там ведь может быть что угодно написано.
2. Что делать, если надо проверить колонку таблицы, но в ней нет строк?
G_106287686440448403698; +1 Ответить
7. G_106287686440448403698 18 02.08.26 13:52 Сейчас в теме
(6)
1. Что делать, если у поля есть обработчик ПриАктивизации? Там ведь может быть что угодно написано.

И так, это касается только поля формы, которое является колонкой таблицы.

Для проверки "скрытости": изменяется свойство таблицы "ТекущийЭлемент", в это время обработчики таблицы:
ПриАктивацииСтроки - не срабатывает
ПриАктивизацииПоля - срабатывает
ПриАктивацииЯчейки - срабатывает

Да действительно, обработчки таблицы ПриАктивацииПоля() и ПриАктивацииЯчейки() - вызываются во время проверки, это нужно учитывать. Добавлю информацию - про эти обработчики в публикацию.

В этих обработчиках не должно быть написано "все что угодно", так как для них есть платформенные ограничения: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере, а также изменять свойства, которые могут привести к серверному вызову.

(6)
2. Что делать, если надо проверить колонку таблицы, но в ней нет строк?

Наличие, или отсутствие строк не влияет на возможность установить текущий элемент таблицы.
Для отправки сообщения требуется регистрация/авторизация