Как сделать непечатаемую печатную форму в 1С: методы программной и визуальной защиты

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

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

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

Метод 1. Использование встроенных свойств табличного документа

Начнем с самого простого и логичного способа — управления свойствами объекта ТабличныйДокумент. Платформа 1С предоставляет штатные средства для ограничения действий пользователя с печатной формой. Проанализируем, как это работает на практике.

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


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

Важный нюанс: Установка ИспользованиеВывода.Запретить блокирует не только физическую печать, но и возможность интерактивного сохранения документа в форматы PDF, Excel и другие. Если ваша задача — разрешить отправку файла по почте, но запретить его печать конечному получателю, этот метод внутри 1С сработает только для внутреннего интерфейса программы.

Разберем еще один «хитрый» способ — манипуляцию масштабом. Если установить экстремально маленький масштаб печати, документ станет нечитаемым при выводе на бумагу:


ТабДок.АвтоМасштаб = Ложь;
ТабДок.МасштабПечати = 10; // Устанавливаем масштаб 10% или меньше

Метод 2. Отображение через Поле HTML-документа с CSS-защитой

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

Выясним причину эффективности этого метода: он позволяет использовать медиа-запросы @media print, которые определяют, как страница выглядит при отправке на принтер. Мы можем просто скрыть все содержимое страницы для принтера.

Рассмотрим шаги реализации:

  1. Сформируйте ТабличныйДокумент.
  2. Сохраните его во временный HTML-файл.
  3. Добавьте в заголовок HTML специальный стиль.

// Вставьте этот CSS-код в текст HTML-документа
<style>
@media print {
    body {
        display: none !important;
    }
}
</style>

При попытке пользователя нажать Ctrl+P в таком окне, принтер получит абсолютно пустой лист, хотя на экране монитора информация будет отображаться корректно. Это один из самых изящных способов защиты контента в современных интерфейсах.

Метод 3. Формирование защищенного PDF с помощью внешних утилит

Стандартный метод 1С Записать() с типом файла ТипФайлаТабличногоДокумента.PDF создает обычный PDF-файл без каких-либо ограничений. Если документ нужно отправить «наружу» (по электронной почте), и при этом запретить его печать в Adobe Reader или Chrome, нам потребуются внешние консольные утилиты, такие как PDFTK или QPDF.

Посмотрим на алгоритм совместной работы 1С и внешней утилиты:

  1. 1С формирует временный PDF-файл обычным способом.
  2. Программа через команду ЗапуститьПриложение() вызывает утилиту, которая устанавливает права доступа (permissions) на файл.

Пример командной строки для утилиты PDFTK, которую можно сформировать в коде 1С:

pdftk input.pdf output protected.pdf owner_pw ВашПароль allow printing none

Флаг allow printing none как раз и запрещает вывод на печать. Пользователь сможет открыть файл, прочитать его, но кнопка печати в просмотрщике будет заблокирована. Помните, что для работы этого метода на сервере или клиенте должна быть установлена соответствующая утилита.

Метод 4. Визуальные методы «затруднения» печати

Иногда достаточно сделать печать экономически невыгодной или визуально неприемлемой. Проанализируем ситуацию: пользователь хочет распечатать документ вопреки запрету. Мы можем применить следующие приемы в макете 1С:

Метод 5. Использование формата XPS

Формат XPS (аналог PDF от Microsoft) изначально проектировался с глубокой интеграцией системы прав Windows. Если ваша инфраструктура построена полностью на Windows, вы можете программно формировать XPS-документы с установленными флагами запрета печати через COM-объекты операционной системы. Это более сложный путь, требующий понимания объектной модели Windows Printing, но он обеспечивает высокий уровень защиты внутри корпоративной сети.

Заключение

Мы рассмотрели различные подходы к созданию непечатаемых форм. Наиболее надежным для внутренней работы в 1С является использование свойства ИспользованиеВывода.Запретить. Для документов, передаваемых внешним контрагентам, оптимальным выбором станет программная обработка PDF внешними утилитами или использование HTML-контейнеров с запрещающими печать стилями.

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

← На главную