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