Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 19:59

Как удалить в ТЧ документа не все строки, а удовлетворяющие нужному условию

Автор ktu78, 14 дек 2015, 17:12

0 Пользователей и 1 гость просматривают эту тему.

ktu78

Добрый день, подскажите пожалуйста коллеги:

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

Как удалить в ТЧ документа не все строки, а удовлетворяющие нужному условию

Спасибо

LexaK

да-а-а, похоже что на такой элементарный вопрос вам никто не ответит,
это все равно что вы спросили:
- ребята, а сколько будет "2 + 2"

как вариант (создайте структуру, с ее помощью найдите строчки (которые надо удалить), и в цикле все их удалите) всего 5 строчек кода!
боюсь вы ничего не поняли.
если помогло нажмите: Спасибо!

Luzer1C

Только если удалять в цикле, то только с использованием счетчика. По-другому просто нельзя.
Добавлено: 15 дек 2015, 05:37


Сч = 1;
Пока Сч <= Объект.Товары.Количество() Цикл
Если Объект.Товары[Сч - 1].<<ИмяРеквизитаТЧ_Товары>> = <<Чему то равно>> Тогда
Объект.Товары.Удалить(Сч - 1);
Иначе
Сч = Сч + 1;
КонецЕсли;
КонецЦикла;
Халамбалам.

cska-fanat-kz

Цитата: Luzer1C от 15 дек 2015, 05:12Только если удалять в цикле, то только с использованием счетчика. По-другому просто нельзя.

Не есть факт. Да и при вашем алгоритме цикл не собьется часом?

Обычно обхожу таблицу циклом "Для каждого". Проверяем нужное условие и если выполняется то кладем текущую строку в массив для удаления.
Далее циклом обходим получивший массив и удаляем.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Luzer1C

Так тоже можно.
Только если удалять строки из ТЧ сразу, то они сдвигаются и получится так, что, например, мы удалили строку и на её место встала другая строка. А так как мы обрабатываем циклом, то эту строку мы не проверим. Проверка условия перейдёт на другую строку.
Мой механизм рабочий. Это из обучающего видео Евгения Гилёва.
Халамбалам.

cska-fanat-kz

Цитата: Luzer1C от 15 дек 2015, 07:17
Так тоже можно.
Только если удалять строки из ТЧ сразу, то они сдвигаются и получится так, что, например, мы удалили строку и на её место встала другая строка. А так как мы обрабатываем циклом, то эту строку мы не проверим. Проверка условия перейдёт на другую строку.
Мой механизм рабочий. Это из обучающего видео Евгения Гилёва.

При обходе циклом Для каждого например так
    Для каждого СтрокаТЧ Из Товары
    ...

то в СтрокаТЧ "сидит" каждый раз ссылка (или адрес в памяти) на текущую строку.
поэтому совершенно не важно ее изменяющееся положение относительно других.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Luzer1C

Правильнее было написать так: "с использованием массива для удаления или с использованием счетчика".
ЦитироватьДа и при вашем алгоритме цикл не собьется часом?
Если не верите, советую проверить.
Халамбалам.

KrivosheevEV

Тоже считаю, что удаление по индексу строки допустимо только снизу. Удаление по ссылке - направление не важно.

Luzer1C

Халамбалам.

KrivosheevEV

А ведь и вправду годно. Не обратил внимание на блок "Иначе".

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск