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