===== Встраивание подсистемы "Новая почта" ===== 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|Реквизиты доставки в карточке контрагента УТП / УПП]]