Публикация

Решение ошибки при выполнении процесса с циклом, вызывающим подпроцесс

Добрый день, коммьюнити,

Столкнулся с интересной ошибкой при выполнении процессов с циклом. Если в процессе есть цикл, вызывающий подпроцесс, то он при определенных обстоятельствах может на повторном выполнении подпроцесса упасть с ошибкой "Object is not set to a reference of an object". Причину такой ошибки непросто определить на первый взгляд, поэтому я и пишу этот пост, чтобы другие не наступали на те же грабли.

Особенность этой ошибки - первый цикл проходит без ошибок, но при повторной попытке вызова подпроцесса возникает указанная выше ошибка.

Причины ошибки:

В моем подпроцессе существовал параметр с кодом "status". Мне сейчас трудно сказать в чем конкретно дело без детального разбора, но когда подпроцесс вызывался повторно что-то в основном процессе видимо тоже имело имя "status" и именно из-за этого возникала ошибка. Параметров с кодом "status" в основном процессе не было, возможно в одном из элементов процесса один из параметров имел код "status" (веб-сервис? сам элемент подпроцесса? - мне не удалось таковые обнаружить). Тем не менее, после того, как я поменял в подпроцессе параметр "status" на "companystatus", всё заработало.

Решение: поищите в подпроцессе параметр "status", измените его название на другое; возможно, дело в совпадающих кодах параметров в основном и вложенном процессе, измените один из них.



p.s. не ругайтесь сильно на отсутствие досконального расследования, даже сама причина обнаружилась с трудом и почти случайно :) надеюсь в будущем выкроить час-полтора на выявления источника ошибки

Нравится

Поделиться

2 комментария

обновление по проблеме: вложенные бизнес-процессы не вызываются как отдельный процесс (job), а являются (не поверите) вложенными процессами, и судя по всему переменные для родительского и вложенного процесса вызываются из одного куска кода. если какие-то переменные совпадают - у вас начинаются проблемы. параметр status есть, например, в элементах "веб-сервис", также там есть параметр success. если у вас есть такие же параметры во вложенном процессе, даже просто внутри скрипта, то их наименования нужно изменить, иначе ничего не будет работать ¯\_(ツ)_/¯

Добавляйте префикс к своим переменным в БП, вероятность пересечения уменьшится.

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