Есть комплексный процесс по согласованию договорных документов, выглядит так:
1. Согласование документа с согласующим №1 при условии, что условие о необходимости согласования с ним Истина (т.е. согласование может быть, а может и не быть).
2. Согласование с согласующим №2 (условия нет), т.е. этот согласующий всегда участвует в согласовании документов.
3. Согласование с согласующим №3, при условии, что согласующий №2 согласовал положительно и, если согласующий №1 участвует, то и его виза положительна (если не участвует, то для старта 3-го согласования необходима только положительная виза согласующего №2).
Проблема в том, что Согласование №3 стартует только в том случае, если есть положительное согласование с Согласующим №1, если же Согласование №1 не стартовало, то комплексный процесс заканчивается на Согласующем №2.
Подскажите, пожалуйста, а возможно настроить, чтобы достаточно было согласование договора или только пользователю с ролью юрист или только пользователю с ролью руководитель правового департамента? Т.е. любые пользователи с этими ролями могли увидеть, что требуется согласование и кто-либо один из них мог рассмотреть и нажать согласовать.
Спасибо
УДОБухгалтер = Ложь;
УДОЭкономист = Ложь;
УДОЮрист = Ложь;
УдоМаркетолог = Ложь;
//Проверка для перехода на согласование Начальник УДО
Рез = Ложь;
//1 проверим нужно ли согласовывать Маркетологом
УсловиеДляПроверки = Справочники.УсловияМаршрутизации.НайтиПоНаименованию("Добавить Маркетолога УДО");
ТребуетсяМаркетологУДО = РаботаСУсловиямиМаршрутизации.ПроверитьПрименимостьУсловияМаршрутизацииКОбъекту(Предмет.Ссылка,УсловиеДляПроверки);
//2 Проверим нужно ли согласовывать Экономистом УДО
УсловиеДляПроверки = Справочники.УсловияМаршрутизации.НайтиПоНаименованию("Добавить Экономиста УДО");
ТребуетсяЭкономистУДО = РаботаСУсловиямиМаршрутизации.ПроверитьПрименимостьУсловияМаршрутизацииКОбъекту(Предмет.Ссылка,УсловиеДляПроверки);
//3 Проверим согласования
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВизыСогласования.РольИсполнителя,
| ВизыСогласования.РезультатСогласования,
| ВизыСогласования.Исполнитель
|ИЗ
| Справочник.ВизыСогласования КАК ВизыСогласования
|ГДЕ
| ВизыСогласования.ПомещенаВИсторию = &ПомещенаВИсторию
| И ВизыСогласования.Удалена = &Удалена
| И ВизыСогласования.Документ = &Документ";
Запрос.УстановитьПараметр("Документ", Предмет.Ссылка);
Запрос.УстановитьПараметр("ПомещенаВИсторию", Ложь);
Запрос.УстановитьПараметр("Удалена", Ложь);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если Строка (ВыборкаДетальныеЗаписи.РольИсполнителя) = "Согласующий УДО Маркетолог" И ВыборкаДетальныеЗаписи.РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано Тогда
УдоМаркетолог = Истина;
КонецЕсли;
Если юк_РаботаСУсловиямиМаршрутизации.ПроверитьИсполнителяНаРоль(ВыборкаДетальныеЗаписи.Исполнитель,"000000020") И ВыборкаДетальныеЗаписи.РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано Тогда
УдоМаркетолог = Истина;
КонецЕсли;
Если Строка (ВыборкаДетальныеЗаписи.РольИсполнителя) = "Согласующий УДО Бухгалтер" И ВыборкаДетальныеЗаписи.РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано Тогда
УДОБухгалтер = Истина;
КонецЕсли;
Если юк_РаботаСУсловиямиМаршрутизации.ПроверитьИсполнителяНаРоль(ВыборкаДетальныеЗаписи.Исполнитель,"000000017") И ВыборкаДетальныеЗаписи.РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано Тогда
УДОБухгалтер = Истина;
КонецЕсли;
Если Строка (ВыборкаДетальныеЗаписи.РольИсполнителя) = "Согласующий УДО Экономист" И ВыборкаДетальныеЗаписи.РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано Тогда
УДОЭкономист = Истина;
КонецЕсли;
Если юк_РаботаСУсловиямиМаршрутизации.ПроверитьИсполнителяНаРоль(ВыборкаДетальныеЗаписи.Исполнитель,"000000018") И ВыборкаДетальныеЗаписи.РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано Тогда
УДОЭкономист = Истина;
КонецЕсли;
Если Строка (ВыборкаДетальныеЗаписи.РольИсполнителя) = "Согласующий УДО Юрист" И ВыборкаДетальныеЗаписи.РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано Тогда
УДОЮрист = Истина;
КонецЕсли;
Если юк_РаботаСУсловиямиМаршрутизации.ПроверитьИсполнителяНаРоль(ВыборкаДетальныеЗаписи.Исполнитель,"000000019") И ВыборкаДетальныеЗаписи.РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано Тогда
УДОЮрист = Истина;
КонецЕсли;
КонецЦикла;
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
Если НЕ ТребуетсяМаркетологУДО Тогда
УдоМаркетолог = Истина;
КонецЕсли;
Если НЕ ТребуетсяЭкономистУДО Тогда
УДОЭкономист = Истина;
КонецЕсли;
Если УДОБухгалтер И УДОЭкономист И УДОЮрист И УдоМаркетолог Тогда
Рез=Истина;
КонецЕсли;
Результат = Рез;
Всё просто, если вы делаете не в одном процессе согласования это, а делаете внутри комплексного процесса два процесса согласования. Ну или согласование и утверждение. В первом процессе у вас согласующий№2 и возможно №1. А второй процесс с согласующим №3 запускается по условию "Если согласовано 1", то есть если первый процесс (вне зависимости от количества согласующих внутри) был согласован.