Рассмотрим актуальную задачу: как при интеграции онлайн-кассы с конфигурацией через Библиотеку подключаемого оборудования (БПО) реализовать отправку чека на электронную почту покупателю. Разберем по шагам, кто именно должен формировать письмо, и какие варианты технической реализации существуют.
Согласно закону 54-ФЗ, электронный чек юридически полностью приравнен к бумажному. Однако для этого адрес электронной почты или номер телефона должен быть предоставлен покупателем строго до момента расчета. Выясним, как эти данные передаются в кассу.
В форматах фискальных данных (ФФД), с которыми взаимодействуют касса и БПО, предусмотрено только одно поле для передачи контакта покупателя. Туда передается либо номер мобильного телефона, либо email. Драйвер кассового аппарата и ОФД автоматически определяют тип контакта, например, по наличию символа @.
Проанализируем самый надежный и юридически корректный путь. В этом случае печать (фискализацию) инициируете вы из 1С, а саму отправку берет на себя Оператор Фискальных Данных (ОФД).
Как это работает на практике:
Преимущества: Отправка email через серверы ОФД в большинстве случаев бесплатна. Это снимает техническую нагрузку с вашей учетной системы, а письма от доверенных серверов ОФД гораздо реже попадают в спам.
Важный нюанс: Если требуется отправить только электронный чек без распечатки бумажного, в настройках элемента кассы в 1С или при передаче параметров в драйвер необходимо установить соответствующий флаг отмены печати (например, Не печатать бумажный чек).
Посмотрим на альтернативный вариант, когда программа 1С сама формирует печатную форму и отправляет ее клиенту. В типовых решениях этот механизм обычно реализуется через Библиотеку стандартных подсистем (БСП) с использованием системных учетных записей электронной почты.
Если вы реализуете это в самописной конфигурации без БСП, можно сохранить итоговый документ и отправить его через системный объект ИнтернетПочта. Посмотрим на пример кода для такой отправки:
// Сохраняем печатную форму в Excel
ТабДок.Записать("C:\Чек.xlsx", ТипФайлаТабличногоДокумента.XLSX);
// Создаем профиль с реальными настройками
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.yoursite.ru";
Профиль.ПортSMTP = 25;
Профиль.Пользователь = "user";
Профиль.Пароль = "password";
// Подключаемся к почтовому серверу
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
// Создаем сообщение с вложением
Письмо = Новый ИнтернетПочтовоеСообщение;
// ... заполнение реквизитов письма ...
// Отправляем и отключаемся
ОшибочныеПолучатели = Почта.Послать(Письмо);
Почта.Отключиться();
Однако проанализируем ограничения этого метода:
Подводя итог, настоятельно рекомендуем использовать первый вариант: передавать контакты клиента в драйвер оборудования при вызове методов БПО и делегировать саму доставку фискальных чеков на сторону ОФД.