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