Как изменить текст и оформление в чеке ККМ АТОЛ при работе из 1С:Управление торговлей 10.3

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

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

Однако стандартные попытки найти и поправить эти слова непосредственно в кодовой базе 1С — например, в обработке обслуживания ККТ ATOLkkt.epf или в общем модуле интеграции — не приносят никакого результата. Давайте подробно разберем, почему так происходит, как устроено взаимодействие системы 1С с кассовыми аппаратами АТОЛ, и какими способами можно реально управлять содержимым и внешним видом чека. Для корректной интеграции конфигурации с современным драйвером ККТ без изменения типового кода можно использовать обработку обслуживания ККТ АТОЛ для УТ 10.3 под требования 54-ФЗ и ДТО 10.

Почему изменения в коде 1С не меняют фискальные слова на чеке

Для начала проанализируем архитектуру фискализации. Современные кассовые аппараты (онлайн-кассы) работают в строгом соответствии с требованиями Федерального закона ФЗ-54 и актуальных форматов фискальных документов (ФФД 1.05, 1.1, 1.2). Согласно этой схеме, учетная система 1С выполняет лишь роль «командного центра», который отправляет драйверу кассы структурированный запрос на продажу.

Рассмотрим, как выглядит этот процесс по шагам:

  1. Программа 1С формирует стандартизированный XML-пакет (так называемый CheckPackage), описывающий состав чека, суммы, ставки налога и типы оплат.
  2. В этом XML-пакете передаются не готовые текстовые строки визуального представления чека, а стандартизованные идентификаторы и коды. Например, вместо текста «ОБЩАЯ СИСТЕМА НАЛОГООБЛОЖЕНИЯ» передается цифровой код СНО, а вместо текста «БЕЗ НДС» — строковый или числовой идентификатор налога (например, none).
  3. Драйвер ККТ (например, ДТО 10 от АТОЛ) принимает этот XML, валидирует его структуру и транслирует команды непосредственно в процессор кассового аппарата.
  4. Внутреннее программное обеспечение ККТ (прошивка кассы) сопоставляет полученные коды со встроенным словарем и печатает регламентированные законом термины. Кассовый аппарат физически не позволит заменить слово «ПОЛНЫЙ РАСЧЕТ» на «ОПЛАТА», так как формулировка жестко зашита в памяти ККТ в соответствии с требованиями ФНС. Попытка передать некорректный код вместо стандартного идентификатора приведет к ошибке оборудования (например, «Неизвестный реквизит» или «Ошибка ФН»).

Посмотрим на пример структуры XML-пакета, который формируется в 1С и передается драйверу ККТ:


// Пример формирования структуры XML для отправки на ККТ через Драйвер АТОЛ
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("CheckPackage");

// Параметры чека (тип расчета, СНО)
ЗаписьXML.ЗаписатьНачалоЭлемента("Parameters");
ЗаписьXML.ЗаписатьАтрибут("PaymentType", "1"); // 1 - Приход
ЗаписьXML.ЗаписатьАтрибут("TaxVariant", "1");  // Код СНО (например, упрощенная СНО)
ЗаписьXML.ЗаписатьКонецЭлемента(); // Parameters

// Позиции чека
ЗаписьXML.ЗаписатьНачалоЭлемента("Positions");
ЗаписьXML.ЗаписатьНачалоЭлемента("FiscalString");
ЗаписьXML.ЗаписатьАтрибут("Name", "Услуга по настройке ПО");
ЗаписьXML.ЗаписатьАтрибут("Quantity", "1");
ЗаписьXML.ЗаписатьАтрибут("Price", "1500.00");
ЗаписьXML.ЗаписатьАтрибут("Amount", "1500.00");
ЗаписьXML.ЗаписатьАтрибут("Department", "1");
ЗаписьXML.ЗаписатьАтрибут("Tax", "none"); // Код ставки НДС (БЕЗ НДС)
ЗаписьXML.ЗаписатьКонецЭлемента(); // FiscalString
ЗаписьXML.ЗаписатьКонецЭлемента(); // Positions

ЗаписьXML.ЗаписатьКонецЭлемента("CheckPackage");
XMLПакет = ЗаписьXML.Закрыть();

Как видим из кода, в XML-пакете нет слов «БЕЗ НДС» или «ПОЛНЫЙ РАСЧЕТ» — их печатает сама касса на основе переданных тегов. Следовательно, изменять программный код 1С для редактирования фискальных терминов бессмысленно.

Ограничения современных платформ АТОЛ (Платформа 5.0)

