Обмен данными XDTO (пример)
&НаКлиенте
Процедура Выгрузить(Команда)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Заголовок = "Выберите файл для выгрузки";
Диалог.Фильтр = "xml |*.xml|";
Если Диалог.Выбрать() Тогда
Сообщить(Диалог.ПолноеИмяФайла);
Иначе
Возврат;
КонецЕсли;
ВыгрузкаXML=ПолучитьXMLФайл(ЭтаФорма.УникальныйИдентификатор);
Описание=Новый ОписаниеПередаваемогоФайла(Диалог.ПолноеИмяФайла,ВыгрузкаXML);
МассивОписаний=Новый Массив;
МассивОписаний.Добавить(Описание);
ПолучитьФайлы(МассивОписаний,,,Ложь);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьXMLФайл(ГУИДФормы)
ИмяТемпФайла = ПолучитьИмяВременногоФайла("xml");
Данные = Новый ЗаписьXML;
Данные.ОткрытьФайл(ИмяТемпФайла);
Данные.ЗаписатьОбъявлениеXML();
Данные.ЗаписатьНачалоЭлемента("Данные");
Фабрика = СоздатьФабрикуXDTO("D:\Приемник.xsd");
РаботникиОбъектТип= Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config","CatalogObject.Работники");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Ссылка РаботникСсылка,
| Сотрудники.ПометкаУдаления DeletionMark,
| Сотрудники.Родитель РодительСсылка,
| Сотрудники.ЭтоГруппа IsFolder,
| Сотрудники.Код Code,
| Сотрудники.Наименование Description,
| Сотрудники.ДатаРождения ДеньРождения,
| Сотрудники.ПричинаУвольнения ПричинаУвольнения
|ИЗ
| Справочник.Сотрудники КАК Сотрудники";
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
РаботникиОбъект = Фабрика.Создать(РаботникиОбъектТип);
РаботникиОбъект.Ref = ВыборкаДетальныеЗаписи.РаботникСсылка.УникальныйИдентификатор();
РаботникиОбъект.Parent = ВыборкаДетальныеЗаписи.РодительСсылка.УникальныйИдентификатор();
Если ВыборкаДетальныеЗаписи.IsFolder Тогда
ЗаполнитьЗначенияСвойств(РаботникиОбъект,ВыборкаДетальныеЗаписи,,"ДеньРождения,ПричинаУвольнения");
Иначе
ЗаполнитьЗначенияСвойств(РаботникиОбъект,ВыборкаДетальныеЗаписи);
РаботникиОбъект.Автомобиль = Неопределено;
РаботникиОбъект.Должность = новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
РаботникиОбъект.Комментарий = "Импорт из исходной базы";
РаботникиОбъект.Организация = новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
КонецЕсли;
Фабрика.ЗаписатьXML(Данные,РаботникиОбъект);
КонецЦикла;
Данные.ЗаписатьКонецЭлемента();
Данные.Закрыть();
Двоичное=Новый ДвоичныеДанные(ИмяТемпФайла);
Адрес=ПоместитьВоВременноеХранилище(Двоичное,ГУИДФормы);
Возврат Адрес;
КонецФункции
&НаКлиенте
Процедура Загрузить(Команда)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл для загрузки";
Диалог.Фильтр = "xml |*.xml|"; // картинки
Если Диалог.Выбрать() Тогда
Сообщить(Диалог.ПолноеИмяФайла);
Иначе
Возврат;
КонецЕсли;
ДвоичныеДанные = Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла);
ГуидФормы = Этаформа.УникальныйИдентификатор;
Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные,ГуидФормы);
ЗагрузитьНаСервере(Адрес);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗагрузитьНаСервере(Адрес)
ТемпФайл = ПолучитьИмяВременногоФайла("xml");
ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
ДвоичныеДанные.Записать(ТемпФайл);
Данные = Новый ЧтениеXML;
Данные.ОткрытьФайл(ТемпФайл);
Данные.Прочитать();
Данные.Прочитать();
Пока СериализаторXDTO.ВозможностьЧтенияXML(Данные) Цикл
РаботникОбъект = СериализаторXDTO.ПрочитатьXML(Данные);
РаботникОбъект.ОбменДанными.Загрузка=Истина;
РаботникОбъект.Записать();
КонецЦикла;
Данные.Закрыть();
КонецПроцедуры
Орфографическая ошибка в Этаформа: Этаформа Описание дублирует название. Удалите описание, если информации в заголовке достаточно.
ВыполнитьОбменДаннымиПоСценариюОбменаДанными (БСП)
ИдентификаторОбменДанными (БСП)
ПриоритетныеДанныеОбмена (БСП)
Параметр данных при компоновке результата в модуле отчета