Имя: Пароль:
1C
1С v8
Удалить:Недопустимое значение параметра (параметр номер '1')
0 Игорь_МММ
 
19.12.20
15:15
Вроде все ясно как божий день, но ...

КоллекцияСтрок = СтрокаМатериал.ПолучитьЭлементы();
Для Каждого стрКоллекции Из КоллекцияСтрок Цикл
     МассивУдаляемых.Добавить(стрКоллекции);
КонецЦикла;
Для Каждого стрКоллекции Из МассивУдаляемых Цикл
      КоллекцияСтрок.Удалить(стрКоллекции);
КонецЦикла;
    
на  КоллекцияСтрок.Удалить(стрКоллекции) возникает ошибка "Ошибка при вызове метода контекста (Удалить)    ....Недопустимое значение параметра (параметр номер '1')"
вставал на этой строке, проверял входит ли она в коллекцию, сверял типы ... пробовал удалять по идентификатору .. все едино.
что за хрень, я уже теряюсь, причем раньше работало - после чего перестало уже не могу отследить. Да и как может что-то влиять когда код написан последовательно - выборка строк и следом удаление.
Есть ли какие мысли?
1 Злопчинский
 
19.12.20
15:33
я вообще ноль в 8-ке, но мне кажется что код бредовый написан.
могу ошибаться.
2 Злопчинский
 
19.12.20
15:39
ваще ничего не понимая.. вот так нельзя?

КоллекцияСтрок = СтрокаМатериал.ПолучитьЭлементы();
Для Каждого стрКоллекции Из КоллекцияСтрок Цикл
   КоллекцияСтрок.Удалить(стрКоллекции);
КонецЦикла;
3 Игорь_МММ
 
19.12.20
16:02
(2) нет, конечно, нельзя. Как сработает Для Каждого , если вы в процессе строки удаляете
4 Злопчинский
 
19.12.20
16:04
(3) с конца удалять, не?
5 Игорь_МММ
 
19.12.20
16:06
+(0) в этом примере конечно просто выйти из положения написав  СтрокаМатериал.ПолучитьЭлементы().Очистить(). Но смысл не в этом .. Текущие строки записываются и удаляются после манипуляций с деревом.
Вообщем не понятна возникающая ошибка, прошу помощи, плиз
6 Игорь_МММ
 
19.12.20
16:07
(4) не
7 runoff_runoff
 
19.12.20
16:12
кстати.. падает сразу на втором круге или дальше?
8 Cthulhu
 
19.12.20
16:16
9 Игорь_МММ
 
19.12.20
16:16
(7) сразу, на первом же круге
10 runoff_runoff
 
19.12.20
16:22
попробуйте заменить на КоллекцияСтрок.Удалить(0).. сработает?..
чисто из спортивного интереса
11 Игорь_МММ
 
19.12.20
16:37
Для Каждого стрКоллекции Из КоллекцияСтрок Цикл
    МассивУдаляемых.Добавить(стрКоллекции.ПолучитьИдентификатор());
КонецЦикла;
Для Каждого ИдентификаторСтроки Из МассивУдаляемых Цикл
    ТекущаяСтрока       = ДеталировкаФорма.НайтиПоИдентификатору(ИдентификаторСтроки);
    СтрокаРодитель      = ТекущаяСтрока.ПолучитьРодителя();
                            
    Если СтрокаРодитель = Неопределено Тогда
        ДеталировкаФорма.ПолучитьЭлементы().Удалить(ТекущаяСтрока);
    Иначе
        СтрокаРодитель.ПолучитьЭлементы().Удалить(ТекущаяСтрока);
    КонецЕсли;
КонецЦикла;

вот так прокатывает, но в чем разница с этим?:

КоллекцияСтрок = СтрокаМатериал.ПолучитьЭлементы();
Для Каждого стрКоллекции Из КоллекцияСтрок Цикл
     МассивУдаляемых.Добавить(стрКоллекции);
КонецЦикла;
Для Каждого стрКоллекции Из МассивУдаляемых Цикл
      КоллекцияСтрок.Удалить(стрКоллекции);
КонецЦикла;
12 Cthulhu
 
19.12.20
16:40
а "спасибо" где?
13 acht
 
19.12.20
16:40
(11) Возможно ты пытаешся удалить строку, которая уже была удалена ранее как часть поддерева
14 Игорь_МММ
 
19.12.20
16:47
(12) спасибо, спасибо ))
(13) в группировке только одна строка - при ее попытке сразу же ошибка
я вычислял КоллекцияСтрок[0].ПолучитьИдентификатор() = стрКоллекции.ПолучитьИдентификатор() - результат Истина, так что остался в непонятках. Cthulhu, поясните в чем прикол?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший