В связи с разделением регистра сведений «eComm_СтатусыЭкспрессНакладных» на два регистра («eComm_СтатусыЭкспрессНакладных» и «eComm_ЭкспрессНакладныеСпискаЗаказов») и дальнейшим развитием модуля доставки обновление необходимо производить по следующему сценарию:
Создадим внешнюю обработку с одной формой и командой «РазделитьСлужебныеРеквизиты». После выполнения команды убедимя что регистры сведений «eComm_СтатусыЭкспрессНакладных» и «eComm_ЭкспрессНакладныеСпискаЗаказов» заполнены.
&НаКлиенте Процедура РазделитьСлужебныеРегистры(Команда) РазделитьСлужебныеРегистрыНаСервере(); КонецПроцедуры &НаСервере Процедура РазделитьСлужебныеРегистрыНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | eComm_СтатусыЭкспрессНакладных.ДокументОснование КАК ДокументОснование, | eComm_СтатусыЭкспрессНакладных.ЭкспрессНакладная КАК ЭкспрессНакладная, | eComm_СтатусыЭкспрессНакладных.ЭкспрессНакладнаяСтар КАК ЭкспрессНакладнаяСтар, | eComm_СтатусыЭкспрессНакладных.Статус КАК Статус, | eComm_СтатусыЭкспрессНакладных.ОписаниеСтатуса КАК ОписаниеСтатуса, | eComm_СтатусыЭкспрессНакладных.НачалоПлатногоХранения КАК НачалоПлатногоХранения, | eComm_СтатусыЭкспрессНакладных.СтатусДенежногоПеревода КАК СтатусДенежногоПеревода, | eComm_СтатусыЭкспрессНакладных.ДатаПрибытияНаСклад КАК ДатаПрибытияНаСклад, | eComm_СтатусыЭкспрессНакладных.ДнейХраненияНаСкладе КАК ДнейХраненияНаСкладе, | eComm_СтатусыЭкспрессНакладных.ДатаПолучения КАК ДатаПолучения |ИЗ | РегистрСведений.eComm_СтатусыЭкспрессНакладных КАК eComm_СтатусыЭкспрессНакладных"; РезультатЗапроса = Запрос.Выполнить().Выбрать(); Пока РезультатЗапроса.Следующий() Цикл МенеджерЗаписиСтарый = РегистрыСведений.eComm_СтатусыЭкспрессНакладных.СоздатьМенеджерЗаписи(); МенеджерЗаписиСтарый.ДокументОснование = РезультатЗапроса.ДокументОснование; МенеджерЗаписиСтарый.ЭкспрессНакладная = РезультатЗапроса.ЭкспрессНакладная; МенеджерЗаписиСтарый.Удалить(); МенеджерЗаписиНовый = РегистрыСведений.eComm_СтатусыЭкспрессНакладных.СоздатьМенеджерЗаписи(); ЗаполнитьЗначенияСвойств(МенеджерЗаписиНовый, РезультатЗапроса); МенеджерЗаписиНовый.ЭкспрессНакладная = РезультатЗапроса.ЭкспрессНакладнаяСтар; МенеджерЗаписиНовый.Записать(); МенеджерЗаписиЗаказ = РегистрыСведений.eComm_ЭкспрессНакладныеСпискаЗаказов.СоздатьМенеджерЗаписи(); МенеджерЗаписиЗаказ.ДокументОснование = РезультатЗапроса.ДокументОснование; МенеджерЗаписиЗаказ.ЭкспрессНакладная = РезультатЗапроса.ЭкспрессНакладнаяСтар; МенеджерЗаписиЗаказ.Записать(); КонецЦикла; КонецПроцедуры
Убедимся что на шаге №3 мы заменили тело процедуры «eComm_ЭкспрессНакладнаяНажатие» на две процедуры из представленного ниже кода:
&НаКлиенте
Процедура eComm_ЭкспрессНакладнаяНажатие(Элемент, СтандартнаяОбработка) //++ eComm / Службы доставки
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Данные не записаны.
|Переход к экспресс-накладной возможен только после сохранения заказа';
|
|uk = 'Данные не записаны.
|Перехід до експрес-накладної можливий лише після збереження замовлення'"));
Возврат;
КонецЕсли;
Если Элемент.Имя = "eComm_ЭкспрессНакладная_Открыть" Тогда
// Это открытие списка накладных
СписокВыбора = eCommДоставкаСервер.СписокЭкспрессНакладных(Объект.Ссылка);
Если СписокВыбора.Количество() > 1 Тогда
ОповещениеОВыборе = Новый ОписаниеОповещения("ВыполнитьПослеВыбораЗначения", ЭтаФорма, Объект.Ссылка);
ПоказатьВыборИзМеню(ОповещениеОВыборе, СписокВыбора, Элементы["eComm_ЭкспрессНакладная_Открыть"]);
ИначеЕсли СписокВыбора.Количество() = 1 Тогда
ВыполнитьПослеВыбораЗначения(СписокВыбора[0], Объект.Ссылка);
Иначе
// Создадим если ранее накладная не была создана
ВыполнитьПослеВыбораЗначения(Новый Структура("Значение", Неопределено), Объект.Ссылка);
КонецЕсли;
ИначеЕсли Элемент.Имя = "eComm_ЭкспрессНакладная_Создать" Тогда
// Это создание новой накладной
ВыполнитьПослеВыбораЗначения(Новый Структура("Значение", Неопределено), Объект.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьПослеВыбораЗначения(ЭлементСпискаВыбора, Заказ) Экспорт //++ eComm / Службы доставки
Если НЕ ЭлементСпискаВыбора = Неопределено Тогда
ЗначенияЗаполнения = Новый Структура("ДокументОснование", Заказ);
ОткрытьФорму("Документ.eComm_ЭкспрессНакладная.ФормаОбъекта", Новый Структура("Ключ, ЗначенияЗаполнения", ЭлементСпискаВыбора.Значение, ЗначенияЗаполнения));
КонецЕсли;
КонецПроцедуры
Убедимся что на шаге №3 мы привели блоки текста запроса (между комментариями ++ и –) к такому виду: (Для реквизита «Список» выполняем команду «Настройка списка»)
ЕСТЬ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.ДокОснование}
//--
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикВыполненияЗаказов КАК ГрафикВыполнения
ПО ДокументЗаказПокупателя.Ссылка = ГрафикВыполнения.Заказ