Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Изменение статуса в документе Заказ

Изменение статуса в документе Заказ
Я
   sergqwert
 
07.07.19 - 19:15
Документ заказ клиента прилетает в 1с с сайта. Менеджеры обрабатывают документ и отправляют в "отборку на складе".(документ отборка),и документ посылка.
После того как заказ отобран и понятно сколько товаров, какой объем, количество мест и т.д. будет, проводится документ "Посылка" В этот документ может быть включено много заказов одного клиента,
которые проходили отборку.
Далее в какой то момент посылку начинают паковать(это время называют время "Ч". Это тот момент когда до отправки осталось 30 минут. Заказы которые приходят после времени ч,
попадают в следующий маршрут, время отправки которого еще не пришло). При этом перед упаковкой генерируется документ РТУ(расходная), печатается печатные формы.
После роспечатки документов, посылку пакуют и клеят на нее наклейки с местами.
После этого посылку включают в документ "Маршрутный лист". Водитель при получении своего маршрутного листа, перепикивает сканером все места, и таким образом фиксирует факт погрузки.

Как при проведении документа посылка, или при погрузке посылки в маршруте изменять статус товара в заказе клиента? Если есть расходная(при проведении расходной), статус должен быть "готов к погрузке". Если он прошел погрузку то статус "в пути"(при проведении маршрутного листа). Документ Маршрутный лист не имеет движений.

Процедура ПередЗаписьюДокументаЗаказКлиентаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения)
    
   Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЗаказКлиента.Ссылка КАК Ссылка
                   |ИЗ
                   |    Документ.ЗаказКлиента КАК ЗаказКлиента
                   |ГДЕ
                   |    ЗаказКлиента.СтатусДляСайта = &СтатусДляСайта
                   |    ЗаказКлиента.Проведен
                   |    ЗаказКлиента.ПометкаУдаления = ЛОЖЬ";

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

  КонецЕсли;  

Конецпроцедуры
 
 
   Лефмихалыч
 
1 - 07.07.19 - 19:19
А откуда взялась светлая идея двигать эти статусы заказом? Может логичнее их двигать теми документами, которые регистрируют сам факт возникновения этих статусов?
   PuhUfa
 
2 - 07.07.19 - 19:22
(0) У тебя в МЛ, в табличной части есть "Посылка". В самой "Посылка" есть ссылки на заказы включенные в эту посылку. Ну и при проведении МЛ, перебирай Посылки и заказы в них и меняй статус. В чем проблема то?
   sergqwert
 
3 - 08.07.19 - 11:40
Процедура ПередЗаписьюДокументаЗаказКлиентаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения)

Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| МаршрутныйЛистПосылки.Ссылка,
| МаршрутныйЛистПосылки.Посылка,
| МаршрутныйЛистПосылки.Ответственный,
| ПосылкаЗаказыКлиента.ЗаказКлиента,
| ПосылкаЗаказыКлиента.ЗаказКлиента.СтатусДляСайта
|ИЗ
| Документ.МаршрутныйЛист.Посылки КАК МаршрутныйЛистПосылки
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.Посылка.ЗаказыКлиента КАК ПосылкаЗаказыКлиента
| ПО МаршрутныйЛистПосылки.Ссылка = ПосылкаЗаказыКлиента.Ссылка
|ГДЕ
| МаршрутныйЛистПосылки.Ссылка = &Ссылка
| И МаршрутныйЛистПосылки.Ссылка.Проведен = ИСТИНА
| И МаршрутныйЛистПосылки.Ссылка.ПометкаУдаления = ЛОЖЬ
| И ПосылкаЗаказыКлиента.ЗаказКлиента.СтатусДляСайта = &СтатусДляСайта"

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

КонецЕсли;

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.