Имя: Пароль:
1C
1С v8
Как такое провернуть в бизнес-процессе?
0 mikecool
 
18.06.14
15:12
Есть линейная цепочка задач, надо иметь возможность выполнить последнюю задачу независимо оттого, существуют ли предыдущие.
Как бы сие реализовать попроще?
создавать-выполнять промежуточные задачи как то не весело
1 ale-sarin
 
18.06.14
15:15
Можно ведь, вроде, программно создать задачу с последней (любо й) точкой маршрута. Не?
2 Segate
 
18.06.14
15:16
А зачем вам такой бизнесс процесс, в котором есть лишние шаги? Перерисуйте карту маршрута
3 mikecool
 
18.06.14
15:18
(2) типа действия суперюзера - утверждает или отклоняет в любое время
4 Hans
 
18.06.14
15:21
(0) нарисуй бизнес процесс.
5 vde69
 
модератор
18.06.14
15:21
обычный цикл в котором есть одна задача, и одно условие
6 vde69
 
модератор
18.06.14
15:21
я рисовал уже на мисте года 3 назад, но рисунок пропал :)
7 mikecool
 
18.06.14
15:23
(5) не, хочу деревце, ибо парит кучу условий собирать для проверок
8 mikecool
 
18.06.14
15:24
в принципе вижу такой вариант - если при попадании на точку создания задач не создавать ни одной, то точка считается пройденной...
9 Maxus43
 
18.06.14
15:24
(3)>>утверждает или отклоняет в любое время
Разделение от старта до финиша с одной задачей - точка "супер юзера". Другим не помешает.
10 mikecool
 
18.06.14
15:25
а в принципе - можно взводить признак у БП и проверять этот признак перед каждой точкой задачи - если взведен, то пропускать
11 mikecool
 
18.06.14
15:25
(9) тоже вариант
12 mikecool
 
18.06.14
15:26
+11 вот только задачи как таковой не должно быть у этого СЮ, он может выполнить чужую
13 mikecool
 
18.06.14
15:26
+10 наверное остановлюсь на этом варианте
14 vde69
 
модератор
18.06.14
15:27
(9) разделение ждет выполнения всех веток
15 Hans
 
18.06.14
15:27
имхо разделение и слияние.При выполнении последней задачи с каждой ветки - гасятся задачи с другой ветки.
16 Maxus43
 
18.06.14
15:28
(14) задача про "супер юзера" не имеет общего с задачей (0), тут больше кошерен вариант (8).
(12) тогда не то
(13) я за (8), у нас так
17 mikecool
 
18.06.14
15:28
(14) точно
(15) не то, надо - "перепрыгнуть"
18 vde69
 
модератор
18.06.14
15:29
цикл хорош тем, что можно создать уже пройденую задачу повторно. Пример
1. исполнитель подписал
2. руководитель отправил на переделку
3. исполнитель подписал новую задачу
19 Irbis
 
18.06.14
15:31
А "сделать наеборот"? Последнюю задачу генерировать сразу, а первые поочереди. Выполнение последней, тупо гасит все невыполненные.
20 vde69
 
модератор
18.06.14
15:32
у меня обкатана такая схема

в БП есть ТЧ в которой хранится требуемый маршрут и всякие параметры для его генерации, далее условие генерит пакет задач и ждем следующей итерации, если подписал суперюзер все текущие задачи выполняются со спец флагом и условие генерит пакет задач по изменившимся данным...
21 PR
 
18.06.14
15:33
(3) Что за фигня?
Нахрена для действия суперюзера задача?
22 vde69
 
