При переходе на онлайн-кассы по требованиям Федерального закона № 54-ФЗ у многих организаций возникает потребность отправлять кассовые чеки покупателям в электронном виде на e-mail. Зачастую операторы фискальных данных (ОФД) берут дополнительную плату за отправку сообщений, поэтому логичным решением становится отправка писем напрямую из программы 1С. Разберем подробно, что должно быть в таком письме, как правильно передавать данные в ККТ и как реализовать этот механизм в конфигурации.
Проанализируем требования ст. 1.2 и ст. 4.7 закона № 54-ФЗ. Простое текстовое уведомление или XML-пакет кассы отправлять покупателю нельзя. Закон строго регламентирует два допустимых варианта содержимого электронного письма:
Рассмотрим порядок взаимодействия 1С с кассовым аппаратом при формировании электронного чека:
Посмотрим, как устроен типовой механизм в решениях на базе Библиотеки подключаемого оборудования (БПО). При самостоятельной доработке конфигураций (например, 1С:Управление торговлей 10.3) рекомендуется придерживаться аналогичной схемы:
ОчередьЭлектронныхЧеков), куда записываются адрес получателя, ссылка на документ и полученные от кассы фискальные реквизиты.Разберем по шагам программную реализацию отправки письма через встроенный почтовый клиент 1С после получения фискальных данных от ККТ:
// Формирование и отправка электронного чека покупателю
Процедура ОтправитьЭлектронныйЧек(АдресПолучателя, ПараметрыЧека, ФискальныеДанные) Экспорт
// 1. Настройка почтового профиля
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.yandex.ru";
Профиль.ПортSMTP = 465;
Профиль.ПользовательSMTP = "kassa@company.ru";
Профиль.ПарольSMTP = "СпециальныйПарольПриложения";
Профиль.ИспользоватьSSLSMTP = Истина;
// 2. Формирование тела письма с фискальными реквизитами
ТекстПисьма = "<html><body>";
ТекстПисьма = ТекстПисьма + "<h2>Кассовый чек № " + СокрЛП(ФискальныеДанные.НомерЧека) + "</h2>";
ТекстПисьма = ТекстПисьма + "<p><strong>Организация:</strong> " + ПараметрыЧека.ОрганизацияНаименование + "<br>";
ТекстПисьма = ТекстПисьма + "<strong>ИНН:</strong> " + ПараметрыЧека.ОрганизацияИНН + "<br>";
ТекстПисьма = ТекстПисьма + "<strong>Дата и время:</strong> " + Формат(ФискальныеДанные.ДатаВремя, "ДФ='dd.MM.yyyy HH:mm:ss'") + "<br>";
ТекстПисьма = ТекстПисьма + "<strong>Сумма чека:</strong> " + Формат(ПараметрыЧека.СуммаДокумента, "ЧДЦ=2") + " руб.</p>";
ТекстПисьма = ТекстПисьма + "<hr><p><strong>Фискальные данные:</strong><br>";
ТекстПисьма = ТекстПисьма + "РН ККТ: " + ФискальныеДанные.РН_ККТ + "<br>";
ТекстПисьма = ТекстПисьма + "Заводской № ФН: " + ФискальныеДанные.НомерФН + "<br>";
ТекстПисьма = ТекстПисьма + "Номер ФД: " + ФискальныеДанные.НомерФД + "<br>";
ТекстПисьма = ТекстПисьма + "ФПД: " + ФискальныеДанные.ФискальныйПризнак + "</p>";
// Ссылка на проверку чека
ТекстПисьма = ТекстПисьма + "<p>Проверить чек можно на сайте: <a href='https://service.nalog.ru/check-receipt/'>ФНС России</a></p>";
ТекстПисьма = ТекстПисьма + "</body></html>";
// 3. Подготовка почтового сообщения
Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.ИмяОтправителя = "Касса " + ПараметрыЧека.ОрганизацияНаименование;
Письмо.Отправитель.Адрес = "kassa@company.ru";
Письмо.Получатели.Добавить(АдресПолучателя);
Письмо.Тема = "Электронный кассовый чек № " + СокрЛП(ФискальныеДанные.НомерЧека);
Письмо.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.HTML);
// 4. Отправка сообщения
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
Почта.Послать(Письмо);
Почта.Отключиться();
Исключение
Почта.Отключиться();
ЗаписьЖурналаРегистрации("Отправка электронного чека", УровеньЖурналаРегистрации.Ошибка,,,
ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Для предотвращения ошибок и блокировок учтем следующие нюансы: