Удаление записей из регистра расчета

1. Skaredov 152 08.02.14 12:44 Сейчас в теме
Требуется удалить записи из регистра расчета с отбором по регистратору и виду расчета.
Если использую набор записей, то не удается задать отбор по виду расчета(НаборЗаписей.Отбор.ВидРасчета.Значение=... - не работает). Если в цикле по записям НабораЗаписей по условию удалять записи, то в случае если в наборе подходящие записи следуют подряд, то не все записи удаляются, т.е. приходиться делать несколько прогонов.
Может кто подсказать вариант решения?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
4. adva 45 08.02.14 13:15 Сейчас в теме
Код примерно такой:
Коллекция = <?"Коллекция">;
КолвоЭлементовКоллекции = Коллекция.Количество(); 
Для ОбратныйИндекс = 1 По КолвоЭлементовКоллекции Цикл 
	ЭлементКоллекции = Коллекция[КолвоЭлементовКоллекции - ОбратныйИндекс]; 
	
	Если <?> Тогда 
		Коллекция.Удалить(ЭлементКоллекции); 
	КонецЕсли; 
	
КонецЦикла; 
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. adva 45 08.02.14 13:01 Сейчас в теме
А просто выгрузить набор записей в ТЗ, в ней через НайтиСтроки удалить строки, и загрузить полученную ТЗ в набор записей?
5. Rothschild 08.02.14 16:00 Сейчас в теме
В общем идея (2) adva правилная, только он что-то с удалением элементов коллекции намудрил.
;))

А реализация идеи примерно такая:
НаборЗ = РегистрыРасчетов.<ИмяРег>.СоздатьНаборЗаписей();
НаборЗ.Отбор.Регистратор.Установить(ДокументСсылка);
НаборЗ.Прочитать();
тзЗаписи = НаборЗ.Выгрузить();
СтрокиУ = тзЗаписи.НайтиСтроки(Новый Структура("ВидРасчета",ВидРасчетаСсылка));
Для каждого СтрУ из СтрокиУ Цикл
   тзЗаписи.Удалить(СтрУ);
КонецЦикла;
НаборЗ.Загрузить(тзЗаписи);
НаборЗ.Записать(Истина);
Показать
3. adva 45 08.02.14 13:04 Сейчас в теме
Либо, есть стандарт на удаление строк коллекции от 1С (может не только от 1С) - строки удаляются начиная с последней строки (чтобы не прогоны повторные не делать, это если используется получение строки по номеру строки, а номер строки в счетчике)
4. adva 45 08.02.14 13:15 Сейчас в теме
Код примерно такой:
Коллекция = <?"Коллекция">;
КолвоЭлементовКоллекции = Коллекция.Количество(); 
Для ОбратныйИндекс = 1 По КолвоЭлементовКоллекции Цикл 
	ЭлементКоллекции = Коллекция[КолвоЭлементовКоллекции - ОбратныйИндекс]; 
	
	Если <?> Тогда 
		Коллекция.Удалить(ЭлементКоллекции); 
	КонецЕсли; 
	
КонецЦикла; 
Показать
6. Skaredov 152 08.02.14 16:18 Сейчас в теме
(4) adva, Да, это работает. И наверно проще не придумаешь.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот