|
удалить строку дерева значений |
☑ |
0
dvrk
28.07.22
✎
08:50
|
Для Каждого строка из ДЗ.Строки Цикл
Если ЗначениеЗаполнено(строка.Колонка1) Тогда
строка.Строки.Удалить(строка);
КонецЕсли;
КонецЦикла;
=Ошибка при вызове метода контекста (Удалить)
строка.Строки.Удалить(строка);
по причине:
Недопустимое значение параметра (параметр номер '1') (Строка не принадлежит коллекции)
подскажите
|
|
1
mikecool
28.07.22
✎
08:52
|
100500 жертва прямого прохода с удалением
|
|
2
mikecool
28.07.22
✎
08:52
|
иди с конца или собирай коллекцию строк на удаление и удаляй вторым шагом
|
|
3
dvrk
28.07.22
✎
09:09
|
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("стр");
ТЗ.Колонки.Добавить("стрДерева");
Для Каждого стрДерева из ДЗ.Строки Цикл
Для Каждого Стр из стрДерева.Строки Цикл
Если стрДерева.Колонка1 <> "" Тогда
НовСтр = ТЗ.Добавить();
НовСтр.стр = стр;
НовСтр.СтрДерева = стрДерева;
КонецЕсли;
КонецЦикла;
КонецЦикла;
для каждого стр из ТЗ цикл
стр.стрДерева.строки.удалить(стр.стр);
КонецЦикла;
почему это удаляет не все строки? а у некоторых подченнные удаляет, а родителей оставляет
|
|
4
mikecool
28.07.22
✎
09:21
|
потому что надо рекурсию
|
|
5
6awkup_true
28.07.22
✎
09:23
|
(3) Потому что в цикле обхода тз ты удаляешь только подчиненные строки. родители у тебя хранятся в поле стрДерева, которые ты не трогаешь
|
|
6
dvrk
28.07.22
✎
09:32
|
спасибо
|
|
7
dvrk
28.07.22
✎
09:42
|
(5) а какой вообще мне смысл обходить подчиненные строки, если заполненная колонка у подчиненного = заполненная у родителя, а удаленный родитель = удаленная подчиненная
|
|