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

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

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

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

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

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

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

        Если Движение.Количество() > 0 Тогда

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

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

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

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

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

    КонецЦикла;

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

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

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

Ваш адрес email не будет опубликован.