Имя: Пароль:
1C
1С v8
Как такое реализовать через бизнес-процесс?
0 mikecool
 
03.04.13
09:48
Имеем заказ покупателя, есть схема маршрута его исполнения. Но заказ может отгружаться частями, соотвественно часть маршрута может повторяться последовательно-параллельно. Как такое реализовать через механизм БП?
Точку разделения как то прикрутить? Но она должна сразу указывать на все возможные варианты.
Последовательные отгрузки (типа часть отгрузили, потом еще часть) реализуются просто, а вот с параллельной у меня затык. Кто нить реализовал такое?
Пока думается част ьпроцесса, связанную с отгрузкой, выделить в подпроцесс и генерить их нужное количество по мере необходимости, но может есть способ проще?
1 drcrasher
 
03.04.13
09:49
(0) подпроцесс с условием на полную отгрузку
2 sda553
 
03.04.13
09:55
Ты все правильно придумал, подпроцессы отгрузки, которые гененрировать по мере необходимости.
3 mikecool
 
03.04.13
09:55
(1) но даже подпроцесс не даст варианта параллельности
4 mikecool
 
03.04.13
09:56
(2) и каждый из подпроцессов привязывать к точке основного процесса?
5 drcrasher
 
03.04.13
09:56
(3) а зачем тебе параллельность?
пока всё не отгрузили, основной БП стоит и ждёт.
или что-то я упускаю?
6 mikecool
 
03.04.13
09:57
(5) часть отгрузки могут отправить на склад на собрать-спаллетировать, при этом может параллельно пойти еще одна часть...
7 mikecool
 
03.04.13
09:58
а вот самый интересный момент будет - если две параллельные отгрузки придется собрать в одну машину )))
8 Cyberhawk
 
03.04.13
10:00
У нас сборка - отдельный БП. А маршрутизация происходить до начала сборки
9 Cyberhawk
 
03.04.13
10:00
*происходит
10 Cyberhawk
 
03.04.13
10:00
После начала маршрутизации заказ корректировать в плюс уже нельзя
11 mikecool
 
03.04.13
10:02
(10) то, что заказ не корректируется, самое сложное, поскольку это в умах надо править. как ьы у нас тоже не корректируется, но "вот тут классный дядя Вася, которому я обязан" и понеслась ))
12 Cyberhawk
 
03.04.13
10:05
(11) у нас если дядя Вася нарисовался до начала процесса маршрутизации, то проблем нет - создаем еще один заказ
13 mikecool
 
03.04.13
10:08
(12) ясно
таки вопрос(пока в голове не укладывается) - если каждую частичную отгрузку оформить подпроцессом - как его привязывать и к каким точкам маршрута БП его можно привязать, если он не был описан явно?
14 Cyberhawk
 
03.04.13
10:10
(13) а что включает в себя частичная отгрузка? Сборка части изначального заказа + отгрузка (РТУ)?
А увеличение заказа в плюс сюда не входит?
15 sda553
 
03.04.13
10:11
(4) я бы не привязывал, хотя можно и привязать:
я бы сделал как то так:
Оснлвной процесс
step Обработка генерации параллельных отгрузок
step Задача исполнение отгрузок

Каждый из подпроцессов в свою оцередь в конце имеет

step Условие все параллельные процессы завершены
Нет Завершение текущего процесса
Да Завершить "Задача исполнение отгрузок" главного процесса
16 mikecool
 
03.04.13
10:15
(14) нет, изменение заказа пока не буду предусматривать, поскольку могут принять административные меры в этом направлении.
Под частичной отгрузкой понимаю отгрузку всего заказа итерациями(если такое допустимо по соглашению) по мере наполнения запасов
(15) я не могу знать, сколько отгрузок у меня может быть. Может одна(в идеале), а может "пля, люди!!! дайте мне пока одну эту позицию, а остальное отгружайте, как будет приходить". :)
17 Cyberhawk
 
03.04.13
10:20
(16) а что мешает после каждой отгрузки возвращать бизнес-процесс к началу исполнения, попутно запоминая уже то что отгрузили?
Например, заказ 10 позиций, в первый раз отгрузили 2, запомнили это. После возвращения БП к началу мы будем знать, что надо отгрузить по заказу 10-2=8 позиций.
18 sda553
 
