Как настроить вывод ИИН/БИН покупателя в чеке при использовании Webkassa в 1С?

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

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

В данной статье мы подробно разберем, как программно передать ИИН/БИН клиента в сервис Webkassa, какие атрибуты XML за это отвечают и где искать штатные механизмы в типовых конфигурациях для Казахстана.

Анализ проблемы: почему ИИН не выводится в чек?

Рассмотрим стандартную ситуацию: разработчик пытается внести изменения в функцию ПолучитьXMLПакетДляФискализацияЧека, добавляя различные атрибуты в надежде, что сервис их «подхватит». Проблема заключается в том, что драйвер Webkassa и сам API сервиса ожидают строго определенные имена полей, которые зависят от версии используемого протокола и версии библиотеки интеграции.

Если вы добавляете атрибуты наугад, например CustomerInfo или CustomerIIN, сервис их просто игнорирует, так как они не описаны в схеме XML-пакета. Выясним, какие параметры действительно имеют значение.

Вариант 1: Ручная модификация XML-пакета

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

Согласно документации API Webkassa и практике интеграции 1С, наиболее вероятными рабочими именами атрибутов являются CustomerXin или CustomerINN. Посмотрим на пример кода, который необходимо внедрить в процедуру формирования пакета:


// Пример добавления ИИН/БИН покупателя в XML-пакет
// Переменная ПолучательИИН должна содержать 12 цифр без пробелов

Если ЗначениеЗаполнено(ПолучательИИН) Тогда
    // Попробуем стандартный атрибут для драйверов 1С
    ЗаписьXML.ЗаписатьАтрибут("CustomerINN", XMLСтрока(ПолучательИИН));
    
    // В некоторых реализациях API Webkassa используется универсальное поле Xin
    // ЗаписьXML.ЗаписатьАтрибут("CustomerXin", XMLСтрока(ПолучательИИН));
КонецЕсли;

Важный нюанс: Атрибут должен располагаться внутри соответствующего узла. Обычно это узел CheckPackage или FiscalDocument. Если вы запишете атрибут вне структуры, которую ожидает драйвер, данные будут отброшены еще до отправки на сервер.

Вариант 2: Использование типовых механизмов (на примере УТ для Казахстана)

Прежде чем приступать к «жесткому» кодингу, проанализируем текущий релиз вашей конфигурации. В программных продуктах для Казахстана (УТК, БК, ERP) фирма «1С» уже реализовала поддержку передачи ИИН/БИН покупателя.

Например, в «Управлении торговлей для Казахстана» (начиная с релиза 3.4.4.96) логика заполнения данных покупателя вынесена в специализированные модули. Разберем по шагам, где искать этот функционал:

  1. Обратите внимание на общий модуль ПодключаемоеОборудованиеWebkassaФискальныеРегистраторыКлиент.
  2. Найдите в нем процедуру НачатьФискализациюЧека.
  3. В этой процедуре происходит сбор структуры ДанныеЧека, в которую включаются сведения о контрагенте.

Если ваша конфигурация актуальна, вам достаточно убедиться, что в документе «Чек ККМ» или «Реализация товаров и услуг» (при печати чека) корректно заполнен контрагент и у него указан ИИН/БИН. Типовой механизм сам подставит эти данные в нужные поля XML-пакета.

Технические тонкости и возможные ошибки

Если код написан верно, но ИИН все равно не печатается, рассмотрим дополнительные факторы, которые могут блокировать вывод данных:

1. Версия протокола ФФД. Для корректной работы с дополнительными реквизитами чека (такими как данные покупателя) виртуальная касса должна работать по протоколу версии 2.0.2. Если в настройках кассового аппарата на портале Webkassa или в параметрах оборудования в 1С установлена устаревшая версия протокола, поле с ИИН будет игнорироваться.

2. Обновление драйвера. В 1С зайдите в раздел НСИ и администрирование — Ремонт и обслуживание — Подключаемое оборудование. Проверьте версию драйвера «Webkassa для 1С». Старые версии драйверов просто «не знают» о существовании поля CustomerINN и вырезают его перед отправкой. Обновите драйвер до последней доступной версии.

3. Настройки в Личном кабинете Webkassa. Зайдите через браузер в личный кабинет сервиса Webkassa. В настройках конкретной кассы может существовать флаг «Отображать данные покупателя в чеке». Если он выключен, то даже при корректной передаче данных из 1С сервер не будет выводить их на печать.

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

Подведем итог и составим план действий для решения задачи:

  1. Проверьте релиз конфигурации. Если он ниже 3.4.4.96 (для УТК), настоятельно рекомендуется выполнить обновление, чтобы использовать штатные механизмы передачи ИИН.
  2. Валидация данных. Перед передачей ИИН в XML убедитесь, что строка содержит ровно 12 символов и состоит только из цифр. Любые спецсимволы или пробелы могут привести к ошибке фискализации всего чека.
  3. Тестирование атрибутов. Если обновление невозможно, попробуйте поочередно атрибуты CustomerINN и CustomerXin в модуле фискализации.
  4. Проверка через лог. Если есть возможность, включите логирование драйвера. В логах можно увидеть финальный XML-пакет, который уходит на сервер Webkassa, и понять, присутствует ли в нем нужный атрибут.

Таким образом, решение задачи кроется либо в правильном именовании атрибута (в большинстве случаев это CustomerINN), либо в использовании актуальных возможностей типовых конфигураций 1С для Казахстана, где вся работа с API Webkassa уже автоматизирована.

← На главную