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