Как обеспечить передачу ИНН кассира в электронный чек при использовании ФФД 1.05?

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

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

Законодательная база и требования к реквизиту

Прежде всего, разберем ситуацию с точки зрения закона. Согласно актуальным методическим рекомендациям ФНС по применению ФФД 1.05, реквизит "ИНН кассира" имеет следующие особенности:

  1. Электронная форма: Тег 1203 является обязательным при передаче данных в ОФД. Его отсутствие может привести к штрафным санкциям по ст. 14.5 КоАП РФ.
  2. Печатная форма: На бумажном чеке данный реквизит может не печататься. Это важный момент: если вы видите ИНН кассира в личном кабинете ОФД, но не видите его на бумаге — ваша система работает корректно и нарушений нет.
  3. Исключения: ИНН не указывается, если расчет производится через автоматические устройства (вендинг) или если у физического лица (кассира) ИНН официально не присвоен.

Настройка передачи ИНН в типовых конфигурациях 1С 8.3

В современных конфигурациях (например, 1С:Управление нашей фирмой, 1С:Бухгалтерия 3.0, 1С:Управление торговлей 11) механизм передачи ИНН уже заложен в логику программы. Рассмотрим по шагам, как обеспечить корректное заполнение данных:

  1. Проанализируем справочник Сотрудники (или Физические лица). У каждого сотрудника, который имеет право пробивать чеки, должен быть заполнен реквизит ИНН.
  2. Проверим настройки пользователей. В карточке Пользователя должна быть установлена связь с соответствующим Физическим лицом. Именно из этой связки программа будет «подтягивать» ИНН при формировании фискального документа.
  3. Убедимся, что используется актуальная версия Драйвера ККТ. Для устройств Атол рекомендуется использовать ДТО 10.х, так как в старых версиях (ДТО 8.х) поддержка новых тегов может быть ограничена или требовать сложной доработки.

Реализация в нетиповых конфигурациях (УТ 10.3, УПП 1.3)

Если вы работаете в старых конфигурациях на обычных формах, типового механизма может быть недостаточно. Проанализируем, как программно передать ИНН кассира через XML-пакет, который 1С отправляет драйверу кассы.

Рассмотрим основной метод формирования данных. В большинстве случаев за это отвечает функция, вызывающая МенеджерОборудованияВызовСервера.ПолучитьXMLПакетДляФискализацияЧека. Чтобы ИНН улетел в кассу, в структуре XML должен присутствовать атрибут CashierVATIN. Посмотрим на пример кода, который необходимо внедрить в обработку обслуживания или модуль фискализации:


// В функции формирования XML-пакета данных чека
ЗаписьXML.ЗаписатьАтрибут("CashierVATIN", XMLСтрока(ОбщиеПараметры.КассирИНН));
// Где КассирИНН — это строка из 12 цифр, полученная из карточки физлица

Важно помнить, что если вы используете ДТО 8 от Атол, данный атрибут может не обрабатываться корректно из-за ограничений ревизий формата (требуется ревизия не ниже 2002). В таких случаях программисты часто прибегают к прямой записи атрибутов в ФН.

Прямая передача тега через драйвер (низкоуровневые команды)

Рассмотрим ситуацию, когда стандартный XML-пакет не отрабатывает. Выясним, как передать тег напрямую через объект драйвера. Проанализируем пример кода для ДТО 8.х, где мы пытаемся передать Тег 1203 перед открытием чека или в процессе его формирования:


// Пример для Атол ДТО 8
Объект.Драйвер.AttrNumber = 1203; // Номер тега ИНН кассира
Объект.Драйвер.AttrValue = "526317984689"; // Значение ИНН (строка)
Объект.Драйвер.WriteAttribute(); // Запись атрибута в ККТ

Если Объект.Драйвер.ResultCode <> 0 Тогда
    ПолучитьОписаниеОшибки(Объект, Ложь);
    Объект.Драйвер.CancelCheck();
    Возврат;
КонецЕсли;

Для ККТ Штрих-М и аналогичных устройств, работающих через другие протоколы, принцип схож. Рассмотрим пример использования метода FNSendTag:


// Пример для Штрих-М (может потребоваться пароль администратора ККТ)
ФР.ТекущийПароль = 30; // Пароль системного администратора по умолчанию
ФР.НомерТега = 1203; 
ФР.ТипТега = 7; // Тип "Строка"
ФР.ЗначениеТегаСтрока = СокрЛП(ИННКассира);
ФР.FNSendTag(); // Отправка тега в накопитель

Почему ИНН не выводится на бумагу?

Разберем частую ситуацию: в коде всё прописано, в ОФД данные уходят, но бухгалтер жалуется, что в чеке пусто. Как мы уже выяснили выше, для ФФД 1.05 это допустимо. Однако, если вам критично видеть ИНН на бумаге, необходимо выполнить следующие действия:

Типичные ошибки при передаче ИНН

Проанализируем основные причины, по которым ИНН кассира может не приниматься кассовым аппаратом:

  1. Неверная длина: ИНН физического лица должен состоять ровно из 12 цифр. Если передать 10 цифр (как у организации) или добавить пробелы, ККТ может вернуть ошибку или проигнорировать тег.
  2. Тип данных: Тег должен передаваться как строка (String), а не как число.
  3. Порядок вызова: Запись атрибута должна происходить строго в определенный момент (обычно после открытия чека, но до его закрытия/фискализации).

Таким образом, для успешного внедрения ИНН кассира необходимо обеспечить цепочку данных: Физическое лицо -> Пользователь -> Обработка фискализации (XML CashierVATIN) -> Драйвер ККТ -> ОФД. Если на любом из этих этапов связь прерывается, реквизит в итоговый документ не попадет.

← На главную