Удалить движения документа программно

В данной статье будет приведена процедура, позволяющая удалить движения документа по всем регистрам. Для этого перебираются все возможные регистры для данного документа, создаются и очищаются наборы записей с отбором по регистратору.

Процедура позволяющая удалить движения

В параметр процедуры передаем ссылку на документ, у которого необходимо очистить движения. Если вы хотите вызывать данную процедуру из общего модуля, то после имени процедуры необходимо добавить ключевое слово Экспорт.

Процедура УдалитьДвиженияДокумента(Документ)

    ДокОбъект = Документ.ПолучитьОбъект();

    Для Каждого Движение ИЗ ДокОбъект.Движения Цикл

        Если Движение.Количество() > 0 Тогда
            Точка = Найти(Строка(Движение), ".");
            ВидРегистра = Лев(Строка(Движение), Точка - 13);
            РегистрИмя = СокрП(Сред(Строка(Движение), Точка + 1));

            Если ВидРегистра = "РегистрНакопления" Тогда
                НаборЗаписей = РегистрыНакопления[РегистрИмя].СоздатьНаборЗаписей();            
            ИначеЕсли ВидРегистра = "РегистрБухгалтерии" Тогда
                НаборЗаписей = РегистрыБухгалтерии[РегистрИмя].СоздатьНаборЗаписей();    
            ИначеЕсли ВидРегистра = "РегистрСведений" Тогда
                НаборЗаписей = РегистрыСведений[РегистрИмя].СоздатьНаборЗаписей();    
            ИначеЕсли ВидРегистра = "РегистрРасчета" Тогда
                НаборЗаписей = РегистрыРасчета[РегистрИмя].СоздатьНаборЗаписей();    
            КонецЕсли;

            НаборЗаписей.Отбор.Регистратор.Установить(ДокОбъект.Ссылка);            

        Иначе
            НаборЗаписей = Движение;
        КонецЕсли;

        Попытка
            НаборЗаписей.Записать();
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
    КонецЦикла;

КонецПроцедуры

Если вы хотите узнать, как обнулять остатки по регистрам накопления, прочитайте статью Обнуление остатков регистров накопления 1с

Добавить комментарий

Ваш e-mail не будет опубликован.