Документооборот

1. sh1718 04.12.23 13:11 Сейчас в теме
Здравствуйте,
Такой вопрос, написан код на удаление одинаковых пользователей, соответственно есть проверка на то, сколько пользователей в БП, но сложилась такая ситуация, что оказывается может быть очень редко, но может, что согласованты в бп одинаковые и соответственно, когда в коде прилетает 2 бп, там уже 0 исполнителей, так как в коде он удалил одинаковых и далее такой пустой БП не запускается, как синтаксически обойти ситуацию условием, что если 0 исполнителей, то нужно сохранить исполнителей, не удалять или оставить 1, даже не знаю, как лучше

Если БизнесПроцесс.Исполнители.Количество() > 1 Тогда 
				 ///если исполнителей по бп 0, тол сохранить исполнителей
				МассивУникальныхЮзеров = Новый Массив;
				МассивСтрокКУдалению = Новый Массив;
				
				Для каждого Стр из БизнесПроцесс.Исполнители цикл
					
					Если ТипЗнч(Стр.Исполнитель) = Тип("СправочникСсылка.ПолныеРоли") Тогда
						ИсполнительПользователь = Справочники.Пользователи.ПустаяСсылка(); 
						УЮ_ПользователяПоРоли(Стр.Исполнитель, ИсполнительПользователь);
						ПолученныйЮзер = ИсполнительПользователь;
					Иначе
						ПолученныйЮзер = Стр.Исполнитель;
					КонецЕсли;   
					
					Если МассивУникальныхЮзеров.Найти(ПолученныйЮзер) = Неопределено Тогда
						
						МассивУникальныхЮзеров.Добавить(ПолученныйЮзер)
						
					Иначе
						
						МассивСтрокКУдалению.Добавить(Стр);
						
					КонецЕсли;
								
				КонецЦикла;
				
				для каждого элтуд из МассивСтрокКУдалению Цикл
					
					БизнесПроцесс.Исполнители.Удалить(элтуд)
					
				КонецЦикла;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. sh1718 05.12.23 14:05 Сейчас в теме
Решено, выгрузкой в таблицу и по условию, если в согласовании после удаления исполнителей остается 0, то загружаю ранее выгруженную таблицу исполнителей бизнес процесса
3. sh1718 05.12.23 16:10 Сейчас в теме
Но появился следующий вопрос, так как клиента не устраивает такой формат, как завершить или даже не создавать второе согласование, где были удалены повторяющиеся исполнители, а то с 0 комплексный процесс вообще не стартует

Ситуация получается такая, как пример в 1 согласовании Админ Василий, во 2 согласовании Админ Василий, удаляются 2 из последнего согласования и все комплексный комом встает, вообще не создается, вот нужно обойти ситуацию и вообще не создавать
4. comptr 35 06.12.23 11:07 Сейчас в теме
Может быть стоит исправить причину появления дублей среди согласующих?
Сложно вообще что-то конкретное советовать по такому невнятному описанию...
5. sh1718 06.12.23 11:15 Сейчас в теме
(4) А причина появления проста, есть роли исполнителей и допустим на 2 разные роли один и тот же человек.
Ну допустим Инженер и Экономист, а в них пользователь Иванов, от сюда и задача удалить второй раз согласование Ивановым, так как он уже был
6. sh1718 06.12.23 11:20 Сейчас в теме
(4) Сейчас уже сделано так, что удаляются повторяющиеся сначала в согласовании, а потом в ветке согласований(по выполненным задачам)
А теперь вопрос возник такой, а вдруг 2 согласования с одинаковыми исполнителями, то второе согласование останется без исполнителей вообще и по идее в типовом коде, уходит в зацикливание, так как не может быть 0 исполнителей
Но вроде я справился, у меня не запустилось второе согласование, если там 0 исполнителей
7. comptr 35 06.12.23 11:28 Сейчас в теме
А, с ролями в процессах у ДО есть проблемы, да.
Причём почти всё уже есть, чтобы согласование по ролям нормально работало, но пришлось чуть-чуть доработать.
Типовая автоподстановка "Все согласовавшие документ" работает криво, поэтому мы сделали свою "Все согласовавшие документ (с ролями)", в которой правильно определяем исполнителей, чтобы не было дублей. И вроде ещё что-то делали, но так с ходу вспомнить не могу, только что проблема была в случае нового цикла согласования, визы неправильно пересоздавались.
8. sh1718 06.12.23 12:01 Сейчас в теме
(7) Ну вот из последних, только оттестировал, не создавать БП с 0 исполнителей, вроде работает
Удаления мои тоже вроде отрабатывают, но чем сложней БП с множеством исполнителей и условиями, тем хуже как будто отрабатывает мой код
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот