Сформировать сообщение отправить.
Функция СформироватьСообщениеИОтправить(ПараметрыОтправки) Экспорт
Результат = Новый Структура("Отправлено, ОписаниеОшибки", Ложь);
Сообщение = СформироватьСообщение(ПараметрыОтправки);
Если ПараметрыОтправки.Шаблон.ПредназначенДляSMS Тогда
Если Сообщение.Получатель.Количество() = 0 Тогда
Результат.ОписаниеОшибки = НСтр("ru = 'Для отправки сообщения необходимо ввести номер телефонов получателей.'");
Возврат Результат;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОтправкаSMS") Тогда
МодульОтправкаSMS = ОбщегоНазначения.ОбщийМодуль("ОтправкаSMS");
Если МодульОтправкаSMS.ДоступнаОтправкаSMS() Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда
МодульВзаимодействия = ОбщегоНазначения.ОбщийМодуль("Взаимодействия");
Если МодульВзаимодействия.ИспользуетсяПрочиеВзаимодействия() Тогда
МодульВзаимодействия.СоздатьИОтправитьСообщениеSMS(Сообщение);
Результат.Отправлено = Истина;
Возврат Результат;
КонецЕсли;
КонецЕсли;
НомераПолучателей = Новый Массив;
Для каждого Получатель Из Сообщение.Получатель Цикл
НомераПолучателей.Добавить(Получатель.Значение);
КонецЦикла;
РезультатОтправкаSMS = МодульОтправкаSMS.ОтправитьSMS(НомераПолучателей, Сообщение.Текст, Сообщение.ДополнительныеПараметры.Отправитель, Сообщение.ДополнительныеПараметры.ПеревестиВТранслит);
Результат.Отправлено = ПустаяСтрока(РезультатОтправкаSMS.ОписаниеОшибки);
Результат.ОписаниеОшибки = РезультатОтправкаSMS.ОписаниеОшибки;
Иначе
Результат.ОписаниеОшибки = НСтр("ru = 'Сообщение SMS не может быть отправлено сразу.'");
КонецЕсли;
Возврат Результат;
КонецЕсли;
Иначе
Если Сообщение.Получатель.Количество() = 0 Тогда
Результат.ОписаниеОшибки = НСтр("ru = 'Сообщение не может быть отправлено сразу, т.к необходимо ввести адрес электронной почты.'");
Возврат Результат;
КонецЕсли;
ПараметрыПисьма = Новый Структура();
ПараметрыПисьма.Вставить("Тема", Сообщение.Тема);
ПараметрыПисьма.Вставить("Тело", Сообщение.Текст);
ПараметрыПисьма.Вставить("Вложения", Новый Соответствие);
ПараметрыПисьма.Вставить("Кодировка", "utf-8");
Для каждого Вложение Из Сообщение.Вложения Цикл
НовоеВложение = Новый Структура("ДвоичныеДанные, Идентификатор");
НовоеВложение.ДвоичныеДанные = ПолучитьИзВременногоХранилища(Вложение.АдресВоВременномХранилище);
НовоеВложение.Идентификатор = Вложение.Идентификатор;
ПараметрыПисьма.Вложения.Вставить(Вложение.Представление, НовоеВложение);
КонецЦикла;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда
МодульРаботаСПочтовымиСообщениямиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениямиСлужебный");
Если Сообщение.ДополнительныеПараметры.ФорматПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда
ТипТекста = МодульРаботаСПочтовымиСообщениямиСлужебный.ТипТекстовЭлектронныхПисем("HTMLСКартинками");
Иначе
ТипТекста = МодульРаботаСПочтовымиСообщениямиСлужебный.ТипТекстовЭлектронныхПисем("ПростойТекст");
КонецЕсли;
Иначе
ТипТекста = "";
КонецЕсли;
ПараметрыПисьма.Вставить("ТипТекста", ТипТекста);
Кому = СформироватьСписокПолучателейСообщения(Сообщение.Получатель);
ПараметрыПисьма.Вставить("Кому", Кому);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда
МодульРаботаСПочтовымиСообщениями = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениями");
Если МодульРаботаСПочтовымиСообщениями.ДоступнаОтправкаПисем() Тогда
Если ПараметрыОтправки.ДополнительныеПараметры.УчетнаяЗапись = Неопределено Тогда
УчетнаяЗапись = МодульРаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись();
Иначе
УчетнаяЗапись = ПараметрыОтправки.ДополнительныеПараметры.УчетнаяЗапись;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда
МодульВзаимодействия = ОбщегоНазначения.ОбщийМодуль("Взаимодействия");
Если МодульВзаимодействия.ИспользуетсяПочтовыйКлиент() Тогда
РезультатОтправки = МодульВзаимодействия.СоздатьПисьмо(Сообщение, УчетнаяЗапись);
ЗаполнитьЗначенияСвойств(Результат, РезультатОтправки);
Возврат Результат;
КонецЕсли;
КонецЕсли;
МодульРаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(УчетнаяЗапись, ПараметрыПисьма);
Результат.Отправлено = Истина;
Иначе
Результат.ОписаниеОшибки = НСтр("ru = 'Сообщение не может быть отправлено сразу.'");
Возврат Результат;
КонецЕсли;
КонецЕсли
КонецЕсли;
Возврат Результат;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////