Как настроить обрезку и прокрутку ленты при печати произвольного текста на ККТ АТОЛ 10 в 1С?

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

При переходе на драйвер ККТ АТОЛ 10-й версии (ДТО 10) разработчики часто сталкиваются с тем, что привычные методы прямого управления механизмами кассы перестают работать. В частности, прямые команды прокрутки ленты lineFeed() и обрезки чека Cut() (или FullCut()) игнорируются устройством, хотя сам текстовый блок печатается без ошибок. Выясним причину такого поведения и разберем по шагам, как правильно реализовать печать произвольного текста с автоматическим отрезом без вывода лишней информации.

Почему не работают прямые методы lineFeed() и Cut()?

В современных версиях ДТО 10 архитектура взаимодействия с кассовым аппаратом построена на строгом контроле состояний устройства. Касса ожидает последовательного выполнения этапов оформления документа. Прямой вызов низкоуровневых команд обрезки и прокрутки вне открытого документа часто блокируется внутренними механизмами драйвера или прошивки ККТ. Особенно критично это проявляется на Платформе 5.0, где кассовый аппарат самостоятельно управляет физическими процессами печати на основе логических блоков данных.

Решение: Использование механизма нефискальных документов

Чтобы кассовый аппарат корректно отработал протяжку ленты и выполнил отрез после печати произвольного текста, необходимо оборачивать вывод информации в рамки специального нефискального документа. Для этого используются методы драйвера beginNonfiscalDocument() и endNonfiscalDocument().

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


// Инициализируем начало нефискального документа
FR.beginNonfiscalDocument();

// Устанавливаем параметры текста и выводим строки
FR.setParam(FR.LIBFPTR_PARAM_TEXT, "--- НЕФИСКАЛЬНЫЙ ДОКУМЕНТ ---");
FR.printText();

FR.setParam(FR.LIBFPTR_PARAM_TEXT, "Тестовая строка 1");
FR.printText();

FR.setParam(FR.LIBFPTR_PARAM_TEXT, "Тестовая строка 2");
FR.printText();

FR.setParam(FR.LIBFPTR_PARAM_TEXT, "-----------------------------");
FR.printText();

// Завершаем нефискальный документ
// При закрытии документа ККТ автоматически выполнит необходимую прокрутку и отрезку ленты
FR.endNonfiscalDocument();

Как отключить печать подвала и даты/времени?

При использовании стандартного метода закрытия нефискального документа endNonfiscalDocument() касса может автоматически напечатать системный подвал (дата, время, ИНН и надпись «НЕФИСКАЛЬНЫЙ ДОКУМЕНТ»). Чтобы избежать печати этой лишней информации и сэкономить чековую ленту, перед закрытием документа необходимо явно передать драйверу параметр отключения подвала.

Посмотрим на пример реализации отключения подвала:


FR.beginNonfiscalDocument();

FR.setParam(FR.LIBFPTR_PARAM_TEXT, "Печать текста без подвала");
FR.printText();

// Передаем параметр, отключающий печать подвала
FR.setParam(FR.LIBFPTR_PARAM_PRINT_FOOTER, 0); // Использование числового 0 или Ложь в зависимости от обертки драйвера

// Завершаем документ - теперь подвал печататься не будет, но автоотрез сработает штатно
FR.endNonfiscalDocument();

Как полностью убрать встроенный логотип АТОЛ?

Даже после программного отключения подвала при открытии нефискального документа на ленте может продолжать печататься рекламный или стандартный логотип АТОЛ. Этот логотип находится в энергонезависимой памяти самой кассы и выводится автоматически как часть клише (шапки документа) при вызове метода beginNonfiscalDocument().

Чтобы полностью убрать этот логотип, выполним настройку параметров ККТ через сервисную утилиту:

  1. Полностью закройте 1С (и любые другие программы, которые могут занимать порт подключения к кассе).
  2. Запустите официальную утилиту «Тест драйвера ККТ» от компании АТОЛ.
  3. В правом верхнем углу окна установите флажок «Включено» для связи с устройством.
  4. Перейдите в меню «Свойства», нажмите кнопку «Параметры ККТ».
  5. Найдите в списке раздел «9. Клише» (в некоторых версиях прошивок он может называться «Шапка и подвал»).
  6. В первой или второй строках клише вы увидите управляющие символы вызова встроенной картинки (например, строку вида ↓36↓¶0,center¶ или аналогичный код).
  7. Очистите эту строку, сделав ее пустой, либо впишите туда текстовое название вашей организации вместо вызова картинки.
  8. Нажмите кнопку «Сохранить» или «Записать» для отправки настроек в память ККТ.

После этого касса при получении команды начала документа больше не будет тратить ленту на печать графического логотипа.

Альтернативный способ для конфигураций на БСП (1С 8.3)

Если интеграция происходит в современных конфигурациях 1С 8.3 через Библиотеку подключаемого оборудования (БПО), можно использовать механизм отправки специальных тегов разметки. Компонента БПО самостоятельно преобразует эти теги в корректные команды драйвера АТОЛ 10.

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

Для обеспечения необходимой высоты прокрутки (чтобы текст полностью вышел из прорези крышки ККТ перед отрезом) рекомендуется добавлять несколько пустых строк Символы.ПС (перевод строки) непосредственно перед вызовом команды отрезки.

← На главную