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