При автоматизации документооборота в 1С:Управление торговлей 10.3 часто возникает задача вывода факсимиле (печати организации и подписей ответственных лиц) непосредственно в печатную форму документа, например, в счет на оплату или коммерческое предложение. Основная техническая сложность, с которой сталкиваются разработчики, заключается в том, что стандартная картинка с белым фоном перекрывает текст документа, линии таблиц и другие элементы макета, делая печатную форму неопрятной или вовсе нечитаемой. При необходимости можно использовать готовую внешнюю печатную форму счета на оплату с факсимиле и логотипом для УТ 10.3.
В этой статье мы подробно разберем, как добиться эффекта «прозрачной» печати, правильно подготовить графические файлы и настроить свойства объектов в табличном документе 1С.
Проанализируем ситуацию: почему обычный файл формата JPEG не подходит? Данный формат не поддерживает прозрачность, поэтому любая попытка наложить его поверх текста приведет к появлению белого прямоугольника. Для решения нашей задачи необходимо использовать формат PNG с поддержкой альфа-канала.
Разберем процесс подготовки в графическом редакторе (например, Adobe Photoshop):
После того как мы подготовили файл, переходим в конфигуратор 1С и открываем макет нужной печатной формы. Рассмотрим, как правильно вставить и настроить картинку:
Выполним следующие действия в редакторе макета:
Нет цвета или Авто.Прозрачный. Если здесь будет выбран сплошной цвет, прозрачность самого файла может быть проигнорирована платформой.Выводить на печать активен.Выясним причину, по которой печать иногда перекрывает важные цифры. В 1С объекты могут располагаться слоями. Если мы хотим, чтобы текст «просвечивал» через печать, у нас есть два пути:
Вариант 1: Размещение на заднем плане. Мы можем отправить рисунок на задний план (Контекстное меню — «Порядок» — «На задний план»). Однако будьте осторожны: если ячейки таблицы макета имеют заливку цветом (даже белым), рисунок может полностью скрыться под ними. В этом случае у ячеек тоже нужно установить прозрачный фон.
Вариант 2: Размещение на переднем плане. Это более надежный способ для отображения печати поверх линий сетки. Благодаря прозрачности PNG, текст под печатью останется видимым, создавая эффект реального оттиска на бумаге.
Зачастую печать должна выводиться не всегда, а только при определенных условиях. Посмотрим на пример того, как управлять выводом картинки из кода модуля печатной формы. Сначала в макете нужно задать имя объекту (например, ПечатьОрганизации).
Рассмотрим пример кода для управления выводом:
// Получаем область макета, где находится рисунок
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
// Проверяем условие, нужно ли выводить факсимиле
Если НужноВыводитьПечать Тогда
// Обращаемся к коллекции рисунков области
РисунокПечать = ОбластьМакета.Рисунки.ПечатьОрганизации;
РисунокПечать.Видимость = Истина;
Иначе
ОбластьМакета.Рисунки.ПечатьОрганизации.Видимость = Ложь;
КонецЕсли;
ТабДок.Вывести(ОбластьМакета);
Проанализируем этот подход: использование свойства Видимость позволяет гибко настраивать печатную форму под требования бизнеса, не создавая несколько разных макетов.
Рассмотрим распространенную проблему: на экране всё выглядит отлично, но при выводе на принтер или сохранении в PDF вместо прозрачного фона появляется черный квадрат. Выясним, почему это происходит и как это исправить:
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF).Разберем важный аспект производительности. Встраивание тяжелых оригиналов сканов (по 5-10 Мб) в макет приведет к тому, что база данных начнет стремительно расти, а формирование счетов станет медленным.
Рекомендуем придерживаться следующих правил:
.mxl, если у вас много организаций. Лучше создайте в справочнике Организации реквизит с типом ХранилищеЗначения и подгружайте картинку в рисунок макета программно перед выводом.Проанализируем способ программной подстановки картинки:
// Пример подстановки картинки из справочника
КартинкаИзБазы = Справочники.Организации.НайтиПоНаименованию("Наша Фирма").Печать.Получить();
Если ТипЗнч(КартинкаИзБазы) = Тип("Картинка") Тогда
ОбластьМакета.Рисунки.ПечатьОрганизации.Картинка = КартинкаИзБазы;
КонецЕсли;
Используя этот метод, вы сможете менять печати и подписи прямо в пользовательском режиме, не прибегая к услугам программиста для правки макетов в конфигураторе.
Важно помнить: использование факсимиле в 1С допустимо далеко не для всех документов. Согласно законодательству, факсимиле можно использовать в счетах на оплату и коммерческих предложениях. Однако в таких документах, как счета-фактуры, товарные накладные (ТОРГ-12) и кассовые ордера, использование «картинок» вместо живой подписи может привести к налоговым рискам, если это прямо не предусмотрено соглашением сторон. Для юридически значимого документооборота рекомендуется использовать механизмы ЭДО и квалифицированную электронную подпись.