Часто пользователи 1С сталкиваются с мнением, что возможности платформы в плане графического оформления печатных форм сильно ограничены. Особенно это касается конфигурации 1С:Управление торговлей 10.3, работающей на обычных формах. Однако утверждение о том, что в 1С невозможно создать ценник произвольного размера или скопировать сложный дизайн, является заблуждением. Рассмотрим подробнее, как реализовать задачу по созданию ценника размером 6x4 см с точным соблюдением визуального стиля.
Для начала разберем ситуацию: нам необходимо перенести дизайн с внешнего сервиса в 1С. Основные сложности, которые обычно пугают специалистов, — это фиксированные размеры ячеек, специфические шрифты и необходимость точного позиционирования элементов. Для решения этой задачи мы не будем вносить изменения в типовую конфигурацию, а воспользуемся механизмом внешних печатных форм (файлы с расширением .epf). Это позволит нам гибко настраивать макет, не опасаясь проблем при обновлении программы.
В 1С основным объектом для формирования печатных форм является ТабличныйДокумент. Вопреки распространенному мнению, он позволяет задавать размеры с высокой точностью. Проанализируем процесс настройки:
Для проверки физического размера напечатанного документа мы рекомендуем использовать свойство Автомасштаб в значении Ложь и явно указывать параметры страницы. Проанализируем пример кода для инициализации печати:
ТабДок = Новый ТабличныйДокумент;
ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЦЕННИКА_60Х40";
ТабДок.АвтоМасштаб = Ложь;
ТабДок.МасштабПечати = 100;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
Если дизайн ценника содержит сложные градиенты, специфические рамки или декоративные элементы, которые трудно отрисовать стандартными линиями 1С, мы применим метод подложки. Рассмотрим этот алгоритм:
PNG с высоким разрешением).ВыводитьНаПечать = Истина, а саму картинку поместим на задний план.Теперь поверх этой картинки мы можем размещать текстовые поля. Для этого лучше использовать не ячейки таблицы, а объект Надпись. Рассмотрим преимущества: Надпись можно двигать с точностью до пикселя, менять ее прозрачность и накладывать на другие объекты. Это позволяет добиться идеального позиционирования цены, наименования и артикула.
Выясним причину, по которой текст в 1С иногда выглядит "не так, как на сайте". Часто проблема кроется в межстрочных интервалах и отсутствии нужных шрифтов в системе. Если на сайте используется уникальный шрифт, его необходимо установить в Windows на том компьютере (или сервере), где формируется печатная форма.
Разберем, как программно управлять выводом текста, если мы используем стандартные ячейки макета:
ОбластьМакета = Макет.ПолучитьОбласть("СтрокаЦенника");
ОбластьМакета.Параметры.Наименование = Товар.Наименование;
ОбластьМакета.Параметры.Цена = Формат(Цена, "ЧЦ=15; ЧДЦ=2; ЧРД=,; ЧГ=0");
// Установка шрифта программно, если требуется динамика
ОбластьМакета.Область().Шрифт = Новый Шрифт("Arial", 12, Истина);
Если же нам нужно выводить цену крупным шрифтом, а копейки — мелким (как это часто бывает в дизайне "service-online"), мы рекомендуем использовать две разные Надписи или два разных параметра в макете, расположенных вплотную друг к другу.
Для 1С:УТ 10.3 стандартным методом является использование компоненты 1CBarCode.dll. Однако при малых размерах ценника (6x4 см) штрихкод может стать нечитаемым при масштабировании картинки. Посмотрим на альтернативный вариант — использование шрифтов типа EAN13.ttf.
При использовании шрифта штрихкод воспринимается принтером как текст. Это гарантирует четкость линий при любом размере. Вам достаточно преобразовать цифровой код товара в специальную последовательность символов для шрифта и назначить этот шрифт ячейке. Рассмотрим пример функции-заглушки для подготовки кода:
Функция СформироватьСимволыШтрихкода(Знач ИсходныйШтрихкод)
// Здесь должна быть логика контрольного символа и маппинга для TTF-шрифта
Возврат "*" + ИсходныйШтрихкод + "*";
КонецФункции
Проанализируем ситуацию, когда в 1С все выглядит красиво, а на печати ценник обрезается. В 90% случаев это связано с настройками драйвера принтера (особенно если это термопринтер этикеток типа Zebra или Xprinter). Выясним, что нужно сделать:
Мы убедились, что платформа 1С предоставляет достаточно инструментов для реализации сложного графического дизайна. Использование внешних печатных форм, графических подложек и объектов типа Надпись позволяет обойти любые ограничения стандартной сетки табличного документа. Главное в этом процессе — кропотливая настройка каждого элемента и обязательная проверка на реальном оборудовании с учетом специфики драйверов принтера.
Важный совет: всегда сохраняйте макет в формате внешней обработки. Это позволит вам оперативно вносить правки в дизайн без остановки работы всей системы и без привлечения программиста для изменения основной конфигурации.