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

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

При автоматизации документооборота часто возникают задачи, требующие гибкости: например, необходимо разграничить возможности вывода на печать для разных групп сотрудников. Давайте разберем, как реализовать механизм, при котором администраторы получают файлы в формате PDF, а бухгалтеры — в формате Word.

Решение задачи с использованием проверки ролей

Самый прямой и быстрый способ реализовать такую логику — использовать встроенный в платформу 1С метод РольДоступна(). Этот метод позволяет проверить, назначена ли текущему пользователю определенная роль, и на основе этого выполнить нужный фрагмент кода.

Предположим, что у нас уже созданы роли «Администратор» и «Бухгалтер». Рассмотрим процесс реализации:

  1. В конфигураторе создаем роль (или используем существующую), которая однозначно определяет права доступа.
  2. В процедуре печати вставляем проверку, которая определяет формат сохранения файла.

Ниже представлен пример кода, который необходимо интегрировать в вашу серверную процедуру:


// Определяем формат в зависимости от роли пользователя
Если РольДоступна("Администратор") Тогда
    // Выполняем сохранение в PDF
    MSWord.SaveAs("D:\" + "Документ №" + Объект.Номер + ".pdf", 17);
ИначеЕсли РольДоступна("Бухгалтер") Тогда
    // Выполняем сохранение в Word
    MSWord.SaveAs("D:\" + "Документ №" + Объект.Номер + ".docx", 16);
КонецЕсли;

Разберем этот код подробнее. Метод РольДоступна("ИмяРоли") возвращает значение Истина, если пользователю назначена указанная роль, и Ложь в противном случае. Передача параметров 17 и 16 в метод SaveAs соответствует константам WdExportFormat.wdExportFormatPDF и WdSaveFormat.wdFormatXMLDocument в объектной модели MS Office.

Важные замечания по безопасности и архитектуре

Хотя метод РольДоступна() является рабочим решением, проанализируем ситуацию с точки зрения долгосрочной поддержки системы:

Альтернативные подходы к печати

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

Если вы хотите избежать проблем с COM-объектами (зависания, зависимость от установленного Office на сервере), рассмотрим другие варианты:

  1. Табличные документы 1С: Это штатный инструмент платформы. Используя ТабличныйДокумент, вы можете сформировать печатную форму один раз и выгрузить её как в PDF, так и в XLSX (который открывается Word).
  2. Прямая работа с OpenXML: Использование библиотек для формирования DOCX-файлов напрямую из 1С позволяет обойтись без запуска MS Word. Это значительно ускоряет работу и делает код независимым от настроек операционной системы.

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

← На главную