Конвертация данных 2: передача параметров из выгрузки в загрузку (в том числе и на "ранние" стадии) при обмене из 7.7 в 8.х

Публикация № 137512

Обмен - Перенос данных из 1С7.7 в 1C8.X

48
Кратко суть проблемы можно озвучить цитатой из документации:
"Передача параметра из источника в приемник доступна только при обмене между информационными базами на платформе 1С:Предприятие 8".

Ниже излагается способ передачи глобальных параметров при таком обмене без правки выгруженного из КД 2 модуля выгрузки и без правки самой КД 2.

Итак, в обработчике ПередВыгрузкойДанных пишем код:

УзелПарам=СоздатьУзел("ЗначениеПараметра");
УстановитьАтрибут(УзелПарам,"Имя","НашПараметр1");
УстановитьАтрибут(УзелПарам,"Тип","Строка");
ЗаписатьЭлемент(УзелПарам,"Значение","Значение нашего параметра 1");
ДобавитьПодчиненный(rootNode,УзелПарам);

УзелПарам=СоздатьУзел("ЗначениеПараметра");
УстановитьАтрибут(УзелПарам,"Имя","НашПараметр2");
УстановитьАтрибут(УзелПарам,"Тип","Булево");
ЗаписатьЭлемент(УзелПарам,"Значение","true");
ДобавитьПодчиненный(rootNode,УзелПарам);

после этого данные параметры будут абсолютно штатно загружены в стандартной обработке "Универсальный обмен данными в формате XML (2.1.5)".

Ещё хотелось бы заметить, что содержимое обработчика ПослеЗагрузкиПараметров при таком обмене также не выгружается в файл обмена. Исправить данную оплошность можно так же, записав в обработчике ПередВыгрузкойДанных

АлгПослеЗагрузкиПараметров=
"СтрокаКода1;"+РазделительСтрок+
"СтрокаКода2;"+РазделительСтрок+
"СтрокаКода3;";
ЗаписатьЭлемент(rootNode,"АлгоритмПослеЗагрузкиПараметров",АлгПослеЗагрузкиПараметров); 

Нюанс: чтобы иметь параметры на ранних стадиях загрузки, например, в обработчиках ПередЗагрузкойДанных или ПередОбработкой в ПОД (правилах очистки данных), нужно помещать выгружаемые параметры в корень узла с выгружаемыми данными:

ИмяПараметра="НашПараметр1";
ТипПараметра="Строка";
ЗначениеПараметра="Значение нашего параметра 1";


