Удалить строку табличной части документа

Удалить все строки табличного поля документа.
Код 1C v 8.х ОтражениеВУчете.Очистить(); // ОтражениеВУчете — название табличного поля
Как в табличной части документа удалить строки только с нулевым значением реквизита «Количество»?
Код 1C v 8.х //Получим документ и укажем параметры поиска
ОбъектДок = СсылкаДок.ПолучитьОбъект();
СтруктураДляПоиска = Новый Структура(«Количество», 0);
ТабличнаяЧастьДок = ОбъектДок.Товары;
//Получаем список строк соответсвтвующих отбору, и перебором удаляем.
МассивПустыхСтрок = ТабличнаяЧастьДок.НайтиСтроки(СтруктураДляПоиска);
Для каждого Строка Из МассивПустыхСтрок Цикл
ТабличнаяЧастьДок.Удалить(Строка);
КонецЦикла;
ОбъектДок.Записать(); // Записываем изменения в документе
Как удалить все строки, кроме тех которые соответсвуют заданному отбору?
Код 1C v 8.х // Укажем условия отбора: Нужно оставить только строки где СубконтоКт1 = РБПНаПФР
ПараметрыОтбора = Новый Структура(«СубконтоКт1», Справочники.РасходыБудущихПериодов.РБПНаПФР);
//Теперь выгружаем табличную часть в таблицу значений
ТЗисходн=ОтражениеВУчете.Выгрузить();
//Скопируем ТЗ с заданным отбором в новую ТЗ
ТЗнов = ТЗисходн.Скопировать(ПараметрыОтбора);
//Очистим табличную часть
ОтражениеВУчете.Очистить();
//Загружем в табличную часть новую таблицу значений
ОтражениеВУчете.Загрузить(ТЗнов);
В режиме управляемого приложения конструкция:
Код 1C v 8.2 УП Для каждого Запись из ТабличнойЧасти Цикл
Если Запись.НадоУдалить Тогда
ТабличнойЧасти.Удалить(Запись);
КонецЕсли;
КонецЦикла;
Работает некорректно, так как переписывает табличную часть и меняет индексы, сразу после удаления и Цикл полностью не обходит.
Решение пришло такое:
Код 1C v 8.2 УП КолВо = Объект.ТабличнойЧасти.Количество()-1;
ИндексСтроки = КолВо;
Для счетчик = 0 по КолВо Цикл
Запись = Объект.ТабличнойЧасти.Получить(ИндексСтроки);
если Запись.НадоУдалить тогда
Объект.ТабличнойЧасти.Удалить(Запись);
КонецЕсли;
ИндексСтроки = ИндексСтроки — 1;
КонецЦикла;

Удалить все строки табличного поля документа.
Код 1C v 8.х ОтражениеВУчете.Очистить(); // ОтражениеВУчете — название табличного поля
Как в табличной части документа удалить строки только с нулевым значением реквизита «Количество»?
Код 1C v 8.х //Получим документ и укажем параметры поиска
ОбъектДок = СсылкаДок.ПолучитьОбъект();
СтруктураДляПоиска = Новый Структура(«Количество», 0);
ТабличнаяЧастьДок = ОбъектДок.Товары;
//Получаем список строк соответсвтвующих отбору, и перебором удаляем.
МассивПустыхСтрок = ТабличнаяЧастьДок.НайтиСтроки(СтруктураДляПоиска);
Для каждого Строка Из МассивПустыхСтрок Цикл
ТабличнаяЧастьДок.Удалить(Строка);
КонецЦикла;
ОбъектДок.Записать(); // Записываем изменения в документе
Как удалить все строки, кроме тех которые соответсвуют заданному отбору?
Код 1C v 8.х // Укажем условия отбора: Нужно оставить только строки где СубконтоКт1 = РБПНаПФР
ПараметрыОтбора = Новый Структура(«СубконтоКт1», Справочники.РасходыБудущихПериодов.РБПНаПФР);
//Теперь выгружаем табличную часть в таблицу значений
ТЗисходн=ОтражениеВУчете.Выгрузить();
//Скопируем ТЗ с заданным отбором в новую ТЗ
ТЗнов = ТЗисходн.Скопировать(ПараметрыОтбора);
//Очистим табличную часть
ОтражениеВУчете.Очистить();
//Загружем в табличную часть новую таблицу значений
ОтражениеВУчете.Загрузить(ТЗнов);
В режиме управляемого приложения конструкция:
Код 1C v 8.2 УП Для каждого Запись из ТабличнойЧасти Цикл
Если Запись.НадоУдалить Тогда
ТабличнойЧасти.Удалить(Запись);
КонецЕсли;
КонецЦикла;
Работает некорректно, так как переписывает табличную часть и меняет индексы, сразу после удаления и Цикл полностью не обходит.
Решение пришло такое:
Код 1C v 8.2 УП КолВо = Объект.ТабличнойЧасти.Количество()-1;
ИндексСтроки = КолВо;
Для счетчик = 0 по КолВо Цикл
Запись = Объект.ТабличнойЧасти.Получить(ИндексСтроки);
если Запись.НадоУдалить тогда
Объект.ТабличнойЧасти.Удалить(Запись);
КонецЕсли;
ИндексСтроки = ИндексСтроки — 1;
КонецЦикла;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *