Отдельные шаблоны писем и чеков в Рознице 2.3
С удивлением обнаружил, что шаблон чеков, рассылаемых по смс и e-mail в 1С одинаковый и не настраивается пользователем.
Хотя для экономии средств смс должно быть сделано покороче, а в e-mail можно вставить различную сопутствующую информацию, например, рекламу.
Ранее я сделал шаблон чека минимальным по длине для СМС-уведомлений. Но все же для e-mail лучше делать свой собственный формат.
1С рассылает по e-mail, если указана почта, а если не указана, только тогда по sms. По двум каналам сразу не отправляет, e-mail в приоритете.
Текст сообщения по чеку задается в функции Модуль.РассылкаЭлектронныхЧеков.ШаблонАтрибутовЧекаДляОтсылки.
Затем в процедуре Модуль.РассылкаЭлектронныхЧековВызовСервера.НачатьОтправкуЭлектронногоЧека происходит e-mail или sms рассылка:
Вмешиваться будем в процедуру формирования текста чека в модуле РассылкаЭлектронныхЧеков :
&Вместо("ШаблонАтрибутовЧекаДляОтсылки") Функция дор_ШаблонАтрибутовЧекаДляОтсылки(ПараметрыФискализации) ТекстСообщения = Новый Массив(); //Формат сумм Если Цел(ПараметрыФискализации.СуммаЧека) = ПараметрыФискализации.СуммаЧека Тогда Формат = "ЧДЦ=0; ЧГ="; Иначе Формат = "ЧДЦ=2; ЧГ="; КонецЕсли; //Определяем, это e-mail или СМС рассылка, e-mail приоритетнее в 1С Если ЗначениеЗаполнено(ПараметрыФискализации.ПокупательEmail) Тогда Макет = ПолучитьОбщийМакет("дор_МакетПисьмаПоЧеку"); ТекстHTML = Макет.ПолучитьТекст(); ТекстHTML = СтрЗаменить(ТекстHTML, "$НомерЧека", ПараметрыФискализации.НомерЧекаККТ); ТекстHTML = СтрЗаменить(ТекстHTML, "$Время", ПараметрыФискализации.ДатаВремяЧека); //... Тут другие необходимые рассылки Результат = ТекстHTML; Иначе //Это смс рассылка //ТекстСообщения.Добавить(СтрШаблон(НСтр("ru = 'Чек на %1 руб.'"), Формат(ПараметрыФискализации.СуммаЧека, "ЧРД=.;ЧЦ=12;ЧДЦ=2;ЧН=0.00;ЧГ=0"))); ТекстСообщения.Добавить(СтрШаблон(НСтр("ru = 'Чек на %1 руб.'"), Формат(ПараметрыФискализации.СуммаЧека, Формат))); ТекстСообщения.Добавить(СтрШаблон(НСтр("ru = 'от %1'"), Формат(ПараметрыФискализации.ДатаВремяЧека, НСтр("ru = 'ДФ=''дд.ММ.гггг ЧЧ:мм'''")))); ТекстСообщения.Добавить(СтрШаблон(НСтр("ru = 'ККТ№ %1'"), ПараметрыФискализации.РегистрационныйНомерККТ)); ТекстСообщения.Добавить(СтрШаблон(НСтр("ru = 'lk.platformaofd.ru/web/noauth/cheque/search?fn=%1&fp=%2&i=%3'"), ПараметрыФискализации.ЗаводскойНомерФН, ПараметрыФискализации.ФискальныйПризнак, ПараметрыФискализации.НомерЧекаККТ )); //Разделяем неразрывными пробелами Результат = СтрСоединить(ТекстСообщения, Символы.НПП); КонецЕсли; Возврат Результат; //Старый код не вызываем //Результат = ПродолжитьВызов(ПараметрыФискализации); //Возврат Результат; КонецФункции
Здесь текст формирования HTML не расписан, он будет подробно рассмотрен в отдельной статье.
Чтобы письмо отправлялось в HTML формате, а не в формате простого текста, тоже нужно будет сделать доработки в модуле РассылкаЭлектронныхЧековВызовСервера:
&Вместо("НачатьОтправкуЭлектронногоЧека") Процедура дор_НачатьОтправкуЭлектронногоЧека(ПараметрыЧека, ТекстСообщения, ПокупательEmail, ПокупательНомер) //Копируем из базовой функции, заменяем на своё... Если ЗначениеЗаполнено(ПокупательEmail) Тогда ПараметрыПисьма = Новый Структура; КомуСтруктура = Новый Структура("Адрес, Представление"); КомуСтруктура.Адрес = ПокупательEmail; Кому = Новый Массив; Кому.Добавить(КомуСтруктура); ПараметрыПисьма.Вставить("Кому", Кому); Тема = НСтр("ru = 'Пробит чек №%1'"); Тема = СтрЗаменить(Тема, "%1", ПараметрыЧека.НомерЧекаККТ); ПараметрыПисьма.Вставить("Тема", Тема); ПараметрыПисьма.Вставить("Тело", ТекстСообщения); ПараметрыПисьма.Вставить("ИдентификаторФискальнойЗаписи", ПараметрыЧека.ИдентификаторФискальнойЗаписи); //+++Здесь наши изменения НАЧАЛО ПараметрыПисьма.Вставить("ТипТекста", "HTML"); //Тут же будем прикреплять картинку //---Здесь наши изменения КОНЕЦ РассылкаЭлектронныхЧеков.НачатьОтправкуЭлектронногоЧека(ПокупательEmail, Перечисления.ТипыРассылкиЭлектронныхЧеков.ЭлектронноеПисьмо, ПараметрыПисьма); Иначе ПродолжитьВызов(ПараметрыЧека, ТекстСообщения, ПокупательEmail, ПокупательНомер); КонецЕсли; КонецПроцедуры
Я не стал использовать изменения и контроль, т.к. большая часть кода процедуры изменена. Можно было бы и в другом месте вносить изменения, но это самое удобное — здесь есть и параметры письма и параметры чека.
Думаю, формирование текста HTML тоже можно перенести в это место, удобнее будет и картинку вставлять.
Все параметры электронного письма можно посмотреть в процедуре Модуль.РаботаСПочтовымиСообщениями.ПодготовитьПисьмо.
Таким образом мы можем для отправки письма использовать размеченный HTML-текст. Само заполнение HTML данными, прикрепление картинки — отдельная задача.
Пока что меня удовлетворило то, что письмо пришло в HTML-формате:
Среда: Розница 2.3.11.29 Объем: 3 час.
Свежие комментарии