Как устранить смещение текста и штрихкодов при непрерывной печати этикеток в 1С?

Системный администратор 1С v7.7 Торговля и дистрибуция
← На главную

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

Аппаратная причина: загрязнение или износ прижимного валика

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

  1. На резиновый подающий вал (platen roller) со временем налипает клеевой слой с подложки этикеток, бумажная пыль или частицы красящей ленты (риббона).
  2. Из-за налипшей грязи или микроскопического проскальзывания вал не может обеспечить постоянное сцепление с подложкой. Длина фактической протяжки ленты за один оборот двигателя оказывается чуть меньше или больше расчетной.
  3. Погрешность в 0,5–1 мм на одну наклейку визуально незаметна на первых трех штуках, но уже на десятой этикетке выливается в смещение на целый сантиметр.

Способ решения:

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

Калибровка датчика зазора (Gap Sensor)

Если принтер Toshiba TEC, Zebra, TSC или Datamax печатает со смещением, проверьте работу оптического датчика. Когда датчик зазора между наклейками не откалиброван или отключен в драйвере, принтер воспринимает ленту как сплошное полотно (Continuous) и не корректирует начальную позицию каждой новой наклейки.

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

  1. Запустите аппаратную калибровку датчика (Sensor Calibration). На большинстве принтеров для этого достаточно зажать функциональную клавишу подачи при включении питания либо отправить команду калибровки через утилиту управления.
  2. Откройте свойства принтера в операционной системе и перейдите во вкладку параметров носителя (Stock / Media Setup).
  3. Установите тип носителя: Этикетки с зазором (Labels with gaps / Die-cut).
  4. Укажите тип датчика: На просвет (Transmissive / Gap).
  5. Задайте точную физическую высоту одной наклейки и размер межэтикеточного интервала (обычно 2–3 мм).

Программная причина: формирование непрерывного документа в 1С 7.7

Часто в самописных или старых типовых обработках печать всей партии реализуется в виде единой непрерывной таблицы, где интервалы между блоками подгоняются пустыми строками таблицы 1С. В среде Windows при выводе через графический драйвер GDI условные единицы высоты строк 1С переводятся в физические точки печатающей головки (DPI) с округлением. При разрешении 203 DPI накопленная ошибка округления неизбежно смещает макет.

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


Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Этикетка");

// Устанавливаем параметры листа строго под размер одного стикера
Таб.ПараметрыСтраницы(1, 100, 1, 0, 0, 0, 0, 0, 0, 1);

Выборка = СоздатьОбъект("Справочник.Номенклатура");
Выборка.ВыбратьЭлементы();

Пока Выборка.ПолучитьЭлемент() = 1 Цикл
    Если Выборка.ЭтоГруппа() = 0 Тогда
        // Выводим секцию ровно одной этикетки
        Таб.ВывестиСекцию("Стикер");
        
        // Принудительно завершаем страницу для позиционирования принтера
        Таб.НоваяСтраница();
    КонецЕсли;
КонецЦикла;

Таб.Напечатать(0);

Параметры страницы в терминальных сессиях RDP

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

  1. Масштабирование документа: Убедитесь, что в методе ПараметрыСтраницы() или в свойствах табличного документа масштаб зафиксирован строго на значении 100%, а флаг подгонки по ширине листа отключен.
  2. Поля документа: Все поля (левое, правое, верхнее, нижнее) должны быть установлены в 0, чтобы драйвер принтера управлял позицией только через аппаратные границы отступа.
  3. Пользовательские форматы бумаги: Создайте в свойствах сервера печати отдельный пользовательский формат с точными размерами вашей этикетки и выберите его в качестве формата по умолчанию для используемого принтера.

Прямая отправка команд на языке принтера

Для полного исключения влияния драйверов Windows и настроек терминала примените прямую отправку команд на языке управления принтером (например, TPCL для Toshiba TEC или ZPL/EPL для Zebra). В этом случае из 1С формируется текстовый файл с командами разметки и координатами полей, который отправляется напрямую в порт принтера. Это гарантирует неизменную миллиметровую точность позиционирования и максимальную скорость вывода любых партий этикеток.

← На главную