Перейти к содержимому

Как удалить строку табличной части 1с

  • автор:

Как программно удалить строки из табличной части по условию

В статье рассмотрено несколько основных алгоритмов удаления строк из табличной части по условию. Каждый из вариантов по своему хорош, вам нужно подобрать для себя наиболее подходящий. Оглавление (нажмите, чтобы раскрыть) Первый вариант удаления строк по условию Второй вариант удаления строк […]

Другое в 1С
  • 1С: Массивы и коллекции. Массивы
  • Как передать структуру в параметр. Конвертация данных
  • Менеджер заданий не активен. Как исправить
  • Как пропорционально распределить сумму
  • Как программно отключить регистрацию объектов в планах обмена при записи объекта

Удаление строк из табличных частей по условию

В статье рассмотрено несколько основных алгоритмов удаления строк из табличной части по условию. Каждый из вариантов по своему хорош, вам нужно подобрать для себя наиболее подходящий.

1С 8.3 Удалить строки табличной части документа/справочника — Программист 1С Минск. Автоматизация бизнеса.

1С 8.3 Удалить строки табличной части документа/справочника

&НаСервере
Процедура УдалитьСтрокиВТЧпоУсловию ()

ОтгрузкаСсылка = Документы . ОтгрузкаТоваров . НайтиПоНомеру ( «МРБ-000123» , ‘20200430’ );
МассивСтрокУдалить = Новый Массив ;

// Вариант 1
Для Каждого Строка Из ОтгрузкаСсылка . Номенклатура Цикл
Если НЕ ЗначениеЗаполнено ( Строка . Номенклатура ) Тогда
МассивСтрокУдалить . Добавить ( Строка );
КонецЕсли;
КонецЦикла;

Для Каждого ЭлементМассив Из МассивСтрокУдалить Цикл
Объект . Номенклатура . Удалить ( ЭлементМассив ); //удаляем нужную строку
КонецЦикла;

// Вариант 2
//КоличествоСтрок = ОтгрузкаСсылка.Номенклатура.Количество()-1;
//ИндексСтроки = КоличествоСтрок;
//Для А = 0 по КоличествоСтрок Цикл
// Строка = ОтгрузкаСсылка.Номенклатура.Получить(ИндексСтроки);
// Если НЕ ЗначениеЗаполнено(Строка.Номенклатура) Тогда
// ОтгрузкаСсылка.Номенклатура.Удалить(Строка);
// КонецЕсли;
// ИндексСтроки = ИндексСтроки — 1;
//КонецЦикла;

&НаСервере
Процедура УдалитьСтрокиВТЧпоОтбору ()

ОтгрузкаСсылка = Документы . ОтгрузкаТоваров . НайтиПоНомеру ( «МРБ-000123» , ‘20200430’ );
ОтгрузкаТоваров = ОтгрузкаСсылка . ПолучитьОбъект ();
СтруктураДляПоиска = Новый Структура ( «Количество» , 0 );

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

&НаСервере
Процедура УдалитьСтрокиВТЧпоОтборуЧерезТЗ ()

ОтгрузкаСсылка = Документы . ОтгрузкаТоваров . НайтиПоНомеру ( «МРБ-000123» , ‘20200430’ );

// Укажем условия отбора: Нужно оставить только строки где СубконтоКт1 = РБПНаПФР
ПараметрыОтбора = Новый Структура ( «СубконтоКт1» , Справочники . РасходыБудущихПериодов . РБПНаПФР );

//Теперь выгружаем табличную часть в таблицу значений
ТЗисходн = ОтгрузкаСсылка . Номенклатура . Выгрузить ();

//Скопируем ТЗ с заданным отбором в новую ТЗ
ТЗ = ТЗисходн . Скопировать ( ПараметрыОтбора );

//Очистим табличную часть
ОтгрузкаСсылка . Номенклатура . Очистить ();

//Загружем в табличную часть новую таблицу значений
ОтгрузкаСсылка . Номенклатура . Загрузить ( ТЗ );

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

Сегодня в работе столкнулся с неверным вводом остатков, нужно было по определенному отбору удалить строки из табличной части документа. В этой заметке разберу как очистить табличную часть, как удалить определенные строки с отбором.

Удалить все из табличной части

Начу с самого простого, бывают случаи когда нужно полностью очистить табличную часть документ. Для этого необходимо использовать команду Очистить()

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

В этом примере удалим из документа ввода остатков все взаимоотношения с партнерами меньше 1 рубля.

Удалить строки из табличной части которые не соответствуют отбору

Иногда ситуация складывается так, что мы точно знаем какие строки нужно оставить, а правил для удаления строк слишком много. В этом случае удалим все строки из табличной части которые не соответствуют отбору.

Как не надо удалять записи из табличной части

В этом коде мы видим как программист решил выполнить удаление строк из табличной части перебором табличной части.

Перебирает табличную часть, по ходу проверяя условия удаления и сразу удаляет если условие выполняется, но в этом примере не учтено что при удалении строки изменится индекс у строкиТЧ и часть строк будет пропущена.

1С Как удалить строки из табличной части документа

Практически во всех документах которые есть в типовых конфигурациях 1С присутствует табличная часть и порой даже не одна. Поэтому каждый должен уметь обрабатывать её программно, заполнять, добавлять удалять строки, производить пересчет и многое другое. Задачи подобного рода Вам будут встречаться очень часто. Обо все об этом в одной статье рассказать не получиться, поэтому сначала расскажу о том как можно удалить строки из ТЧ документов. Делается это на самом деле достаточно просто, удалить можно не все строки а только необходимые по определенным условиям.

Команда для удаления строк из табличной части по условию 1С

На первых этапах с этим будет гораздо проще разобраться на примере простого документа созданного вами лично, так как в нем будет минимум кода. Я для примера так же создам новый документ «Поступление» с табличной частью «Товары». У которой будет несколько реквизитов «Номер», «Наименование», «Количество», «Цена», «НДС» и «Комментарий», кстати последний реквизит добавлен на форму программно, об этом можете прочитать в предыдущей статье.

Давайте будем удалить не все строки а скажем те у которых нет НДС.

Удаление строк из ТЧ

Первым делам создадим новую команду «Удалить строки бех НДС» и разместим её на форме.

1С Как удалить строки из табличной части документ

Теперь в процедуре напишем вот такой код.

Постарался весь код описать но если остались вопросы пишите!

Команда для удаления строк из табличной части по условию 1С

Сохраняем конфигурацию, открываем документ и нажимаем на кнопку «Удалить строки без НДС».

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

Если Вы все сделали правильно то 1 и 5 строка должны удалиться из документа.

1С Удаление строк из табличной части документа по условию

Условие можно изменить на любое другое, например удалять строки с определенной ценой, количеством и т.д. Главное на начальном этапе понять принцип.

Удаление строк из ТЧ : 1 комментарий

Отбор = Структура («НДС», ПредопределенноеЗначение(«Перечисление.СтавкаНДС.БезНДС»));
МассивСтрокБезНДС = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого СтрокаМассива из МассивПустыхСтрок Цикл
Объект.Товары.Удалить(СтрокаМассива);
КонецЦикла;

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

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