Как реализовать печать штрихкода на чеке ККМ в 1С:Розница

Программист 1С v8.3 (Обычные формы) 1С:Розница Управленческий учет Торговля и дистрибуция
← На главную

В процессе автоматизации розничной торговли часто возникает необходимость вывода штрихкода непосредственно на кассовый чек. Это может потребоваться для реализации механики «отложенных чеков», когда покупатель получает пречек в одном отделе и оплачивает его на общей кассе, или для быстрой идентификации чека при возврате товара. В данной статье мы детально разберем, как реализовать печать штрихкода (или, как говорят, «полосочек») на устройствах серии «Штрих-М» (например, Штрих-Light-100 или АСПД), используя механизмы платформы 1С:Предприятие.

Способ 1: Использование графического макета чека

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

  1. Откроем конфигуратор и найдем макет чека ККМ (в 1С:Розница он часто находится в обработках обслуживания или в общих макетах).
  2. Рассмотрим структуру макета. В нужное нам место (обычно это подвал чека или область после итогов) добавим новый объект Рисунок с типом Штрих-код.
  3. Если в вашей конфигурации нет готового объекта штрихкода, проанализируем, как это сделано в обработках печати ценников или этикеток. В 1С:Розница и 1С:Управление торговлей есть типовые обработки, откуда можно скопировать объект Штрихкод вместе с установленными свойствами.
  4. В коде формирования чека передадим значение штрихкода в этот объект. Это реализуется через установку параметра области макета.

Важный нюанс: этот метод работает корректно только в том случае, если принтер чеков настроен на печать в графическом режиме. Проанализируем ситуацию: если ККМ работает в фискальном режиме и использует стандартные протоколы обмена, она может игнорировать графику из 1С, печатая только текстовые строки, передаваемые драйвером.

Способ 2: Печать через шрифты штрихкода

Если графический объект не пропечатывается или замедляет работу кассы, воспользуемся методом подмены шрифта. Разберем этот вариант подробнее:

Существуют специальные шрифты (например, EAN13.ttf или Code128.ttf), которые отображают цифры и буквы в виде соответствующих штрихов. Мы можем добавить в макет чека текстовое поле, назначить ему такой шрифт и передать туда сформированную строку штрихкода. Однако помните, что для корректного считывания сканером, строка должна быть сформирована по правилам конкретного типа штрихкода (с контрольными символами и стартовыми/стоповыми знаками).

Способ 3: Использование встроенных методов драйвера (API)

Этот способ является наиболее профессиональным и надежным, так как он задействует аппаратные мощности самого принтера. Устройства Штрих-М обладают встроенными алгоритмами генерации штрихкодов. Рассмотрим, как это реализовать в коде 1С.

Вместо того чтобы посылать картинку, мы вызываем метод драйвера PrintBarcode(). Выясним, как выглядит примерный код для взаимодействия с драйвером через объект ДрайверККМ:


// Предположим, ОбъектДрайвера уже инициализирован
ОбъектДрайвера.Barcode = "2000000012345"; // Значение штрихкода
ОбъектДрайвера.LineNumber = 1; // Тип штрихкода (например, EAN13)
ОбъектДрайвера.BarWidth = 2; // Ширина линий
ОбъектДрайвера.BarHeight = 50; // Высота штрихкода
ОбъектДрайвера.PrintBarcode(); // Команда на печать

При таком подходе принтер сам рассчитает геометрию «полосочек», что гарантирует высокую четкость печати даже на бюджетных моделях типа Light-100. Это критично для узких лент (57 мм), где малейшее размытие графики делает штрихкод нечитаемым для сканера.

Особенности реализации для Штрих-Light-100 и ленты 57 мм

Проанализируем технические ограничения бюджетных принтеров. При печати на узкой ленте 57 мм линейный штрихкод (например, EAN-13) может занимать почти всю ширину. Если сканер не может считать код, проверьте следующие параметры:

Настройка в современных версиях 1С:Розница (2.x и 3.x)

В современных конфигурациях на управляемых формах печать чеков реализована через Шаблоны чеков ККМ. Разберем, как добавить штрихкод в этом случае:

  1. Перейдем в раздел Продажи — Шаблоны чеков ККМ.
  2. Создадим новый шаблон или отредактируем существующий.
  3. В редакторе шаблонов доступен список доступных полей. Если принтер поддерживает графику, мы можем просто перетащить элемент Штрихкод в нижнюю часть чека.
  4. В настройках подключаемого оборудования для данного фискального регистратора найдем параметр Тип вывода штрихкода. Выберем значение Встроенный, чтобы использовать аппаратные возможности принтера, описанные в «Способе 3».

Зачем это нужно? Пример с «Отложенными чеками»

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

Подведем итог: для реализации печати штрихкода на чеке в 1С:Розница лучше всего использовать аппаратные методы драйвера через настройку шаблона чека. Это обеспечит максимальную скорость печати и гарантированное считывание сканером. Если же ваша ККМ крайне старая и не поддерживает метод PrintBarcode, используйте печать через специализированные шрифты, предварительно установив их на компьютер кассира.

← На главную