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

Удаление значений ТЧ

Автор ab30ru, 02 авг 2017, 21:27

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

ab30ru

Здравствуйте. Есть ТЧ ВыданныеКниги. В ней 2 реквизита Книга и Статус. Нужно удалить те строки, где статус книги На руках. Помогите пожалуйста с кодом

alex0402

Количество = ВыданныеКниги.Количество();
Пока Количество > 0 Цикл
    Количество = Количество - 1;
    Если ВыданныеКниги[Количество].Статус = НаРуках Тогда
        ВыданныеКниги.Удалить(Количество);
    КонецЕсли;
КонецЦикла;
Спасибо за Сказать спасибо

Izzy


Для каждого Стр Из ВыданныеКниги Цикл
    Если Стр.Статус = "НаРуках" Тогда
        ВыданныеКниги.Удалить(ВыданныеКниги.Индекс(Стр));
    КонецЕсли;
КонецЦикла;

Kironten

Цитата: Izzy от 03 авг 2017, 12:33

Для каждого Стр Из ВыданныеКниги Цикл
    Если Стр.Статус = "НаРуках" Тогда
        ВыданныеКниги.Удалить(ВыданныеКниги.Индекс(Стр));
    КонецЕсли;
КонецЦикла;

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

Izzy

Верное замечание, спасибо!
Если подряд будут две строки с одинаковым статусом, то вторая не будет удалена.

ab30ru

Цитата: Izzy от 03 авг 2017, 12:53
Верное замечание, спасибо!
Если подряд будут две строки с одинаковым статусом, то вторая не будет удалена.
А как это сделать? Как обойти?

alex0402

Цитата: ab30ru от 03 авг 2017, 13:02А как это сделать? Как обойти?
а « Ответ #1: 02 Авг 2017, 21:42 » чем не устраивает.
Спасибо за Сказать спасибо

Sandi

а я бы сделала как-то так:


Отбор=Новый Структура("Статус",НаРуках);

МассивСтрок = ВыданныеКниги.НайтиСтроки(Отбор);

Для Каждого СтрокаМассива из МассивСтрок Цикл
ВыданныеКниги.Удалить(СтрокаМассива);
КонецЦикла

MuI_I_Ika

Еще вот так можно сделать. Адаптируйте алгоритм для своего случая:

КоличествоСтрок = ДокументОбъект.Товары.Количество();
Для к = 1 по КоличествоСтрок Цикл

ТекСтрока = КоличествоСтрок - к;
ТекЭлемент = ДокументОбъект.Товары[ТекСтрока];

Если ТекЭлемент.Цена = 0 Тогда
ДокументОбъект.Товары.Удалить(ТекЭлемент);
КонецЕсли;

КонецЦикла;

Теги:

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

Рейтинг@Mail.ru

Поиск