===== Встраивание подсистемы "Новая почта" =====
1. Объединяем с конфигурацией модуля новой почты
{{ :delivery1.jpg?400 |}}
2. Выполняем объединение
3. Пропускаем зависимости
{{ :delivery2.jpg?400 |}}
4.1 Если модуль "Новая почта" внедряется совместно с модулями торговых площадок "eComm+" тогда перетаскиваем подсистему "Новая почта" в торговые площадки
Только вместе с "eComm+"
{{ :delivery3.jpg?400 |}}
4.2 Если модуль "Новая почта" внедряется самостоятельно (без модулей "eComm+") тогда отображаем подсистему "eComm_СлужбыДоставки" в командном интерфейсе
Только самостоятельно (без "eComm+")
{{ ::bas_np_only.png?400 |}}
===== Редактирование документа “Заказ покупателя” =====
==== Редактирование формы документа “Заказ покупателя” ====
На форме документа "Заказ покупателя" добавим на панель вкладку "НоваяПочта".
На панели разместим надпись (гиперссылка) "eComm_ЭкспрессНакладная_Открыть" и надпись "eComm_ЭкспрессНакладная_Создать".
^ Имя элемента ^ Синоним ^ Элемент ^ Гиперссылка ^ Ширина ^ Картинка ^
| eComm_ЭкспрессНакладная_Открыть | Отправить ЭН | Надпись | Истина | 350| Документ |
| eComm_ЭкспрессНакладная_Создать | Создать | Надпись | Истина | 150| СоздатьЭлементСписка |
{{ :utp_zakaz.png?400 |}}
Скопируем следующий код в конце размещения методов модуля формы документа "заказ покупателя"
Процедура 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 Доставка
==== Редактирование формы списка “Заказ покупателя” ====
^ Имя колонки ^ Элемент управления ^ ТекстШапки ^ ТолькоПросмотр ^
| ЭкспрессНакладная | Поле ввода | Экспресс-накладная | Истина |
| ОписаниеСтатуса | Поле ввода | Описание статуса | Истина |
| СтатусДенежногоПеревода | Поле ввода | Статус денежного перевода | Истина |
| ДнейХраненияНаСкладе | Поле ввода | Дней хранения на складе | Истина |
| НачалоПлатногоХранения | Поле ввода | Начало платного хранения | Истина |
{{ ::utp_integreted1.png?600 |}}
{{ :utp_integrated2.png?400 |}}
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
ТаблицаДокументов = Новый ТаблицаЗначений;
ТаблицаДокументов.Колонки.Добавить("Документ", Новый ОписаниеТипов("ДокументСсылка.ЗаказПокупателя"));
Для каждого Строка из ОформленияСтрок цикл
СтрокаТаблицы = ТаблицаДокументов.Добавить();
СтрокаТаблицы.Документ = Строка.ДанныеСтроки.Ссылка;
КонецЦикла;
МенеджерВременныхТаблиц = новый МенеджерВременныхТаблиц();
//Запрос для создания временной таблицы
Запрос = Новый Запрос();
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ
| Таб.Документ КАК Документ
| Поместить ВременнаяТаблицаДокументов
|ИЗ &ТаблицаСсылок КАК Таб";
Запрос.УстановитьПараметр("ТаблицаСсылок",ТаблицаДокументов);
Запрос.Выполнить();
//Запрос для получения данных из временных таблиц
Запрос = Новый Запрос();
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВременнаяТаблицаДокументов.Документ КАК Документ,
| ЕСТЬNULL(ЭкспрессНакладныеСпискаЗаказов.ЭкспрессНакладная.НомерТТН, """") КАК ЭкспрессНакладная,
| СтатусыЭкспрессНакладных.ОписаниеСтатуса,
| СтатусыЭкспрессНакладных.СтатусДенежногоПеревода,
| СтатусыЭкспрессНакладных.ДнейХраненияНаСкладе,
| СтатусыЭкспрессНакладных.НачалоПлатногоХранения
|ИЗ
| ВременнаяТаблицаДокументов КАК ВременнаяТаблицаДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.eComm_ЭкспрессНакладныеСпискаЗаказов КАК ЭкспрессНакладныеСпискаЗаказов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.eComm_СтатусыЭкспрессНакладных КАК СтатусыЭкспрессНакладных
| ПО ЭкспрессНакладныеСпискаЗаказов.ЭкспрессНакладная = СтатусыЭкспрессНакладных.ЭкспрессНакладная
| ПО (ЭкспрессНакладныеСпискаЗаказов.ДокументОснование = ВременнаяТаблицаДокументов.Документ)";
ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
ТаблицаРезультат.Индексы.Добавить("Документ");
Для каждого Строка из ОформленияСтрок цикл
текСсылка = Строка.ДанныеСтроки.Ссылка;
СтрокаТаблицыРезультат = ТаблицаРезультат.Найти(текСсылка,"Документ");
Если СтрокаТаблицыРезультат <> Неопределено Тогда
Если ЗначениеЗаполнено(СтрокаТаблицыРезультат.ЭкспрессНакладная) Тогда
Строка.Ячейки.ЭкспрессНакладная.Значение = СтрокаТаблицыРезультат.ЭкспрессНакладная;
Строка.Ячейки.ОписаниеСтатуса.Значение = СтрокаТаблицыРезультат.ОписаниеСтатуса;
Строка.Ячейки.СтатусДенежногоПеревода.Значение = СтрокаТаблицыРезультат.СтатусДенежногоПеревода;
Строка.Ячейки.ДнейХраненияНаСкладе.Значение = СтрокаТаблицыРезультат.ДнейХраненияНаСкладе;
Строка.Ячейки.НачалоПлатногоХранения.Значение = СтрокаТаблицыРезультат.НачалоПлатногоХранения;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
==== Редактирование интерфейсов ====
Разместим в общем модуле "eCommСерверДоработки" (необходимо добавить в случае отсутствия) код:
Процедура ЗагрузкаОплатНоваяПочта() Экспорт
ОткрытьФорму("Обработка.eComm_НоваяПочта.Форма.ЗагрузкаОплат");
КонецПроцедуры
{{ ::delivery_designer_utp_3.jpg?600 |}}
Добавим в интерфейс «Полный» (или какой-либо другой требуемый интерфейс) подменю «eComm» с пунктами: «Учетные записи доставки», «Экспресс-накладные» и "Загрузка оплат"
^ Тип кнопки ^ Действие ^ Текст ^ Картинка ^
| Действие| Справочник.eComm_УчетныеЗаписиСлужбДоставки: Открыть справочник | Учетные записи доставки| Справочник|
| Действие| Документ.eComm_ЭкспрессНакладная: Открыть список документов | Экспресс-накладные| Документ|
| Действие| eCommСерверДоработки.ЗагрузкаОплатНоваяПочта | Загрузка оплат (НП)| Обработка|
{{ ::delivery_designer_utp_4.jpg?600 |}}
{{ ::delivery_designer_utp_5.jpg?600 |}}
{{ ::delivery_designer_utp_6.jpg?600 |}}
В случае использования только модуля новой почты (без подключения укрпочты и др. перевозчиков) допускается сохранение города / отделения доставки в карточке контрагента [[delivery_designer_utp_contr|Реквизиты доставки в карточке контрагента УТП / УПП]]