eComm+

Модулі для BAS / 1С* - розроблено в Україні!

Инструменты пользователя

Инструменты сайта


delivery_designer_utbas

Встраивание подсистемы "Новая почта"

1. Объединяем с конфигурацией модуля новой почты 2. Выполняем объединение 3. Пропускаем зависимости

4.1 Если модуль «Новая почта» внедряется совместно с модулями торговых площадок «eComm+» тогда перетаскиваем подсистему «Новая почта» в торговые площадки

Только вместе с «eComm+»

4.2 Если модуль «Новая почта» внедряется самостоятельно (без модулей «eComm+») тогда отображаем подсистему «eComm_СлужбыДоставки» в командном интерфейсе

Только самостоятельно (без «eComm+»)

Редактирование документа “Заказ клиента”

Редактирование формы документа “Заказ клиента”

Добавляем в конце метода “ПриСозданииНаСервере” следующий код

//++ ingenum.com.ua / Торговые площадки
	eCommДоставкаСервер.ЗаказПокупателя_ФормаДокумента_ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
//-- ingenum//

Добавляем в конце модуля формы следующий код

//++ eComm Доставка
&НаКлиенте
Процедура eComm_ЭкспрессНакладнаяНажатие(Элемент, СтандартнаяОбработка)
	
	ЭН = eCommДоставкаСервер.ВернутьЭкспрессНакладную(Объект.Ссылка);
	ЗначенияЗаполнения = Новый Структура("ДокументОснование", Объект.Ссылка);
	ОткрытьФорму("Документ.eComm_ЭкспрессНакладная.ФормаОбъекта", Новый Структура("Ключ, ЗначенияЗаполнения", ЭН, ЗначенияЗаполнения));
	
КонецПроцедуры
//--

Редактирование формы "ФормаСпискаДокументов" документа “Заказ клиента”

Для реквизита «Список» выполняем команду «Настройка списка» и приводим текст запроса к такому виду:

ЕСТЬNULL(ФактОплаты.СуммаОплаты, 0) + ЕСТЬNULL(ФактОплаты.СуммаАванса, 0) КАК СуммаОплатыОборот,
	//++
	,eComm_СтатусыЭкспрессНакладных.ЭкспрессНакладная КАК ЭкспрессНакладная,
	eComm_СтатусыЭкспрессНакладных.ОписаниеСтатуса КАК ОписаниеСтатуса,
	eComm_СтатусыЭкспрессНакладных.СтатусДенежногоПеревода,
	eComm_СтатусыЭкспрессНакладных.ДнейХраненияНаСкладе КАК ДнейХраненияНаСкладе,
	eComm_СтатусыЭкспрессНакладных.НачалоПлатногоХранения,
	ЕСТЬNULL(СообщенияSMS.КоличествоSMS, 0) КАК SMS
	//--

ИЗ
	Документ.ЗаказКлиента КАК ДокументЗаказКлиента
		//++
		{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.eComm_СтатусыЭкспрессНакладных КАК eComm_СтатусыЭкспрессНакладных
		ПО eComm_СтатусыЭкспрессНакладных.ДокументОснование = ДокументЗаказКлиента.Ссылка}
		{ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СообщениеSMS.Ссылка) КАК КоличествоSMS,
			СообщениеSMS.ВзаимодействиеОснование КАК ДокОснование
		ИЗ
			Документ.СообщениеSMS КАК СообщениеSMS
		ГДЕ
			СообщениеSMS.ПометкаУдаления = ЛОЖЬ
		СГРУППИРОВАТЬ ПО
			СообщениеSMS.ВзаимодействиеОснование) КАК СообщенияSMS
		ПО ДокументЗаказКлиента.Ссылка = СообщенияSMS.ДокОснование}
		//--

Редактирование роли "Базовые права УТ"

Для роли «Базовые права УТ» добавим право на чтение и просмотр к регистру «eComm_СтатусыЭкспрессНакладных» и документу «eComm_ЭкспрессНакладная

Редактирование формы документа "СообщениеSMS"

Метод "ОтправитьВыполнить"

Приведем код к следующему виду:

		Записать();

		Оповестить("СообщениеSMSОтправлено");     //++

		Закрыть();

Редактирование общего модуля "ШаблоныСообщенийСервер"

Метод "МассивОбъектовСДаннымиШаблоновСообщений"

Приведем код к следующему виду:

Если ПолучитьФункциональнуюОпцию("ИспользоватьСчетаНаОплатуКлиентам") Тогда
		МассивОбъектовСДаннымиШаблоновСообщений.Добавить("Документ.СчетНаОплатуКлиенту");
	КонецЕсли;
	
	МассивОбъектовСДаннымиШаблоновСообщений.Добавить("Документ.eComm_ЭкспрессНакладная");     //++
	
	Возврат МассивОбъектовСДаннымиШаблоновСообщений;

