Архив рубрики ‘Обмен данными XML’


Правда чтобы до конца создать полноценную выгрузку, в другую базу придется прописать еще все реквизиты.  Контрагенты, Договора, Номенклатура и т.д….

&НаСервереБезКонтекста
Процедура ВыгрузитьСервер(Ссылка)
ДокументХМЛ=Новый ЗаписьXML ;
ДокументХМЛ.ОткрытьФайл(«c:\1c\doc.xml»);
ДокументХМЛ.ЗаписатьОбъявлениеXML();
ДокументХМЛ.ЗаписатьНачалоЭлемента(«Root»);
ТипXML=XMLТипЗнч(Ссылка);
ДокументХМЛ.ЗаписатьНачалоЭлемента(ТипXML.ИмяТипа, ТипXML.URIПространстваИмен);
Для каждого Реквизит Из Ссылка.Метаданные().Реквизиты Цикл
ЗаписатьЭлементХМЛ(ДокументХМЛ, Ссылка[Реквизит.Имя],Реквизит.Имя);
КонецЦикла;
Для каждого ТабличнаяЧасть Из Ссылка.Метаданные().ТабличныеЧасти Цикл
ДокументХМЛ.ЗаписатьНачалоЭлемента(«ТабличнаяЧасть»);
ДокументХМЛ.ЗаписатьАтрибут(«Имя»,ТабличнаяЧасть.Имя);
Для каждого Строка из Ссылка[ТабличнаяЧасть.Имя] Цикл
ДокументХМЛ.ЗаписатьНачалоЭлемента(«СтрокаТабличнойЧасти»);
Для каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл
ЗаписатьЭлементХМЛ(ДокументХМЛ, Строка[Реквизит.Имя],Реквизит.Имя);
КонецЦикла;
ДокументХМЛ.ЗаписатьКонецЭлемента();
КонецЦикла;
ДокументХМЛ.ЗаписатьКонецЭлемента();
КонецЦикла;
ДокументХМЛ.ЗаписатьКонецЭлемента();
ДокументХМЛ.ЗаписатьКонецЭлемента();
ДокументХМЛ.Закрыть();
КонецПроцедуры // Выгрузить()
&НаСервереБезКонтекста
Процедура ЗаписатьЭлементХМЛ(Документ, Значение, ИмяРеквизита)
ТипXML=XMLТипЗнч(Значение);
Если ТипXML=Неопределено тогда
Сообщить(«Значение не определено «+ Значение);
иначе
Документ.ЗаписатьНачалоЭлемента(ТипXML.ИмяТипа, ТипXML.URIПространстваИмен);
Документ.ЗаписатьАтрибут («Имя», ИмяРеквизита);
Документ.ЗаписатьТекст(XMLСтрока(Значение));
Документ.ЗаписатьКонецЭлемента();
КонецЕсли;
КонецПроцедуры


В управлении торговлей 11 в справочнике Контрагенты нет ни групп, ни кодов. Привожу код, если вдруг понадобится с группами выгружать. При выгрузки все передаем в Атрибуты

&НаСервереБезКонтекста
Процедура ВыгрузкаНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| Контрагенты.ЭтоГруппа,
| Контрагенты.Наименование,
| Контрагенты.Код,
| Контрагенты.Родитель
|ИЗ
| Справочник.Контрагенты КАК Контрагенты»;

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Файл=Новый ЗаписьXML;
Файл.ОткрытьФайл(«c:\1c\upload.xml»);
Файл.ЗаписатьОбъявлениеXML();
Файл.ЗаписатьНачалоЭлемента(«Root»);
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
файл.ЗаписатьНачалоЭлемента(«Контрагент»);
Файл.ЗаписатьАтрибут(«Код», ВыборкаДетальныеЗаписи.Код);
Файл.ЗаписатьАтрибут(«ЭтоГруппа»,?( ВыборкаДетальныеЗаписи.ЭтоГруппа,»1″,»0″));
Файл.ЗаписатьАтрибут(«Наименование», ВыборкаДетальныеЗаписи.Наименование);
если ВыборкаДетальныеЗаписи.Родитель= Неопределено тогда
продолжить
иначе
Файл.ЗаписатьАтрибут(«Родитель»,Строка(ВыборкаДетальныеЗаписи.Родитель));
КонецЕсли;
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;
Файл.ЗаписатьКонецЭлемента();
Файл.Закрыть();

КонецПроцедуры // ()

При загрузке

&НаСервереБезКонтекста
Процедура ЗагрузитьНаСервере()

Файл=Новый ЧтениеXML;
Файл.ОткрытьФайл(«c:\1c\upload.xml»);
Пока Файл.Прочитать() Цикл
Если Файл.ТипУзла=ТипУзлаXML.НачалоЭлемента Тогда
Если Файл.Имя<>»Контрагент» Тогда
Продолжить;
КонецЕсли;
Пока Файл.ПрочитатьАтрибут() Цикл
Если Файл.Имя=»Код» Тогда
код=Файл.Значение;
ИначеЕсли Файл.Имя=»ЭтоГруппа» тогда
ЭтоГруппа=?(Файл.Значение=»0″,Ложь,Истина);
ИначеЕсли Файл.Имя=»Наименование» тогда
Наименование=Файл.Значение;
ИначеЕсли Файл.Имя=»Родитель» тогда
Родитель=Файл.Значение;
КонецЕсли;
КонецЦикла;
Если НЕ ЗначениеЗаполнено(Справочники.Контрагенты.НайтиПоНаименованию(Наименование)) Тогда
Если ЭтоГруппа Тогда
продолжить
// Контрагент=Справочники.Контрагенты.СоздатьГруппу();
Иначе
Контрагент=Справочники.Контрагенты.СоздатьЭлемент();
КонецЕсли;
Контрагент.Наименование=Наименование;
//Если не ЭтоГруппа Тогда
//Контрагент.Родитель=Родитель;
// КонецЕсли;
Контрагент.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
Файл.Закрыть();
КонецПроцедуры // ЗагрузитьНаСервере()


Обработка.

&НаКлиенте
Процедура Выгрузка(Команда)
ВыгрузкаНаСервере();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ВыгрузкаНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| Контрагенты.ЭтоГруппа,
| Контрагенты.Наименование,
| Контрагенты.Код
|ИЗ
| Справочник.Контрагенты КАК Контрагенты»;

РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Файл=Новый ЗаписьXML;
Файл.ОткрытьФайл(«c:\1c\upload.xml»);
Файл.ЗаписатьОбъявлениеXML();
Файл.ЗаписатьНачалоЭлемента(«Root»);
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
файл.ЗаписатьНачалоЭлемента(«Контрагент»);
Файл.ЗаписатьАтрибут(«Код», ВыборкаДетальныеЗаписи.Код);
Файл.ЗаписатьАтрибут(«ЭтоГруппа»,?( ВыборкаДетальныеЗаписи.ЭтоГруппа,»1″,»0″));
Файл.ЗаписатьТекст(ВыборкаДетальныеЗаписи.Наименование);
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;
Файл.ЗаписатьКонецЭлемента();
Файл.Закрыть();

КонецПроцедуры // ()

Обработка. В демо бухгалтерии 3.0 получаем:

Получаем: