Логотип, фото товара и штрихкод на этикетке в 1С 8.3

· 9 мин

Содержание

Картинка в этикетку 1С вставляется как рисунок в макет — табличный документ, по которому печатается этикетка. Логотип, одинаковый на всех этикетках, кладут прямо в макет. Фото товара или штрихкод, которые меняются от строки к строке, выводят через рисунок с заполненным свойством «Параметр».

Частая ошибка — пытаться вставить картинку в ячейку, как в Excel. В табличном документе 1С ячейка хранит текст, число или параметр, а изображение живёт отдельным объектом поверх сетки ячеек. Отсюда и большинство проблем: картинка «уезжает», растягивается или печатается только на первой этикетке.

Подготовка изображения для печати этикеток

Этикетку чаще всего печатают на термопринтере, а он видит мир иначе, чем монитор. Хорошая картинка для экрана может превратиться в серое пятно на ленте 58×40 мм.

Формат файла

Платформа 8.3 принимает PNG, JPG, BMP, GIF и SVG. Для этикеток выбор такой:

ФорматКогда братьЧто учесть
PNGлоготип, значки, надписидержит прозрачный фон и чёткие края
SVGлоготип в векторемасштабируется без потерь, но сложные градиенты могут отрисоваться иначе
JPGфото товаранет прозрачности, на мелкой этикетке теряет детали
BMPстарые макетыфайл большой, макет «тяжелеет»

Размер в пикселях

Считайте от разрешения принтера. Термопринтер на 203 dpi печатает 8 точек на миллиметр, на 300 dpi — примерно 12.

📐 Пример: логотип в зоне 20×10 мм на принтере 203 dpi — это 160×80 пикселей. Больше не нужно: лишние пиксели принтер всё равно выбросит, а макет вырастет в объёме.

Цвет

  • ⚫ Термопринтер печатает одним цветом. Серые оттенки он превращает в растр из точек, мелкий текст на логотипе пропадает.
  • 🎨 Переведите логотип в чёрно-белый режим без полутонов заранее, в графическом редакторе.
  • 🔲 Уберите белые поля вокруг изображения: они занимают место на этикетке и сбивают выравнивание.

Если этикетки печатаются и на лазерном принтере, и на термопринтере, держите два варианта логотипа: цветной для А4 и монохромный для ленты.

Как вставить картинку в макет этикетки

Макет этикетки — это табличный документ. Вставка картинки в нём делается одинаково, где бы вы его ни открыли: в Конфигураторе, в пользовательском редакторе макетов или в отдельно открытом файле .mxl.

Где открыть макет

  • 🧩 Типовая печатная форма. В конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) пользовательские макеты правят без Конфигуратора: Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм. Найдите нужную этикетку по названию, откройте на изменение.
  • 🏷 Шаблоны этикеток и ценников в УТ 11 и Рознице. Это отдельный справочник «Шаблоны этикеток и ценников» со своим редактором. Быстрее всего его найти через Главное меню → Все функции → Справочники.
  • 🛠 Своя обработка или расширение. Макет лежит в дереве объекта, открывается двойным щелчком в Конфигураторе.

Пошагово: статичный логотип

  1. Откройте макет и выделите ячейки, где будет логотип.
  2. В Конфигураторе выберите Таблица → Рисунки → Картинка.... В режиме 1С:Предприятие та же команда есть в главном меню, в подменю «Таблица», пока активен табличный документ.
  3. Выберите файл. Картинка встанет поверх выделенных ячеек.
  4. Откройте свойства рисунка (двойной щелчок или контекстное меню).
  5. В поле «Размер картинки» поставьте «Пропорционально». Иначе логотип растянется под рамку.
  6. Если вокруг рисунка видна рамка — уберите линию в свойствах рисунка.
  7. Сохраните макет и напечатайте одну этикетку на пробу.

Правка типового макета через Конфигуратор снимает конфигурацию с полной поддержки или требует включить возможность изменений. Для типовых конфигураций правьте макет через «Макеты печатных форм» или расширение, а не напрямую.

