Потребовалось в УТ быстро удалить все движения по банку, дело вроде легкое — отменить проведение всех поступлений и списаний безналичных денежных средств, но не тут то было…
При попытке отмены проведения выполнялись проверки на условия оплаты по заказу и документ ни как не отменял проведения
Ну не может типовым способом, заставим не типовым: Через запрос делаем выбору необходимых нам документов и в обработке результата пишем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Для Каждого СтрокаРезультата Из РезультатТаблица Цикл //алгоритм обработки строки результата - начало ДокОбъект = СтрокаРезультата.Ссылка.ПолучитьОбъект(); Для Каждого Движение ИЗ ДокОбъект.Движения Цикл Если Движение.Количество() > 0 Тогда Точка = Найти(Строка(Движение), "."); ВидРегистра = Лев(Строка(Движение), Точка - 13); РегистрИмя = СокрП(Сред(Строка(Движение), Точка + 1)); Если ВидРегистра = "РегистрНакопления" Тогда НаборЗаписей = РегистрыНакопления[РегистрИмя].СоздатьНаборЗаписей(); ИначеЕсли ВидРегистра = "РегистрБухгалтерии" Тогда НаборЗаписей = РегистрыБухгалтерии[РегистрИмя].СоздатьНаборЗаписей(); ИначеЕсли ВидРегистра = "РегистрСведений" Тогда НаборЗаписей = РегистрыСведений[РегистрИмя].СоздатьНаборЗаписей(); ИначеЕсли ВидРегистра = "РегистрРасчета" Тогда НаборЗаписей = РегистрыРасчета[РегистрИмя].СоздатьНаборЗаписей(); КонецЕсли; НаборЗаписей.Отбор.Регистратор.Установить(ДокОбъект.Ссылка); Иначе НаборЗаписей = Движение; КонецЕсли; Попытка НаборЗаписей.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЦикла; ДокОбъект.Проведен = Ложь; //ДокОбъект.ОбменДанными.Загрузка = Истина; ДокОбъект.Записать(режимзаписидокумента.запись); //алгоритм обработки строки результата - конец КонецЦикла; |
Готовая функция для использования в своих обработках или общем модуле:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Процедура УдалитьДвиженияДокумента(Документ) ДокОбъект = Документ.ПолучитьОбъект(); Для Каждого Движение ИЗ ДокОбъект.Движения Цикл Если Движение.Количество() > 0 Тогда Точка = Найти(Строка(Движение), "."); ВидРегистра = Лев(Строка(Движение), Точка - 13); РегистрИмя = СокрП(Сред(Строка(Движение), Точка + 1)); Если ВидРегистра = "РегистрНакопления" Тогда НаборЗаписей = РегистрыНакопления[РегистрИмя].СоздатьНаборЗаписей(); ИначеЕсли ВидРегистра = "РегистрБухгалтерии" Тогда НаборЗаписей = РегистрыБухгалтерии[РегистрИмя].СоздатьНаборЗаписей(); ИначеЕсли ВидРегистра = "РегистрСведений" Тогда НаборЗаписей = РегистрыСведений[РегистрИмя].СоздатьНаборЗаписей(); ИначеЕсли ВидРегистра = "РегистрРасчета" Тогда НаборЗаписей = РегистрыРасчета[РегистрИмя].СоздатьНаборЗаписей(); КонецЕсли; НаборЗаписей.Отбор.Регистратор.Установить(ДокОбъект.Ссылка); Иначе НаборЗаписей = Движение; КонецЕсли; Попытка НаборЗаписей.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЦикла; КонецПроцедуры |