Дублирование при выполнении сценария с наличием цикла

0 голосов
vmozgah_ptb в категории Как сделать...
Есть поле с ID задач(Назовем компонент  "сортировка"). Нужно загрузить данные по каждой из задач. Для этого был сделан цикл.
Проблема в том, что от узла "сортировка" идут две стрелки - одна в компонент подмодель, одна в компонент  цикл и когда нажимается кнопка "выполнить все" первая задача задубливается. Что сделать чтобы этого не случалось?

Ответ: 1 шт.

0 голосов
kolesov

Вам необходимо, чтобы в вычислениях, идущих после цикла, участвовали выходные данные только с узла цикл (а не с узла подмодель, на которую настроен цикл). Так как при нажатии на кнопку «Выполнить все» выполняется и цикл и подмодель, на которую он настроен, таким образом могут появиться продублированные данные.

Если проблема сохранится, то напишите на help@loginom.ru, прикрепив скриншоты.

vmozgah_ptb
Дело в том, что внутри цикла происходит загрузка данных по каждому id, то есть после цикла никаких вычислений нет
kolesov
Подскажите, если выделить в сценарии Цикл и выполнить только его (запустить узел через кнопку Выполнить на узле или F9, или кнопка Выполнить узел на панели инструментов). В этом случае есть дублирующие записи или нет?

Если проблема сохранится, то напишите на help@loginom.ru, прикрепив скриншоты.
vmozgah_ptb
Нет, в этом случае дубли отсутствуют
kolesov

Причина в том, что сценарий запускается кнопкой "Выполнить все". При таком запуске выполняется не только цикл, настроенный на подмодель, но  и сама подмодель. Получается лишняя итерация. Отсюда дублирование.

Подскажите, удалось разобраться с проблемой? Если нет, ждем от вас обращения на почту 
help@loginom.ru. В обращении укажите следующую информацию:

- редакцию и версию Loginom;
- операционная система;
- пришлите сценарий, который вы выполняете и используемые данные (если есть возможность);
- опишите шаги воспроизведения.

vmozgah_ptb
Я это понимаю, вопрос как раз и заключался в том, как сделать, чтобы этого избежать?
vitaliy.tatarskih

Внутри подмодели с циклом:

Решение может быть таким:

  1. Логику с циклом заворачиваете в подмодель
  2. Внутри подмодели выходной порт цикла соединяете с выходным портом подмодели

в этом случае при команде "Выполнить все" выполняется подмодель, а в ней выполняется только сам узел цикла (и все узлы перед ним в цепочке связей). Это происходит потому, что только узел цикла связан с выходным портом подмодели. 

Если цикл не будет иметь выходных портов, то его можно соединить с выходным портом родительской подмодели с помощью связей порядка выполнения (см. подробнее - https://help.loginom.ru/userguide/workflow/workflow-progress-control.html и https://help.loginom.ru/userguide/workflow/ports/service-ports.html#port-poryadka-vypolneniya)

...