Как настроить автоматическую отрезку нефискального чека в 1С:Розница при печати текстовых документов

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

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

В этой статье мы подробно разберем, почему метод НапечататьТекстовыйДокумент может игнорировать команду отрезки, и какие программные и аппаратные методы существуют для решения этой задачи. Мы проанализируем ситуацию на примере интеграции через стандартные драйверы ККТ и выясним, как заставить устройство работать правильно.

Анализ метода НапечататьТекстовыйДокумент

Для печати произвольного текста в 1С обычно используется интеграционная компонента и метод НапечататьТекстовыйДокумент. Типичный вызов этой функции в коде выглядит следующим образом:


Результат = ОбъектДрайвера.НапечататьТекстовыйДокумент(ПараметрыПодключения.ИДУстройства, ТекстПечати);

Проблема заключается в том, что стандарт 1С для драйверов оборудования не всегда подразумевает наличие отдельной команды Отрезать() для нефискальных документов. ККТ воспринимает такой текст как единый поток данных. Если драйвер или прошивка аппарата настроены на «умную» отрезку только фискальных документов, то после текстового блока нож просто не сработает.

Решение 1: Использование управляющих тегов в тексте

Самый простой и эффективный способ программно инициировать отрезку — это вставка специальных управляющих тегов непосредственно в строку ТекстПечати. Драйвер 1С при анализе текста ищет эти маркеры и преобразует их в низкоуровневые команды для принтера чеков.

Рассмотрим основные варианты тегов, которые поддерживаются большинством современных драйверов (АТОЛ, Штрих-М):

Важные нюансы использования тегов:

  1. Тег должен находиться в самом конце строки текста.
  2. Перед тегом и после него крайне желательно добавить символ перевода строки Символы.ПС.
  3. Некоторые драйверы чувствительны к регистру, поэтому можно попробовать вариант [CUT].

Давайте посмотрим на пример функции, формирующей текст для печати с корректной отрезкой:


Функция СформироватьТекстЧекаС Отрезкой(ДанныеДляПечати) Экспорт
    Текст = "      КОПИЯ ЧЕКА" + Символы.ПС;
    Текст = Текст + "--------------------------" + Символы.ПС;
    Текст = Текст + "Товар: " + ДанныеДляПечати.Наименование + Символы.ПС;
    Текст = Текст + "Сумма: " + ДанныеДляПечати.Сумма + Символы.ПС;
    Текст = Текст + "--------------------------" + Символы.ПС;
    
    // Добавляем пустые строки, чтобы текст вышел из-под ножа
    Текст = Текст + Символы.ПС + Символы.ПС + Символы.ПС;
    
    // Добавляем управляющий тег отрезки
    Текст = Текст + "[отрезка]"; 
    
    Возврат Текст;
КонецФункции

Решение 2: Настройка параметров ККТ в драйвере производителя

Если программные теги не помогают, необходимо проверить настройки самого оборудования. Часто в параметрах ККТ функция отрезки для нефискальных документов отключена на уровне железа. Проанализируем настройки для двух самых популярных производителей.

Для устройств АТОЛ (Драйвер 10.х):

Запустите «Тест драйвера ККТ», перейдите в раздел «Свойства» -> «Параметры ККТ». Найдите ветку «Печать». Здесь важно проверить значение флага «Отрезка после нефискального документа» или «Автоотрезка». Убедитесь, что тип отрезки выбран как «Полная» или «Частичная», а не «Никакая».

Для устройств Штрих-М:

В «Тесте драйвера» откройте «Таблицы». Нас интересует Таблица 1 «Настройки». Проверьте следующие поля:

Решение 3: Добавление пустых строк (Padding)

Иногда отрезка срабатывает, но из-за особенностей конструкции печатающего механизма нож разрезает последнюю строку текста. Это происходит потому, что линия печати и линия ножа физически разнесены на 1-2 сантиметра. Чтобы избежать «зажевывания» информации, мы рекомендуем всегда добавлять 4-6 пустых строк перед командой отрезки.


// Продвигаем бумагу за линию ножа
Для Итератор = 1 По 5 Цикл
    ТекстПечати = ТекстПечати + Символы.ПС;
КонецЦикла;
ТекстПечати = ТекстПечати + "[cut]";

Решение 4: Специфика РИБ и версий драйверов

Если в вашей сети магазинов используется РИБ (Распределенная информационная база), и в части магазинов отрезка работает, а в других нет — проанализируйте версию интеграционной компоненты. В справочнике «Драйверы оборудования» в 1С может быть загружена старая версия файла (например, Atol_KKT_10.zip), которая некорректно транслирует XML-пакеты в команды драйвера. Убедитесь, что на всех узлах используется идентичная версия драйвера производителя и одинаковая «прослойка» от 1С.

Также проверьте модель ККТ. Бюджетные модели (например, АТОЛ 30Ф или АТОЛ 11Ф) не имеют встроенного автоматического отрезчика — в них используется металлическая гребенка для ручного отрыва. В таких случаях программная команда отрезки будет игнорироваться устройством по техническим причинам.

Заключение

Мы рассмотрели основные причины, по которым 1С:Розница 2 может не отрезать чек при использовании метода НапечататьТекстовыйДокумент. Чаще всего проблема решается добавлением тега [отрезка] с предварительным переводом строки. Если это не помогает, следует обратиться к низкоуровневым настройкам таблиц ККТ через утилиты производителя.

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

← На главную