Почему не виден реквизит на форме справочника 1С, если программно Видимость установлена в Истина?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет
← На главную

Разработчики 1С нередко сталкиваются с ситуацией, когда добавленный или типовой реквизит внезапно исчезает с управляемой формы. При этом отладка показывает, что свойства Видимость и Доступность установлены в значение Истина, а в конфигураторе элемент формы присутствует и корректно размещен. В данной статье мы разберем по шагам, почему это происходит, и проанализируем все возможные причины — от функциональных опций до настроек пользователя.

Причина 1: Влияние функциональных опций

Это самая частая и неочевидная причина. В платформе 1С:Предприятие 8 функциональные опции (ФО) имеют приоритет над программной установкой видимости. Если реквизит связан с ФО, которая отключена в настройках программы, элемент не будет отображаться на форме, даже если вы напишете Элементы.ИмяРеквизита.Видимость = Истина; в процедуре ПриСозданииНаСервере.

Рассмотрим, как проверить эту связь:

  1. В конфигураторе найдем интересующий нас реквизит в дереве метаданных (например, в справочнике Номенклатура).
  2. Нажмем правую кнопку мыши и выберем пункт «Поиск ссылок на объект».
  3. Проанализируем список: если реквизит входит в состав какой-либо функциональной опции, это будет указано в результатах поиска.
  4. Альтернативный способ: перейдем на закладку «Дополнительно» в окне свойств реквизита и заглянем в раздел «Функциональные опции».

Важный нюанс: если реквизит включен сразу в несколько функциональных опций, платформа применяет логику «И». Это значит, что элемент станет видимым только в том случае, если включены все связанные с ним опции. Если в базе отключено «Производство» или «Передача сырья в переработку», реквизит СпособПополнения будет скрыт автоматически.

Причина 2: Программная логика в процедурах формы

Даже если в начале процедуры ПриСозданииНаСервере вы видите установку видимости, она может быть переопределена позже. На отображение элементов влияют также процедуры ПриЧтенииНаСервере и ПриОткрытии.

Проанализируем пример кода, который часто встречается в типовых конфигурациях (например, в УНФ):


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Управление видимостью зависит от типа номенклатуры
    Элементы.СпособПополнения.Видимость = ЭтоЗапас();
    
    // Для диагностики выведем значение реквизита
    Сообщить("Способ пополнения: " + Объект.СпособПополнения);
КонецПроцедуры

&НаКлиенте
Функция ЭтоЗапас()
    Возврат Объект.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Запас");
КонецФункции

В данном случае, если тип номенклатуры — «Услуга» или «Работа», реквизит будет скрыт программно при открытии формы. Обратите внимание, что проверка в ПриСозданииНаСервере может не показать этого, так как код ПриОткрытии срабатывает позже на стороне клиента.

Причина 3: Видимость родительских групп

Если реквизит находится внутри группы (или группы групп), проверьте видимость всех вышестоящих уровней. В управляемых формах действует иерархический принцип: если у родительской группы Видимость установлена в Ложь, то ни один из ее дочерних элементов не появится на экране, даже если у них самих стоит Истина.

Выясним причину через «Дерево элементов» формы:

Причина 4: Пользовательские настройки формы

Система 1С позволяет пользователям самостоятельно настраивать состав полей через меню «Еще — Изменить форму». Если пользователь случайно или намеренно снял флажок с реквизита, он исчезнет.

Для решения этой проблемы попробуем следующее:

  1. В режиме «1С:Предприятие» откроем форму элемента.
  2. Зайдем в меню «Еще» и выберем «Изменить форму».
  3. В открывшемся окне нажмем «Еще — Установить стандартные настройки».

Помните, что очистка кэша конфигурации не всегда сбрасывает эти настройки, так как они хранятся в системных таблицах базы данных (в хранилище настроек данных форм).

Причина 5: Условное оформление формы

Разберем еще один механизм платформы — «Условное оформление». Оно находится на соответствующей вкладке в редакторе формы в конфигураторе. Здесь могут быть заданы правила, которые управляют видимостью элементов в зависимости от значений других полей объекта. Эти правила работают на уровне платформы и «перебивают» многие программные установки.

Причина 6: Права доступа и RLS

Хотя разработчики часто проверяют проблему под «Полными правами», стоит убедиться в отсутствии ограничений. Проанализируем настройки прав:

Причина 7: Влияние расширений

Если ваша конфигурация доработана, обязательно проверим наличие расширений. Расширение может содержать собственную версию формы или код, который скрывает элементы. Даже если вы не видите расширений в списке, проверьте наличие установленных «патчей» от фирмы 1С — технически это те же расширения, которые могут изменять логику типовых форм.

Итоговый алгоритм поиска ошибки

Подведем итог нашим изысканиям. Если реквизит не виден, действуйте по следующему плану:

  1. Проверьте функциональные опции. Это наиболее вероятная причина в типовых конфигурациях (УНФ, ERP, УТ). Если опция выключена — включите ее в настройках учета или удалите связь реквизита с этой опцией в метаданных.
  2. Проверьте программный код. Используйте глобальный поиск по имени реквизита. Ищите не только в модуле формы, но и в общих модулях, которые могут вызываться для настройки формы.
  3. Сбросьте пользовательские настройки. Используйте команду «Установить стандартные настройки» в меню «Изменить форму».
  4. Проверьте иерархию групп. Убедитесь, что все контейнеры реквизита видимы.
  5. Сверьтесь с расширениями. Отключите их на время теста, чтобы исключить их влияние.

Использование этого комплексного подхода позволит вам быстро локализовать проблему и вернуть недостающий элемент на форму.

← На главную