![]() |
|
Изменение статуса в документе Заказ | ☑ | ||
---|---|---|---|---|
0
sergqwert
07.07.19
✎
19:15
|
Документ заказ клиента прилетает в 1с с сайта. Менеджеры обрабатывают документ и отправляют в "отборку на складе".(документ отборка),и документ посылка.
После того как заказ отобран и понятно сколько товаров, какой объем, количество мест и т.д. будет, проводится документ "Посылка" В этот документ может быть включено много заказов одного клиента, которые проходили отборку. Далее в какой то момент посылку начинают паковать(это время называют время "Ч". Это тот момент когда до отправки осталось 30 минут. Заказы которые приходят после времени ч, попадают в следующий маршрут, время отправки которого еще не пришло). При этом перед упаковкой генерируется документ РТУ(расходная), печатается печатные формы. После роспечатки документов, посылку пакуют и клеят на нее наклейки с местами. После этого посылку включают в документ "Маршрутный лист". Водитель при получении своего маршрутного листа, перепикивает сканером все места, и таким образом фиксирует факт погрузки. Как при проведении документа посылка, или при погрузке посылки в маршруте изменять статус товара в заказе клиента? Если есть расходная(при проведении расходной), статус должен быть "готов к погрузке". Если он прошел погрузку то статус "в пути"(при проведении маршрутного листа). Документ Маршрутный лист не имеет движений. Процедура ПередЗаписьюДокументаЗаказКлиентаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказКлиента.Ссылка КАК Ссылка |ИЗ | Документ.ЗаказКлиента КАК ЗаказКлиента |ГДЕ | ЗаказКлиента.СтатусДляСайта = &СтатусДляСайта | ЗаказКлиента.Проведен | ЗаказКлиента.ПометкаУдаления = ЛОЖЬ"; Запрос.УстановитьПараметр("СтатусДляСайта", Справочники.СтатусыЗаказов.НайтиПоНаименованию("Shipped")); тз=запрос.выполнить().выгрузить(); Для Каждого ссылка из ТЗ Цикл ДокЗаказ = тз.Ссылка.ПолучитьОбъект(); ДокЗаказ.Статус = тз.Статус; ДокЗаказ.Записать(РежимЗаписидокумента.Запись); КонецЕсли; Конецпроцедуры |
|||
1
Лефмихалыч
07.07.19
✎
19:19
|
А откуда взялась светлая идея двигать эти статусы заказом? Может логичнее их двигать теми документами, которые регистрируют сам факт возникновения этих статусов?
|
|||
2
PuhUfa
07.07.19
✎
19:22
|
(0) У тебя в МЛ, в табличной части есть "Посылка". В самой "Посылка" есть ссылки на заказы включенные в эту посылку. Ну и при проведении МЛ, перебирай Посылки и заказы в них и меняй статус. В чем проблема то?
|
|||
3
sergqwert
08.07.19
✎
11:40
|
Процедура ПередЗаписьюДокументаЗаказКлиентаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения)
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | МаршрутныйЛистПосылки.Ссылка, | МаршрутныйЛистПосылки.Посылка, | МаршрутныйЛистПосылки.Ответственный, | ПосылкаЗаказыКлиента.ЗаказКлиента, | ПосылкаЗаказыКлиента.ЗаказКлиента.СтатусДляСайта |ИЗ | Документ.МаршрутныйЛист.Посылки КАК МаршрутныйЛистПосылки | ЛЕВОЕ СОЕДИНЕНИЕ Документ.Посылка.ЗаказыКлиента КАК ПосылкаЗаказыКлиента | ПО МаршрутныйЛистПосылки.Ссылка = ПосылкаЗаказыКлиента.Ссылка |ГДЕ | МаршрутныйЛистПосылки.Ссылка = &Ссылка | И МаршрутныйЛистПосылки.Ссылка.Проведен = ИСТИНА | И МаршрутныйЛистПосылки.Ссылка.ПометкаУдаления = ЛОЖЬ | И ПосылкаЗаказыКлиента.ЗаказКлиента.СтатусДляСайта = &СтатусДляСайта" Запрос.УстановитьПараметр("СтатусДляСайта", Справочники.СтатусыЗаказов.НайтиПоНаименованию("Shipped")); Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка); тз=запрос.выполнить().выгрузить(); Для Каждого ссылка из ТЗ Цикл ДокОбъект = тз.Ссылка.ПолучитьОбъект(); ДокОбъект.Статус = тз.Статус; ДокОбъект.Записать(РежимЗаписидокумента.Запись); КонецЕсли; Конецпроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |