В современной практике розничной и мелкооптовой торговли часто возникает необходимость оформления расчетов между юридическими лицами или индивидуальными предпринимателями через контрольно-кассовую технику (ККТ). Согласно требованиям ФЗ-54 и актуальным форматам фискальных данных (ФФД), при таких расчетах в чеке должны присутствовать реквизиты покупателя: его наименование и ИНН. Рассмотрим подробнее, как реализовать эту задачу на платформе 1С:Предприятие 7.7, используя драйвер Атол ДТО 8.х и популярную кассу Атол 30Ф.
Прежде чем переходить к написанию кода, проанализируем нормативную базу. Обязанность указывать ИНН и наименование покупателя (теги 1228 и 1227 соответственно) возникла для расчетов между организациями и ИП с 1 июля 2019 года. Эти данные критически важны для корректного отображения операций в системе ОФД и налоговой отчетности.
Для успешной реализации нам необходимо убедиться, что оборудование соответствует следующим критериям:
Разберем по шагам, как передать нужные атрибуты в кассовое ПО. В объектной модели драйвера Атол 8-й версии для передачи дополнительных реквизитов используется связка свойств AttrNumber, AttrValue и метод WriteAttribute().
Посмотрим на практический пример кода, который необходимо вставить в процедуру формирования чека (обычно это происходит после открытия чека методом OpenCheck, но до регистрации первой товарной позиции или до закрытия чека):
// Подготовка данных покупателя (Юридического лица или ИП)
НаимПокупателя = СокрЛП(Контрагент.ПолнНаименование);
// Ограничение длины согласно спецификации ФФД (макс 256 символов)
Если СтрДлина(НаимПокупателя) > 256 Тогда
НаимПокупателя = Лев(НаимПокупателя, 256);
КонецЕсли;
// Запись тега 1227 - Наименование покупателя
ОбъектECR.AttrNumber = 1227;
ОбъектECR.AttrValue = НаимПокупателя;
ОбъектECR.WriteAttribute();
// Подготовка ИНН покупателя
ИННПок = СокрЛП(Контрагент.ИНН);
// ИНН должен быть либо 10 знаков (ЮЛ), либо 12 знаков (ИП)
Если СтрДлина(ИННПок) > 12 Тогда
ИННПок = Лев(ИННПок, 12);
КонецЕсли;
// Запись тега 1228 - ИНН покупателя
Если СтрДлина(ИННПок) >= 10 Тогда
ОбъектECR.AttrNumber = 1228;
ОбъектECR.AttrValue = ИННПок;
ОбъектECR.WriteAttribute();
КонецЕсли;
Проанализируем ситуацию: почему мы используем именно эти команды? В драйвере Атол ДТО 8 механизм передачи тегов реализован через "контейнер" атрибутов.
AttrNumber — это свойство, в которое мы передаем номер тега согласно классификатору ФФД. В нашем случае 1227 отвечает за название организации-покупателя, а 1228 — за её ИНН.AttrValue — строковое или числовое значение реквизита. Важно помнить, что касса крайне чувствительна к формату. Например, ИНН должен состоять только из цифр.WriteAttribute() — метод, который "отправляет" подготовленный атрибут в текущий открытый документ внутри памяти ККТ. Обратите внимание, что этот метод нужно вызывать отдельно для каждого тега.Выясним причину возможных ошибок при пробитии чека. Кассовое ядро выполняет валидацию данных в момент получения команды WriteAttribute или при закрытии чека CloseCheck.
Валидация ИНН: Касса проверяет контрольное число ИНН. Если вы передадите строку "1234567890", которая не является математически корректным ИНН, драйвер может вернуть ошибку "Неверный формат данных" или "Ошибка в параметрах команды". Поэтому перед передачей данных из 1С 7.7 рекомендуется очищать строку ИНН от лишних пробелов, спецсимволов и проверять её длину.
Длина наименования: Хотя стандарт допускает до 256 символов, на узких лентах (58 мм, как у Атол 30Ф) длинное название может занять 5-6 строк чека. Рекомендуется использовать краткое наименование организации без лишнего официоза, если это допустимо учетной политикой.
Момент записи: Рассмотрим подробнее, когда именно вызывать запись атрибутов. Оптимальная последовательность команд выглядит так:
OpenCheck() — открытие чека (продажи или возврата).Registration() для каждой позиции.Delivery() — регистрация оплаты.CloseCheck() — финальное закрытие и печать.Как мы уже выяснили, поддержка этих тегов появилась в обновленных прошивках. Если ваш код написан верно, но в чеке данные не появляются или драйвер возвращает ошибку "Метод не поддерживается", необходимо проверить состояние лицензий кассы. В современных реалиях Атол (платформа 2.5) требует подписки на обновления. Без активной лицензии "НДС 20% / ФФД 1.05" кассовый аппарат будет игнорировать команды записи новых атрибутов, так как они считаются функционалом расширенной поддержки законодательства.
Если в будущем вы планируете переход на платформу Атол 5.0 (прошивки 5.x.x), имейте в виду, что ДТО 8 с ними не работает. Придется переходить на ДТО 10, где программная модель полностью отличается: вместо свойств объекта используются методы setParam и processJson. Однако для текущих задач на 1С 7.7 использование ДТО 8 остается наиболее простым и надежным решением.
Таким образом, мы рассмотрели полный цикл интеграции данных покупателя в чек. Использование правильных тегов и методов драйвера позволяет полностью соответствовать требованиям ФЗ-54 при проведении B2B сделок через кассу.