Режимы размера картинки

РежимЧто делаетГде уместен
Пропорциональновписывает в рамку, сохраняя пропорциилоготипы, фото товара
Растянутьзаполняет рамку целикомфоновые полосы, рамки
Реальный размервыводит в исходных пикселяхредко, если рамка подогнана под файл
Авторазмерподгоняет рамку под картинкучерновая разметка

Фото товара и меняющиеся картинки: рисунок с параметром

Логотип одинаков на всех этикетках. Фото товара — нет. Для него рисунок в макете делают пустым, а картинку подставляют при печати.

  1. Вставьте в область этикетки рисунок типа «Картинка», можно без файла.
  2. В свойствах рисунка заполните поле «Параметр», например ФотоТовара.
  3. Задайте «Размер картинки» = «Пропорционально».
  4. В коде печати заполните параметр области значением типа Картинка.

Рисунок с параметром ведёт себя как ячейка с параметром: при каждом выводе области он получает своё значение. Это ключевой приём — без него фото пришлось бы рисовать программно с подсчётом координат.

Откуда брать фото

  • 📁 Из присоединённых файлов номенклатуры. В конфигурациях на БСП двоичные данные файла получают функцией РаботаСФайлами.ДвоичныеДанныеФайла(Файл).
  • 🗂 Из реквизита типа ХранилищеЗначения: Номенклатура.Картинка.Получить().
  • 🌐 Из общей картинки конфигурации: БиблиотекаКартинок.ИмяКартинки — для значков «Хит», «Новинка», «Акция».

Картинки в отчёте на СКД

Этикетки иногда печатают не обработкой, а отчётом на системе компоновки данных. Там есть два пути.

Поле со значением-картинкой

Если поле набора данных возвращает значение типа Картинка, СКД выводит его в ячейку как изображение. Двоичные данные из хранилища в картинку превращают на этапе вывода, например в обработчике ПриКомпоновкеРезультата модуля отчёта, или подготавливают заранее во внешнем наборе данных.

Свой макет группировки

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

СКД удобна, когда этикетки фильтруют и группируют: по складу, по поступлению, по ценовой группе. Для простой печати «одна строка — одна этикетка» обработка с макетом проще и быстрее.

Вывод картинки на этикетку из кода

Программный вывод нужен в своей обработке печати или во внешней печатной форме. Схема одна: получить макет, взять область, заполнить параметры, вывести.

Пример для модуля объекта обработки. В макете «Этикетка» есть область «Этикетка», а в ней ячейка Наименование и два рисунка с параметрами Логотип и ФотоТовара.

Функция СформироватьЭтикетки(Товары, ДанныеЛоготипа) Экспорт

    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Этикетка");
    Область = Макет.ПолучитьОбласть("Этикетка");

    // Логотип создаём один раз, а не в цикле
    Логотип = Новый Картинка(ДанныеЛоготипа);

    Для Каждого Товар Из Товары Цикл
        Область.Параметры.Наименование = Товар.Наименование;
        Область.Параметры.Логотип = Логотип;

        Если Товар.ДанныеФото <> Неопределено Тогда
            Область.Параметры.ФотоТовара = Новый Картинка(Товар.ДанныеФото);
        Иначе
            Область.Параметры.ФотоТовара = Новый Картинка; // пустая, чтобы не осталось фото прошлого товара
        КонецЕсли;

        ТабДок.Вывести(Область);
    КонецЦикла;

    Возврат ТабДок;

КонецФункции

Главное здесь — ветка Иначе. Область переиспользуется в цикле, и без сброса у товара без фото напечатается фото предыдущего.

Рисунок без макета

Если макета нет или картинку нужно поставить в произвольное место, добавьте рисунок прямо в табличный документ:

Рисунок = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Картинка = Логотип;
Рисунок.РазмерКартинки = РазмерКартинки.Пропорционально;
Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии);
Рисунок.Расположить(ТабДок.Область("R1C1:R3C4"));

