@Fox said in [[CYCLE_INDEX]] в двух циклах FOR вложенных друг в друга:
Проще создайте перед циклом две переменных с значением 0, и внутри каждого цикла первым действием увеличивайте отдельную переменную. В такой конструкции не будет неожиданностей с переопределением.
Тут есть небольшая проблема.
Если в кастомном модуле в функции есть цикл, то код из кастомного модуля затрет переменную CYCLE_INDEX в коде пользовательского скрипта своим значением.
С другими подобными переменными такая же проблема.
Вероятно, надо в коде функции кастомного скрипта перед объявлением цикла проверять есть ли такая переменная(она может быть объявлена в коде пользовательского скрипта), если есть, то сохранять ее и восстанавливать значение до возврата из функции.
Причем нужно восстанавливать значение при любом поведении, в том числе если функция из модуля упадет, чтобы пользователь не увидел свои изменённые переменные и долго не думал "что за фигня тут у меня".
Это если пользователь решит обернуть вызов функции из модуля в ошибку.
Выглядит жутким хаком.
Если кому то надо, вот список глобальных переменных, не всех их надо сохранять и восстанавливать.
VAR_CYCLE_INDEX
VAR_FOREACH_DATA
VAR_FOR_EACH_CSS
VAR_FOR_EACH_MATCH
VAR_FOR_EACH_XPATH
VAR_WAS_ERROR
VAR_LAST_ERROR
VAR_ERROR_ID
VAR_CYCLE_INDEX
VAR_FOREACH_DATA
VAR_FOR_EACH_CSS
VAR_FOR_EACH_MATCH
VAR_FOR_EACH_XPATH
VAR_WAS_ERROR
VAR_LAST_ERROR
VAR_ERROR_ID
Общую идею, как это можно делать, можно почитать тут:
https://community.bablosoft.com/topic/25851/проблема-при-вызове-функции/30