Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
&НаКлиенте Процедура Выгрузить(Команда) Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); Диалог.Заголовок = "Выберите файл для выгрузки"; Диалог.Фильтр = "xml |*.xml|"; Если Диалог.Выбрать() Тогда Сообщить(Диалог.ПолноеИмяФайла); Иначе Возврат; КонецЕсли; ВыгрузкаXML=ПолучитьXMLФайл(ЭтаФорма.УникальныйИдентификатор); Описание=Новый ОписаниеПередаваемогоФайла(Диалог.ПолноеИмяФайла,ВыгрузкаXML); МассивОписаний=Новый Массив; МассивОписаний.Добавить(Описание); ПолучитьФайлы(МассивОписаний,,,Ложь); КонецПроцедуры |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
&НаКлиенте &НаСервереБезКонтекста Функция Получить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(Данные,РаботникиОбъект); КонецЦикла; Данные.ЗаписатьКонецЭлемента(); Данные.Закрыть(); Двоичное=Новый ДвоичныеДанные(ИмяТемпФайла); Адрес=ПоместитьВоВременноеХранилище(Двоичное,ГУИДФормы); Возврат Адрес; КонецФункции |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
&НаКлиенте &НаКлиенте Процедура Загрузить(Команда) Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл для загрузки"; Диалог.Фильтр = "xml |*.xml|"; // картинки Если Диалог.Выбрать() Тогда Сообщить(Диалог.ПолноеИмяФайла); Иначе Возврат; КонецЕсли; ДвоичныеДанные = Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла); ГуидФормы = Этаформа.УникальныйИдентификатор; Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные,ГуидФормы); ЗагрузитьНаСервере(Адрес); КонецПроцедуры |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
&НаКлиенте &НаСервереБезКонтекста Процедура ЗагрузитьНаСервере(Адрес) ТемпФайл = ПолучитьИмяВременногоФайла("xml"); ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес); ДвоичныеДанные.Записать(ТемпФайл); Данные = Новый ЧтениеXML; Данные.ОткрытьФайл(ТемпФайл); Данные.Прочитать(); Данные.Прочитать(); Пока СериализаторXDTO.ВозможностьЧтенияXML(Данные) Цикл РаботникОбъект = СериализаторXDTO.ПрочитатьXML(Данные); РаботникОбъект.ОбменДанными.Загрузка=Истина; РаботникОбъект.Записать(); КонецЦикла; Данные.Закрыть(); КонецПроцедуры |