При разработке и доработке управляемых форм в 1С:Предприятии разработчики нередко сталкиваются с ситуацией, когда элемент интерфейса (колонка таблицы или отдельное поле ввода) полностью отсутствует на форме в режиме «1С:Предприятие». При этом в отладчике проверка свойства Элементы.ИмяЭлемента.Видимость возвращает значение Истина, а в стандартном окне пользовательской настройки «Все действия — Изменить форму» элемент не отображается вовсе, и его невозможно включить вручную.
Разберем основные причины такого поведения платформы и детально рассмотрим пошаговые способы диагностики и устранения проблемы.
Наиболее распространенная причина, по которой элемент бесследно исчезает с формы и из диалога настройки формы — работа механизма функциональных опций. Если функциональная опция отключена в информационной базе, платформа на системном уровне исключает связанные с ней данные из интерфейса.
Важно помнить, что функциональная опция может быть назначена не только на весь документ или конкретный элемент формы в конфигураторе, но и непосредственно на реквизит объекта или реквизит табличной части в дереве метаданных. В этом случае любое поле формы, связанное с этим реквизитом через свойство ПутьКДанным, будет принудительно скрыто, даже если в коде формы явно задана видимость.
Проверим привязку реквизита к функциональным опциям по следующим шагам:
ПересчетТоваров) и раскроем его реквизиты или реквизиты табличной части (например, реквизит Упаковка табличной части Товары).ИспользоватьАдресноеХранение или ИспользоватьУпаковкиНоменклатуры).В типовых конфигурациях (таких как 1С:ERP, Комплексная автоматизация, Управление торговлей) функциональные опции часто зависят от параметров — например, от признаков конкретного склада, подразделения или типа номенклатуры. Если параметр опции на форме не инициализирован или изменился в процессе работы, платформа автоматически скроет зависимые элементы.
Для корректной работы параметрических опций формы в коде обработчиков (при создании формы на сервере, при чтении объекта или при изменении ключевых реквизитов шапки) должен вызываться метод обновления параметров функциональных опций. Рассмотрим пример серверного кода:
&НаСервере
Процедура ОбновитьОпцииФормыНаСервере()
// Устанавливаем параметры функциональных опций для текущей формы
ПараметрыОпций = Новый Структура;
ПараметрыОпций.Вставить("Склад", Объект.Склад);
УстановитьПараметрыФункциональныхОпцийФормы(ПараметрыОпций);
КонецПроцедуры
Если для выбранного склада отключено использование упаковок или адресного хранения, платформа на основании переданных параметров автоматически скроет колонку упаковки на форме.
Если у текущего пользователя нет роли с правом Просмотр или Чтение на конкретный реквизит объекта метаданных, платформа скрывает связанный элемент управления на клиенте. В окне «Изменить форму» пользователь также не сможет его увидеть, а обращение к свойству Видимость в отладчике может вводить в заблуждение.
Выясним, есть ли у текущего сеанса права на чтение и просмотр проблемного реквизита, с помощью вызова функции в табло отладчика или в коде:
ЕстьПравоПросмотра = ПравоДоступа("Просмотр", Метаданные.Документы.ПересчетТоваров.ТабличныеЧасти.Товары.Реквизиты.Упаковка);
Если Не ЕстьПравоПросмотра Тогда
ВызватьИсключение "У текущего пользователя отсутствуют права на просмотр реквизита!";
КонецЕсли;
В конфигураторе для каждого элемента управляемой формы предусмотрена матрица видимости по ролям. Если видимость отключена для роли текущего пользователя, элемент не передается в клиентский интерфейс.
Проанализируем свойства элемента:
Если элемент управления помещен внутри группы элементов (например, группы колонок таблицы с видом В ячейке), его фактическое отображение может блокироваться правилами родительской группы или соседних элементов. Например, если соседнее поле скрыто или занимает всю ширину ячейки, целевой элемент может визуально схлопываться.
Для локализации такой проблемы рекомендуется временно вынести элемент из группы в корень таблицы или на уровень формы и проверить его отображение в режиме предприятия.