Как вывести произвольную строку или сумму скидки в чеке ККТ АТОЛ 30Ф из 1С

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

При работе со старыми конфигурациями, такими как "Управление торговлей" редакции 10.3, и современным оборудованием, соответствующим 54-ФЗ, программисты часто сталкиваются с проблемой вывода нефискальной информации. Обычные методы, которые работали в старых драйверах (DTO 6 или 8), могут выдавать ошибку "Метод объекта не обнаружен" или просто не приводить к печати на ленте. Разберем подробно, как решить задачу вывода произвольной строки (например, общей суммы скидки) на кассах АТОЛ 30Ф.

Почему возникает ошибка Метод объекта не обнаружен

Проанализируем ситуацию: в конфигурациях на обычных формах взаимодействие с кассой часто идет через промежуточную обработку обслуживания. Если вы пытаетесь вызвать метод НапечататьНеФискСтроку() напрямую у объекта драйвера версии 10.х, это не сработает, так как структура команд в новом драйвере (DTO 10) принципиально изменилась. Более того, при использовании 54-ФЗ касса работает в режиме жесткой структуризации документа, где нельзя просто "вклиниться" в середину фискального чека с произвольным текстом.

Решение 1: Использование метода НапечататьТекстовыйДокумент

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


// Пример вызова метода печати текста через объект драйвера
ТекстПечати = "СУММА СКИДКИ ПО ЧЕКУ: " + Формат(СуммаСкидки, "ЧДЦ=2");
Результат = ОбъектДрайвера.НапечататьТекстовыйДокумент(пПараметрыПодключения.ИДУстройства, ТекстПечати);

Если Не Результат Тогда
    Предупреждение("Ошибка печати нефискального текста!");
КонецЕсли;

Важный нюанс: если этот метод возвращает Истина, но касса ничего не печатает, это означает, что команда ушла в буфер, но не была завершена. В драйверах АТОЛ 10 для корректного вывода текста вне фискального чека иногда требуется вызвать метод завершения документа или убедиться, что касса не находится в состоянии открытого фискального чека.

Решение 2: Модификация XML-пакета чека (БПО)

В современных релизах 1С:УТ 10.3 работа с кассой строится на формировании XML-структуры, которая передается драйверу. Чтобы вывести скидку или любой текст внутри чека, нам нужно программно добавить соответствующие теги в XML. Рассмотрим, как это сделать структурно:

  1. Найдем в модуле обработки или в общем модуле процедуру формирования XML для чека.
  2. Добавим блок TextString в структуру.

Пример структуры XML, которую понимает современная библиотека подключаемого оборудования (БПО):


// Вставка текстовой строки в XML перед закрытием чека
ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
ЗаписьXML.ЗаписатьАтрибут("Text", "ИТОГО СКИДКА: " + Строка(ОбщаяСуммаСкидки));
ЗаписьXML.ЗаписатьКонецЭлемента(); // TextString

Этот текст будет напечатан в составе чека. Однако помните, что согласно требованиям ФФД 1.05/1.1, произвольный текст лучше выводить либо в самом начале (заголовок), либо в самом конце (подвал) документа.

Решение 3: Использование фискального тега 1192

Выясним причину, по которой обычный текст может не подходить. Для налоговых органов важна прозрачность расчетов. В ФФД (формат фискальных данных) существует специальный реквизит — тег 1192 ("Дополнительный реквизит пользователя"). Это наиболее правильный способ с точки зрения законодательства.

Реквизит состоит из двух полей:

Если ваша версия конфигурации и прошивка ККТ поддерживают этот тег, данные не просто напечатаются на бумаге, но и уйдут в ОФД, что исключит вопросы при проверках.

Практические советы по работе с АТОЛ 30Ф

Разберем дополнительные возможности, если программный код менять сложно:

  1. Настройка клише в драйвере: Если вам нужно выводить статичный текст (например, информацию об акциях или общую информацию о скидках в магазине), воспользуйтесь "Тестом драйвера ККТ". В разделе "Свойства" -> "Параметры ККТ" можно заполнить строки "Нижняя часть чека" (футер). Касса будет сама добавлять этот текст к каждому чеку.
  2. Проверка версии прошивки: Для АТОЛ 30Ф крайне важна платформа. На Платформе 5.0 работа с нефискальными строками стала более строгой. Если метод PrintString не срабатывает, убедитесь, что вы не пытаетесь печатать текст внутри открытого фискального документа (между регистрацией позиции и закрытием чека).
  3. Обновление обработки обслуживания: Если в вашей УТ 10.3 используется старая обработка ATOLKKT.epf, она может не знать о новых методах драйвера 10.х. Рекомендуется скачать актуальную версию обработки с сайта поддержки 1С или портала ИТС.

Итог совместной работы

Мы проанализировали ситуацию и выяснили, что проблема вывода строки в АТОЛ 30Ф чаще всего кроется в несоответствии методов драйвера и состояния кассы. Для решения задачи:

← На главную