gifts2017

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

Опубликовал nicolas eliseev (nicxxx) в раздел Обработки - Обработка документов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Евгений Ильяшенков (ЗАК) 21.10.10 08:13
А в чем это xml файл открыт на скрине?
2. nicolas eliseev (nicxxx) 21.10.10 08:32
3. Александр Рытов (Арчибальд) 21.10.10 08:57
Фишка невелика, но хорошо оформлена и несомненно полезна. +
4. Артур Аюханов (artbear) 21.10.10 09:50
(3) +1
(0) На всякий случай уточню: название процедуры ЗагрузитьДокументV8, а работает все-таки для 77, верно?
5. nicolas eliseev (nicxxx) 21.10.10 10:29
(4) да, все верно. v77imp.ert - это типа универсальная обработка загрузки - может загружать в 7.7 как из 8(0/1/2), так и из 7.7, поэтому наверно чтобы идеологию не нарушать - все называния восьмерочные...имхо, конечно.
6. Сергей (mark2k) 28.10.10 10:03
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа