1С Как удалить строки из табличной части документа
Практически во всех документах которые есть в типовых конфигурациях 1С присутствует табличная часть и порой даже не одна. Поэтому каждый должен уметь обрабатывать её программно, заполнять, добавлять удалять строки, производить пересчет и многое другое. Задачи подобного рода Вам будут встречаться очень часто. Обо все об этом в одной статье рассказать не получиться, поэтому сначала расскажу о том как можно удалить строки из ТЧ документов. Делается это на самом деле достаточно просто, удалить можно не все строки а только необходимые по определенным условиям.
Команда для удаления строк из табличной части по условию 1С
На первых этапах с этим будет гораздо проще разобраться на примере простого документа созданного вами лично, так как в нем будет минимум кода. Я для примера так же создам новый документ «Поступление» с табличной частью «Товары». У которой будет несколько реквизитов «Номер», «Наименование», «Количество», «Цена», «НДС» и «Комментарий», кстати последний реквизит добавлен на форму программно, об этом можете прочитать в предыдущей статье.
Давайте будем удалить не все строки а скажем те у которых нет НДС.
Первым делам создадим новую команду «Удалить строки бех НДС» и разместим её на форме.
Теперь в процедуре напишем вот такой код.
ВсегоСтрок = Объект.Товары.Количество(); // Определяем количество строк в ТЧ
ИндексСтроки = 0; // Устанавливаем индекс
Пока ИндексСтроки < ВсегоСтрок Цикл // В цикле обходим ТЧ
ТекущаяСтрока = Объект.Товары[ИндексСтроки];
Если ТекущаяСтрока.НДС = ПредопределенноеЗначение("Перечисление.СтавкаНДС.БезНДС") Тогда // Условие
Объект.Товары.Удалить(ИндексСтроки); // Если условие выполнено удаляем строку
ВсегоСтрок = ВсегоСтрок -1; / Уменьшаем индекс строки для того чтобы после удаление не перепрыгнуть строку
Иначе
ИндексСтроки = ИндексСтроки +1; // Если условие не выполнено увеличиваем индекс
КонецЕсли
КонецЦикла;
Постарался весь код описать но если остались вопросы пишите!
Сохраняем конфигурацию, открываем документ и нажимаем на кнопку «Удалить строки без НДС».
Если Вы все сделали правильно то 1 и 5 строка должны удалиться из документа.
Условие можно изменить на любое другое, например удалять строки с определенной ценой, количеством и т.д. Главное на начальном этапе понять принцип.
Отбор = Структура («НДС», ПредопределенноеЗначение(«Перечисление.СтавкаНДС.БезНДС»));
МассивСтрокБезНДС = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого СтрокаМассива из МассивПустыхСтрок Цикл
Объект.Товары.Удалить(СтрокаМассива);
КонецЦикла;