Как добавить команду в форму справочника через расширение и сделать её видимой для всех пользователей

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

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

Анализ проблемы: почему команда не видна?

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

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

Шаг 1. Создание команды и обязательный код

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

В модуле команды обязательно должна присутствовать процедура ОбработкаКоманды. Даже если вы планируете реализовать логику позже, добавьте хотя бы минимальное действие:


&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    // ПараметрКоманды — это ссылка на договор
    ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Владелец", ПараметрКоманды));
    ОткрытьФорму("Справочник.Мои_ДопРеквизиты.ФормаСписка", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
КонецПроцедуры

Шаг 2. Настройка прав доступа в расширении

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

  1. Создание роли расширения: Создайте новую роль (например, ОсновнаяРольРасширения) и предоставьте ей права на "Просмотр" вашей команды и связанных объектов.
  2. Заимствование типовых ролей: В некоторых случаях (особенно в БСП-ориентированных конфигурациях) полезно добавить в расширение типовую роль, которая уже есть у пользователей (например, УдаленныйДоступБухгалтерия или ПолныеПрава для тестов), и в ней также проставить право на вашу команду.
  3. Свойство расширения: Зайдите в свойства самого расширения (корневой элемент в дереве объектов). Убедитесь, что установлен флаг Использовать основные роли для всех пользователей. Если этот флаг снят, права расширения будут игнорироваться, пока их явно не назначат в профиле групп доступа.

Шаг 3. Внедрение роли в профили доступа

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

Разберем последовательность действий в интерфейсе:

Шаг 4. Программное управление видимостью команды

Если визуальная настройка через панель навигации по каким-то причинам не срабатывает (например, из-за специфических доработок формы в основной конфигурации), мы можем прибегнуть к программному методу. Рассмотрим, как добавить кнопку или гиперссылку непосредственно в код формы справочника ДоговорыКонтрагентов.

Для этого создадим расширение формы и используем обработчик ПриСозданииНаСервере:


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

Шаг 5. Работа с функциональными опциями и кэшем

Проанализируем еще одну скрытую причину: Функциональные опции. Если ваша команда связана с объектом, который в программе отключен (например, через константу "Использовать дополнительные реквизиты"), команда не отобразится, даже если у пользователя есть полные права. Проверьте, не наследует ли ваша команда настройки от родительских объектов.

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

  1. В форме договора нажмите Еще — Изменить форму.
  2. Проверьте список элементов в левой части. Если ваша команда там есть, но флаг снят — просто установите его.
  3. Иногда помогает кнопка Установить стандартные настройки в этом же окне. Это сбросит кэшированные настройки формы для конкретного пользователя.

Итоги

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

  1. Убедиться в наличии исполняемого кода в модуле команды.
  2. Включить в расширение роль и настроить права на чтение/просмотр всех новых объектов и команд.
  3. Установить в свойствах расширения флаг Использовать основные роли для всех пользователей.
  4. Проверить, что роль расширения включена в соответствующий профиль групп доступа в режиме "Предприятие".
  5. При необходимости использовать программное создание элементов формы через Элементы.Добавить() для гарантии результата.

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

← На главную