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