КД 2.0. Перенос документов 7.7 — 7.7. Передача параметра "Проведен"

1С:Конвертация данных 2.0. Решение проблемы проведения документов при переносе между базами 7.7

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

Все документы при переносе стандартным механизмом «садятся» непроведенными.

При использовании ПКС «Проведен» появляется ошибка «Не верное имя реквизита Документ.ХХХ.Проведен».

Для решения данной проблемы нам придется:

  1. Добавить код в процедуру ПКО «ПриВыгрузке»:

УзелПараметра = DOMDocument.СоздатьУзел(1, «ЗначениеСтатуса», «»);
УзелПараметра.УстановитьАтрибут(«ИмяПараметра», «Статус»);
Если
Источник.Проведен()=1 тогда
    
Статус = «Проведен»;
ИначеЕсли
Источник.ПометкаУдаления()=1 тогда
    
Статус = «ПомеченНаУдаление»;
Иначе
    
Статус = «НеПроведен»;
КонецЕсли;
УзелПараметра.УстановитьАтрибут(«ЗначениеПараметра», Статус);
Приемник.ДобавитьПодчиненный(УзелПараметра);

  1. «Подправить» модуль загрузки в процедуре «ЗагрузитьДокументV8()». В конце добавляем:


УзелСтатус
= Объект.ВыбратьУзел(«ЗначениеСтатуса»);

Статус      =   УзелСтатус.ПолучитьАтрибут(«ЗначениеПараметра»);

Если Статус = «Проведен» Тогда
   Если
ОбъектБД.ПометкаУдаления() = 1 Тогда
        
ОбъектБД.СнятьПометкуУдаления();
   КонецЕсли;

   Попытка
       ОбъектБД.Провести();
   Исключение
      
Сообщить(«»+ОписаниеОшибки());
   КонецПопытки;

ИначеЕсли Статус = «ПомеченНаУдаление»  Тогда
   
ОбъектБД.Удалить(0);
Иначе
   Если
ОбъектБД.Проведен()=1 Тогда
        
ОбъектБД.СделатьНеПроведенным();
   ИначеЕсли
ОбъектБД.ПометкаУдаления() =1 Тогда
        
ОбъектБД.СнятьПометкуУдаления();
   КонецЕсли;
КонецЕсли;