модератор
18.06.14
15:33
Процедура ВыборДействияОбработкаВыбораВарианта(ТочкаВыбораВарианта, Результат)
перем  МассивАдресации, МассивАдресов;
    
    Результат = ТочкаВыбораВарианта.Варианты.Исполнение;
    
    Если СтатусОтказ Тогда
        // это закрытие БП отказом
        Результат = ТочкаВыбораВарианта.Варианты.Отказ;
    Иначе
        // проверим таблицу маршрута на незавершенные точки
        
        // здесь надо создать список задач типа "Подпись"
        // не забываем, что создаем группами    
        ПараметрыФильтрации = Неопределено;
        ТипДокумента = СокрЛП(ДокументСогласования.Метаданные().Имя);
        СтатусДокумента = Неопределено;
        Для Каждого СтрокаЗадач из МаршрутПодписания Цикл
            Если ПараметрыФильтрации = Неопределено Тогда
                Попытка
                    ПараметрыФильтрации = Документы[ТипДокумента].ПодготовитьДанныеДляМаршрута(ДокументСогласования);
                Исключение
                    ПараметрыФильтрации = Неопределено;
                КонецПопытки;
            КонецЕсли;
            
            Если (СтрокаЗадач.Режим = Перечисления.РежимОбновленияПодписи.Расчетный) и (не ЗначениеЗаполнено(СтрокаЗадач.Задача)) Тогда
                
                // обновлять динамические подписи можно только если заявка имеет разрешенный статус
                Если СтатусДокумента = Неопределено Тогда
                    СтатусДокумента = РегистрыСведений.СтатусыДокументов.ПолучитьСтатус(ДокументСогласования);
                КонецЕсли;
                    
                Если МассивДинамическихСтатусов.Найти(СтатусДокумента) = Неопределено Тогда
                    Продолжить;
                КонецЕсли;
                    
                // нужно проверить для этой подписи играем или нет
                Если СтрокаЗадач.Фильтр.Пустая()    Тогда
                    РезультатПроверкиФильтров = Справочники.ДинамическийФильтрМаршрута.ПроверитьФильтр(СтрокаЗадач.ДополнительныйФильтр, ПараметрыФильтрации);
                    
                ИначеЕсли СтрокаЗадач.ДополнительныйФильтр.Пустая()    Тогда
                    РезультатПроверкиФильтров = Справочники.ДинамическийФильтрМаршрута.ПроверитьФильтр(СтрокаЗадач.Фильтр, ПараметрыФильтрации);
                    
                Иначе
                    РезультатПроверкиФильтров =   Справочники.ДинамическийФильтрМаршрута.ПроверитьФильтр(СтрокаЗадач.Фильтр, ПараметрыФильтрации)
                                                И Справочники.ДинамическийФильтрМаршрута.ПроверитьФильтр(СтрокаЗадач.ДополнительныйФильтр, ПараметрыФильтрации);
                КонецЕсли;
                
                Если не РезультатПроверкиФильтров Тогда
                    Продолжить;
                КонецЕсли;
            КонецЕсли;
            
            Если не ЗначениеЗаполнено(СтрокаЗадач.Задача) Тогда
                Результат = ТочкаВыбораВарианта.Варианты.Подпись;
                Прервать;
            ИначеЕсли не СтрокаЗадач.Задача.Выполнена Тогда
                Результат = ТочкаВыбораВарианта.Варианты.Подпись;
                Прервать;
            КонецЕсли;
            
        КонецЦикла;
    КонецЕсли;
    
КонецПроцедуры
23 mikecool
 
18.06.14
15:34
(16) мне (10) больше нравится, добавится только несколько условий в дерево
(19) задача на СЮ придет последней в списке или не придет вообще, это тоже есть в условиях
(21) если ты не понимаешь смысла, то это не значит, что его нет
(20) много буков )))
24 PR
 
18.06.14
15:35
+(21) Залез в 1С директор и принудительно утвердил заявку на покупку пачки чая в офис.
Нахрена ему спрашивается задача для того, чтобы это сделать?
25 mikecool
 
18.06.14
15:36
(24) да я уже понял, что ты так можешь )
26 Hans
 
18.06.14
15:37
Имхо в (19) интересное решение.
27 mikecool
 
18.06.14
15:37
СЮ в БП может получить "последнюю" задачу (это зависит от условий), а может и не получить и весь БП пройдет мимо
а также СЮ в любой момент, как говорит уважаемый Роман, (24)
28 mikecool
 
18.06.14
15:37
(26) СЮ тогда увидит у себя на раб. столе миллиард задач, оно ему надо?
29 UIV
 
