В процессе эксплуатации старых конфигураций, таких как 1С:Управление производственным предприятием (УПП) 1.2, часто возникает необходимость адаптации системы под постоянно меняющееся законодательство в сфере применения контрольно-кассовой техники (ККТ). Одной из таких задач является вывод ИНН и наименования покупателя в кассовом чеке при расчетах между организациями и индивидуальными предпринимателями. Разберем подробно, как реализовать эту возможность программно, используя механизмы формирования XML-пакета для драйвера Атол.
Согласно поправкам в 54-ФЗ, вступившим в силу еще в 2019 году, при осуществлении расчетов наличными деньгами или с предъявлением электронных средств платежа между организациями и (или) индивидуальными предпринимателями, кассовый чек должен содержать дополнительные реквизиты:
Проанализируем ситуацию: если ваша конфигурация сильно кастомизирована и модули работы с ККМ обновлялись выборочно, стандартные механизмы могут не передавать эти данные. Это критично для ваших контрагентов, так как отсутствие ИНН в чеке может стать причиной отказа в зачете расходов или вычета по НДС. Рассмотрим, как это исправить на уровне программного кода.
В современных версиях Библиотеки подключаемого оборудования (БПО) передача данных в драйвер ККТ осуществляется через структурированный пакет в формате XML. Нам необходимо найти функцию, которая отвечает за формирование этого пакета. Обычно это функция ПолучитьXMLПакетДляФискализацияЧека в общем модуле МенеджерОборудованияВызовСервера или аналогичном (в зависимости от того, как глубоко были внедрены изменения из новых версий БПО в вашу УПП).
Для корректной передачи ИНН и наименования покупателя в корень узла CheckPackage (или соответствующего узла описания чека) необходимо добавить следующие атрибуты:
Рассмотрим пример того, как подготовить данные для записи в XML. Предположим, у нас есть объект документа (например, Реализация товаров и услуг), из которого мы можем получить данные контрагента. Разберем по шагам процесс модификации формирования XML-пакета.
Сначала проанализируем фрагмент кода, который отвечает за наполнение заголовка чека:
// Пример добавления реквизитов покупателя в структуру XML
ЗаписьXML.ЗаписатьНачалоЭлемента("CheckPackage");
// Проверяем наличие ИНН покупателя в данных документа
Если ЗначениеЗаполнено(ДанныеЧека.ИННПокупателя) Тогда
// Записываем ИНН покупателя (Тег 1228)
ЗаписьXML.ЗаписатьАтрибут("CustomerINN", СокрЛП(ДанныеЧека.ИННПокупателя));
// По правилам ФНС вместе с ИНН рекомендуется передавать и наименование (Тег 1227)
Если ЗначениеЗаполнено(ДанныеЧека.НаименованиеПокупателя) Тогда
ЗаписьXML.ЗаписатьАтрибут("Customer", СокрЛП(ДанныеЧека.НаименованиеПокупателя));
КонецЕсли;
КонецЕсли;
// Дальнейшее формирование тела чека
// ...
Важно помнить, что CustomerINN должен содержать только цифры. Если в базе 1С ИНН хранится с пробелами или другими символами, их необходимо предварительно очистить. Также выясним причину возможных ошибок: если передать некорректный ИНН (например, ошибиться в контрольном числе), драйвер Атол может вернуть ошибку "Неверный формат данных" или просто проигнорировать поле.
При работе с оборудованием Атол (особенно через 10-ю версию драйвера) необходимо учитывать версию Формата фискальных данных (ФФД). Посмотрим на различия:
Если после внесения изменений в XML-пакет данные все равно не печатаются, проанализируем интеграционную компоненту (обработку обслуживания). Старые версии обработок, написанные под стандарт 2.0 или ниже, могут не распознавать новые атрибуты XML и "вырезать" их перед отправкой команды в драйвер. В этом случае потребуется обновить обработку обслуживания до актуальной версии, поддерживающей стандарт 3.0.
После внесения правок в код выполним следующие действия для проверки:
<CheckPackage ... CustomerINN="7700000000" Customer="ООО 'Ромашка'">.AppData\Roaming\Atol\drivers10\logs). Найдем команду формирования чека и убедимся, что параметры 1227 и 1228 передаются корректно.Важный момент: Если вы используете очень старую версию прошивки ККТ, она может физически не знать о существовании этих тегов. В таком случае поможет только обновление прошивки кассового аппарата силами сервисного центра или через утилиты производителя.
Мы проанализировали процесс добавления ИНН покупателя в кассовый чек для "переписанной" УПП. Основной секрет кроется в использовании правильных имен атрибутов (CustomerINN и Customer) при формировании XML-пакета. Совместная работа программиста по обновлению кода и системного администратора по актуализации драйверов и прошивок гарантирует соответствие ваших продаж требованиям 54-ФЗ и спокойствие ваших бизнес-партнеров.