При формировании печатных форм в 1С:Предприятие часто возникает задача наложения печати или подписи (факсимиле) на текст документа. Основная сложность заключается в том, что по умолчанию любая картинка в табличном документе перекрывает содержимое ячеек, делая текст под ней невидимым. Разберем детально, почему это происходит и как добиться эффекта «прозрачной» печати, через которую виден текст.
Для начала проанализируем, как 1С работает с объектами. В платформе «1С:Предприятие» табличный документ имеет строго определенную структуру слоев. Существует базовый слой — это ячейки с их текстом, границами и заливкой. Поверх этого слоя располагается слой графических объектов, к которым относится РисунокТабличногоДокумента.
Важно понимать: в 1С технически невозможно поместить рисунок под текст ячеек. Слой рисунков всегда находится выше. Однако мы можем создать визуальную иллюзию того, что печать находится снизу. Это достигается за счет использования прозрачности в самом графическом файле. Если в картинке между линиями печати «пустота» (прозрачные пиксели), то текст ячеек, находящихся уровнем ниже, будет беспрепятственно просвечивать сквозь эти области.
Выясним причину, почему обычное удаление фона в простейших редакторах часто не дает результата. Если вы просто закрасили фон белым цветом, для 1С это все равно остается непрозрачным слоем пикселей. Рассмотрим этапы подготовки качественной картинки:
После того как файл подготовлен, его нужно правильно разместить в макете. Рассмотрим настройки объекта РисунокТабличногоДокумента, которые критически важны для отображения прозрачности:
Проанализируем палитру свойств рисунка:
Без узора. Любое другое значение может создать непрозрачную подложку.Авто или Прозрачный. Если здесь будет установлен белый цвет, он перекроет текст даже у прозрачного PNG-файла.Нет линии, чтобы у самой картинки не было рамки.Посмотрим на свойство Прозрачный. В старых версиях платформы или при использовании формата BMP этот флаг позволял назначить один определенный цвет (например, чисто белый) прозрачным. Однако для современных PNG с полноценным альфа-каналом этот флаг часто не требуется и даже может приводить к искажениям цветопередачи.
Если печать добавляется в документ программно, нам необходимо управлять свойствами объекта Рисунок. Рассмотрим пример кода, который правильно вставляет картинку в табличный документ:
// Создаем объект картинка из файла или из хранилища значений
КартинкаПечати = Справочники.Организации.НайтиПоНаименованию("НашаФирма").Печать.Получить();
// Добавляем рисунок в табличный документ
Рисунок = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Картинка = КартинкаПечати;
// Указываем область расположения
Рисунок.Расположить(ТабДок.Область("R10C2:R15C5"));
// Настраиваем прозрачность и отображение
Рисунок.ЦветФона = Новый Цвет(); // Прозрачный цвет
Рисунок.Узор = ТипУзораТабличногоДокумента.БезУзора;
Рисунок.ГраницаСверху = Ложь;
Рисунок.ГраницаСлева = Ложь;
Рисунок.ГраницаСправа = Ложь;
Рисунок.ГраницаСнизу = Ложь;
Рисунок.ВыводитьНаПечать = Истина;
В данном примере мы используем объект ТипРисункаТабличногоДокумента.Картинка. Установка ЦветФона в пустой конструктор Новый Цвет() во многих случаях инициализирует именно прозрачный фон, позволяя альфа-каналу PNG отработать корректно.
Иногда возникает ситуация: на экране в 1С все выглядит идеально, текст просвечивает, но при сохранении в PDF или при выводе на принтер печать снова становится непрозрачной или вокруг нее появляется черный фон. Разберем, как с этим бороться:
Во-первых, это может быть связано с особенностями работы GDI+ в старых релизах платформы. Рекомендуется использовать актуальные версии 8.3. Во-вторых, проверьте настройки самого принтера или PDF-принтера. Некоторые драйверы не поддерживают сложные градиенты прозрачности.
В-третьих, попробуйте упростить PNG. Вместо 32-битного PNG (с полупрозрачностью) используйте 8-битный PNG с индексированной прозрачностью (где пиксель либо 100% прозрачен, либо 100% закрашен). Это минимизирует ошибки интерпретации прозрачности при печати.
Выясним причину этой классической жалобы пользователей. Скорее всего, старая печать была сохранена в формате GIF или специфическом BMP, где прозрачность была реализована через один прозрачный цвет. Новая печать, созданная в современном редакторе, может иметь «сглаживание» (антиалиасинг). Это значит, что на краях синих линий печати есть еле заметные полупрозрачные голубые пиксели. Платформа 1С в некоторых режимах может некорректно обрабатывать эту полупрозрачность, заменяя ее сплошным цветом фона ячейки.
Совет: Чтобы избежать подобных проблем, при подготовке картинки в Photoshop используйте инструмент Порог (Threshold), чтобы избавиться от полутонов, оставив только четкие границы, а затем удалите белый фон.
Подведем итог наших действий для достижения идеального результата:
РисунокТабличногоДокумента.Следуя этим правилам, мы обеспечим профессиональный вид документов, где печать и подписи выглядят естественно, не закрывая важную информацию в ячейках отчета.