eComm+

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

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

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


delivery_designer_utp_2_4_0_2

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

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

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

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

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

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

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

На форме документа «Заказ покупателя» добавим на панель вкладку «НоваяПочта». На панели разместим надпись (гиперссылка) «eComm_ЭкспрессНакладная_Открыть» и надпись «eComm_ЭкспрессНакладная_Создать».

Имя элемента Синоним Элемент Гиперссылка Ширина Картинка
eComm_ЭкспрессНакладная_Открыть Отправить ЭН Надпись Истина 350 Документ
eComm_ЭкспрессНакладная_Создать Создать Надпись Истина 150 СоздатьЭлементСписка

Скопируем следующий код в конце размещения методов модуля формы документа «заказ покупателя»

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

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

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

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

Процедура ЗаполнитьОписаниеЭН()                                                         //++ eComm / Службы доставки

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

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

Обработчиком нажатия для элементов «eComm_ЭкспрессНакладная_Открыть» и «eComm_ЭкспрессНакладная_Создать» выберем из списка метод

"eComm_ЭкспрессНакладнаяНажатие"

Добавим в конце метода «ПередОткрытием» следующий код:

ЗаполнитьОписаниеЭН();			//++ eComm Доставка

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

Имя колонки Элемент управления ТекстШапки ТолькоПросмотр
ЭкспрессНакладная Поле ввода Экспресс-накладная Истина
ОписаниеСтатуса Поле ввода Описание статуса Истина
СтатусДенежногоПеревода Поле ввода Статус денежного перевода Истина
ДнейХраненияНаСкладе Поле ввода Дней хранения на складе Истина
НачалоПлатногоХранения Поле ввода Начало платного хранения Истина

Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
	
	ТаблицаДокументов = Новый ТаблицаЗначений;
	ТаблицаДокументов.Колонки.Добавить("Документ", Новый ОписаниеТипов("ДокументСсылка.ЗаказПокупателя"));
	Для каждого Строка из ОформленияСтрок цикл
		СтрокаТаблицы = ТаблицаДокументов.Добавить();
		СтрокаТаблицы.Документ = Строка.ДанныеСтроки.Ссылка;
	КонецЦикла;

	МенеджерВременныхТаблиц = новый МенеджерВременныхТаблиц();
	//Запрос для создания временной таблицы
	Запрос = Новый Запрос();
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	Запрос.Текст = "ВЫБРАТЬ 
		|	Таб.Документ КАК Документ
		|	Поместить ВременнаяТаблицаДокументов
		|ИЗ &ТаблицаСсылок КАК Таб";
	Запрос.УстановитьПараметр("ТаблицаСсылок",ТаблицаДокументов);
	Запрос.Выполнить();
	
	//Запрос для получения данных из временных таблиц
	Запрос = Новый Запрос();
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	
	Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	               |	ВременнаяТаблицаДокументов.Документ КАК Документ,
	               |	ЕСТЬNULL(ЭкспрессНакладныеСпискаЗаказов.ЭкспрессНакладная.НомерТТН, """") КАК ЭкспрессНакладная,
	               |	СтатусыЭкспрессНакладных.ОписаниеСтатуса,
	               |	СтатусыЭкспрессНакладных.СтатусДенежногоПеревода,
	               |	СтатусыЭкспрессНакладных.ДнейХраненияНаСкладе,
	               |	СтатусыЭкспрессНакладных.НачалоПлатногоХранения
	               |ИЗ
	               |	ВременнаяТаблицаДокументов КАК ВременнаяТаблицаДокументов
	               |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.eComm_ЭкспрессНакладныеСпискаЗаказов КАК ЭкспрессНакладныеСпискаЗаказов
	               |			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.eComm_СтатусыЭкспрессНакладных КАК СтатусыЭкспрессНакладных
	               |			ПО ЭкспрессНакладныеСпискаЗаказов.ЭкспрессНакладная = СтатусыЭкспрессНакладных.ЭкспрессНакладная
	               |		ПО (ЭкспрессНакладныеСпискаЗаказов.ДокументОснование = ВременнаяТаблицаДокументов.Документ)";
	
	ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
	ТаблицаРезультат.Индексы.Добавить("Документ");

	Для каждого Строка из ОформленияСтрок цикл

		текСсылка = Строка.ДанныеСтроки.Ссылка;
		СтрокаТаблицыРезультат = ТаблицаРезультат.Найти(текСсылка,"Документ");
		Если СтрокаТаблицыРезультат <> Неопределено Тогда
			
			Если ЗначениеЗаполнено(СтрокаТаблицыРезультат.ЭкспрессНакладная) Тогда
				Строка.Ячейки.ЭкспрессНакладная.Значение 		= СтрокаТаблицыРезультат.ЭкспрессНакладная;
				Строка.Ячейки.ОписаниеСтатуса.Значение 			= СтрокаТаблицыРезультат.ОписаниеСтатуса;
				Строка.Ячейки.СтатусДенежногоПеревода.Значение 	= СтрокаТаблицыРезультат.СтатусДенежногоПеревода;
				Строка.Ячейки.ДнейХраненияНаСкладе.Значение 	= СтрокаТаблицыРезультат.ДнейХраненияНаСкладе;
				Строка.Ячейки.НачалоПлатногоХранения.Значение 	= СтрокаТаблицыРезультат.НачалоПлатногоХранения;
			КонецЕсли;
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

Редактирование интерфейсов

Разместим в общем модуле «eCommСерверДоработки» (необходимо добавить в случае отсутствия) код:

Процедура ЗагрузкаОплатНоваяПочта() Экспорт
	
	ОткрытьФорму("Обработка.eComm_НоваяПочта.Форма.ЗагрузкаОплат");
	
КонецПроцедуры

Добавим в интерфейс «Полный» (или какой-либо другой требуемый интерфейс) подменю «eComm» с пунктами: «Учетные записи доставки», «Экспресс-накладные» и «Загрузка оплат»

Тип кнопки Действие Текст Картинка
Действие Справочник.eComm_УчетныеЗаписиСлужбДоставки: Открыть справочник Учетные записи доставки Справочник
Действие Документ.eComm_ЭкспрессНакладная: Открыть список документов Экспресс-накладные Документ
Действие eCommСерверДоработки.ЗагрузкаОплатНоваяПочта Загрузка оплат (НП) Обработка

В случае использования только модуля новой почты (без подключения укрпочты и др. перевозчиков) допускается сохранение города / отделения доставки в карточке контрагента Реквизиты доставки в карточке контрагента УТП / УПП
delivery_designer_utp_2_4_0_2.txt · Последнее изменение: 2025/04/18 19:33 — webmaster