Часто вижу вопросы на форумах как организовать автоматическое проведение документов загруженных с помощью правил обмена конфигурации «Конвертация данных 2.0».
в частности для варианта обмена 7.7 -> 8.1
ПКО документа, перед загрузкой:
РежимЗаписи = "Проведение";
В данном решение есть минус, при ошибке проведения документа при загрузке объект не будет загружен вообще.
Делюсь решением:
1. В свойствах конвертации создаем параметр "ТаблицаДокументов" устанавливаем галочку "При загрузке"


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

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

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

Если ИмяТипаОбъекта = "Документ" Тогда
Объект.Записать();
НоваяСтрока = Параметры.ТаблицаДокументов.Добавить();
НоваяСтрока.Документ = Объект.Ссылка;
НоваяСтрока.ДатаВремя = Объект.Дата;
КонецЕсли;

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

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

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



