С переходом на формат фискальных данных (ФФД) версии 1.05 требования контролирующих органов к реквизитам кассового чека стали более жесткими. Одним из таких требований является обязательное указание ИНН кассира (Тег 1203) в составе электронного чека, отправляемого в ОФД. В данной статье мы подробно разберем, как реализовать это требование в различных конфигурациях 1С, проанализируем технические нюансы драйверов ККТ и выясним, почему этот реквизит может отсутствовать в печатной форме, оставаясь при этом в электронном документе.
Прежде всего, разберем ситуацию с точки зрения закона. Согласно актуальным методическим рекомендациям ФНС по применению ФФД 1.05, реквизит "ИНН кассира" имеет следующие особенности:
В современных конфигурациях (например, 1С:Управление нашей фирмой, 1С:Бухгалтерия 3.0, 1С:Управление торговлей 11) механизм передачи ИНН уже заложен в логику программы. Рассмотрим по шагам, как обеспечить корректное заполнение данных:
ИНН.Пользователя должна быть установлена связь с соответствующим Физическим лицом. Именно из этой связки программа будет «подтягивать» ИНН при формировании фискального документа.Драйвера ККТ. Для устройств Атол рекомендуется использовать ДТО 10.х, так как в старых версиях (ДТО 8.х) поддержка новых тегов может быть ограничена или требовать сложной доработки.Если вы работаете в старых конфигурациях на обычных формах, типового механизма может быть недостаточно. Проанализируем, как программно передать ИНН кассира через 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 это допустимо. Однако, если вам критично видеть ИНН на бумаге, необходимо выполнить следующие действия:
Проанализируем основные причины, по которым ИНН кассира может не приниматься кассовым аппаратом:
Таким образом, для успешного внедрения ИНН кассира необходимо обеспечить цепочку данных: Физическое лицо -> Пользователь -> Обработка фискализации (XML CashierVATIN) -> Драйвер ККТ -> ОФД. Если на любом из этих этапов связь прерывается, реквизит в итоговый документ не попадет.