При оформлении продаж через торговое оборудование программисты и системные администраторы часто сталкиваются со странным поведением кассовых аппаратов. Одной из популярных проблем при интеграции ККТ АТОЛ с конфигурацией «1С:Управление торговлей 10.3» (и другими решениями на обычных формах) является некорректный вывод итогов в чеке при безналичной оплате. В частности, касса печатает правильную сумму по строке «Электронными» (или «Безналичными»), но в строке «ПОЛУЧЕНО» выводит нулевое значение.
В рамках этой статьи мы подробно разберем причины возникновения этой ситуации, проанализируем взаимосвязь драйверов ККТ и программного кода 1С, а также рассмотрим по шагам, как исправить надпись «Сайт ФНС» в чеке или полностью убрать ее в соответствии с требованиями законодательства.
Для того чтобы понять логику работы кассового аппарата, разделим аппаратную логику ККТ и программный алгоритм, по которому 1С отправляет данные на печать через XML-пакеты.
Исторически в кассовых аппаратах строка «ПОЛУЧЕНО» всегда была тесно связана с наличными расчетами. Кассир вводит сумму наличных, полученных от покупателя (например, 1000 рублей при чеке на 750 рублей), чтобы ККТ автоматически рассчитала и напечатала строку «СДАЧА». При безналичном расчете физическая передача денег отсутствует, поэтому математическое ядро ККТ считает, что наличных получено ровно 0.00 рублей.
В старых версиях прошивок ККТ АТОЛ (в частности, на Платформе 2.5) встроенные шаблоны чеков не умели гибко подстраиваться под тип оплаты. Они безусловно выводили строку «ПОЛУЧЕНО» для любого чека, из-за чего на бумаге появлялась путаница: сумма безналичной оплаты указана верно, а в строке «Получено» отображался ноль.
В современных реалиях и обновленных версиях ПО АТОЛ эта проблема решается тремя основными путями: обновлением драйверов, обновлением прошивки кассы или корректировкой XML-пакета, который 1С отправляет в драйвер.
Выясним, как влияет обновление ПО на вывод фискальных строк. Это наиболее правильный и системный подход, не требующий вмешательства в код конфигурации 1С.
Если возможность быстро обновить прошивку ККТ отсутствует, мы можем скорректировать логику формирования XML-пакета непосредственно в конфигурации или внешней обработке обслуживания ККТ. Рассмотрим, как это сделать программно.
При формировании XML-схемы для передачи в драйвер ККТ АТОЛ за параметры оплаты отвечает узел Payments. Нам необходимо убедиться, что при оплате платежной картой сумма чека передается строго в параметр электронных оплат (тип платежа 1 или "Card"), а параметр наличных оплат принудительно обнуляется или вовсе исключается из структуры.
Проанализируем пример кода, который формирует XML-пакет чека в обработках обслуживания ККТ АТОЛ:
// Функция формирует структуру платежей для XML-пакета драйвера ККТ
Функция СформироватьБлокОплат(СуммаБезналичная, СуммаНаличная) Экспорт
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписьXML.ЗаписатьНачалоЭлемента("Payments");
// Если есть оплата безналичным расчетом (электронными)
Если СуммаБезналичная > 0 Тогда
ЗаписьXML.ЗаписатьНачалоЭлемента("Payment");
ЗаписьXML.ЗаписатьАтрибут("Type", "1"); // 1 - Безналичный расчет (электронные)
ЗаписьXML.ЗаписатьАтрибут("Sum", Формат(СуммаБезналичная, "ЧГ=0; ЧДЦ=2"));
ЗаписьXML.ЗаписатьКонецЭлемента(); // Payment
КонецЕсли;
// Если есть оплата наличными
Если СуммаНаличная > 0 Тогда
ЗаписьXML.ЗаписатьНачалоЭлемента("Payment");
ЗаписьXML.ЗаписатьАтрибут("Type", "0"); // 0 - Наличные
ЗаписьXML.ЗаписатьАтрибут("Sum", Формат(СуммаНаличная, "ЧГ=0; ЧДЦ=2"));
ЗаписьXML.ЗаписатьКонецЭлемента(); // Payment
КонецЕсли;
ЗаписьXML.ЗаписатьКонецЭлемента(); // Payments
Возврат ЗаписьXML.Закрыть();
КонецФункции
Убедитесь, что в вашей обработке обслуживания (например, ATOLKKT.ert для 7.7 или встроенных модулях интеграции БСП в 8.3) не происходит дублирования сумм, когда безналичный платеж ошибочно записывается и в наличные оплаты. Если в ККТ уходит ненулевой тег наличных оплат, ККТ будет ожидать эти деньги физически и напечатает «Получено: 0».
Перейдем ко второму вопросу, который часто волнует пользователей: как исправить или полностью убрать надпись «Сайт ФНС: www.nalog.ru» (или устаревший адрес) в чеке.
Адрес сайта ФНС (Тег 1060) является обязательным реквизитом фискального документа, но закон накладывает разные требования на его наличие в печатной и электронной форме чека. Согласно актуальным требованиям ФФД 1.05 и 1.2, печать адреса сайта ФНС на бумажном чеке не является обязательной (он должен обязательно присутствовать только в электронном документе, отправляемом в ОФД). Это позволяет нам либо исправить адрес, либо сэкономить чековую ленту, полностью убрав его из печати.
Если адрес сайта ФНС указан неверно (например, устаревший домен), его изменение производится в памяти фискального накопителя. Выполним эту процедуру по шагам:
www.nalog.gov.ru.Если ваша задача — максимально сэкономить место на чековой ленте, вы можете убрать нефискальные строки (такие как сайт ФНС, наименование ОФД и т.д.) из печатной формы через редактор шаблонов чеков АТОЛ. Разберем этот процесс:
После выполнения этих действий кассовый аппарат перестанет тратить чековую ленту на вывод необязательной информации, при этом электронная копия чека, отправляемая вашему оператору фискальных данных, по-прежнему будет содержать всю необходимую информацию в строгом соответствии с требованиями законодательства РФ.