1С: Удаление записи из регистра накопления по регистратору и измерению (отбор)
Задача: удалить записи из регистра накопления по регистратору + условию. Т.е. есть несколько записей с одним регистратором, но разными измерениями. Необходимо удалить только нужные. Казалось бы тривиальная задача..но.. «штатными » средставами это сделать не удалось.
Решение:
- Сделаем отбор по регистратору
- Переберем выборку, отберем те записи, которые необходимо удалить
- Удалим их
Код примерно такой:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
НаборЗаписей = РегистрыНакопления.vscРасчетыСАбонентами.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Регистратор); НаборЗаписей.Прочитать(); УдаляемыеЗаписи = Новый Массив; Для Каждого Запись Из НаборЗаписей Цикл если Запись.ЛицевойСчет=объект.ЛицевойСчет тогда УдаляемыеЗаписи.Добавить(Запись); конецесли; конеццикла; Для Каждого УдаляемаяЗапись Из УдаляемыеЗаписи Цикл НаборЗаписей.Удалить(УдаляемаяЗапись); КонецЦикла; НаборЗаписей.Записать(); |
UPDATE:
А можно и еще проще и быстрее:
1 2 3 4 5 6 7 |
НаборЗаписей = РегистрыСведений.vscРасчетыСАбонентами.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Регистратор); НаборЗаписей.Прочитать(); ТЗНабора=НаборЗаписей.Выгрузить(); ТЗНабора = ТЗНабора.Скопировать(Новый Структура("ЛицевойСчет", ЛицевойСчет)); НаборЗаписей.Загрузить(ТЗНабора); |