Как запретить сохранение печатных форм в PDF в 1С:Предприятие

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

В практике администрирования и разработки на платформе 1С:Предприятие нередко возникает задача ограничить выгрузку ценных корпоративных данных во внешние файлы. Одним из частых запросов со стороны служб безопасности является запрет на сохранение печатных форм документов в формате PDF через стандартное системное меню «Файл — Сохранить как». При этом желательно оставить пользователям возможность просматривать документы на экране или выводить их на бумажную печать.

В этой статье мы подробно проанализируем, почему штатного селективного переключателя для отключения конкретно формата PDF в платформе не существует, выясним причину такого поведения системы и разберем по шагам несколько альтернативных и полностью рабочих вариантов решения этой задачи.

Почему нельзя убрать только PDF из стандартного меню сохранения?

Разберем внутренние механизмы работы платформы 1С. Механизм конвертации табличных документов в формат PDF встроен глубоко в ядро платформы 1С:Предприятие. Когда пользователь нажимает кнопку «Сохранить как», система вызывает стандартный диалог операционной системы, список доступных форматов в котором жестко предопределен самой платформой. Динамически управлять этим списком (например, программно скрыть строку «Документ PDF (.pdf)», оставив при этом «Документ HTML» или «Таблица Excel») средствами встроенного языка невозможно.

Любые попытки обойти это ограничение путем вмешательства в динамические библиотеки платформы (DLL) или перехвата системных API-функций Windows (например, в библиотеке comdlg32.dll) являются нарушением лицензионного соглашения 1С, крайне нестабильны и могут привести к аварийному завершению работы программы при первом же обновлении платформы.

Тем не менее, решить задачу безопасности данных можно другими — легальными и надежными способами. Рассмотрим их подробнее.

Способ 1. Ограничение прав на уровне ролей (Право «Вывод»)

Самый простой и штатный способ защитить информацию от копирования и сохранения — это использование объектных прав доступа в конфигураторе 1С. Для этого в платформе предусмотрено специальное право «Вывод» (Output).

Рассмотрим, как работает это ограничение:

  1. Откроем конфигурацию в режиме «Конфигуратор».
  2. Найдем роль, назначенную целевым пользователям, и откроем ее свойства.
  3. В списке общих прав найдем право «Вывод» (а также «Интерактивный вывод»).
  4. Если снять галочку с этих прав, пользователь полностью теряет возможность сохранять табличные документы во внешние файлы (включая PDF, Excel, MXL), копировать данные из ячеек в буфер обмена и выводить документы на печать.

Проанализируем последствия этого решения. Этот метод является радикальным. Если мы убираем право «Вывод», пользователь не сможет не только сохранить PDF, но и распечатать документ на обычном принтере. Если же задача стоит жестко — «не дать вынести данные из системы ни в каком виде», то этот способ является самым надежным и простым в реализации.

Способ 2. Использование свойства «Защита» табличного документа

Если нам необходимо запретить редактирование и копирование данных из конкретной печатной формы, но при этом сохранить визуальный доступ к ней, мы можем управлять свойствами самого табличного документа программно. Для этого используются свойства Защита и ТолькоПросмотр.

Разберем по шагам, как применить этот метод при формировании печатной формы в модуле менеджера документа или обработке печати:


ТабличныйДокумент = Новый ТабличныйДокумент;
// Заполняем табличный документ данными...

// Включаем защиту от копирования и редактирования
ТабличныйДокумент.ТолькоПросмотр = Истина;
ТабличныйДокумент.Защита = Истина;

Свойство Защита в значении Истина запрещает пользователю копировать области ячеек в буфер обмена. Однако помните, что если у пользователя в его роли активно общее право «Вывод», он все равно сможет воспользоваться меню «Файл — Сохранить как». Поэтому данный способ работает эффективно только в связке с ограничением прав доступа или при использовании кастомных экранных форм.

Способ 3. Создание собственной формы предварительного просмотра

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

Посмотрим на пример реализации этого подхода:

  1. Создадим новую общую форму в конфигурации (назовем ее, например, ФормаПросмотраПечатныхФорм).
  2. Разместим на форме элемент управления типа Поле табличного документа.
  3. Отключим у формы стандартную командную панель и создадим собственную, где разместим только разрешенные кнопки (например, «Печать» на конкретный физический принтер). Кнопку «Сохранить» или доступ к главному меню программы для этой формы мы просто не предоставляем.
  4. При вызове печати из документа вместо стандартного метода показа будем открывать нашу форму программно, передавая в нее сформированный табличный документ.

Рассмотрим пример кода для вызова нашей кастомной формы просмотра:


ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ТабличныйДокумент", СформированныйТабДок);

ОткрытьФорму("ОбщаяФорма.ФормаПросмотраПечатныхФорм", ПараметрыОткрытия);

В модуле самой формы просмотра мы можем дополнительно переопределить поведение клавиш и запретить стандартные сочетания (например, Ctrl+S), обрабатывая события формы.

Способ 4. Контроль на уровне операционной системы (Виртуальные принтеры)

Даже если вам удастся программно заблокировать кнопку «Сохранить в PDF» в интерфейсе 1С, любой продвинутый пользователь сможет обойти эту защиту при наличии у него права на обычную печать. В операционных системах Windows по умолчанию установлены виртуальные принтеры (например, «Microsoft Print to PDF» или сторонние программы вроде PDFCreator).

При отправке документа на печать пользователь просто выберет такой принтер в диалоговом окне и система создаст точно такой же PDF-файл на диске. Поэтому для комплексного решения задачи необходимо:

Резюме и рекомендации

Подводя итог, можно сделать вывод: полностью изолировать возможность сохранения печатных форм в PDF, оставив при этом свободу сохранения во все остальные форматы, в 1С невозможно из-за архитектурных особенностей платформы.

Наиболее правильным и безопасным подходом будет сочетание следующих мер безопасности:

← На главную