Статьи‎ > ‎

Проведение документов по определенному регистру

Для данной операции будем использовать следующий алгоритм:
  1. Сохраняем все движения документа.
  2. Вносим необходимые изменения и проводим документ.
  3. Восстанавливаем ранее сохраненные движения, за исключением нужных(те которые нужно было провести). 
Реализация в конструкторе Ei будет иметь примерно следующий вид:


В коде кроме стандартных обработок: "Установка реквизитов" и "Проведение документов" используются два алгоритма на произвольном языке:

ПолучениеДвижений

Параметры.Движения=ПолныеПрава.ОпределитьНаличиеДвиженийПоРегистратору(Объект.Ссылка);

Параметры.Движения.Колонки.Добавить("Таблица");

Для каждого Движение из Параметры.Движения Цикл

    Движение.Имя=СокрЛП(Сред(Движение.Имя,Найти(Движение.Имя,".")+1));

    Объект.Движения[Движение.Имя].Прочитать();

    Движение.Таблица=Объект.Движения[Движение.Имя].Выгрузить();

КонецЦикла;


ВосстановлениеДвижений

Для Каждого Движение из  Параметры.Движения Цикл

    Если Параметры.ИсключитьВостановление.НайтиПоЗначению(Движение.Имя)=Неопределено Тогда

        Объект.Движения[Движение.Имя].Загрузить(Движение.Таблица);

        Объект.Движения[Движение.Имя].Записать();

    Иначе

        Сообщить("Движения "+Движение.Имя+" не востановлены, для документа "+Объект,СтатусСообщения.Информация);

    КонецЕсли;

КонецЦикла;


Использование этих двух объектов предполагает обязательное наличие следующих параметров

Comments