Ситуация, когда новый реквизит добавлен в объект метаданных и вынесен на форму, но упорно не желает отображаться в режиме «1С:Предприятие», знакома многим разработчикам. Даже при наличии полных прав и установленном свойстве Видимость = Истина, поле может оставаться скрытым. В рамках данной статьи мы подробно разберем, почему так происходит, и пройдем по шагам от простых проверок к глубокому анализу метаданных на примере конфигурации «1С:Документооборот».
Прежде чем переходить к сложным механизмам платформы, проанализируем базовые свойства элемента. В палитре свойств элемента формы необходимо убедиться, что:
ПутьКДанным заполнено корректно (например, Объект.ИмяРеквизита).Видимость и ПользовательскаяВидимость установлены в значение «Истина».Видимость = Ложь, дочерний элемент не отобразится.Рассмотрим ситуацию, когда ручные настройки пользователя перекрывают настройки разработчика. Для этого в режиме «1С:Предприятие» выполним следующие действия:
Как показывает практика, это самая частая «невидимая» причина. Функциональные опции (ФО) позволяют динамически управлять интерфейсом в зависимости от настроек системы. Если реквизит или элемент формы включен в состав ФО, которая в данный момент отключена (ее значение Ложь), платформа принудительно скроет его.
Разберем, как проверить принадлежность реквизита к ФО, если их в конфигурации сотни. Самый быстрый способ — воспользоваться контекстным меню в конфигураторе:
Если в списке ФО стоит галочка, значит, видимость реквизита напрямую зависит от значения этой опции. Часто это происходит при копировании существующих реквизитов — настройки ФО «переезжают» вместе с новым объектом. Чтобы исправить ситуацию, либо включите соответствующую опцию в настройках системы, либо исключите реквизит из состава этой ФО.
Если в конфигураторе все выглядит верно, но поля все равно нет, значит, его скрывает программный код. В сложных конфигурациях, таких как «1С:Документооборот», часто используются общие механизмы управления формой. Проанализируем ситуацию с помощью отладчика.
Установим точку останова в модуле формы в процедуре ПриСозданииНаСервере (в самом конце процедуры) и в ПриОткрытии. Нам нужно проверить текущее состояние свойств элемента:
// В табло отладчика введем:
Элементы.ИмяВашегоРеквизита.Видимость
Элементы.ИмяВашегоРеквизита.Доступность
Если в конце ПриСозданииНаСервере свойство Видимость равно Истина, но на экране элемента нет, проверьте наличие обработчиков УсловноеОформление. Платформа может скрывать элементы через настройки условного оформления формы, которые имеют приоритет перед простыми свойствами элементов.
Также стоит обратить внимание на специализированные подсистемы. Например, в БСП или «Документообороте» может работать механизм «Настройки доступности по состоянию». Выясним причину, заглянув в процедуры типа УстановитьВизуальноеСостояниеФормы или УправлениеФормами.УстановитьСостояниеЭлементов.
Даже обладая ролью ПолныеПрава, разработчик может столкнуться с ограничениями. Проверим следующие моменты:
Если вы выполняли «динамическое обновление» конфигурации базы данных, это могло привести к рассинхронизации кэша на стороне сервера или клиента. Платформа может думать, что формы или реквизита еще не существует.
Проанализируем ситуацию, выполнив следующие действия:
%AppData%\1C\1Cv8 и %LocalAppData%\1C\1Cv8).Для закрепления материала разберем алгоритм действий, если реквизит не виден:
Видимость элемента и всех его родителей (групп) в конфигураторе.Видимость = Ложь в отладчике в процедурах ПриСозданииНаСервере и ПриОткрытии.Следуя этой структуре, вы сможете быстро локализовать проблему и вернуть недостающий реквизит на форму, сэкономив время на бесплодные поиски в коде.