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