Как указать и передать ИНН кассира в чеке в 1С:Управление торговлей 10.3

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

При работе с торговым оборудованием в конфигурации «1С:Управление торговлей, редакция 10.3» пользователи часто сталкиваются с жесткими требованиями законодательства по передаче фискальных данных. Одним из таких реквизитов является ИНН кассира (тег 1203). В типовом решении УТ 10.3, особенно в старых релизах, штатный механизм автоматического заполнения и передачи этого тега отсутствует. Из-за этого при проверке чеков в ОФД или налоговой могут возникать предупреждения.

В этой статье мы подробно разберем требования законодательства к тегу 1203, выясним причины технического ограничения в 1С и рассмотрим практические способы решения этой проблемы — от настройки кассового аппарата до изменения программного кода.

Законодательные требования к ИНН кассира (тег 1203)

Прежде чем приступать к технической реализации, проанализируем нормативные требования:

  1. Где отображается реквизит: Реквизит «ИНН кассира» (тег 1203) предназначен исключительно для электронной версии чека, которая отправляется оператору фискальных данных (ОФД) и далее в ФНС. На бумажном чеке этот реквизит печатать не требуется.
  2. Обязательность реквизита: Согласно форматам фискальных документов (ФФД), тег 1203 имеет рекомендательный характер (атрибут обязательности «3» в электронной форме). Это означает, что если у кассира физически есть ИНН (гражданин РФ), его необходимо передавать. Если кассиром является иностранный гражданин, не имеющий ИНН РФ, то тег в фискальный документ не включается, и это не является нарушением.
  3. Зачем это ФНС: С помощью ИНН кассира налоговая инспекция сопоставляет фактически работающих за кассой сотрудников с официальным штатом организации, выявляя «серые» зарплаты и неоформленный персонал.

Выясняем причину: почему УТ 10.3 не отправляет ИНН кассира

Если мы проанализируем структуру конфигурации УТ 10.3, то увидим, что справочник Пользователи связан со справочником ФизическиеЛица. Даже если в карточке физического лица заполнить реквизит ИНН, программа «из коробки» не передает эти данные в кассу.

В коде интеграции с ККТ (в общих модулях фискализации или внутри внешних обработок обслуживания, таких как ATOL_kkt.epf, ShtrihM_kkt.epf) параметры операции фискализации формируются программно. Зачастую в запросе формирования данных чека поле ИНН кассира жестко заполнено пустой строкой:


// Пример фрагмента кода формирования параметров чека
СтруктураПараметров.Вставить("Кассир", ОтветственныйФизЛицо.Наименование);
СтруктураПараметров.Вставить("КассирИНН", ""); // ИНН передается пустым

По этой причине, какие бы настройки мы ни делали в пользовательском режиме 1С, ККТ не получит ИНН сотрудника. Разберем три практических способа решения этой проблемы.

Решение 1: Программирование таблиц в самом ККТ (без изменения 1С)

Это самый популярный метод, который идеально подходит для базовых версий УТ 10.3 (где программный код закрыт для изменений) или в случаях, когда конфигурация находится на поддержке и менять ее нежелательно.

Суть метода заключается в том, что мы заносим данные кассиров непосредственно в память фискального регистратора, а программа 1С передает только текстовое имя кассира. Касса сама сопоставляет текст и подставляет ИНН.

Разберем алгоритм настройки по шагам на примере ККТ АТОЛ:

  1. Закройте программу 1С, чтобы освободить порт подключения к кассе.
  2. Запустите утилиту «Тест драйвера ККТ» (версии 10.х).
  3. Подключитесь к вашему кассовому аппарату и установите флаг «Включено».
  4. Перейдите в раздел «Свойства» -> «Параметры ККТ».
  5. Найдите раздел «Кассиры» (в некоторых версиях драйвера это находится в таблицах ККТ, раздел «Операторы»).
  6. Заполните строки таблицы:
    • Имя: укажите ФИО кассира. Важно: ФИО должно быть написано буква в букву точно так же, как оно выводится из 1С в чек (например, Иванов И.И. или Иванов Иван Иванович).
    • ИНН: введите 12-значный ИНН соответствующего сотрудника.
  7. Сохраните изменения в памяти ККТ и закройте тест драйвера.

При пробитии чека из 1С ККТ получит текстовое имя кассира, найдет совпадение в своей внутренней таблице, автоматически подставит ИНН этого сотрудника в тег 1203 и отправит данные в ОФД.