// Устанавливаем значение параметра в обработчике ПередЗагрузкойДанных
УзелПравил=rootNode.getElementsByTagName("ПравилаОбмена").item(0);
УзелПередЗагрузкой=УзелПравил.getElementsByTagName("ПередЗагрузкойДанных").item(0);
КоллУзлов=УзелПередЗагрузкой.childNodes;
Для НомУзла=0 По КоллУзлов.length-1 Цикл
    ТекУзел=КоллУзлов.item(НомУзла);
    Если (ТекУзел.nodeType=3) Тогда
        // текст элемента
        ТекУзел.nodeValue=РазделительСтрок+"Параметры."+ИмяПараметра+"="+?(ТипПараметра="Строка","""","")+
            ЗначениеПараметра+?(ТипПараметра="Строка","""","")+";"+РазделительСтрок+РазделительСтрок+
            ТекУзел.nodeValue;
        Прервать;
    КонецЕсли;
КонецЦикла;
48

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. kitminsk 188 28.05.12 09:18 Сейчас в теме
Плюсик поставил, но невольно вспомнилось, как русские выпустили в американской школе трех свиней с номерами 1,2 и 4, а американцы веь день искали четвертую свинью.
2. samamoiloff 859 01.06.12 16:46 Сейчас в теме
(0)Благодарю.

А много ли граждан, интересно, практикуют формирование узлов XML, так скажем, "вручную"?
У нас есть группа Конвертация данных, там за три года - три темы создано. Есть ли спрос на сей контент? Хотел сделать платный курс, но сдается, что придется ограничиваться бесплатным.
3. Поручик 4268 01.06.12 17:28 Сейчас в теме
(2) Я иногда практикую, в основном для обеспечения совместимости между релизами конфигурации, иногда использую в алгоритмах КД для переноса однотипных реквизитов.
4. Поручик 4268 01.06.12 17:35 Сейчас в теме
(2) Здесь тоже есть программное формирование узлов
5. CaSH_2004 354 04.06.12 02:14 Сейчас в теме
Плюсую, побольше бы публикаций по КД
7. Totoro 545 16.06.12 17:42 Сейчас в теме
Статья по этой теме: КД: Передача параметров из 7.7 а 8.х
Не плохо бы ссылку в статью добавить.
8. andrewks 1267 16.06.12 22:23 Сейчас в теме
(7) хммм... когда столкнулся с этой проблемой, почему-то гугль не вывел на эту статью, поэтому пришлось решать самому (но плюсанул). к тому же, там не рассмотрен случай, когда значение параметра нужно иметь на ранних стадиях загрузки, до того, как из файла выгрузки будут считаны параметры штатной выгрузкой
9. andrewks 1267 16.06.12 22:26 Сейчас в теме
+(8) а мне как раз надо было получить параметры на ранней стадии - в правилах очистки данных, а они выполняются до штатной загрузки параметров
10. Totoro 545 17.06.12 09:46 Сейчас в теме
(8) Твоя статья тоже нужна, не спорю.
11. 1cmax 150 03.03.13 21:08 Сейчас в теме
12. Дмитрий Рудаков 180 08.11.13 13:48 Сейчас в теме
Возможно ли сделать параметр объекта аналогичным механизмом для обмена 1с 7.7 в 1с 8.2 ?
13. andrewks 1267 08.11.13 14:07 Сейчас в теме
(12) Дмитрий Рудаков, думаю, что возможно
14. volha-77 18 09.03.14 17:43 Сейчас в теме
можно ли сделать аналогично для 7.7 ->7.7? у меня что-то не получилось (организация в документе остается пустой, хотя ошибок не выдает)
15. zqzq 16 21.03.14 15:13 Сейчас в теме
Есть более простое решение, вызвать в ПередВыгрузкойДанных экспортную процедуру модуля обработки УниверсальныйОбменДаннымиXML (V8Exchan82.epf)
Процедура ПередатьОдинПараметрВПриемник(Имя, ИсходноеЗначениеПараметра, ПравилоКонвертации = "") Экспорт
Через неё штатно и выгружаются параметы, см. код обработки.

upd: (16) Да, что-то я не в тему... Но при обмене 8-8 тоже не всё гладко, можно передавать штатно только параметры с галкой "в диалоге", так что пусть будет.
942644; due; IgorXml; +3 Ответить
16. andrewks 1267 22.03.14 08:24 Сейчас в теме
(15) статью читали вообще? "при обмене из 7.7 в 8.х"
17. 942644 22 12.09.17 17:09 Сейчас в теме
(15)
ПередатьОдинПараметрВПриемник

Реально помогло
18. Vasiliy_A 28.11.18 18:52 Сейчас в теме
Доброго времени суток, подскажите, где подробнее об этом методе можно узнать (xml и пр.)?
Пытаюсь применить, rootNode не находит, как его получить?
"Правила конвертации" для обмена из 8.2 в 8.3, обработка v2.1.8.
19. user1090556 11.03.19 12:54 Сейчас в теме
А как передать ТаблицуЗначений таким способом?
Записывается только в таком виде
<ЗначениеПараметра Имя="ТабДокументовУдаления" Тип="ТаблицаЗначений"><Значение>ТаблицаЗначений</Значение></ЗначениеПараметра>
А вот сами данные ТЗ не попадают в файл обмена
Оставьте свое сообщение