Как скрыть ссылки на движения документа в управляемой форме 1С

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

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

Способ 1: Использование командного интерфейса формы в конфигураторе

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

Рассмотрим по шагам процесс настройки в конфигураторе:

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

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

Способ 2: Программное управление видимостью

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

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

Посмотрим на пример кода, который скрывает движение по конкретному регистру накопления:


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

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

Способ 3: Настройка прав доступа (Ролевая модель)

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

Проанализируем преимущества этого подхода:

Для реализации этого метода найдите в дереве конфигурации нужную роль, перейдите к объекту (например, регистру накопления) и снимите флажок с права «Просмотр».

Способ 4: Особенности для конфигураций на базе БСП

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

Для управления такими командами в БСП предусмотрены свои механизмы. Проанализируем, как это работает:

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

Способ 5: Функциональные опции

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

Индивидуальная настройка пользователем

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

Пользователь может нажать кнопку «Ещё» — «Изменить форму». В открывшемся окне в дереве элементов можно найти раздел «Командный интерфейс» и самостоятельно снять галочки с ненужных пунктов. Если вы, как разработчик, хотите запретить пользователям скрывать или отображать эти элементы, вам необходимо в свойствах формы в конфигураторе отключить возможность изменения состава командного интерфейса (свойство ИзменятьСоставФормы).

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

← На главную