Привет всем!
У меня опять вопрос ерундовый. У которого наверно опять решение это .... целая проблема.
Опять как обычно.. сделать ерунду сложно, а не наоборот.
Вопрос в чем... нужно удалить строки табличной части в которых булевый "реквизит2" имеет значение ЛОЖЬ.
Ну никак это не удаеться блин.. эта опять ерунда.
Потому, что наверно команда: Объект.ТабличнаяЧасть1.Удалить(ТекСтрокаИдент); удаляет по номеру строки, а не по идентификатору.
Поэтому в цикл удаляет не все поля имеющие на пример значение реквизита: "Реквизит2": ложь.... кое что оставляет и не удаляет.
Как быть? Блиин! Опять вынужден выходить на форум из ерундового вопроса.
Думал можно в цикле удалять так:
Сторка.Удалить();
&НаКлиенте
Процедура ТЧ_УдалитьУказанныеСтроки()
Для Каждого Сторка из Объект.ТабличнаяЧасть1 цикл
ТекСтрокаНомер=Сторка.НомерСтроки;
ТекСтрокаИдент=Сторка.ПолучитьИдентификатор();
Сообщить(""+ТекСтрокаНомер+" -- "+ТекСтрокаИдент);
//------------------------------------------------
Если Сторка.Реквизит2=ложь Тогда
//Сторка.Удалить(); // ну такой команды конечно нет ... естественно
Объект.ТабличнаяЧасть1.Удалить(ТекСтрокаИдент); // не все удаляет .. пропускает не удалив
КонецЕсли;
//------------------------------------------------
КонецЦикла;
КонецПроцедуры
МассивНайденныхСтрок = Объект.ТабличнаяЧасть1.НайтиСтроки(Новый Структура("Реквизит2", Ложь));
Для Каждого ТекНайденнаяСтрока Из МассивНайденныхСтрок Цикл
Объект.ТабличнаяЧасть1.Удалить(ТекНайденнаяСтрока);
КонецЦикла;
МассивУдаляемых = Новый Массив;
Для Каждого СтрокаТЧ Из ВашаТЧ Цикл
Если СтрокаТЧ.ВашРЕквизит Тогда // ВашРеквизит = Истина
МассивУдаляемых.Добавить(МассивУдаляемых);
КонецЕсли;
КонецЦикла;
Для Каждого Элемент Из МассивУдаляемых Цикл
ВашаТЧ .Удалить(Элемент);
КонецЦикла;
Bernet @ Сегодня, 15:32
,
Спасибо всем уважаемые
Т.е как понимается из примеров нужно обозначенное загонять в массив а уже после удалять
Ладно! Правда как работает нужно еще проверить. Ладно позже проверю и если че продолжу тему.
Пока все..
Спасибо!
Для е = 0 по КоличествоСтрокТЗ - 1 Цикл
Если (Условие верно) Тогда
ТЗ.Удалить(КоличествоСтрокТЗ - 1 - е);
КонецЕсли;
КонецЦикла;
МассивУдаляемых = Новый Массив;
Для Каждого Строка Из Объект.ТабличнаяЧасть1 Цикл
Если Строка.Реквизит2=Истина Тогда
ТекСтрокаИдент=Строка.ПолучитьИдентификатор();
МассивУдаляемых.Добавить(МассивУдаляемых);
КонецЕсли;
КонецЦикла;
//---------------------------------------------------
Для Каждого Элемент Из МассивУдаляемых Цикл
Объект.ТабличнаяЧасть1.Удалить(Элемент); // Ошибку выдавало на этой линии.
КонецЦикла;
МассивУдаляемых = Новый Массив;
Для Каждого Строка Из Объект.ТабличнаяЧасть1 Цикл
Если Строка.Реквизит2=Истина Тогда
ТекСтрокаИдент=Строка.ПолучитьИдентификатор();
МассивУдаляемых.Добавить(ТекСтрокаИдент);
КонецЕсли;
КонецЦикла;
//---------------------------------------------------
Для Каждого Элемент Из МассивУдаляемых Цикл
Строка = Объект.ТабличнаяЧасть1.НайтиПоИдентификатору(Элемент);
Объект.ТабличнаяЧасть1.Удалить(Строка);
КонецЦикла;
Надо=Истина;
Пока Надо Цикл
Надо=Ложь;
Для Каждого Стр Из Табл Цикл
Если (Условие....) Тогда
Надо=Истина;
Табл.Удалить(Стр);
Прервать;
КонецЕСли;
КонецЦикла;
КонецЦикла;
! | http://pro1c.org.ua/index.php?act=announce&id=2: 9 |
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua