Удалить все строки табличного поля документа.
1 |
ОтражениеВУчете.Очистить(); // ОтражениеВУчете - название табличного поля |
Как в табличной части документа удалить строки только с нулевым значением реквизита "Количество"?
1 2 3 4 5 6 7 8 9 10 |
//Получим документ и укажем параметры поиска ОбъектДок = СсылкаДок.ПолучитьОбъект(); СтруктураДляПоиска = Новый Структура("Количество", 0); ТабличнаяЧастьДок = ОбъектДок.Товары; //Получаем список строк соответсвтвующих отбору, и перебором удаляем. МассивПустыхСтрок = ТабличнаяЧастьДок.НайтиСтроки(СтруктураДляПоиска); Для каждого Строка Из МассивПустыхСтрок Цикл ТабличнаяЧастьДок.Удалить(Строка); КонецЦикла; ОбъектДок.Записать(); // Записываем изменения в документе |
Как удалить все строки, кроме тех которые соответсвуют заданному отбору?
1 2 3 4 5 6 7 8 9 10 |
// Укажем условия отбора: Нужно оставить только строки где СубконтоКт1 = РБПНаПФР ПараметрыОтбора = Новый Структура("СубконтоКт1", Справочники.РасходыБудущихПериодов.РБПНаПФР); //Теперь выгружаем табличную часть в таблицу значений ТЗисходн=ОтражениеВУчете.Выгрузить(); //Скопируем ТЗ с заданным отбором в новую ТЗ ТЗнов = ТЗисходн.Скопировать(ПараметрыОтбора); //Очистим табличную часть ОтражениеВУчете.Очистить(); //Загружем в табличную часть новую таблицу значений ОтражениеВУчете.Загрузить(ТЗнов); |
В режиме управляемого приложения конструкция:
1 2 3 4 5 |
Для каждого Запись из ТабличнойЧасти Цикл Если Запись.НадоУдалить Тогда ТабличнойЧасти.Удалить(Запись); КонецЕсли; КонецЦикла; |
Работает некорректно, так как переписывает табличную часть и меняет индексы, сразу после удаления и Цикл полностью не обходит.
Решение пришло такое:
1 2 3 4 5 6 7 8 9 |
КолВо = Объект.ТабличнойЧасти.Количество()-1; ИндексСтроки = КолВо; Для счетчик = 0 по КолВо Цикл Запись = Объект.ТабличнойЧасти.Получить(ИндексСтроки); если Запись.НадоУдалить тогда Объект.ТабличнойЧасти.Удалить(Запись); КонецЕсли; ИндексСтроки = ИндексСтроки - 1; КонецЦикла; |