Имя: Пароль:
1C
1С v8
ДокОборот 1.4 повтороное согласование отправлять тем кто не согласовал.
0 Alexperumov
 
18.02.16
10:34
Мож кто сталкивался: Нужно при повторном согласовании не отправлять на согласование тем кто уже согласовал.
Если убрать уже согласовавших тупо из списка тогда в лист согласования и историю не попадают. Если не формировать для них задачу вовсе, тогда не могу найти где правильно добавить в историю.
1 Лефмихалыч
 
18.02.16
10:38
Единственный толковый вариант - робота нацарапать, который будет автоматически закрывать задачи на тех, кто ранее согласовал.
Но даже в этом случае придется лист согласования допиливать, чтобы он дату согласования выводил первую, а не последнюю
2 Alexperumov
 
18.02.16
10:47
Процедура СогласоватьПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    МассивСтрок = Новый Массив;
    Если ВариантСогласования = Перечисления.ВариантыМаршрутизацииЗадач.Параллельно Тогда
        Для Каждого Строка Из Исполнители Цикл
            МассивСтрок.Добавить(Строка);
        КонецЦикла;    
        
    ИначеЕсли ВариантСогласования = Перечисления.ВариантыМаршрутизацииЗадач.Последовательно Тогда
        Для Каждого Строка Из Исполнители Цикл
            Если Строка.Пройден Тогда
                Продолжить;
            КонецЕсли;    
                
            МассивСтрок.Добавить(Строка);
            Прервать;
        КонецЦикла;    
    
    ИначеЕсли ВариантСогласования = Перечисления.ВариантыМаршрутизацииЗадач.Смешанно Тогда
        Строки = Исполнители.НайтиСтроки(Новый Структура("Пройден", Ложь));
        Если Строки.Количество() > 0 Тогда
            МассивСтрок.Добавить(Строки[0]);
        КонецЕсли;    
        
        Для Инд = 1 По Строки.ВГраница() Цикл
            Если Строки[Инд].ПорядокСогласования = Перечисления.ПорядокВыполненияЗадач.ВместеСПредыдущим Тогда
                МассивСтрок.Добавить(Строки[Инд]);
            Иначе    
                Прервать;
            КонецЕсли;    
        КонецЦикла;    
    КонецЕсли;    
    
    Для Каждого Строка Из МассивСтрок Цикл
            Задача = Задачи.ЗадачаИсполнителя.СоздатьЗадачу();
            ЗаполнитьЗадачуСогласовать(Задача, Строка);
            
            ЗадачаСсылка = Задачи.ЗадачаИсполнителя.ПолучитьСсылку();
            Задача.УстановитьСсылкуНового(ЗадачаСсылка);
            
            ФормируемыеЗадачи.Добавить(Задача);
            
            Строка.ЗадачаИсполнителя = ЗадачаСсылка;
            НоваяСтрока = РезультатыСогласования.Добавить();
            НоваяСтрока.НомерИтерации = НомерИтерации;
            НоваяСтрока.ЗадачаИсполнителя = ЗадачаСсылка;
        
    КонецЦикла;
    
    ДополнительныеСвойства.Вставить("ДатаНачалаИтерации", ФормируемыеЗадачи[0].Дата);
    
    УстановитьПривилегированныйРежим(Истина);
    Записать();
    
КонецПроцедуры

Я тут отлавливал кто уже согласовал и создавал закрытую задачу, но что-то после такого задача к следующим не идет(
3 Лефмихалыч
 
18.02.16
10:51
>но что-то после такого задача к следующим не идет
это потому, что создавать сразу закрытую задачу - плохая идея