Выясним причину, почему старые руководства по настройке внешнего вида чеков больше не работают. В кассах АТОЛ предыдущих поколений (работавших на Платформе 2.5 или 3.0) существовала специализированная утилита «Редактор шаблонов чеков АТОЛ» (TemplateEditor). Она позволяла визуально передвигать блоки чека, менять шрифты и даже удалять некоторые нефискальные строки.

В современных кассах, переведенных на Платформу 5.0, концепция изменилась:

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

Решение 1: Смена шаблона чека и редактирование клише через Тест драйвера ККТ

Для изменения глобального оформления чека (высоты шрифта, плотности строк, переносов) выполним следующие шаги с использованием утилиты управления драйвером:

  1. Закроем программу 1С:Предприятие (чтобы освободить COM-порт или сетевое подключение к кассе).
  2. Запустим утилиту «Тест драйвера ККТ» (версии 10.x).
  3. Установим флаг «Включено» в правом верхнем углу для связи с кассовым аппаратом.
  4. Перейдем в раздел «Свойства» (кнопка в правом верхнем углу).
  5. В открывшемся окне нажмем кнопку «Параметры ККТ».
  6. Найдем раздел «Шаблон чека». Здесь можно выбрать один из встроенных вариантов (например, переключить на компактный шаблон для экономии бумаги).
  7. Для изменения статического текста в начале и конце чека (названия магазина, приветственного текста, адреса, условий возврата) перейдем в раздел «Клише / Реклама».
  8. Отредактируем строки клише (шапки) и строк подвала чека. Здесь же можно настроить количество пустых строк после печати чека, чтобы ленту было удобно отрывать.
  9. Нажмем кнопку «Сохранить» или «Записать» для отправки настроек в память ККТ.

Решение 2: Программный вывод произвольного текста из 1С

Если перед нами стоит задача выводить на чек динамическую информацию из 1С (например, баланс бонусной карты клиента, рекламную информацию о текущих акциях или ФИО кассира), то делать это нужно через механизм нефискальных строк чека.

Для этого в конфигурации 1С:Управление торговлей 10.3 необходимо доработать модуль, отвечающий за формирование XML-пакета чека. Обычно это функция ПодготовитьДанныеДляФискализацииЧека в обработке обслуживания оборудования или общем модуле работы с торговым оборудованием. Нам нужно внедрить в структуру XML тег TextString.

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


// Пример добавления нефискального текста в XML-пакет чека
// Предположим, у нас есть сформированный пакет структуры XML
// Добавим информацию о бонусном балансе клиента

ЗаписьXML.ЗаписатьНачалоЭлемента("NonFiscalLines"); // Секция нефискальных строк

ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
ЗаписьXML.ЗаписатьАтрибут("Text", "--------------------------------");
ЗаписьXML.ЗаписатьКонецЭлемента(); // TextString

ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
ЗаписьXML.ЗаписатьАтрибут("Text", "Баланс вашей карты: 450 бонусов");
ЗаписьXML.ЗаписатьКонецЭлемента(); // TextString

ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
ЗаписьXML.ЗаписатьАтрибут("Text", "Скидка на следующую покупку 5%!");
ЗаписьXML.ЗаписатьКонецЭлемента(); // TextString

ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
ЗаписьXML.ЗаписатьАтрибут("Text", "--------------------------------");
ЗаписьXML.ЗаписатьКонецЭлемента(); // TextString

ЗаписьXML.ЗаписатьКонецЭлемента(); // NonFiscalLines

При получении такого XML-пакета драйвер АТОЛ скомандует кассовому аппарату напечатать указанные строки обычным текстовым шрифтом. Эти строки не будут проверяться фискальным накопителем и не отправятся в ОФД, но отобразятся на бумажном документе. При необходимости выводить после чека не только текст, но и графику, можно использовать решение для печати картинок и рекламы в нефискальной части чека ККМ АТОЛ через ДТО 10.

Рекомендации по экономии чековой ленты и соблюдению ФЗ-54

Рассматривая варианты сокращения чека, важно помнить о юридической стороне вопроса. Согласно требованиям ФФД, на чеке обязательно должны присутствовать определенные реквизиты (дата и время расчета, адрес и место осуществления расчетов, ИНН, система налогообложения, признак расчета, наименование товаров/услуг, суммы по разным типам оплат и т. д.).

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

Таким образом, правильный путь изменения чека АТОЛ в связке с 1С:УТ 10.3 — это комбинация настройки встроенных шаблонов ККТ через тест драйвера и программное добавление нефискальных текстовых блоков (тег TextString) в XML-структуру пакета печати чека.

← На главную