При разработке расширений для типовых конфигураций, таких как 1С:Бухгалтерия предприятия 3.0, программисты часто сталкиваются с ситуацией, когда добавленная команда или кнопка прекрасно видна под полными правами, но бесследно исчезает у рядовых пользователей. В этой статье мы подробно разберем, как правильно добавить команду в справочник ДоговорыКонтрагентов, настроить её отображение в панели навигации и, самое главное, обеспечить корректную раздачу прав доступа.
Рассмотрим стандартную ситуацию: в расширение добавлен справочник, создана новая команда, в свойствах которой указана группа Панель навигации формы.Перейти. Программист видит результат своего труда, но бухгалтер сообщает, что вкладка отсутствует. Основная причина кроется в механизме объединения прав основной конфигурации и расширения. Платформа 1С строго контролирует видимость элементов интерфейса на основе прав доступа, функциональных опций и настроек пользовательского интерфейса.
Проанализируем основные этапы, которые необходимо пройти для успешного внедрения команды.
Прежде всего, убедимся, что команда настроена правильно в самом расширении. Для того чтобы кнопка в принципе могла отобразиться, у команды должен быть назначен обработчик. Пустая команда без исполняемого кода часто игнорируется платформой при отрисовке интерфейса.
В модуле команды обязательно должна присутствовать процедура ОбработкаКоманды. Даже если вы планируете реализовать логику позже, добавьте хотя бы минимальное действие:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
// ПараметрКоманды — это ссылка на договор
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Владелец", ПараметрКоманды));
ОткрытьФорму("Справочник.Мои_ДопРеквизиты.ФормаСписка", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
КонецПроцедуры
Это самый критичный момент. Недостаточно просто создать роль в расширении и отметить галочкой право на команду. Рассмотрим правильный алгоритм работы с ролями:
ОсновнаяРольРасширения) и предоставьте ей права на "Просмотр" вашей команды и связанных объектов.УдаленныйДоступБухгалтерия или ПолныеПрава для тестов), и в ней также проставить право на вашу команду.В современных типовых решениях права назначаются не напрямую пользователям, а через Профили групп доступа. Если вы создали новую роль в расширении, она должна появиться в списке доступных ролей при редактировании профиля в режиме 1С:Предприятие.
Разберем последовательность действий в интерфейсе:
Если визуальная настройка через панель навигации по каким-то причинам не срабатывает (например, из-за специфических доработок формы в основной конфигурации), мы можем прибегнуть к программному методу. Рассмотрим, как добавить кнопку или гиперссылку непосредственно в код формы справочника ДоговорыКонтрагентов.
Для этого создадим расширение формы и используем обработчик ПриСозданииНаСервере:
&НаСервере
&Вместо("ПриСозданииНаСервере")
Процедура Инт_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПродолжитьВызов(Отказ, СтандартнаяОбработка);
// Добавим программную команду на форму, если у пользователя есть права
Если ПравоДоступа("Просмотр", Команды.Инт_МояКоманда) Тогда
// Пример добавления кнопки в группу "ГруппаВажныеКоманды"
НовыйЭлемент = Элементы.Добавить("Инт_КнопкаДопРеквизиты", Тип("КнопкаФормы"), Элементы.ГруппаКоманднаяПанель);
НовыйЭлемент.ИмяКоманды = "Инт_МояКоманда";
НовыйЭлемент.Заголовок = "Дополнительные реквизиты договора";
КонецЕсли;
КонецПроцедуры
Проанализируем еще одну скрытую причину: Функциональные опции. Если ваша команда связана с объектом, который в программе отключен (например, через константу "Использовать дополнительные реквизиты"), команда не отобразится, даже если у пользователя есть полные права. Проверьте, не наследует ли ваша команда настройки от родительских объектов.
Также не забывайте про настройки интерфейса самим пользователем. Выясним, не скрыл ли пользователь команду вручную:
Подведем итог нашего совместного исследования. Для того чтобы команда из расширения стабильно отображалась у всех пользователей в 1С:Бухгалтерия 3.0, необходимо:
Элементы.Добавить() для гарантии результата.Соблюдение этих шагов позволит избежать "мистического" исчезновения кнопок и сделает вашу доработку доступной именно тем сотрудникам, которым она необходима для работы.