gifts2017

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

Опубликовал xazrad (xazrad) в раздел Обмен - Обмен через XML

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

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

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

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

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

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


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

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


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

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

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

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

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

См. также

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

Комментарии

1. Фаниль Исламов (fancy) 21.12.11 07:33
"1. Добавить код в процедуру ПКО "После загрузки":" - Может быть "После выгрузки" документа - я так понимаю добавляем подчиненный узел "ЗначениеСтатуса" в xml?
2. xazrad (xazrad) 21.12.11 09:53
(1) Совершенно верно. только в ПКО "ПриВыгрузке". Исправил в публикации. Спасибо за замечание
3. Алексей (Alav) 21.12.11 11:49
В принципе если совесть позволяет править конфигу и обмен будет постоянный, то можно добавить 2 общих реквизита Проведен и ПометкаУдаления. Тогда КД при переносе их автоматом будет заполнять и после загрузки уже можно анализировать их и делать телодвижения в документе.


Автору плюс однозначно, просто привел альтернативу решению автора
4. Vladimir (Boroda) 21.12.11 18:51
Интересно, надо попробовать. Автору спасибо.
5. Fomix (fomix) 22.12.11 12:51
А что мешает использовать в обработчике "ПослеЗагрузки" ПКО любого документа волшебные слова "РежимЗаписи = "Проведение""????
6. Модератор раздела Артур Аюханов (artbear) 23.12.11 15:42
Аналогичная разработка давно есть на ИС
http://infostart.ru/public/21069/
Детали уже особо не помню.
У автора сабжа юзается другой подход, верно?
7. xazrad (xazrad) 23.12.11 17:27
(6) другой. как мне известно параметры при переносу из 7.7 в 7.7 не передаются а в http://infostart.ru/public/21069/ используются параметры
8. Модератор раздела Артур Аюханов (artbear) 24.12.11 11:06
(6) Параметры передать для 77 несложно. я в свое время как раз решал задачу проведения документов и решил проблему передачи параметров.
9. Алексей (Alav) 24.12.11 11:26
(5) если не ошибаюсь для 7-ки это не работает. Но в любом случае речь идет о передачи всех документов, а не только проведенных, поэтому так без условно проводить нельзя (например в источнике документ сняли с проведения или пометили на удаления, нужно в получателе сделать тоже самое, иначе данные будут расходиться, ведь мы уже выгрузили этот документ, так как он был проведен)
10. Михаил (mig2k) 27.12.11 11:27
Однако, не работает:
Ошибка исполнения обработчика: ПКО_ПриВыгрузке_ПоступлениеТМЦ
- Поле агрегатного объекта не обнаружено (СоздатьУзел)
Говорит, у этого объекта нет такого метода:
УзелПараметра = DOMDocument.СоздатьУзел(1, "ЗначениеСтатуса", "");
11. xazrad (xazrad) 27.12.11 17:34
(10) попробуй так
УзелПараметра = DOMDocument.createNode(1, "ЗначениеСтатуса", "");
УзелПараметра.setAttribute("ИмяПараметра", "Статус");
Если Источник.Проведен()=1 тогда
Статус = "Проведен";
ИначеЕсли Источник.ПометкаУдаления()=1 тогда
Статус = "ПомеченНаУдаление";
Иначе
Статус = "НеПроведен";
КонецЕсли;

УзелПараметра.setAttribute("ЗначениеПараметра", Статус);
Приемник.appendChild(УзелПараметра);
12. Дмитрий Иванов (ChessCat) 13.02.12 14:41
Пара моментов

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

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

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

По всей видимости же не ОбъектБД а Объект
13. Андрей Канищев (K_Andrey) 09.05.12 11:45
Выдает ошибку при загрузке:

Статус = УзелСтатус.ПолучитьАтрибут("ЗначениеПараметра");
(2958)}: Значение не представляет агрегатный объект (ПолучитьАтрибут)
14. Андрей Канищев (K_Andrey) 09.05.12 12:36
15. Кирилл Самсонов (Vigor06) 07.11.12 11:27
Не получается подправить под конвертацию 8.2 УТ -> 7.7 Учет и отчетность предпринимателя
Во 2м шаге,как я правильно понял,меняем
	ЗаписатьОбъект(ОбъектБД);
	
	Если ПустоеЗначение(ПометкаУдаления) = 1 Тогда
		Если Объект.ПометкаУдаления() = 1 Тогда    ОбъектБД.СнятьПометкуУдаления();  КонецЕсли;
	Иначе
		Если Объект.ПометкаУдаления() = 0 Тогда    ОбъектБД.Удалить(0);  КонецЕсли;
	КонецЕсли
...Показать Скрыть

на
ЗаписатьОбъект(ОбъектБД);
УзелСтатус = Объект.ВыбратьУзел("ЗначениеСтатуса");
Статус      =   УзелСтатус.ПолучитьАтрибут("ЗначениеПараметра");

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

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

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


А вот как правильно прописать в правилах конвертации шаг1 - ну никак не могу((
16. Николай Чернышев (Nik777x) 14.11.13 21:31
(15) Vigor06, Также пытаюсь перенести документы из УТ 8.2 11.1 в Тис 7.7. Примеров переноса из 7.7 в 7.7 и из 8.2 в 8.2 достаточно, а как правильно описать из 8.2 в 7.7 пока не нашел. Vigor06 если разобрался подскажи как сделал.
17. Xer shi (Xershi) 27.11.14 15:18
Как решить вопрос проведения документов в конвертации 8.2 -> 7.7 кто разобрался?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа