Конвертация данных 2 — Отмена проведения документов в 7.7 при повторной загрузке

При повторной загрузке данных в 1С бывает необходимо отменить проведение у существующих документов.

Делая обмен между семерочными конфигурациями на КД2, столкнулся с тем, что не отменяется проведение уже загруженных документов при повторной загрузке. Исследуя этот вопрос, обнаружил что в обработке загрузки v77imp.ert есть функция

Функция ОтменитьПроведение(Объект, СтатусВПравилах="Авто", СтатусВФайле="НеИзвестен")

которая выполняет отмену проведения документа, но нигде не используется в данной обработке.Также выяснилось, что при загрузке документа, в процедуре

Процедура ЗагрузитьДокументV8(Объект, Вид, ИмяПравила)

есть строчка кода, которая пытается получить флаг отмены проведения из файла обмена:

ОтменитьПроведение  =   Число(Объект.ПолучитьАтрибут("ОтменитьПроведение"));

Но переменная ОтменитьПроведение далее нигде не используется.

Итак, чтобы включить возможность отмены проведения документов, я сделал изменения в конфигурации Конвертация (2.1.3.1), в обработке ВыгрузкаКонвертации:

1. Макет «ПроцедурыИФункцииМодуляВыгрузки»

Добавил атрибут к узлу Объект в функции ВыгрузитьПоПравилу() (смотрите комментарии):

Функция ВыгрузитьПоПравилу(Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО = "", УзелСсылки = "", ТолькоПолучитьУзелСсылки = 0,
...
Если Приемник = мПустоеЗначение Тогда //строка 2827 в типовой конфигурации 2.1.3.1
Приемник = СоздатьУзел("Объект");
УстановитьАтрибут(Приемник, "Нпп", Нпп);
УстановитьАтрибут(Приемник, "Тип", ПолучитьРеквизитПКО(НомерПКО, "Приемник"));
УстановитьАтрибут(Приемник, "ИмяПравила", ПолучитьРеквизитПКО(НомерПКО, "Код"));
//для отмены проведения документов
//в обработчике ПередВыгрузкой ПКО документа написать:
//ВходящиеДанные = СоздатьОбъект("СписокЗначений");
//ВходящиеДанные.ДобавитьЗначение(1, "ОтменитьПроведение");
Попытка
УстановитьАтрибут(Приемник, "ОтменитьПроведение", ВходящиеДанные.Получить("ОтменитьПроведение"));
Исключение
КонецПопытки;
//конец для отмены проведения документов

2. Макет «ПроцедурыИФункцииМодуляЗагрузки»

Добавил в процедуру ЗагрузитьДокументV8()  одну строчку (см. комментарии)

Процедура ЗагрузитьДокументV8(Объект, Вид, ИмяПравила)
...
СтатусПроведения   =    гТабКэшПараметровЗагрузки.СтатусПроведения;
ОтменитьПроведение  =   Число(Объект.ПолучитьАтрибут("ОтменитьПроведение"));
ОбъектБД.НайтиДокумент(ТекущийОбъект);
//отмена проведения документов
ОтменитьПроведение(ОбъектБД,,ОтменитьПроведение);
//конец отмена проведения документов

3. И все — работает.

В файле данных появился новый атрибут:

который сигнализирует о необходимости отмены проведения документа.

Leave a Comment

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