OneScript
OneScript copied to clipboard
Не работает добавление элементов в циклах "для каждого" в коллекциях ДЗ\ТЗ
Собственно вываливается стандартный шарповский ексепшен InvalidOperationExecution при попытки модифицировать коллекцию(ДЗ\ТЗ) в момент ее перечисления.
Простой пример кода.
ДЗ = Новый ДеревоЗначений; ДЗ.Строки.Добавить(); ДЗ.Строки.Добавить(); й = 0; Для Каждого Колонка ИЗ ДЗ.Строки Цикл ДЗ.Строки.Добавить(); й = й + 1; Если й = 5 Тогда Прервать; КонецЕсли; КонецЦикла; Сообщить(ДЗ.Строки.Количество());
В нативном движке такая возможность имеется.
Кажется что потребность в таком поведении сомнительна...
Для начала, не совместимо с 1С.
Решение в создании кастомного итератора всех наших коллекций. Он должен уметь такое. Тем не менее, я все равно не понимаю зачем изменять коллекцию в цикле итератора. Это undefined-behavior, который нигде не описан и не гарантируется, что завтра 1С не поменяет поведение.
Плохой пример я привел, наверное Мой реальный юз.кейс был в том, чтобы обойти верхние ветви ДЗ и добавить в них пару строк, собственно легко решается циклом с итератором, тикет я создал потому что "не совместимо" с 1С, если найдется кейс где эта фича будет "must have" думаю можно будет заняться этим вопросом.