Имя: Пароль:
1C
 
Удаление строки ТЧ документа
0 comp2006
 
20.11.08
09:17
Как обойти эту ошибку?

МассивСтрокДляУдаление= Новый Массив;
Для Каждого СтрокаТЧ Из ДокументСсылка.ТабЧасть Цикл
 Если СтрокаТЧ.Контрагент.Родитель =СсылкаНаНужнуюГруппу Тогда
   МассивСтрокДляУдаление.Добавить(СтрокаТЧ);
 КонецЕсли;            
КонецЦикла;
   
ДокументСсылкаОбъект=ДокументСсылка.ПолучитьОбъект();
Для Каждого ОчереднаяСтрока Из МассивСтрокДляУдаление Цикл
 ДокументСсылкаОбъект.ТабЧасть.Удалить(ОчереднаяСтрока);  //Здесь ошибка
КонецЦикла;

В справке по методу Удалить()
Примечание:
Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
1 DayDreamer
 
20.11.08
09:21
если табличная часть получена из свойства объекта
Для Каждого СтрокаТЧ Из ДокументСсылка.ТабЧасть Цикл
2 comp2006
 
20.11.08
09:23
Пробовал и так:
МассивСтрокДляУдаление= Новый Массив;
ДокументСсылкаОбъект=ДокументСсылка.ПолучитьОбъект();
Для Каждого СтрокаТЧ Из ДокументСсылкаОбъект.ТабЧасть Цикл
   Если СтрокаТЧ.Контрагент.Родитель =СсылкаНаНужнуюГруппу Тогда
       МассивСтрокДляУдаление.Добавить(СтрокаТЧ);
   КонецЕсли;            
КонецЦикла;
   
Для Каждого ОчереднаяСтрока Из МассивСтрокДляУдаление Цикл
   ДокументСсылкаОбъект.ТабЧасть.Удалить(ОчереднаяСтрока);  //Здесь ошибка
КонецЦикла;
3 Defender aka LINN
 
20.11.08
09:32
(2) Звиздежь
4 akiDemon666
 
20.11.08
09:33
Ошибка какая ? Строки та сдвигаются...
5 Рэйв
 
20.11.08
09:35
Об=Ссылка.ПолучитьОбъект();
МассивСтрокДляУдаление= Новый Массив;
Для Каждого СтрокаТЧ Из Об.ТабЧасть Цикл
 Если СтрокаТЧ.Контрагент.Родитель =СсылкаНаНужнуюГруппу Тогда
   МассивСтрокДляУдаление.Добавить(СтрокаТЧ);
 КонецЕсли;            
КонецЦикла;
...
дальше по тексту..
6 comp2006
 
20.11.08
09:38
(4) Это же работает (ТабДок - это ТЗ)

СтруктураОтбора = Новый Структура("Количество", 0);
ПодходящиеСтроки = ТабДок.НайтиСтроки(СтруктураОтбора);
Для Каждого ОчереднаяСтрока Из ПодходящиеСтроки Цикл
   ТабДок.Удалить(ОчереднаяСтрока);
КонецЦикла;
7 comp2006
 
20.11.08
09:39
(5) У меня в (2) то же самое
8 zbv
 
20.11.08
09:40
(6) ошибку можешь озвучить?
9 comp2006
 
20.11.08
09:45
{Форма.Форма(44)}: Ошибка при вызове метода контекста (Удалить): Недопустимое значение параметра (параметр номер '1') (Колонка не принадлежит коллекции)
       ДокументСсылкаОбъект.ТабЧасть.Удалить(ОчереднаяСтрока);
по причине:
Недопустимое значение параметра (параметр номер '1') (Колонка не принадлежит коллекции)
10 Cheater
 
20.11.08
09:48
(9) "(Колонка не принадлежит коллекции)"?
11 ZanderZ
 
20.11.08
09:49
ДокументСсылкаОбъект.ПолучитьОбъект().ТабЧасть.Удалить(ОчереднаяСтрока)
12 Serg_1960
 
20.11.08
09:53
Простые примеры разработки http://t-prog.narod.ru/page1.html

*** Как в табличной части документа удалить строки с нулевым значением реквизита "Количество"?

ОбъектДок = СсылкаДок.ПолучитьОбъект();
СтруктураДляПоиска = Новый Структура("Количество", 0);

ТабличнаяЧастьДок = ОбъектДок.Товары;
МассивПустыхСтрок = ТабличнаяЧастьДок.НайтиСтроки(СтруктураДляПоиска);

Для каждого Строка Из МассивПустыхСтрок Цикл
   ТабличнаяЧастьДок.Удалить(Строка);
КонецЦикла;

ОбъектДок.Записать();

СтруктураДляПоиска = Новый Структура("Количество", 0);

МассивПустыхСтрок = Товары.НайтиСтроки(СтруктураДляПоиска);

Для каждого Строка Из МассивПустыхСтрок Цикл
   Товары.Удалить(Строка);
КонецЦикла;


*** Как удалить строки (колонки) таблицы значений?

ТаблицаЗначений.Удалить(УдаляемаяСтрока);

ТаблицаЗначений.Удалить(0);

ТаблицаЗначений.Колонки.Удалить(УдаляемаяКолонка);

ТаблицаЗначений.Колонки.Удалить(0);

СтаршийИндексКолонок = ТаблицаЗначений.Колонки.Количество() - 1;
Индекс = ТаблицаЗначений.Количество() - 1;
Пока Индекс > = 0 Цикл
   Для Сч = 0 По СтаршийИндексКолонок Цикл
       Если ТипЗнч(ТаблицаЗначений[Индекс][Сч]) = Тип("Число") Тогда
           ТаблицаЗначений.Удалить(Индекс);
           Прервать;
       КонецЕсли;
   КонецЦикла;
   
   Индекс = Индекс - 1;

КонецЦикла;
13 comp2006
 
20.11.08
10:23
Всем спасибо! Придётся:
i=ДокументСсылкаОбъект.ТабЧасть.Количество()
Пока i>0 Цикл ......

Похоже мой массив
МассивСтрокДляУдаление.Добавить(СтрокаТЧ);
и
массив, который возвращает метод
НайтиСтроки(СтруктураДляПоиска);

отрабатывается по разному, хотя в отладчике идентичны.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший