helpf.pro
Регистрация
 0 
Распечатать

1С 7.x : КД: Передача параметров из выгрузки в загрузку (в т.ч. и на ранние стадии) при обмене из 7.7 в 8.х

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

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

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

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


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

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

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

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

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

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

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

Автор: andrewks - Источник

Разместил:   Версии: | 7.x | 8.x | 8.2 УП | 8.3 |  Дата:   Прочитано: 32778
 0 
Распечатать
Возможно, вас также заинтересует
Ввести значение, ввод значения 0
//Пример универсального ввода значения Перем ВыбЗнач; Массив = Новый Массив; Массив.Добавить(Тип("Число")); Массив.Добавить(Тип("Строка")); Массив.Добавить(Тип("Дата")); КЧ = Новый КвалификаторыЧисла(12,2); КС = Новый КвалификаторыСтроки(20
Ввод записей в журнал расчетов 1
Добавление записи в журнал расчетов: Метод Новая может быть вызван где угодно, в глобальном модуле, модуле обработок, документов и т.д. Данный метод проверяет корректность заполненных реквизитов журнала расчетов. При вводе новых записей журнал
Вывод (печать) таблицы значений в табличный документ 7
Пример кода быстрая Печать таблицы значений //ТПОтчета - Табличное поле с формы (Таблица значений) с данными ПострПечать = Новый ПостроительОтчета; ПострПечать.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТПОтчета); ПострПечать.МакетОформлени
Задать вопрос пользователю, ответ на вопрос 7
Режим = РежимДиалогаВопрос.ДаНетОтмена; Ответ = Вопрос(" Выполнить?" , Режим, 0); Если Ответ =КодВозвратаДиалога.Да Тогда Сообщить(" Выполнено" ); ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда Сообщить(" Не выполнено" ); КонецЕсли; Режим =
Запись СД из 1С(без ВК и других программ, проверено на ХР/2003) 0
Процедура Сформировать(ДискДляЗаписи=" E:" ,АвтоИзвлечениеСД=0,АвтоЗакрытиеМастера=1) Перем Имя,Каталог; scr=СоздатьОбъект(" MSScriptControl.ScriptControl" ); scr.language=" javascript" ; shell=СоздатьОбъект(" Shell.Application" ); scr.AddOb
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.