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