Метод Расположить привязывает рисунок к ячейкам, и не нужно пересчитывать миллиметры. Но такой рисунок добавляется один раз. Для листа с десятком этикеток надёжнее рисунок с параметром в области макета.

Изменения без потери обновлений

Для типовой конфигурации печатную форму с картинкой оформляют расширением конфигурации или внешней печатной формой. Расширение переживает обновление релиза, а прямая правка модуля — нет: при следующем обновлении придётся сравнивать и объединять код вручную.

Штрихкоды и QR-коды на этикетке

Штрихкод на этикетке — тоже картинка. Его генерируют в момент печати и подставляют в рисунок с параметром, как фото товара.

Чем генерировать

СпособГде встречаетсяОсобенность
Подсистема БСП «Генерация штрихкода»современные типовые конфигурациивстроена, отдельной установки не требует
Внешняя компонента печати штрихкодовстарые релизы, свои разработкикомпоненту подключают перед вызовом
Шаблон этикетки УТ 11 и Розницы«Шаблоны этикеток и ценников»поле штрихкода выбирают из списка, код писать не нужно

Пример через БСП:

ПараметрыШК = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
ПараметрыШК.Штрихкод = Товар.Штрихкод;
ПараметрыШК.Ширина = 300;
ПараметрыШК.Высота = 120;
// Тип кода (EAN-13, Code128, QR и т.д.) задаётся параметром ТипКода

Результат = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШК);
Если Результат.Результат Тогда
    Область.Параметры.Штрихкод = Результат.Картинка;
КонецЕсли;

Набор полей структуры параметров сверьте с описанием функции ПараметрыГенерацииШтрихкода в общем модуле вашей версии БСП: от версии к версии он дополняется.

Как не испортить читаемость

  • 📏 Генерируйте картинку в пикселях с запасом и выводите в режиме «Пропорционально». Растянутый по одной оси штрихкод сканер часто не читает.
  • 🔍 Не уменьшайте EAN-13 до совсем узкой полосы: тонкие штрихи сливаются на термоленте.
  • ⬜ Оставляйте белые поля слева и справа от штрихкода. Без «тихой зоны» сканер не находит начало кода.
  • 🔳 Для QR-кода держите квадратную рамку рисунка. На 203 dpi код размером меньше 15×15 мм с длинной строкой читается плохо.
  • 🏷 Код маркировки «Честного знака» печатают в формате DataMatrix, а не QR. Перепутать их — значит получить этикетку, которую не примут.
Перед массовой печатью этикеток
Выполнено: 0 / 6

Почему картинка не печатается или печатается криво

Проблемы с изображениями на этикетках повторяются из раза в раз. Найдите свой симптом и проверьте причину.

Диагностика: выберите симптом

Если этикетки печатаются долго и макет весит мегабайты — проверьте исходный размер вставленной картинки. Фото 4000×3000 пикселей в каждой из сотни этикеток тормозит формирование и печать.

Частые вопросы

Можно ли вставить картинку в этикетку без Конфигуратора?
Да. В конфигурациях на БСП откройте макет через «Макеты печатных форм» в разделе администрирования. В УТ 11 и Рознице — через справочник «Шаблоны этикеток и ценников».
Как сделать фон этикетки картинкой, а текст поверх?
Вставьте рисунок на всю область этикетки в режиме «Растянуть» и перенесите его на задний план через контекстное меню рисунка. Текст в ячейках будет виден поверх. Фон держите светлым, иначе на термопринтере текст сольётся.
Почему на экране картинка чёткая, а при печати размыта?
Растровое изображение маленького размера растягивается под рамку. Подготовьте файл под разрешение принтера или возьмите логотип в SVG.
Сохранится ли логотип в макете, если перенести базу на другой компьютер?
Да. Картинка хранится внутри макета, а не ссылкой на файл. Исходный файл после вставки не нужен.
Можно ли выводить разные значки для разных товаров, например «Акция»?
Да. Положите значки в общие картинки или в справочник, а в коде печати выбирайте нужный по признаку товара и присваивайте его параметру рисунка.