Редактирование типа реквизита "ВзаимодействиеОснование" документа "СообщениеSMS"

  • Дополним реквизит документа «ВзаимодействиеОснование» типом «ДокументСсылка.ЗаказКлиента»
  • Дополним реквизит формы элемента «ВзаимодействиеОснование» документа «СообщениеSMS» типом «ДокументСсылка.ЗаказКлиента»

Исправление ошибок подсистемы "Отправка SMS TURBO"

Если Вы используете провайдера TURBO SMS, тогда Вам, вероятно, понадобится исправить ошибки типовой конфигурации.

Редактирование табличной части "Адресаты" документа "СообщениеSMS"

В реквизите табличной части «Адресаты» документа «СообщениеSMS» увеличиваем длину реквизита «ИдентификаторСообщения» до 36 символов

Редактирование модуля "ОтправкаSMSЧерезTURBO"

Метод "ОтправитьSMS"

Приведем код к следующему виду:

				Ответ = ПреобразоватьОтвет(ФайлОтвета, "ns1:ResultArray");
				//ИдентификаторСообщения = Ответ.id;
				
				//++
				//Результат.ОтправленныеСообщения.Добавить(Новый Структура("НомерПолучателя,ИдентификаторСообщения",	
				//												  НомерПолучателя));
				//
				//Если ЗначениеЗаполнено(Ответ) Тогда
				//	Результат.ОписаниеОшибки = Результат.ОписаниеОшибки 
				//	+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='SMS на номер %1';uk='SMS на номер %1'"), Элемент)
				//	+ ": " + Ответ
				//	+ Символы.ПС;
				//КонецЕсли;
				Попытка
					ИдентификаторСообщения = Новый УникальныйИдентификатор(Ответ);
					УспешноОтправлено = Истина;
				Исключение
					УспешноОтправлено = Ложь;
				КонецПопытки;
				
				Если УспешноОтправлено Тогда 
					Результат.ОтправленныеСообщения.Добавить(Новый Структура("НомерПолучателя,ИдентификаторСообщения",	
																  Элемент, Ответ));
				Иначе
					Результат.ОписаниеОшибки = Результат.ОписаниеОшибки 
												+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='SMS на номер %1';uk='SMS на номер %1'"), Элемент)
												+ ": " + Ответ
												+ Символы.ПС;											  
				КонецЕсли;												  
				//--

Метод "СтатусДоставки"

Приведем код к следующему виду:

	|   <soapenv:Body>
	|      <tur:GetMessageStatus>
	|           <!--Optional:-->
	|           <tur:MessageId>" + ИдентификаторСообщения + "</tur:MessageId>
	|      </tur:GetMessageStatus>
	|   </soapenv:Body>
	//++
	//Баланс = ПреобразоватьОтвет(ФайлОтвета, "ns1:GetCreditBalanceResult");
	//УдалитьФайлы(ФайлОтвета);

	//Ответ = Неопределено;
	//Запрос = Неопределено;
	//Соединение = Неопределено;

	//Возврат Баланс;

	СтатусДоставки = ПреобразоватьОтвет(ФайлОтвета, "ns1:GetMessageStatusResult");
	УдалитьФайлы(ФайлОтвета);
		
	Возврат СтатусДоставкиSMS(СтатусДоставки);
	//--

Метод "ПреобразоватьОтвет"

Приведем код к следующему виду:

			Если СокрЛП(ЧтениеХМЛ.Имя) <> Тег и ЧтениеХМЛ.ТипУзла <> ТипУзлаXML.Текст Тогда
				Продолжить;
			ИначеЕсли ЧтениеХМЛ.ТипУзла = ТипУзлаXML.Текст и СокрЛП(ЧтениеХМЛ.Имя) = "#text" Тогда
				//++
				//ЗначениеВозврата = СокрЛП(ЧтениеХМЛ.Значение);
				//Прервать;
				Если ЧтениеХМЛ.Значение = "Сообщения успешно отправлены" Тогда 
					Продолжить;
				Иначе
					ЗначениеВозврата = СокрЛП(ЧтениеХМЛ.Значение);
					Прервать;
				КонецЕсли;
				//--
			КонецЕсли;

Добавим метод "СтатусДоставкиSMS" в конце модуля

