eComm+

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

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

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


delivery_designer_unfu_2_4_0_2

Это старая версия документа!


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

1. Объединяем с конфигурацией модуля новой почты 2. Выполняем объединение 3. Пропускаем зависимости 4.1 Если модуль «Новая почта» внедряется совместно с модулями торговых площадок «eComm+» тогда перетаскиваем подсистему «Новая почта» в торговые площадки

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

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

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

Редактирование документа “Экспресс-накладная”

Удаление макета "ДанныеШаблонаСообщений" документа “Экспресс-накладная”

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

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

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

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

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

&НаКлиенте
Процедура eComm_ЭкспрессНакладнаяНажатие(Элемент, СтандартнаяОбработка)               	//++ eComm / Службы доставки
	
	Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
		ПоказатьПредупреждение(, НСтр("ru = 'Данные не записаны.
								|Переход к экспресс-накладной возможен только после сохранения заказа';
								|
								|uk = 'Данные не записаны.
								|Перехід до експрес-накладної можливий лише після збереження замовлення'"));
		Возврат;
	КонецЕсли;
	
	Если Элемент.Имя = "eComm_ЭкспрессНакладная_Открыть" Тогда 
		// Это открытие списка накладных
		
		СписокВыбора 		= eCommДоставкаСервер.СписокЭкспрессНакладных(Объект.Ссылка); 
		Если СписокВыбора.Количество() > 1 Тогда
			ОповещениеОВыборе 	= Новый ОписаниеОповещения("ВыполнитьПослеВыбораЗначения", ЭтаФорма, Объект.Ссылка);
			ПоказатьВыборИзМеню(ОповещениеОВыборе, СписокВыбора, Элементы["eComm_ЭкспрессНакладная_Открыть"]);
		ИначеЕсли СписокВыбора.Количество() = 1 Тогда 
			ВыполнитьПослеВыбораЗначения(СписокВыбора[0], Объект.Ссылка);
		Иначе
			// Создадим если ранее накладная не была создана
			ВыполнитьПослеВыбораЗначения(Новый Структура("Значение", Неопределено), Объект.Ссылка);
		КонецЕсли;
		
	ИначеЕсли Элемент.Имя = "eComm_ЭкспрессНакладная_Создать" Тогда 
		// Это создание новой накладной
		ВыполнитьПослеВыбораЗначения(Новый Структура("Значение", Неопределено), Объект.Ссылка);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьПослеВыбораЗначения(ЭлементСпискаВыбора, Заказ) Экспорт            	//++ eComm / Службы доставки

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

КонецПроцедуры

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

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

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

Добавим колонки на форму списка

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

Для роли «Базовые права УНФ» добавим право на чтение и просмотр к:

  • регистрам «eComm_СтатусыЭкспрессНакладных», «eComm_ЭкспрессНакладныеСпискаЗаказов»
  • документу «eComm_ЭкспрессНакладная»

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

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

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

		ПоказатьОповещениеПользователя(НСтр("ru='SMS успешно отправлено';uk='SMS успішно відправлено'"), ПолучитьНавигационнуюСсылку(Объект.Ссылка), Строка(Объект.Ссылка), БиблиотекаКартинок.Информация32);
		Оповестить("СообщениеSMSОтправлено");     //++
		Закрыть();

Расширяем определяемый тип "ПредметШаблонаСообщения" типом "ДокументСсылка.eComm_ЭкспрессНакладная"

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

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

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

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

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

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

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

	//++
	//РезультатОтправки = ОтправкаSMS.ОтправитьSMS(МассивНомеров, Объект.Содержание, Объект.ИмяОтправителяSMS, ОтправлятьВТранслите);
	РезультатОтправки = ОтправкаSMS.ОтправитьSMS(МассивНомеров, Объект.Содержание, ?(ЗначениеЗаполнено(Объект.ИмяОтправителяSMS),Объект.ИмяОтправителяSMS, Неопределено) , ОтправлятьВТранслите);
	//--

Редактирование модуля "Отправка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

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

Добавим реквизиты в справочник "Контрагенты"

Имя реквизита Синоним Тип Связи параметров выбора
eComm_ГородДоставки Місто доставки / Город доставки СправочникСсылка. eComm_НаселенныеПунктыДоставки х
eComm_ОтделениеДоставки Відділення / Отделение СправочникСсылка. eComm_ОтделенияДоставки Отбор.Владелец(eComm_ГородДоставки)

Отобразим добавленные реквизиты на форме

Встраивание в конфигурацию УТП, УПП, УТ-2

delivery_designer_unfu_2_4_0_2.1685628062.txt.gz · Последнее изменение: 2022/02/24 03:40 (внешнее изменение)