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

1С 8.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 |  Дата:   Прочитано: 34316
 0 
Распечатать
Возможно, вас также заинтересует
Cообщение: "Не удалось удалить чеки ККМ!" 2
Пользователь с правами Администратор ККМ проводит Закрытие кассовой смены (Z). Выходит сообщение: " Не удалось удалить чеки ККМ!" ФР печатает Z -отчет, но Отчет о рознчничных продажах не формируется. Необходимо дать роли Администратор ККМ прав
Excel файл как Внешний источник данных 17
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img
Google maps : вывод точек на карту и режим панорамы 9
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора
Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: ... по причине: Ошибка компоновки данных по причине: Ошибка получени
Быстрая загрузка данных большого размера файла Excel в многомерный Массив 0
// OldthiefXXX Перем СерверExcel; Процедура КнопкаВыполнитьНажатие(Кнопка) ФайлХЛС=СерверExcel.Application.Workbooks.Open(ДокументХЛС); КонечнаяСтрокаДанных=ФайлХЛС.ActiveSheet.UsedRange.Rows.Count; КоличествоКолонокДанных=ФайлХЛС.ActiveSheet
Посмотреть все результаты поиска похожих
Комментарии
vaion
28.11.2018 18:44Комментарий: 1
vaion

Доброго времени суток. Хорошая статья, только что-то не могу этим методом воспользоваться, может что-то не так делаю, подскажите. Вываливается ошибка: "Переменная rootnode не определена".

Эта переменная, она откуда берется? Делаю обмен с помощью "Конвертации данных" с 8.2 на 8.3. Обработка 2.1.8.

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.