СформироватьСообщениеИОтправить (БСП)

Автор: 1С
ОбщийМодуль.ШаблоныСообщенийСлужебный
БСП

Сформировать сообщение отправить.

Функция СформироватьСообщениеИОтправить(ПараметрыОтправки) Экспорт
	
	Результат = Новый Структура("Отправлено, ОписаниеОшибки", Ложь);
	
	Сообщение = СформироватьСообщение(ПараметрыОтправки);
	
	Если ПараметрыОтправки.Шаблон.ПредназначенДля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
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ОтправитьСообщение (БСП)

СоздатьИОтправитьСообщениеSMS (БСП)

СформироватьСообщениеВФоне (БСП)

СформироватьСообщение (БСП)

ОтправитьДанныеСообщенияВТехПоддержку (БСП)

TurboConf - расширение Конфигуратора 1С