03.04.13
10:20
(16) НоваяНежданнаяОтгрузка = БизнесПрлцессы.бизнесподпроцессПараллельный.Создать();
НоваяНежданнаяОтгрузка.РодительскийПроцесс= НашаОтгрузка;
НоваяНежданнаяОтгрузка.РодительскаяЗадача = ЗадачаИсполненияОтгрузок;

Как то так
19 mikecool
 
03.04.13
10:23
(18) ога, спасибо, как то так и предполагал, но как собака - не мог сказать )))
(17) в таком случае - пока не отгрузили первую часть, не могут параллельно отгружать вторую часть... а вдруг стрельнет и придется так делать
20 mikecool
 
03.04.13
10:37
гм.. не нашел у БП-объекта свойства или метода установки родительского процесса, похоже связь только через ведущую задачу?
21 mikecool
 
03.04.13
10:53
провел эксперимент - при авто-создании вложенного процесса по карте маршрута создал новый БП, который пробовал привязывать с пом. ведущей задачи - он не отразился ни на схеме, ни в структуре подчиненности ((
22 sda553
 
03.04.13
11:36
(20) А зачем? Реквизиь с таким именм сделай
(21) Сам отрази
23 mikecool
 
03.04.13
11:48
(22) "Сам отрази" - лишние телодвижения, которые наврядли кто оценит )
24 Лефмихалыч
 
03.04.13
11:55
(3) не понял, как это не даст? Что помешает вложенным процесса мыполняться параллельно?
25 vde69
 
03.04.13
11:57
цикличный БП, на каждом цикле создаются задачи
1. Ожидание отгрузки (если еще не все отгрузили)
2. Отгрузка (сама отгрузка)
26 mikecool
 
03.04.13
12:14
(24) да, вложенные подпроцессы могут исполняться параллельно, но - этого нельзя отразить на одной схеме "исходного" процесса, либо дорисовывать их вручную на схему...
(25) цикл - это как бы и придумано, но возникла мысль, что возможно будут ситуации параллельных отгрузок, а в данном случае не получится запустить вторую отгрузку, не выполнив полностью первую
27 sda553
 
03.04.13
12:26
(26) Я уже отошел от идеи вложенных процессов еще в (15)
Просто независимые БП.
Но в одном БП, который мы называем подчиненным есть реквизит ссылки на родительский БП и на родительскую задачу.


Последний шаг этого процесса, указанный в (15)
Все параллельные процесс завершены - делаем запрос выбрать количество(*) из БизнесПроцесс.ПодчиненныйБП где не(ссылка=&Текущий) и  (РодительскаяЗадачаРевизит =&текЗадачаРодительская) и не (Завершен)

Получаем больше 0 этот процесс уходит просто на завершение
Получаем 0 процесс поворачивает на обработку завершения родительской задачи.

Обработка завершения родительской задачи, берет Ссылку на родительскую задачу и завершает ее.

Все, родительский БП (который на самом деле нзависимый БП, просто мы его так назыыаем) пошагал дальше.

Все нежданные отгрузки делаются как в (18)
28 mikecool
 
03.04.13
12:41
(27) да, я тоже склоняюсь к этой схеме и уже почти приступил к реализации, осталось только согласовать
29 Лефмихалыч
 
03.04.13
14:34
(26) ну, понятен план - отразить на схеме нельзя. А было бы можно, как бы это выглядело?
Да и у вложенных БП есть своя карта, на которой видно, где он находится и ни чего не мешает какой-нить отчет сваять, в котором состояния всех БП по заказу будут.

У нас с импортным товаром похожая на (0) ситуация, только там есть один договор со спецификацией объема, он разшелушивается на заказы, заказы расшелушиваются на поставки, поставки плывут/едут к таможне, с которой каждая поставка может вывозщиться частями. В общем - полный ад и погибель. Контроль этого всего барахла как раз через тьму БП, которые один из другого запускаются (NB! это не вложенные БП, а отдельные), и пару регистров накопления. Картина параллельности и перпендикулярности различных кусков одного исходного заказа смотрится не в картах маршрутов, а в отчете по регистрам накопления - там показывается, что, сколько, где, почем и когда будет и где.
30 mikecool
 
03.04.13
16:04
(29) а вот это мне еще предстоит )))
31 mikecool
 
03.04.13
16:05
"у, понятен план - отразить на схеме нельзя. А было бы можно, как бы это выглядело? " а нехай бы система сама рисовала по горизонтали новый вложенный подпроцесс )))
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший