Конвертация Данных 2.0. Проведение перенесенного документа

Конвертация Данных 2.0. Проведение перенесенного документа

Часто вижу вопросы на форумах как организовать автоматическое проведение документов загруженных с помощью правил обмена конфигурации «Конвертация данных 2.0».

в частности для варианта обмена 7.7 -> 8.1

ПКО документа, перед загрузкой:
РежимЗаписи = "Проведение";

В данном решение есть минус, при ошибке проведения документа при загрузке объект не будет загружен вообще.

Делюсь решением:

1. В свойствах конвертации создаем параметр "ТаблицаДокументов" устанавливаем галочку "При загрузке"

2. В обработчике «Перед загрузкой данных» пишем код:

ТаблицаДокументов = Новый ТаблицаЗначений;
ТаблицаДокументов.Колонки.Добавить("Документ");
ТаблицаДокументов.Колонки.Добавить("ДатаВремя");

Параметры.ТаблицаДокументов = ТаблицаДокументов;

3. В обработчике «После загрузки объекта» пишем код:

Если ИмяТипаОбъекта = "Документ" Тогда

    Объект.Записать();

    НоваяСтрока = Параметры.ТаблицаДокументов.Добавить();
    НоваяСтрока.Документ = Объект.Ссылка;
    НоваяСтрока.ДатаВремя = Объект.Дата;

КонецЕсли;

4. В обработчике «После загрузки данных» пишем код:

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

 

Собственно и всё.

 

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *