Как добавить ИНН и наименование покупателя в чек на 1С 7.7 при использовании Атол 30Ф

Программист 1С v7.7 Торговля и дистрибуция
← На главную

В современной практике розничной и мелкооптовой торговли часто возникает необходимость оформления расчетов между юридическими лицами или индивидуальными предпринимателями через контрольно-кассовую технику (ККТ). Согласно требованиям ФЗ-54 и актуальным форматам фискальных данных (ФФД), при таких расчетах в чеке должны присутствовать реквизиты покупателя: его наименование и ИНН. Рассмотрим подробнее, как реализовать эту задачу на платформе 1С:Предприятие 7.7, используя драйвер Атол ДТО 8.х и популярную кассу Атол 30Ф.

Законодательный контекст и технические требования

Прежде чем переходить к написанию кода, проанализируем нормативную базу. Обязанность указывать ИНН и наименование покупателя (теги 1228 и 1227 соответственно) возникла для расчетов между организациями и ИП с 1 июля 2019 года. Эти данные критически важны для корректного отображения операций в системе ОФД и налоговой отчетности.

Для успешной реализации нам необходимо убедиться, что оборудование соответствует следующим критериям:

  1. Версия прошивки ККТ: Кассовый аппарат должен иметь прошивку, поддерживающую работу с этими тегами. Для платформы Атол 2.5 это версии 7733, 8346 и выше.
  2. Лицензирование: В кассовый аппарат должны быть введены необходимые коды защиты (лицензии), активирующие поддержку новых реквизитов и работу с актуальными ФФД.
  3. Версия ФФД: Касса должна быть фискализирована под протокол ФФД 1.05 или 1.1. В устаревшем протоколе 1.0 данные теги не предусмотрены.
  4. Драйвер ККТ: Мы рассматриваем работу через ДТО 8.16 и выше, так как это наиболее стабильная ветка для интеграции с 1С 7.7.

Программная реализация в 1С 7.7

Разберем по шагам, как передать нужные атрибуты в кассовое ПО. В объектной модели драйвера Атол 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 механизм передачи тегов реализован через "контейнер" атрибутов.

  1. AttrNumber — это свойство, в которое мы передаем номер тега согласно классификатору ФФД. В нашем случае 1227 отвечает за название организации-покупателя, а 1228 — за её ИНН.
  2. AttrValue — строковое или числовое значение реквизита. Важно помнить, что касса крайне чувствительна к формату. Например, ИНН должен состоять только из цифр.
  3. WriteAttribute() — метод, который "отправляет" подготовленный атрибут в текущий открытый документ внутри памяти ККТ. Обратите внимание, что этот метод нужно вызывать отдельно для каждого тега.

Важные нюансы при работе с данными

Выясним причину возможных ошибок при пробитии чека. Кассовое ядро выполняет валидацию данных в момент получения команды WriteAttribute или при закрытии чека CloseCheck.

Валидация ИНН: Касса проверяет контрольное число ИНН. Если вы передадите строку "1234567890", которая не является математически корректным ИНН, драйвер может вернуть ошибку "Неверный формат данных" или "Ошибка в параметрах команды". Поэтому перед передачей данных из 1С 7.7 рекомендуется очищать строку ИНН от лишних пробелов, спецсимволов и проверять её длину.

Длина наименования: Хотя стандарт допускает до 256 символов, на узких лентах (58 мм, как у Атол 30Ф) длинное название может занять 5-6 строк чека. Рекомендуется использовать краткое наименование организации без лишнего официоза, если это допустимо учетной политикой.

Момент записи: Рассмотрим подробнее, когда именно вызывать запись атрибутов. Оптимальная последовательность команд выглядит так:

  1. Установка режима и пароля кассира.
  2. OpenCheck() — открытие чека (продажи или возврата).
  3. Запись тегов покупателя (1227, 1228) и кассира (1021, 1203).
  4. Цикл по строкам документа 1С: Registration() для каждой позиции.
  5. Delivery() — регистрация оплаты.
  6. CloseCheck() — финальное закрытие и печать.

Совместимость с прошивками и лицензиями

Как мы уже выяснили, поддержка этих тегов появилась в обновленных прошивках. Если ваш код написан верно, но в чеке данные не появляются или драйвер возвращает ошибку "Метод не поддерживается", необходимо проверить состояние лицензий кассы. В современных реалиях Атол (платформа 2.5) требует подписки на обновления. Без активной лицензии "НДС 20% / ФФД 1.05" кассовый аппарат будет игнорировать команды записи новых атрибутов, так как они считаются функционалом расширенной поддержки законодательства.

Если в будущем вы планируете переход на платформу Атол 5.0 (прошивки 5.x.x), имейте в виду, что ДТО 8 с ними не работает. Придется переходить на ДТО 10, где программная модель полностью отличается: вместо свойств объекта используются методы setParam и processJson. Однако для текущих задач на 1С 7.7 использование ДТО 8 остается наиболее простым и надежным решением.

Таким образом, мы рассмотрели полный цикл интеграции данных покупателя в чек. Использование правильных тегов и методов драйвера позволяет полностью соответствовать требованиям ФЗ-54 при проведении B2B сделок через кассу.

← На главную