При работе со старыми конфигурациями, такими как "Управление торговлей" редакции 10.3, и современным оборудованием, соответствующим 54-ФЗ, программисты часто сталкиваются с проблемой вывода нефискальной информации. Обычные методы, которые работали в старых драйверах (DTO 6 или 8), могут выдавать ошибку "Метод объекта не обнаружен" или просто не приводить к печати на ленте. Разберем подробно, как решить задачу вывода произвольной строки (например, общей суммы скидки) на кассах АТОЛ 30Ф.
Проанализируем ситуацию: в конфигурациях на обычных формах взаимодействие с кассой часто идет через промежуточную обработку обслуживания. Если вы пытаетесь вызвать метод НапечататьНеФискСтроку() напрямую у объекта драйвера версии 10.х, это не сработает, так как структура команд в новом драйвере (DTO 10) принципиально изменилась. Более того, при использовании 54-ФЗ касса работает в режиме жесткой структуризации документа, где нельзя просто "вклиниться" в середину фискального чека с произвольным текстом.
Одним из рабочих вариантов для конфигураций 1С 8.3 (Обычные формы) является использование метода печати текстового документа. Этот метод позволяет отправить набор строк на принтер чеков. Посмотрим на пример кода, который может быть использован в обработке обслуживания:
// Пример вызова метода печати текста через объект драйвера
ТекстПечати = "СУММА СКИДКИ ПО ЧЕКУ: " + Формат(СуммаСкидки, "ЧДЦ=2");
Результат = ОбъектДрайвера.НапечататьТекстовыйДокумент(пПараметрыПодключения.ИДУстройства, ТекстПечати);
Если Не Результат Тогда
Предупреждение("Ошибка печати нефискального текста!");
КонецЕсли;
Важный нюанс: если этот метод возвращает Истина, но касса ничего не печатает, это означает, что команда ушла в буфер, но не была завершена. В драйверах АТОЛ 10 для корректного вывода текста вне фискального чека иногда требуется вызвать метод завершения документа или убедиться, что касса не находится в состоянии открытого фискального чека.
В современных релизах 1С:УТ 10.3 работа с кассой строится на формировании XML-структуры, которая передается драйверу. Чтобы вывести скидку или любой текст внутри чека, нам нужно программно добавить соответствующие теги в XML. Рассмотрим, как это сделать структурно:
TextString в структуру.Пример структуры XML, которую понимает современная библиотека подключаемого оборудования (БПО):
// Вставка текстовой строки в XML перед закрытием чека
ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
ЗаписьXML.ЗаписатьАтрибут("Text", "ИТОГО СКИДКА: " + Строка(ОбщаяСуммаСкидки));
ЗаписьXML.ЗаписатьКонецЭлемента(); // TextString
Этот текст будет напечатан в составе чека. Однако помните, что согласно требованиям ФФД 1.05/1.1, произвольный текст лучше выводить либо в самом начале (заголовок), либо в самом конце (подвал) документа.
Выясним причину, по которой обычный текст может не подходить. Для налоговых органов важна прозрачность расчетов. В ФФД (формат фискальных данных) существует специальный реквизит — тег 1192 ("Дополнительный реквизит пользователя"). Это наиболее правильный способ с точки зрения законодательства.
Реквизит состоит из двух полей:
Если ваша версия конфигурации и прошивка ККТ поддерживают этот тег, данные не просто напечатаются на бумаге, но и уйдут в ОФД, что исключит вопросы при проверках.
Разберем дополнительные возможности, если программный код менять сложно:
PrintString не срабатывает, убедитесь, что вы не пытаетесь печатать текст внутри открытого фискального документа (между регистрацией позиции и закрытием чека).ATOLKKT.epf, она может не знать о новых методах драйвера 10.х. Рекомендуется скачать актуальную версию обработки с сайта поддержки 1С или портала ИТС.Мы проанализировали ситуацию и выяснили, что проблема вывода строки в АТОЛ 30Ф чаще всего кроется в несоответствии методов драйвера и состояния кассы. Для решения задачи:
НапечататьТекстовыйДокумент для вывода текста ВНЕ чека.TextString в XML для вывода текста ВНУТРИ чека.