18.06.14
15:37
(24) Роман делится воспоминаниями о своих обязанностях и достижениях на посту директора?
30 mikecool
 
18.06.14
15:38
(29) та не, он просто чай в офис подтверждал )))
31 PR
 
18.06.14
15:38
(23) Дружище, я уже лет несколько назад как разработал мощную систему согласования документов на бизнес-процессах с настраиваемым маршрутом согласования плюс понастраивал клиенту штук двадцать маршрутов.
Так что я прекрасно понимаю, что для того, чтобы кто-то мог в любой момент залезть в БП и принудительно его завершить со статусом согласовано или не согасовано, никакой задачи не нужно.
32 Irbis
 
18.06.14
15:38
(27) Не, в моем предложении он её имеет всегда, но может делать сразу или дожидаться цепочки. Если сразу то вся цепочка предыдущая закрывается.
33 Hans
 
18.06.14
15:39
(27) а как СЮ узнает что идет какой то процесс с условием того что он может отменить это процесс в любой момент.
34 PR
 
18.06.14
15:39
(26) В 19 хрень полная.
Все БП всегда должны дожидаться, пока суперюзер скажет "Я не против"?
35 PR
 
18.06.14
15:40
(27) И я про то. Не нужна ему задача.
Просто СЮ в любой момент может зафиналить все задачи и завершить БП.
36 PR
 
18.06.14
15:41
(29) На посту программиста.
37 mikecool
 
18.06.14
15:41
(35) зафиналить все не надо, надо пройти все этапы согласования, далее процесс пойдет дальше
38 PR
 
18.06.14
15:42
(32) Так он же СЮ, а не обязательный участник согласования.
39 PR
 
18.06.14
15:42
(33) Откроет список согласований и увидит.
40 Irbis
 
18.06.14
15:43
(38) Я теперь думаю он какой-то промежуточный СЮ, есть более сильные альфа-самцы
41 PR
 
18.06.14
15:44
(37) Ну пусть так. В любом случае задачи не нужно и нужно программно финалить какие-то задачи.
42 PR
 
18.06.14
15:44
(40) На всякого СЮ найдется более сильный альфа-самец :))
43 mikecool
 
18.06.14
15:46
в общем - мой вариант в (10) мне же кажется наиболее оптимальным + автоматическое завершение уже созданных и не выполненных задач
44 Irbis
 
18.06.14
15:46
В качестве отсутпления, циклы в процессе согласования это круги ада. Процесс может ветвиться но не должен замыкаться, иначе решение тупо может быть не принято в гарантированный срок.
45 mikecool
 
18.06.14
15:47
(44) да, как то по желаниям реализовал цикл - народ такую бюрократию развел, что в итоге перешли к дереву
46 vde69
 
модератор
18.06.14
15:47
у меня вообще еще проще сабж реализован

у меня адресация это группаПользователей, группы в иерархии. у пользователя есть 2 параметра сеанса
1. ПрямаяАдресация - в котором массив групп куда входит юзер
2. ПолнаяАлресация - в котором массив групп куда входит юзер и всех подчиненных групп

в списке ставим фильтр "адресация в &ПрямаяАдресация" и юзер видит только свои, но когда ему нужно смотреть/делать за подчиненных - меняем в фильтре параметр и вуаля :)
47 UIV
 
18.06.14
15:49
(44) Для 90% менеджеров среднего звена циклический маршрут согласования идеален. И они намертво стоят именно на этой схеме. И еще шоб доп.согласование на произвольного пользователя. И чтоб бесконечное количество раз. А срок на согласования после каждого доп.согласования обнулять. Мечта...
48 Irbis
 
18.06.14
15:49
(45) У меня такое предыдущий руководитель проделал. За пару лет привыкли, по 11 кругов ходят по кварталу две метёлки на АЗС согласовывают, по 80 Мб фоток пересылают. Мата не осталось, когда последий раз их дурость им показывал.
49 PR
 
18.06.14
15:51
(43) Установка этого признака и есть то самое действие СЮ, да.