Решение 2: Использование свойств физического лица и доработка обработки обслуживания

Если ваша конфигурация является ПРОФ-версией, но вы не хотите вносить изменения в саму структуру метаданных (справочники, документы), можно воспользоваться механизмом дополнительных свойств 1С и доработать внешнюю обработку обслуживания ККТ.

Разберем по шагам, как реализовать этот вариант:

  1. В пользовательском режиме перейдите в меню «Операции» -> «Планы видов характеристик» -> «Свойства объектов».
  2. Добавьте новое свойство для назначения «Физические лица» с наименованием ИНН (тип значения — Строка).
  3. Откройте справочник «Физические лица», перейдите в карточки сотрудников, работающих на кассе, и на вкладке «Свойства» заполните созданный реквизит ИНН.
  4. Откройте в конфигураторе внешнюю обработку обслуживания вашей ККТ (например, ATOL_kkt.epf).
  5. Найдите функцию, отвечающую за подготовку параметров фискализации чека (обычно это ПодготовитьДанныеДляФискализации или аналогичная).
  6. Добавьте программный код для получения значения этого свойства и передачи его в ККТ:

// Функция получения дополнительного свойства ИНН у ФизЛица
Функция ПолучитьИННФизическогоЛица(ФизЛицо) Экспорт
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ЗначенияСвойствОбъектов.Значение КАК ИНН
        |ИЗ
        |   РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |ГДЕ
        |   ЗначенияСвойствОбъектов.Объект = &ФизЛицо
        |   И ЗначенияСвойствОбъектов.Свойство.Наименование = ""ИНН""";
    
    Запрос.УстановитьПараметр("ФизЛицо", ФизЛицо);
    Выборка = Запрос.Выполнить().Выбрать();
    
    Если Выборка.Следующий() Тогда
        Возврат СокрЛП(Выборка.ИНН);
    КонецЕсли;
    
    Возврат "";
КонецФункции

После этого в месте формирования структуры чека замените пустую строку передачи ИНН на вызов созданной функции:


// Передаем ИНН кассира из свойств физлица
ИННКассира = ПолучитьИННФизическогоЛица(ОтветственныйФизЛицо);
СтруктураПараметров.Вставить("КассирИНН", ИННКассира);

Решение 3: Прямая модификация кода конфигурации (для ПРОФ-версий)

Если база данных уже снята с поддержки или активно кастомизируется, наиболее надежным решением будет прямое использование реквизита ИНН справочника ФизическиеЛица (если этот реквизит присутствует в вашей версии конфигурации) и доработка общего модуля фискализации.

Проанализируем ситуацию в конфигураторе и выполним следующие действия:

  1. Убедимся, что у справочника ФизическиеЛица есть стандартный реквизит ИНН. Если его нет, добавим реквизит ИНН с типом Строка (длина 12) на уровне метаданных.
  2. Выведем этот реквизит на форму элемента справочника ФизическиеЛица, чтобы пользователи могли его заполнять.
  3. Найдем общий модуль, отвечающий за торговое оборудование (например, ПолучениеОбъектовТорговогоОборудования или модуль работы с фискальными регистраторами).
  4. В процедуре подготовки XML или структуры данных для ККТ найдем фрагмент, собирающий сведения о кассире. Изменим запрос или прямое обращение к объекту, чтобы получить ИНН физического лица, связанного с текущим пользователем 1С:

// Получаем ИНН кассира напрямую из реквизита справочника ФизическиеЛица
Если ЗначениеЗаполнено(ДокументОбъект.Ответственный) Тогда
    ФизЛицоСсылка = ДокументОбъект.Ответственный.ФизЛицо;
    Если ЗначениеЗаполнено(ФизЛицоСсылка) Тогда
        ИмяКассира = ФизЛицоСсылка.Наименование;
        ИННКассира = ФизЛицоСсылка.ИНН;
    КонецЕсли;
КонецЕсли;

// Заполнение параметров для ККТ
СтруктураКассира = Новый Структура;
СтруктураКассира.Вставить("Name", ИмяКассира);
СтруктураКассира.Вставить("INN", ИННКассира);

При таком подходе данные будут динамически считываться из карточки сотрудника в момент печати каждого чека, что исключает необходимость настройки таблиц внутри самой ККТ при приеме на работу новых кассиров.

Резюме и рекомендации

Мы рассмотрели различные варианты обхода ограничений платформы «1С:Управление торговлей 10.3» по передаче ИНН кассира. Выбор метода зависит от ваших технических возможностей:

← На главную