При автоматизации печати этикеток часто возникает вопрос: как управлять физическим отрезчиком (каттером) принтера непосредственно из 1С? Рассмотрим, можно ли регулировать отрезку каждой этикетки или всей партии и какие инструменты для этого существуют.
Самый простой и надежный способ управления отрезчиком — использование настроек драйвера принтера в операционной системе Windows. Большинство современных принтеров этикеток позволяют задать поведение устройства после выполнения задания на печать.
Преимущество этого метода: вам не нужно изменять код в 1С. Принтер будет выполнять отрезку автоматически согласно заданным настройкам. Если вам требуется разная логика (например, иногда отрезать, а иногда нет), рекомендуем создать два принтера в Windows с одинаковыми параметрами порта, но разными настройками драйвера.
Если вам необходима гибкая программная логика, позволяющая управлять отрезчиком динамически из кода 1С, можно воспользоваться отправкой низкоуровневых команд в порт принтера. Этот метод требует знания языка управления конкретной модели принтера (ZPL для Zebra, EZPL для Godex и т.д.).
Рассмотрим пример отправки команды ^MMC для принтеров Zebra (ZPL), которая активирует функцию отрезки.
Для выполнения этой задачи мы воспользуемся объектами ЗаписьТекста и методом КопироватьФайл для прямой отправки данных в COM-порт:
ИмяФайла = ПолучитьИмяВременногоФайла("txt");
Запись = Новый ЗаписьТекста(ИмяФайла);
// Отправка команды ZPL для активации отрезчика
Запись.ЗаписатьСтроку("^MMC");
Запись.Закрыть();
Попытка
// Прямая отправка файла команды в порт принтера
КопироватьФайл(ИмяФайла, "\\.\com15");
Исключение
ТекстОшибки = ОписаниеОшибки();
Сообщить(ТекстОшибки);
КонецПопытки;
Обратите внимание на следующие нюансы:
^M10, что указывает на протяжку ленты, тогда как Zebra использует свой синтаксис ZPL.Если ваша задача — просто напечатать партию этикеток, мы советуем не усложнять код 1С низкоуровневым программированием. Лучшим решением будет использование стандартного функционала печати Windows.
Разберем типичный сценарий:
Принтер_Без_Отрезки и Принтер_С_Отрезкой.Этот метод исключает ошибки, связанные с конфликтами при отправке команд напрямую в порт, и гарантирует стабильную работу через очередь печати 1С. Если же специфика оборудования требует исключительно прямого управления, используйте пример кода выше, предварительно убедившись в поддержке конкретных команд в руководстве пользователя вашего принтера.