Как убрать ссылку перехода в регистр сведений из панели навигации формы документа?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

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

Проанализируем сначала, почему платформа «1С:Предприятие» выводит эту команду автоматически. Команда перехода в группе Перейти панели навигации формы создается автоматически при одновременном выполнении четырех условий:

  1. В независимом регистре сведений создано измерение со ссылочным типом данных на данный документ.
  2. У этого измерения установлен признак Ведущее.
  3. В свойствах самого регистра сведений включен флаг Использовать стандартные команды.
  4. Пользователь имеет права на чтение и просмотр данных этого регистра сведений.

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

Способ 1. Отключение свойства «Использовать стандартные команды» у регистра

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

  1. Откроем дерево метаданных в конфигураторе.
  2. Найдем созданный независимый регистр сведений и откроем его палитру свойств.
  3. В разделе «Интерфейсные» найдем свойство Использовать стандартные команды и снимем этот флаг.

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

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

Способ 2. Снятие признака «Ведущее» у измерения регистра

Рассмотрим альтернативный вариант, когда требуется убрать команду перехода, изменив свойства самого измерения.

  1. Перейдем в ветку метаданных регистра сведений и развернем список его измерений.
  2. Откроем свойства измерения, которое содержит ссылку на документ.
  3. Снимем флаг Ведущее.

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

Подводный камень: свойство Ведущее в независимых регистрах сведений отвечает за каскадное удаление записей при физическом удалении документа-хозяина без проверки ссылочной целостности. Если снять этот флаг, то при удалении документов в базе данных останутся «зависшие» записи с битыми ссылками вида «Объект не найден». Чтобы этого избежать, нам придется реализовывать очистку регистра программно, например, создав подписку на событие ПередУдалением для соответствующих документов.

Способ 3. Настройка командного интерфейса конкретной формы документа

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

  1. Откроем в конфигураторе управляемую форму нужного документа.
  2. Перейдем на закладку Командный интерфейс (расположена в нижней части редактора формы).
  3. В дереве команд найдем группу Панель навигации.Перейти.
  4. Найдем строку с именем нашего регистра сведений и снимем с нее флаг видимости.

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

Также важно помнить, что команды панели навигации, сформированные платформой по ведущему измерению, не входят в программную коллекцию Элементы формы. По этой причине скрыть такую ссылку кодом вида Элементы.ИмяКоманды.Видимость = Ложь в обработчике ПриСозданииНаСервере невозможно.

Способ 4. Использование функциональных опций

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

  1. Создадим новую функциональную опцию или используем существующую неактивную опцию.
  2. В состав объектов функциональной опции включим наш регистр сведений.
  3. Оставим значение опции равным Ложь.

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

Способ 5. Ограничение прав доступа через роли

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

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

← На главную