Как управлять отрезчиком принтера этикеток из 1С:Управление торговлей?

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

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

Настройка на уровне драйвера принтера

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

  1. Откройте «Панель управления» -> «Устройства и принтеры».
  2. Выберите ваш принтер, нажмите правую кнопку мыши и выберите «Настройка печати» или «Свойства принтера».
  3. Найдите вкладку, отвечающую за параметры страницы или действия после печати (обычно она называется «Post-Print Action» или «Действия после печати»).
  4. Выберите нужный режим: «Отрезка» (Cut), «Перфорация» или «Ожидание».

Преимущество этого метода: вам не нужно изменять код в 1С. Принтер будет выполнять отрезку автоматически согласно заданным настройкам. Если вам требуется разная логика (например, иногда отрезать, а иногда нет), рекомендуем создать два принтера в Windows с одинаковыми параметрами порта, но разными настройками драйвера.

Управление отрезчиком через прямую отправку команд

Если вам необходима гибкая программная логика, позволяющая управлять отрезчиком динамически из кода 1С, можно воспользоваться отправкой низкоуровневых команд в порт принтера. Этот метод требует знания языка управления конкретной модели принтера (ZPL для Zebra, EZPL для Godex и т.д.).

Рассмотрим пример отправки команды ^MMC для принтеров Zebra (ZPL), которая активирует функцию отрезки.

Для выполнения этой задачи мы воспользуемся объектами ЗаписьТекста и методом КопироватьФайл для прямой отправки данных в COM-порт:


ИмяФайла = ПолучитьИмяВременногоФайла("txt");
Запись = Новый ЗаписьТекста(ИмяФайла);
// Отправка команды ZPL для активации отрезчика
Запись.ЗаписатьСтроку("^MMC");
Запись.Закрыть();

Попытка
    // Прямая отправка файла команды в порт принтера
    КопироватьФайл(ИмяФайла, "\\.\com15");
Исключение
    ТекстОшибки = ОписаниеОшибки();
    Сообщить(ТекстОшибки);
КонецПопытки;

Обратите внимание на следующие нюансы:

Рекомендации по реализации

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

Разберем типичный сценарий:

  1. Создайте два принтера в системе: Принтер_Без_Отрезки и Принтер_С_Отрезкой.
  2. В 1С, при выборе принтера в настройках печати, выбирайте тот, который соответствует вашей задаче в конкретный момент.
  3. Если логика «отрезать» или «не отрезать» должна меняться программно внутри одной процедуры, просто укажите в параметрах печати нужное имя принтера.

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

← На главную