"Передача параметра из источника в приемник доступна только при обмене между информационными базами на платформе 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;
Прервать;
КонецЕсли;
КонецЦикла;
Плюсик поставил, но невольно вспомнилось, как русские выпустили в американской школе трех свиней с номерами 1,2 и 4, а американцы веь день искали четвертую свинью.
(0)Благодарю.
А много ли граждан, интересно, практикуют формирование узлов XML, так скажем, «вручную»?
Конвертация данных , там за три года — три темы создано. Есть ли спрос на сей контент? Хотел сделать платный курс, но сдается, что придется ограничиваться бесплатным.
У нас есть группа
(2) Я иногда практикую, в основном для обеспечения совместимости между релизами конфигурации, иногда использую в алгоритмах КД для переноса однотипных реквизитов.
(2)Здесь тоже есть программное формирование узлов
Плюсую, побольше бы публикаций по КД
Статья по этой теме:КД: Передача параметров из 7.7 а 8.х
Не плохо бы ссылку в статью добавить.
(7) хммм… когда столкнулся с этой проблемой, почему-то гугль не вывел на эту статью, поэтому пришлось решать самому (но плюсанул). к тому же, там не рассмотрен случай, когда значение параметра нужно иметь на ранних стадиях загрузки, до того, как из файла выгрузки будут считаны параметры штатной выгрузкой
+(8) а мне как раз надо было получить параметры на ранней стадии — в правилах очистки данных, а они выполняются до штатной загрузки параметров
(8) Твоя статья тоже нужна, не спорю.
полезная статья
Возможно ли сделать параметр объекта аналогичным механизмом для обмена 1с 7.7 в 1с 8.2 ?
(12) Дмитрий Рудаков, думаю, что возможно
можно ли сделать аналогично для 7.7 ->7.7? у меня что-то не получилось (организация в документе остается пустой, хотя ошибок не выдает)
Есть более простое решение, вызвать в ПередВыгрузкойДанных экспортную процедуру модуля обработки УниверсальныйОбменДаннымиXML (V8Exchan82.epf)
Через неё штатно и выгружаются параметы, см. код обработки.
upd: (16) Да, что-то я не в тему… Но при обмене 8-8 тоже не всё гладко, можно передавать штатно только параметры с галкой «в диалоге», так что пусть будет.
(15) статью читали вообще? «при обмене из 7.7 в 8.х»
(15)
Реально помогло
Доброго времени суток, подскажите, где подробнее об этом методе можно узнать (xml и пр.)?
Пытаюсь применить, rootNode не находит, как его получить?
«Правила конвертации» для обмена из 8.2 в 8.3, обработка v2.1.8.
А как передать ТаблицуЗначений таким способом?
Записывается только в таком виде
<ЗначениеПараметра Имя=»ТабДокументовУдаления» Тип=»ТаблицаЗначений»><Значение>ТаблицаЗначений</Значение></ЗначениеПараметра>
А вот сами данные ТЗ не попадают в файл обмена