15 Comments

  1. fancy

    «1. Добавить код в процедуру ПКО «После загрузки»:» — Может быть «После выгрузки» документа — я так понимаю добавляем подчиненный узел «ЗначениеСтатуса» в xml?

    Reply
  2. xazrad

    (1) Совершенно верно. только в ПКО «ПриВыгрузке». Исправил в публикации. Спасибо за замечание

    Reply
  3. Alav

    В принципе если совесть позволяет править конфигу и обмен будет постоянный, то можно добавить 2 общих реквизита Проведен и ПометкаУдаления. Тогда КД при переносе их автоматом будет заполнять и после загрузки уже можно анализировать их и делать телодвижения в документе.

    Автору плюс однозначно, просто привел альтернативу решению автора

    Reply
  4. Boroda

    Интересно, надо попробовать. Автору спасибо.

    Reply
  5. fomix

    А что мешает использовать в обработчике «ПослеЗагрузки» ПКО любого документа волшебные слова «РежимЗаписи = «Проведение»»????

    Reply
  6. xazrad

    (6) другой. как мне известно параметры при переносу из 7.7 в 7.7 не передаются а в http://infostart.ru/public/21069/ используются параметры

    Reply
  7. Alav

    (5) если не ошибаюсь для 7-ки это не работает. Но в любом случае речь идет о передачи всех документов, а не только проведенных, поэтому так без условно проводить нельзя (например в источнике документ сняли с проведения или пометили на удаления, нужно в получателе сделать тоже самое, иначе данные будут расходиться, ведь мы уже выгрузили этот документ, так как он был проведен)

    Reply
  8. mig2k

    Однако, не работает:

    Ошибка исполнения обработчика: ПКО_ПриВыгрузке_ПоступлениеТМЦ

    — Поле агрегатного объекта не обнаружено (СоздатьУзел)

    Говорит, у этого объекта нет такого метода:

    УзелПараметра = DOMDocument.СоздатьУзел(1, «ЗначениеСтатуса», «»);

    Reply
  9. xazrad

    (10) попробуй так

    УзелПараметра = DOMDocument.createNode(1, «ЗначениеСтатуса», «»);

    УзелПараметра.setAttribute(«ИмяПараметра», «Статус»);

    Если Источник.Проведен()=1 тогда

    Статус = «Проведен»;

    ИначеЕсли Источник.ПометкаУдаления()=1 тогда

    Статус = «ПомеченНаУдаление»;

    Иначе

    Статус = «НеПроведен»;

    КонецЕсли;

    УзелПараметра.setAttribute(«ЗначениеПараметра», Статус);

    Приемник.appendChild(УзелПараметра);

    Reply
  10. ChessCat

    Пара моментов

    >2 «подправить» модуль загрузки в процедуре «ЗагрузитьДокументV8()»

    В ПКО есть обработчики «При загрузке» и «После загрузки». При чем тут процедура «ЗагрузитьДокументV8()» если речь идет о конвертации между 7.7 и 7.7 ?

    Момент второй. Бросается в глаза

    Если ОбъектБД.ПометкаУдаления() = 1 Тогда

    ОбъектБД.СнятьПометкуУдаления();

    КонецЕсли;

    По всей видимости же не ОбъектБД а Объект

    Reply
  11. K_Andrey

    Выдает ошибку при загрузке:

    Статус = УзелСтатус.ПолучитьАтрибут(«ЗначениеПараметра»);

    (2958)}: Значение не представляет агрегатный объект (ПолучитьАтрибут)

    Reply
  12. K_Andrey

    Разобрался

    Reply
  13. Vigor06

    Не получается подправить под конвертацию 8.2 УТ -> 7.7 Учет и отчетность предпринимателя

    Во 2м шаге,как я правильно понял,меняем

     ЗаписатьОбъект(ОбъектБД);
    
    Если ПустоеЗначение(ПометкаУдаления) = 1 Тогда
    Если Объект.ПометкаУдаления() = 1 Тогда    ОбъектБД.СнятьПометкуУдаления();  КонецЕсли;
    Иначе
    Если Объект.ПометкаУдаления() = 0 Тогда    ОбъектБД.Удалить(0);  КонецЕсли;
    КонецЕсли

    на

    ЗаписатьОбъект(ОбъектБД);
    УзелСтатус = Объект.ВыбратьУзел(«ЗначениеСтатуса»);
    Статус      =   УзелСтатус.ПолучитьАтрибут(«ЗначениеПараметра»);
    
    Если Статус = «Проведен» Тогда
    Если ОбъектБД.ПометкаУдаления() = 1 Тогда
    ОбъектБД.СнятьПометкуУдаления();
    КонецЕсли;
    
    Попытка
    ОбъектБД.Провести();
    Исключение
    Сообщить(«»+ОписаниеОшибки());
    КонецПопытки;
    
    ИначеЕсли Статус = «ПомеченНаУдаление»  Тогда
    ОбъектБД.Удалить(0);
    Иначе
    Если ОбъектБД.Проведен()=1 Тогда
    ОбъектБД.СделатьНеПроведенным();
    ИначеЕсли ОбъектБД.ПометкаУдаления() =1 Тогда
    ОбъектБД.СнятьПометкуУдаления();
    КонецЕсли;
    КонецЕсли;

    Показать

    А вот как правильно прописать в правилах конвертации шаг1 — ну никак не могу((

    Reply
  14. Nik777x

    (15) Vigor06, Также пытаюсь перенести документы из УТ 8.2 11.1 в Тис 7.7. Примеров переноса из 7.7 в 7.7 и из 8.2 в 8.2 достаточно, а как правильно описать из 8.2 в 7.7 пока не нашел. Vigor06 если разобрался подскажи как сделал.

    Reply
  15. Xershi

    Как решить вопрос проведения документов в конвертации 8.2 -> 7.7 кто разобрался?

    Reply

Leave a Comment

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