В соответствии с требованиями Федерального закона № 54-ФЗ при проведении расчетов продавец обязан предоставить покупателю кассовый чек. Если покупатель до момента расчета предоставил свой номер телефона или адрес электронной почты, чек может быть направлен ему в электронной форме. Рассмотрим, как в конфигурациях 1С (на примере УПП 1.3 и УТ 10.3 с интеграцией БПО) передать контакты покупателя в фискальный регистратор для автоматической отправки электронного чека силами Оператора фискальных данных (ОФД).
Проанализируем общую схему передачи контактных данных:
CheckPackage (согласно требованиям Библиотеки подключаемого оборудования — БПО) и передает его драйверу ККТ.В типовых механизмах БПО заложена развилка способа отправки чека. Если флаг отправки средствами учетной системы установлен в значение Истина, конфигурация 1С пытается отправить чек через встроенный почтовый клиент или SMS-шлюз, а в XML-пакет для ККТ данные покупателя не включаются. Чтобы отправка выполнялась именно через ОФД, флаги отправки средствами 1С должны быть обязательно отключены.
Разберем логику формирования параметров в функции ПодготовитьДанныеДляФискализацииЧекаПКО или аналогичной процедуре подготовки фискализации:
// Отключаем отправку силами учетной системы 1С
ОбщиеПараметры.Отправляет1СSMS = Ложь;
ОбщиеПараметры.Отправляет1СEmail = Ложь;
// Заполняем контакты для передачи в кассовый аппарат и ОФД
Если ЗначениеЗаполнено(ПокупательEmail) Тогда
ОбщиеПараметры.ОтправительEmail = "ofd@skbkontur.ru"; // Адрес шлюза ОФД
ОбщиеПараметры.ПокупательEmail = СокрЛП(ПокупательEmail);
КонецЕсли;
Если ЗначениеЗаполнено(ПокупательНомер) Тогда
ОбщиеПараметры.ПокупательНомер = СокрЛП(ПокупательНомер);
КонецЕсли;
Посмотрим, как переданные параметры преобразуются в 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">
Выясним, какие требования накладываются форматами фискальных данных (ФФД) на стороне кассы и оператора:
+7, без пробелов, скобок и дефисов).ofd@skbkontur.ru или ofd@kontur.ru). Во многих современных прошивках ККТ данный адрес жестко зашивается в таблицы настроек кассы при регистрации.Если после доработки кода письмо от ОФД не поступило клиенту, выполним последовательную диагностику: