Back to top

Программно удаляем записи из регистра накопления

Опубликовано e-1c@mail.ru - ср, 08/24/2016 - 05:43

1. Выбираем ссылки документов - регистраторов:

РегистрыНакопления.Остатки.УстановитьИспользованиеИтогов(Ложь);
    Запрос=Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    Регистр.Регистратор
    |ИЗ
    |    РегистрНакопления.Остатки КАК Регистр
    |ГДЕ
    |    Регистр.Регистратор.Дата<&КонПериода";
    Запрос.УстановитьПараметр("КонПериода",КонПериода);
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    Кол=0;
    БылиОшибки=Ложь;   

2. Далее:
- Создать набор записей
- Установить на него отбор по регистратору
- Записать набор (так как передаваемые значения пусты - получается мы пишем пустой регистр , соответственно стираем старую запись)

Пока Выборка.Следующий() цикл
        ОбработкаПрерыванийПользователя();
        Набор = РегистрыНакопления.Остатки.СоздатьНаборЗаписей();
        Набор.Отбор.Регистратор.Значение = Выборка.Регистратор;
        Попытка
           Набор.Записать();
        Исключение
           БылиОшибки=Истина;
        КонецПопытки;
        Кол=Кол+1;
        ЕСЛИ Кол%100=0 Тогда
            Сообщить("Отработано "+Кол+" документов из "+Выборка.Количество());
        КонецЕсли;
    КонецЦикла;
    Если БылиОшибки Тогда
       Предупреждение("Обработка завершена. Регистр очищен не до конца!!!");
    КонецЕсли;
    РегистрыНакопления.Остатки.УстановитьИспользованиеИтогов(Истина);