Функция СтатусДоставкиSMS(СтатусСтрокой)
	
	//Сообщение с ID X не найдено
	//Не достаточно параметров для выполнения функции
	//Вы не авторизированы
	//Отправлено
	//В очереди
	//Сообщение передано в мобильную сеть
	//Сообщение доставлено получателю	
	//Истек срок сообщения
	//Удалено оператором
	//Не доставлено
	//Сообщение доставлено на сервер
	//Отклонено оператором
	//Неизвестный статус
	//Ошибка, сообщение не отправлено
	//Не достаточно кредитов на счете
	//Отправка отменена
	//Отправка приостановлена
	//Удалено пользователем
	
	СоответствиеСтатусов = Новый Соответствие;
	СоответствиеСтатусов.Вставить(""									, "НеОтправлялось");
    СоответствиеСтатусов.Вставить("Отправка приостановлена"				, "НеОтправлялось"); 		// SCHEDULED
    СоответствиеСтатусов.Вставить("В очереди"							, "Отправляется");   		// ENROUTE
	СоответствиеСтатусов.Вставить("Сообщение передано в мобильную сеть"	, "Отправляется");   		// ENROUTE
	СоответствиеСтатусов.Вставить("Сообщение доставлено на сервер"		, "Отправляется");   		// ENROUTE
    СоответствиеСтатусов.Вставить("Сообщение доставлено получателю"		, "Доставлено");     		// DELIVERED
    СоответствиеСтатусов.Вставить("Истек срок сообщения"				, "НеДоставлено");   		// EXPIRED
    СоответствиеСтатусов.Вставить("Отправка отменена"					, "НеДоставлено");  		// DELETED
	СоответствиеСтатусов.Вставить("Удалено пользователем"				, "НеДоставлено");   		// DELETED
    СоответствиеСтатусов.Вставить("Ошибка, сообщение не отправлено"		, "НеДоставлено");   		// UNDELIVERABLE
    СоответствиеСтатусов.Вставить("Отправлено"							, "Отправлено");     		// ACCEPTED
    СоответствиеСтатусов.Вставить("Неизвестный статус"					, "Ошибка"); 				// UNKNOWN
    СоответствиеСтатусов.Вставить("Отклонено оператором"				, "НеОпознаноПровайдером"); // REJECTED
    СоответствиеСтатусов.Вставить("Удалено оператором"					, "НеОпознаноПровайдером"); // DISCARDED
    СоответствиеСтатусов.Вставить("Не доставлено"						, "НеДоставлено");   		// SENDING
    СоответствиеСтатусов.Вставить("Не достаточно кредитов на счете"		, "НеДоставлено");   		// NOT_SUPPORTED
    СоответствиеСтатусов.Вставить("Вы не авторизированы"				, "НеДоставлено");   		// WRONG_ALPHANAME
    СоответствиеСтатусов.Вставить("Не достаточно параметров для выполнения функции", "НеДоставлено");   // WRONG_ALPHANAME_RETURNED

	Результат = СоответствиеСтатусов[СтатусСтрокой];
	Возврат ?(Результат = Неопределено, "Ошибка", Результат);
	
КонецФункции

Общая форма "НастройкаОтправкиSMS"

Добавим на форму реквизит «ИмяОтправителя» (Строка)

Метод "ПриЗаписиНаСервере"

	ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Владелец, ЛогинДляОтправкиSMS, "Логин");
	//++
	ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Владелец, ИмяОтправителя, "ИмяОтправителя");
	//--
	УстановитьПривилегированныйРежим(Ложь);

Метод "ПриСозданииНаСервере"

	ПарольИЛогин = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Владелец, "Пароль, Логин, ИмяОтправителя");	//++ eComm+ / Добавлен параметр "ИмяОтправителя"
	УстановитьПривилегированныйРежим(Ложь);
	ЛогинДляОтправкиSMS = ПарольИЛогин.Логин;
	ПарольДляОтправкиSMS = ?(ЗначениеЗаполнено(ПарольИЛогин.Пароль), ЭтотОбъект.УникальныйИдентификатор, "");
	ИмяОтправителя = ПарольИЛогин.ИмяОтправителя; 	//++ eComm+ / Добавлена строка

Общий модуль "ОтправкаSMS"

Метод "НастройкиОтправкиSMS"

	Результат = Новый Структура("Логин, Пароль, Провайдер,ИмяОтправителя");  //++ eComm+
	Если ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда
		Владелец = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Константа.ПровайдерSMS");
		УстановитьПривилегированныйРежим(Истина);
		ПарольИЛогин = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Владелец, "Пароль,Логин,ИмяОтправителя");//++ eComm+
		УстановитьПривилегированныйРежим(Ложь);
		Результат.Логин = ПарольИЛогин.Логин;
		Результат.Пароль = ПарольИЛогин.Пароль;
		Результат.ИмяОтправителя = ПарольИЛогин.ИмяОтправителя;			//++ eComm+
		Результат.Провайдер =Константы.ПровайдерSMS.Получить();
	КонецЕсли;

Метод "ОтправитьSMS"

	НастройкиОтправкиSMS = НастройкиОтправкиSMS();
	
	Если НастройкиОтправкиSMS.Провайдер = Перечисления.ПровайдерыSMS.TURBO Тогда // TURBOSMS
		Результат = ОтправкаSMSЧерезTURBO.ОтправитьSMS(НомераПолучателей, Текст, НастройкиОтправкиSMS.ИмяОтправителя,
		НастройкиОтправкиSMS.Логин, НастройкиОтправкиSMS.Пароль);
Обратите внимание что расписание обновлений справочников необходимо настраивать ТОЛЬКО ПОСЛЕ ПЕРВОНАЧАЛЬНОГО РУЧНОГО ОБНОВЛЕНИЯ СПРАВОЧНИКОВ. Иначе города/отделения/улицы могут задублироваться
delivery_designer_utbas.txt · Последнее изменение: 2022/02/15 13:33 — webmaster