Как изменить ширину штрихкода на принтере Godex G500 в 1С при использовании драйвера Сканкод

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

При работе с принтерами этикеток Godex, в частности моделью G500, многие разработчики сталкиваются с ситуацией, когда штрихкод в 1С печатается фиксированной ширины (обычно около 36 мм), несмотря на любые изменения размера в макете этикетки. Особенно это заметно при использовании драйверов «Сканкод» (технология Native API) в рамках БСП (Библиотеки стандартных подсистем) или БПО (Библиотеки подключаемого оборудования). Рассмотрим подробно, почему это происходит и как настроить корректную печать.

Причина проблемы: Командный режим против Растрового

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

  1. Печать через Windows-драйвер (GDI): 1С отправляет картинку. Принтер печатает её как обычное изображение. Здесь мы можем растягивать штрихкод как угодно, но рискуем получить низкую читаемость, если линии штрихкода «не попадут» в физические точки печатающей головки.
  2. Печать через специализированный драйвер (EZPL/Native API): 1С отправляет принтеру не картинку, а текстовые команды на языке EZPL (например, «напечатай EAN13 с данными 123456789012 в координатах X, Y»). В этом случае принтер сам генерирует штрихкод, используя свои внутренние алгоритмы.

Выясним причину «магического» размера 36 мм. Принтер Godex G500 имеет разрешение 203 DPI (8 точек на миллиметр). В языке EZPL ширина штрихкода определяется множителем «узкого элемента». Ширина не может быть произвольной, она всегда кратна физической точке головки:

Для стандартного штрихкода EAN-13, состоящего из 95 модулей, при множителе «3» мы получаем: 95 * 0.375 = 35.625 мм. Это именно те 36 мм, которые наблюдает автор вопроса. Промежуточного значения (например, 30 мм) в командном режиме добиться невозможно, так как принтер не может напечатать «полторы точки».

Решение 1: Изменение параметров в настройках подключаемого оборудования

Разберем, как повлиять на размер, оставаясь в рамках драйвера «Сканкод». Поскольку драйвер игнорирует визуальное растягивание объекта в макете 1С, нам нужно изменить настройки самого оборудования.

Выполним следующие шаги:

  1. Перейдем в раздел Администрирование — Подключаемое оборудование.
  2. Откроем карточку настроек нашего принтера Godex.
  3. Нажмем кнопку Параметры подключения (или «Настроить»).
  4. Найдем параметр, который может называться Ширина узкого элемента, Масштаб штрихкода или Narrow Bar Width.
  5. Попробуем изменить значение с 3 на 2. Это существенно уменьшит ширину штрихкода, сделав его более компактным (около 24 мм).

Важно помнить: если мы сделаем штрихкод слишком мелким (множитель 1), дешевые сканеры могут перестать его считывать из-за нехватки разрешения.

Решение 2: Печать через Табличный Документ и компоненту 1С

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

Рассмотрим пример кода для формирования картинки штрихкода вручную, который можно вставить в типовой макет:


// Пример получения картинки штрихкода через стандартную компоненту БПО
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", 400);
ПараметрыШтрихкода.Вставить("Высота", 200);
ПараметрыШтрихкода.Вставить("ТипКода", 1); // EAN13
ПараметрыШтрихкода.Вставить("Значение", "2000000000015");

ДанныеШтрихкода = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
ОбластьМакета.Рисунки.Штрихкод.Картинка = ДанныеШтрихкода;

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

Решение 3: Использование системного драйвера Windows

Если использование БПО и специализированных драйверов «Сканкод» не является критически обязательным, рассмотрим самый простой путь — установку обычного Windows-драйвера (например, от Seagull Scientific).

При таком подходе:

Проанализируем важный нюанс: при печати через Windows-драйвер макеты могут «плыть» при переносе на другой компьютер. Чтобы этого избежать, убедимся, что в настройках драйвера (Свойства принтера — Настройка печати) поля (Margins) установлены в 0, а размер бумаги жестко задан в миллиметрах.

Почему в GoLabel всё работает иначе?

Посмотрим на ситуацию со стороны специализированного ПО. Программа GoLabel, которая идет в комплекте с принтером, очень умная. Она умеет комбинировать методы: она может отправить команду EZPL для простых текстов, но если видит, что пользователь задал «нестандартный» размер штрихкода, она сама пересчитывает его в графику и отправляет на принтер в виде бинарного потока. Драйвер 1С (особенно версии Native API) зачастую работает более «прямолинейно», строго следуя заложенным в него таблицам соответствия команд.

Заключение и рекомендации

Подведем итоги. Если вам нужно быстро исправить ситуацию с фиксированным размером 36 мм:

  1. Проверьте настройки EZPL: Попробуйте изменить параметр «Narrow Bar» в настройках оборудования 1С.
  2. Используйте графику: Если ширина критична до миллиметра, используйте компоненту печати штрихкодов 1С и выводите его как картинку в обычный табличный документ.
  3. Соблюдайте пропорции: Помните, что для штрихкодов типа EAN существует ГОСТ, и чрезмерное сужение (изменение Ratio) может сделать этикетку бесполезной для складских сканеров.

Выбор конкретного метода зависит от ваших задач: командный режим (EZPL) работает быстрее и дает максимально четкие линии, а растровый режим (Windows-драйвер/Картинка) дает полную свободу в дизайне макета.

← На главную