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