Как настроить отправку электронных чеков покупателю через ОФД в 1С

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

В соответствии с требованиями Федерального закона № 54-ФЗ при проведении расчетов продавец обязан предоставить покупателю кассовый чек. Если покупатель до момента расчета предоставил свой номер телефона или адрес электронной почты, чек может быть направлен ему в электронной форме. Рассмотрим, как в конфигурациях 1С (на примере УПП 1.3 и УТ 10.3 с интеграцией БПО) передать контакты покупателя в фискальный регистратор для автоматической отправки электронного чека силами Оператора фискальных данных (ОФД).

Принцип взаимодействия 1С, кассового аппарата и ОФД

Проанализируем общую схему передачи контактных данных:

  1. В документе расчета или специальной форме ввода кассир указывает номер телефона или адрес электронной почты клиента.
  2. Программа 1С формирует стандартизованный XML-пакет CheckPackage (согласно требованиям Библиотеки подключаемого оборудования — БПО) и передает его драйверу ККТ.
  3. Драйвер ККТ транслирует переданные данные в реквизиты фискального документа: тег 1008 (адрес покупателя — e-mail или телефон) и тег 1117 (адрес электронной почты отправителя чека).
  4. Фискальный накопитель сохраняет эти данные и передает фискальный документ оператору ОФД.
  5. Сервер ОФД при получении чека с заполненным тегом 1008 отправляет электронное письмо или SMS покупателю.

Разделение режимов: отправка средствами 1С или силами ОФД

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

Разберем логику формирования параметров в функции ПодготовитьДанныеДляФискализацииЧекаПКО или аналогичной процедуре подготовки фискализации:


// Отключаем отправку силами учетной системы 1С
ОбщиеПараметры.Отправляет1СSMS = Ложь;
ОбщиеПараметры.Отправляет1СEmail = Ложь;

// Заполняем контакты для передачи в кассовый аппарат и ОФД
Если ЗначениеЗаполнено(ПокупательEmail) Тогда
    ОбщиеПараметры.ОтправительEmail = "ofd@skbkontur.ru"; // Адрес шлюза ОФД
    ОбщиеПараметры.ПокупательEmail  = СокрЛП(ПокупательEmail);
КонецЕсли;

Если ЗначениеЗаполнено(ПокупательНомер) Тогда
    ОбщиеПараметры.ПокупательНомер = СокрЛП(ПокупательНомер);
КонецЕсли;

Формирование XML-пакета CheckPackage

Посмотрим, как переданные параметры преобразуются в XML-структуру внутри общего модуля МенеджерОборудованияВызовСервера:


// Если отправка выполняется НЕ средствами 1С, записываем реквизиты в XML для ККТ
Если ОбщиеПараметры.Свойство("Отправляет1СEmail") И НЕ ОбщиеПараметры.Отправляет1СEmail Тогда
    Если ОбщиеПараметры.Свойство("ПокупательEmail") И ЗначениеЗаполнено(ОбщиеПараметры.ПокупательEmail) Тогда
        ЗаписьXML.ЗаписатьАтрибут("CustomerEmail", XMLСтрока(ОбщиеПараметры.ПокупательEmail));
    КонецЕсли;
КонецЕсли;

Если ОбщиеПараметры.Свойство("Отправляет1СSMS") И НЕ ОбщиеПараметры.Отправляет1СSMS Тогда
    Если ОбщиеПараметры.Свойство("ПокупательНомер") И ЗначениеЗаполнено(ОбщиеПараметры.ПокупательНомер) Тогда
        ЗаписьXML.ЗаписатьАтрибут("CustomerPhone", XMLСтрока(ОбщиеПараметры.ПокупательНомер));
    КонецЕсли;
КонецЕсли;

На выходе в корневом элементе Parameters пакета фискализации формируются атрибуты CustomerEmail, CustomerPhone и SenderEmail. Пример результирующего фрагмента XML:


<Parameters PaymentType="1" SenderEmail="ofd@skbkontur.ru" CustomerEmail="client@mail.ru" CustomerPhone="+79991234567">

Требования к реквизитам фискализации (теги 1008 и 1117)

Выясним, какие требования накладываются форматами фискальных данных (ФФД) на стороне кассы и оператора:

  1. Тег 1008 (Адрес покупателя): строка длиной до 64 символов. Может содержать либо адрес электронной почты, либо телефон. Телефон рекомендуется передавать в международном формате (начиная с +7, без пробелов, скобок и дефисов).
  2. Тег 1117 (Адрес отправителя): e-mail адрес почтового сервера ОФД (например, для СКБ Контур используется ofd@skbkontur.ru или ofd@kontur.ru). Во многих современных прошивках ККТ данный адрес жестко зашивается в таблицы настроек кассы при регистрации.

Пошаговый алгоритм диагностики, если электронный чек не приходит

Если после доработки кода письмо от ОФД не поступило клиенту, выполним последовательную диагностику:

  1. Проверяем Личный кабинет ОФД: открываем пробитый чек на сайте оператора. Если в электронной копии чека заполнена строка «Адрес покупателя» (тег 1008), значит, 1С и кассовый аппарат отработали корректно, а задержка вызвана очередью отправки почтового шлюза ОФД или спам-фильтрами получателя.
  2. Проверяем драйвер торгового оборудования: если в ЛК ОФД поле адреса покупателя пустое, значит, драйвер ККТ не записал тег в фискальный накопитель. В этом случае необходимо обновить драйвер производителя ККТ и интеграционную компоненту 1С:БПО до актуальной версии.
  3. Тестируем прямую фискализацию: выполняем тестовое пробитие чека через утилиту «Тест драйвера ККТ», вручную заполнив поля тегов 1008 и 1117, чтобы исключить ошибки в кодовой базе 1С.
  4. Проверяем настройки в ЛК ОФД: у некоторых операторов автоматическая рассылка чеков по e-mail требует отдельной активации соответствующего флага в профиле личного кабинета.
← На главную