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

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

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

Где формируется список команд кнопки «Печать»?

Рассмотрим, как подсистема печати БСП собирает доступные варианты печатных форм для конкретного документа или справочника. Выпадающий список команд кнопки «Печать» в командной панели управляемой формы формируется программно при открытии формы объекта.

Проанализируем структуру кода. Вся регистрация встроенных команд печати выполняется в модуле менеджера соответствующего объекта метаданных (например, документа или справочника). В нем должна быть экспортируемая процедура ДобавитьКомандыПечати.

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


Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    
    // Добавление пользовательской печатной формы
    КомандаПечать = КомандыПечати.Добавить();
    КомандаПечать.Идентификатор = "МояПечатнаяФорма";
    КомандаПечать.Представление = НСтр("ru = 'Моя печатная форма (нетиповая)'");
    КомандаПечать.ПроверкаПраваДоступа = Ложь;
    
КонецПроцедуры

Если вам необходимо добавить новую печатную форму во встроенный механизм объекта, именно в этой процедуре необходимо прописать параметры добавления новой команды в коллекцию КомандыПечати.

Почему новые макеты не видны в разделе «Макеты печатных форм»?

Выясним причину, почему при добавлении макета прямо в конфигуратор он может не отображаться в режиме предприятия по адресу Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм.

Разберем основные факторы, влияющие на индексацию макетов подсистемой БСП:

  1. Правила именования макетов (префиксы): Библиотека Стандартных Подсистем автоматически распознает только те макеты, имена которых соответствуют соглашению о наименовании. Для табличных документов имя макета должно начинаться с префикса ПФ_MXL_ (например, ПФ_MXL_МояФорма). Для текстовых документов Word или OpenOffice применяются префиксы ПФ_DOCX_ и ПФ_ODT_. Если макет назван произвольно, механизм БСП не включит его в список редактируемых макетов предприятия.
  2. Идентификаторы объектов метаданных: Дерево макетов строится с использованием справочника ИдентификаторыОбъектовМетаданных. Если в конфигурацию внесены новые объекты или макеты, но данный справочник не был обновлен в режиме предприятия, подсистема не сможет связать макет с метаданными.

Почему печатные формы не отображаются у пользователей с ограниченными правами?

Рассмотрим распространенную ситуацию: администратор базы видит все команды печати, но на сервере (в клиент-серверном режиме или RDP) у рядового пользователя с ограниченными правами нетиповые печатные формы исчезают из выпадающего меню. При этом копирование базы в файловый вариант локально может временно скрывать проблему.

Проанализируем, почему это происходит:

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

Способы решения проблем с отображением печатных форм

Пошагово разберем действия для исправления работы подсистемы печати:

  1. Переименование макета в конфигураторе: Убедимся, что имя табличного макета в метаданных документа имеет корректный префикс ПФ_MXL_ИмяМакета.
  2. Обновление справочника идентификаторов метаданных: Запустим процедуру обновления метаданных под правами администратора. Это можно сделать через вызов процедур БСП при запуске базы с параметром /C ОбновитьВерсиюИБ или через обработку обновления данных конфигурации.
  3. Сброс кэша подсистемы печати: Выполним очистку повторно используемых значений на сервере с помощью команды: ОбновитьПовторноИспользуемыеЗначения(); Также рекомендуется перезапустить службу сервера 1С или завершить активные сеансы пользователей в терминале.
  4. Проверка параметров команды и журнала регистрации: В процедуре ДобавитьКомандыПечати установим свойство КомандаПечать.ПроверкаПраваДоступа = Ложь;, если команда должна быть доступна всем пользователям, имеющим право на проведение или просмотр документа. Если форма все равно не появляется, проверим Журнал регистрации с отбором по событию «Отказ в доступе» под сеансом проблемного пользователя.
← На главную