В практике администрирования и разработки на платформе 1С:Предприятие нередко возникает задача ограничить выгрузку ценных корпоративных данных во внешние файлы. Одним из частых запросов со стороны служб безопасности является запрет на сохранение печатных форм документов в формате PDF через стандартное системное меню «Файл — Сохранить как». При этом желательно оставить пользователям возможность просматривать документы на экране или выводить их на бумажную печать.
В этой статье мы подробно проанализируем, почему штатного селективного переключателя для отключения конкретно формата PDF в платформе не существует, выясним причину такого поведения системы и разберем по шагам несколько альтернативных и полностью рабочих вариантов решения этой задачи.
Разберем внутренние механизмы работы платформы 1С. Механизм конвертации табличных документов в формат PDF встроен глубоко в ядро платформы 1С:Предприятие. Когда пользователь нажимает кнопку «Сохранить как», система вызывает стандартный диалог операционной системы, список доступных форматов в котором жестко предопределен самой платформой. Динамически управлять этим списком (например, программно скрыть строку «Документ PDF (.pdf)», оставив при этом «Документ HTML» или «Таблица Excel») средствами встроенного языка невозможно.
Любые попытки обойти это ограничение путем вмешательства в динамические библиотеки платформы (DLL) или перехвата системных API-функций Windows (например, в библиотеке comdlg32.dll) являются нарушением лицензионного соглашения 1С, крайне нестабильны и могут привести к аварийному завершению работы программы при первом же обновлении платформы.
Тем не менее, решить задачу безопасности данных можно другими — легальными и надежными способами. Рассмотрим их подробнее.
Самый простой и штатный способ защитить информацию от копирования и сохранения — это использование объектных прав доступа в конфигураторе 1С. Для этого в платформе предусмотрено специальное право «Вывод» (Output).
Рассмотрим, как работает это ограничение:
Проанализируем последствия этого решения. Этот метод является радикальным. Если мы убираем право «Вывод», пользователь не сможет не только сохранить PDF, но и распечатать документ на обычном принтере. Если же задача стоит жестко — «не дать вынести данные из системы ни в каком виде», то этот способ является самым надежным и простым в реализации.
Если нам необходимо запретить редактирование и копирование данных из конкретной печатной формы, но при этом сохранить визуальный доступ к ней, мы можем управлять свойствами самого табличного документа программно. Для этого используются свойства Защита и ТолькоПросмотр.
Разберем по шагам, как применить этот метод при формировании печатной формы в модуле менеджера документа или обработке печати:
ТабличныйДокумент = Новый ТабличныйДокумент;
// Заполняем табличный документ данными...
// Включаем защиту от копирования и редактирования
ТабличныйДокумент.ТолькоПросмотр = Истина;
ТабличныйДокумент.Защита = Истина;
Свойство Защита в значении Истина запрещает пользователю копировать области ячеек в буфер обмена. Однако помните, что если у пользователя в его роли активно общее право «Вывод», он все равно сможет воспользоваться меню «Файл — Сохранить как». Поэтому данный способ работает эффективно только в связке с ограничением прав доступа или при использовании кастомных экранных форм.
Если стандартный механизм вывода печатных форм (использующий метод ТабличныйДокумент.Показать()) предоставляет пользователю полный доступ к системному меню 1С, то мы можем обойти это, разработав собственную форму для просмотра отчетов и печатных форм.
Посмотрим на пример реализации этого подхода:
ФормаПросмотраПечатныхФорм).Рассмотрим пример кода для вызова нашей кастомной формы просмотра:
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ТабличныйДокумент", СформированныйТабДок);
ОткрытьФорму("ОбщаяФорма.ФормаПросмотраПечатныхФорм", ПараметрыОткрытия);
В модуле самой формы просмотра мы можем дополнительно переопределить поведение клавиш и запретить стандартные сочетания (например, Ctrl+S), обрабатывая события формы.
Даже если вам удастся программно заблокировать кнопку «Сохранить в PDF» в интерфейсе 1С, любой продвинутый пользователь сможет обойти эту защиту при наличии у него права на обычную печать. В операционных системах Windows по умолчанию установлены виртуальные принтеры (например, «Microsoft Print to PDF» или сторонние программы вроде PDFCreator).
При отправке документа на печать пользователь просто выберет такой принтер в диалоговом окне и система создаст точно такой же PDF-файл на диске. Поэтому для комплексного решения задачи необходимо:
Подводя итог, можно сделать вывод: полностью изолировать возможность сохранения печатных форм в PDF, оставив при этом свободу сохранения во все остальные форматы, в 1С невозможно из-за архитектурных особенностей платформы.
Наиболее правильным и безопасным подходом будет сочетание следующих мер безопасности:
Вывод у тех сотрудников, которым по должностным инструкциям не требуется выгружать отчеты во внешнюю среду.