Вопрос

Ошибка при сохранении бизнес-процесса, работающего с правами

Есть задача: при изменении ответственного в продаже предоставить доступ к этой продаже ответственному и роли, в которую он входит

 

Таким образом построен бизнес-процесс: реагируем на событие изменения ответственного, читаем данные ответственного, читаем данные пользователя из "объекта администрирования", читаем роль из "вхождения пользователя в роли" где пользователь=читать данные пользователя.Id, а роль равна одной из необходимых нам. Далее, даём права ответственному и через исключающее "ИЛИ" проверяем: если роль из "вхождения пользователя в роли" == Guid.Empty, то выходим из процесса, иначе даём права роли.

После обновления на 7.16.2 в этой проверке "если роль из "вхождения пользователя в роли" == Guid.Empty" начала возникать ошибка: Uncaught TypeError: Cannot read property '1' of null 

Нравится

7 комментариев

Константин, было бы понятнее, если бы привели пример кода или настройки, которые работали под старой версией и перестали под 7.16.2. А заодно указали, с какой версии было обновление. Движок процессов неоднократно менялся.

 

Далее, не очень понятно, зачем сравнивать значение с Guid.Empty, это же {00000000-0000-0000-0000-000000000000}.  Почему бы не считать количество записей в выборке из объекта «Вхождение пользователя в роли» с нужным условием? А потом сравнивать, ноль или больше.

Попадал на такую же ошибку вчера, версия 7.16.2. Ошибка была, когда правил коробочный процесс управление лидами. Ошибка возникает (не всегда), когда в условиях (стрелочка) сравниваешь значения справочников, например из читать данные сравнить с другим гуидом (значением справочника)

Павел, может, тоже зависит от количества считываемых в элементе записей (0 или больше)?

Зверев Александр, вот на такого рода условия ругаются, вместо Guid.Empty может быть что-то другое. Ругается именно на первую часть условия. Если его заменить на допустим сравнение с переменной процесса, то ошибки нет.

Считайте количество записей.

Зверев Александр, при чем считать кол-во записей? А если в условии идет сравнение с каким-то справочным значением, а не с Guid.Empty? в этом случае тоже процесс не сохранится. Посмотрю, изменилось ли что-то в версии 7.16.3, если нет, то опишу проблему в саппрорт.

Для получения верного результата нужно не сравнивать Null с Guid.Empty, а подсчитать, есть ли в базе >0 записей, соответствующих условию.

Показать все комментарии