Чтобы выполнить перепроведение документов только по одному регистру, сохранив старые движения по остальным регистрам пишем запрос с выборкой необходимых нам документов, и в переборе его результатов вызываем процедуру перепроведения, представленную ниже…
Передаем в качестве параметра ссылку на проводимый документ и имя регистра.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Процедура ПровестиПоРегистру(ДокСсылка, ИмяРегистра) ДокОбъект = ДокСсылка.ПолучитьОбъект(); НачатьТранзакцию(); ДокОбъект.Записать(РежимЗаписиДокумента.Проведение); ДокОбъект.Движения[ИмяРегистра].Прочитать(); ТаблицаДвиженийРегистра = ДокОбъект.Движения[ИмяРегистра].Выгрузить(); //здесь отменяем проведение документа, чтобы ничего не изменилось //в прошлых периодах (по другим регистрам) ОтменитьТранзакцию(); НаборЗаписей = РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ДокСсылка); НаборЗаписей.Загрузить(ТаблицаДвиженийРегистра); НаборЗаписей.Записать(); КонецПроцедуры |
1С 8 : Как выполнить перепроведение документов только по одному регистру, сохранив старые движения по остальным регистрам: 3 комментария
Добрый день!
Использовала Ваш код в регламентном задании.
Выдает ошибку на метод «Записать»:
«{ОбщийМодуль.МодульРегламентныхЗаданий.Модуль(983)}: Ошибка при вызове метода контекста (Записать)
по причине:
по причине:
Не удалось провести «Документ К0000000209 от 05.02.2016 10:33:23″!»
Документ в закрытом периоде. Я так понимаю что проблема в этом. Как обойти закрытый период?
Используйте для записываемого объекта:
ОбменДанными.Загрузка = Истина;
Этот параметр используется при обмене данными, он отключает все проверки при записи документа, в том числе и дату запрета редактирования
Где в коде использовать ОбменДанными.Загрузка = Истина;?
Обмен данными — ошибка переменная не определена.
Если НаборЗаписей.Загрузка = Истина
то при проведении ошибка не понимает что такое «Загрузка»
Обсуждение закрыто.