Почему в 1С:Розница 2.3 при печати марок из Заказа на эмиссию выходит только одна этикетка и как это исправить?

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

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

Причина 1: Специфика обработки статусов кодов маркировки

В типовых решениях 1С, включая Розницу 2.3, механизм печати кодов маркировки (КМ) работает по строгому алгоритму. Как только команда «Печать» отправлена в спулер принтера, система фиксирует статус кодов как «Напечатан». Если в процессе передачи данных произошел сбой (например, на уровне драйвера или из-за ошибки в очереди печати), первая этикетка может выйти, а остальные — нет. При этом 1С уже пометила всю выборку как обработанную.

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

  1. Перейдем в раздел Продажи (или Склад) — Сервис.
  2. Найдем обработку «Восстановление печати кодов маркировки».
  3. В открывшейся форме выберем документ-основание (ваш Заказ на эмиссию).
  4. Система выведет список кодов, которые числятся напечатанными, но фактически отсутствуют. Здесь можно принудительно вернуть им статус, доступный для вывода на принтер.

Причина 2: Настройка шаблона этикетки и типа упаковки

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

Выясним, на что нужно обратить внимание в карточке номенклатуры:

Теперь посмотрим на сам шаблон этикетки. В 1С:Розница 2.3 для работы с маркировкой используется тип шаблона «Этикетка (обувь, одежда, табак...)». Важно убедиться, что:

  1. В настройках шаблона в поле «Назначение» выбрано «Этикетка для маркировки».
  2. В макете используется правильное поле данных. Код маркировки должен подтягиваться из специализированного источника данных документа эмиссии, а не просто как «Штрихкод» из карточки товара.
  3. Проверим параметры страницы в самом 1С. Если в настройках печати установлено «Количество по горизонтали: 1» и некорректно заданы размеры страницы (например, А4 вместо размера ленты), принтер может воспринять всю очередь как один лист, на котором отображается только первый элемент массива данных.

Причина 3: Ошибки платформы и релиза конфигурации

Иногда корень проблемы кроется в программных ошибках конкретных сборок. В версиях 1С:Розница 2.3.20.28 и подобных наблюдались баги при взаимодействии с платформой 8.3.24/8.3.25. Ошибка заключалась в некорректной передаче временных таблиц с кодами маркировки в модуль печати.

Разберем способы устранения:

Причина 4: Настройки драйвера принтера этикеток

Проблема может быть не в 1С, а в том, как драйвер принтера (Zebra, TSC, Godex, Xprinter) обрабатывает пакет данных. Если драйвер настроен на «ожидание конца страницы» или имеет ограниченный буфер памяти, он может обрывать печать после первого же сформированного изображения.

Выполним следующие шаги по настройке драйвера в ОС Windows:

  1. Зайдем в «Устройства и принтеры» — Свойства принтера — Настройки печати.
  2. Найдем вкладку «Параметры страницы» (или Advanced Setup).
  3. Убедимся, что размер этикетки в драйвере совпадает с размером в 1С до миллиметра.
  4. В настройках очереди печати выберем режим «Начинать печать немедленно» (Direct printing), чтобы избежать накопления всей партии в памяти принтера, которая может быть переполнена тяжелыми графическими объектами DataMatrix.

Пример анализа данных при печати

Если вы программист и хотите программно проверить, какие данные уходят на печать, обратите внимание на коллекцию, которая передается в процедуру печати. В типовом коде это выглядит примерно так:


// Примерный фрагмент анализа коллекции кодов
Для Каждого СтрокаИзСписка Из МассивКодовМаркировки Цикл
    // Если здесь происходит прерывание или ошибка в шаблоне, 
    // печать остановится на первой итерации.
    ТабличныйДокумент.Вывести(ОбластьМакета);
    ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;

Если в процессе формирования ТабличныйДокумент возникает ошибка обращения к свойствам номенклатуры (например, из-за отсутствующего типа упаковки), цикл может прерваться. Именно поэтому крайне важно заполнение Вида упаковки в карточке товара, о чем упоминалось выше.

Резюме и практические советы

Подведем итог. Если у вас печатается только одна марка из Заказа на эмиссию:

  1. Сначала проверьте Вид упаковки в номенклатуре (должен быть Потребительская).
  2. Попробуйте воспользоваться обработкой Восстановление печати кодов маркировки.
  3. Проверьте шаблон этикетки: он должен иметь назначение «Этикетка для маркировки».
  4. Если ничего не помогает, обновите конфигурацию 1С:Розница до последнего актуального релиза и проверьте настройки драйвера принтера на предмет прямой печати.

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

← На главную