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