В процессе работы с контрольно-кассовой техникой (ККТ) и интеграции её с устаревшими, но всё ещё активно использующимися конфигурациями 1С, часто возникают вопросы соответствия актуальным требованиям налогового законодательства. Один из таких вопросов — передача ИНН кассира (тег 1203) в фискальных чеках.
В этой статье мы подробно разберем, почему возникает проблема с передачей ИНН кассира в типовой конфигурации «1С:Управление торговлей 10.3» (УТ 10.3), рассмотрим законодательные требования к этому реквизиту и детально разберем технические способы решения задачи, включая доработку программного кода конфигурации.
Перед тем как приступать к доработке программы, выясним правовые основания. Согласно требованиям ФНС России к форматам фискальных данных (ФДД 1.05, 1.1, 1.2), реквизит «ИНН кассира» (тег 1203) имеет следующие особенности:
Поскольку конфигурация «Управление торговлей 10.3» находится на ограниченной поддержке, фирма 1С добавляет в неё только критически важные изменения законодательства. Так как тег 1203 имеет признак обязательности «при наличии», разработчики 1С не стали внедрять полноценный механизм его передачи для всех видов документов в этой старой конфигурации.
Проанализируем программный код. Если мы откроем конфигуратор УТ 10.3 и выполним глобальный поиск по строке КассирИНН, то обнаружим примечательный факт. Данный параметр собирается и передается в ККТ только при формировании чека коррекции:
ПараметрыЧека.КассирИНН = РеквизитыКассир.ИНН; // Идентификационный номер налогоплательщика кассира, при наличии.
В механизме формирования обычного чека продажи (документы «Чек ККМ», «Реализация товаров и услуг» при оплате наличными/картой и др.) этот параметр попросту игнорируется и не передается драйверу ККТ. Ниже мы разберем, как исправить эту ситуацию программным путем.
Чтобы ИНН кассира начал передаваться в ОФД при пробитии обычных чеков, нам необходимо внести изменения в код конфигурации. Разберем этот процесс по шагам.
Прежде всего убедимся, что ИНН кассира вообще есть в базе данных и его можно сопоставить с текущим пользователем. В УТ 10.3 связь настраивается следующим образом:
Пользователи есть связанное физическое лицо из справочника ФизическиеЛица.ИНН. Убедитесь, что у всех ваших кассиров это поле заполнено корректно (12 цифр).Нам необходимо передать значение ИНН в структуру параметров, которая отправляется на ККТ. В зависимости от релиза вашей УТ 10.3 и используемой версии БПО (Библиотеки подключаемого оборудования), формирование XML-пакета чека может происходить в разных местах.
Обычно за формирование XML-пакета для ККТ отвечает общий модуль МенеджерОборудованияКлиентСервер или специализированная обработка обслуживания ККТ. Нам нужно найти функцию, которая формирует структуру или XML-документ чека (например, ПолучитьПакетДокументаПринтераФискального или аналогичную).
Рассмотрим пример доработки, где мы программно добавляем ИНН кассира в параметры чека. Нам нужно получить ИНН текущего пользователя:
// Получаем физлицо текущего пользователя
ТекущийПользователь = ПараметрыСеанса.ТекущийПользователь;
ФизЛицо = ТекущийПользователь.ФизЛицо;
ИННКассира = "";
Если ЗначениеЗаполнено(ФизЛицо) Тогда
ИННКассира = СокрЛП(ФизЛицо.ИНН);
КонецЕсли;
Далее найдем фрагмент кода, где заполняется объект кассира для передачи в XML. Обычно там фигурирует только ФИО кассира. Добавим туда передачу ИНН:
// Было в типовом коде:
// ПараметрыЧека.Кассир = Строка(ТекущийПользователь);
// Дорабатываем код:
ПараметрыЧека.Вставить("Кассир", Строка(ТекущийПользователь));
Если ЗначениеЗаполнено(ИННКассира) Тогда
ПараметрыЧека.Вставить("КассирИНН", ИННКассира);
КонецЕсли;
Если в вашей конфигурации интеграция с ККТ идет через формирование XML-строки напрямую, найдите узел, формирующий тег кассира, и добавьте туда атрибут ИНН (или КассирИНН в зависимости от требований используемой версии драйвера оборудования):
// Пример формирования атрибутов XML
ЗаписьXML.ЗаписатьАтрибут("Кассир", СокрЛП(ТекущийПользователь.Наименование));
Если ЗначениеЗаполнено(ИННКассира) Тогда
ЗаписьXML.ЗаписатьАтрибут("КассирИНН", ИННКассира);
КонецЕсли;
После внесения этих изменений драйвер ККТ (например, АТОЛ или Штрих-М) получит ИНН кассира из 1С и передаст его в фискальный накопитель, который, в свою очередь, запишет его в тег 1203 электронной формы чека.
Если у вас нет штатного программиста 1С или вы не хотите снимать конфигурацию с поддержки ради этой доработки, существует альтернативный административный метод. Данный способ идеально подходит для небольших торговых точек, где на кассе работает один и тот же человек (например, сам индивидуальный предприниматель или единственный продавец в смене).
Суть метода заключается в том, чтобы жестко записать ФИО и ИНН кассира во внутреннюю память (таблицы) самого кассового аппарата.
Рассмотрим, как это сделать по шагам на примере ККТ марки АТОЛ:
Иванов И.И.) и его должность.При использовании этого метода кассовый аппарат будет автоматически подставлять сохраненные ФИО и ИНН кассира в каждый пробиваемый чек, игнорируя пустые значения, приходящие из программы 1С.
Важное ограничение: Этот способ абсолютно не подходит для торговых точек с посменной работой нескольких сотрудников или большим штатом кассиров. Если на ККТ будет пробивать чеки другой сотрудник, а в ОФД уйдет жестко прописанный ИНН первого кассира, это будет прямым нарушением ведения кассовой дисциплины и искажением отчетности в ФНС.
Мы выяснили, что в типовой версии «1С:Управление торговлей 10.3» передача ИНН кассира в обычных чеках не реализована «из коробки» из-за рекомендательного характера этого реквизита на момент разработки стандартов. Для решения этой задачи у нас есть два пути: