Почему не отображается табличная часть в справочнике «Профили ключевых операций» и как это исправить

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

В процессе работы с конфигурациями, построенными на базе Библиотеки стандартных подсистем (БСП), такими как «Медицина. Поликлиника», «ERP», «Управление торговлей» и другими, пользователи и разработчики часто сталкиваются с ситуацией, когда в типовом справочнике или документе внезапно «пропадает» табличная часть или отдельные поля. Рассмотрим эту проблему на примере справочника ПрофилиКлючевыхОпераций.

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

Анализ механизма функциональных опций

Основная причина исчезновения элементов в типовых решениях 1С — это работа механизма Функциональных опций (ФО). Функциональные опции позволяют динамически изменять интерфейс и состав метаданных в зависимости от настроек системы. Если определенная функциональность (например, замер производительности) отключена в настройках программы, платформа 1С на уровне сервера исключает связанные с ней элементы из состава формы еще до того, как она будет отрисована у пользователя.

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

Способ 1. Настройка в пользовательском режиме (Администрирование)

Прежде чем переходить к программированию или изменению метаданных, попробуем решить задачу штатными средствами настройки программы. В конфигурации «Медицина. Поликлиника» (и других на базе БСП 3.0) справочник ПрофилиКлючевыхОпераций относится к подсистеме оценки производительности (APDEX).

Выполним следующие действия в пользовательском интерфейсе:

  1. Перейдем в раздел Администрирование.
  2. Найдем пункт Обслуживание (в некоторых версиях — «Поддержка и обслуживание»).
  3. Развернем группу Оценка производительности.
  4. Проверим наличие флага Оценка производительности. Если он снят, установим его.

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

Способ 2. Диагностика связи ФО в конфигураторе

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

  1. Найдем в дереве метаданных справочник ПрофилиКлючевыхОпераций.
  2. Развернем его ветку Табличные части.
  3. Выделим основную табличную часть (например, КлючевыеОперации) и откроем её свойства (нажмем Alt + Enter).
  4. Найдем свойство Функциональные опции и нажмем на кнопку выбора (три точки).

Здесь мы увидим список опций, от которых зависит видимость этой табличной части. Скорее всего, там будет указана опция ВыполнятьЗамерПроизводительности.

Теперь выясним, какая константа хранит это значение. Для этого:

  1. Перейдем в ветку Общие -> Функциональные опции.
  2. Найдем нашу опцию ВыполнятьЗамерПроизводительности.
  3. В поле Хранение посмотрим название константы. Обычно оно совпадает с названием опции.

Для принудительной проверки в коде или в консоли запросов мы можем проверить состояние этой опции:


// Пример программной проверки функциональной опции
ЗначениеОпции = ПолучитьФункциональнуюОпцию("ВыполнятьЗамерПроизводительности");
Если Не ЗначениеОпции Тогда
    Сообщить("Функционал замеров производительности отключен в настройках системы!");
КонецЕсли;

Способ 3. Проверка программной видимости и прав доступа

Если функциональные опции включены, но табличная часть всё равно не видна, проанализируем модуль формы справочника. Нам интересна процедура ПриСозданииНаСервере. В типовых решениях часто встречается программная установка видимости, которая зависит от ролей пользователя или специфических условий отраслевого решения.

Посмотрим на пример того, как это может быть реализовано в коде БСП:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Проверка прав на работу с замерами
    ДоступностьЗамеров = ПравоДоступа("Изменение", Метаданные.Справочники.ПрофилиКлючевыхОпераций);
    Элементы.ГруппаКлючевыеОперации.Видимость = ДоступностьЗамеров;
    
    // Дополнительная проверка на использование подсистемы
    Если Не Константы.ИспользоватьОценкуПроизводительности.Получить() Тогда
        Элементы.ГруппаКлючевыеОперации.Видимость = Ложь;
    КонецЕсли;

КонецПроцедуры

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

Рекомендации по исправлению без изменения метаданных

Ни в коем случае не рекомендуется снимать справочник с поддержки или удалять привязку к функциональным опциям в конфигураторе. Это приведет к трудностям при последующих обновлениях конфигурации «Медицина. Поликлиника».

Вместо этого выполните следующие действия:

Таким образом, мы выяснили, что отсутствие табличной части — это не ошибка программы, а штатное поведение платформы 1С, управляемое функциональными опциями. Последовательная проверка настроек интерфейса, связанных констант и прав доступа позволяет решить проблему в 100% случаев без внесения изменений в типовой код.

← На главную