--- title: Чтение XML slug: общие-обмен-данными-чтение-файлов-примеры/чтение-xml --- ## С помощью XDTO ```bsl &НаКлиенте Асинх Процедура ПрочитатьФайл(Команда) Расширение = "xml"; ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов; ПараметрыДиалога.Заголовок = "Выберите файл"; ПараметрыДиалога.Фильтр = ФильтрПоРасширению(Расширение); ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(,,,ПараметрыДиалога); Если ОписаниеФайла = Неопределено Тогда Возврат; КонецЕсли; АдресДанных = ОписаниеФайла.Адрес; Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение; ПрочитатьФайлНаСервере(АдресДанных, Расширение); КонецПроцедуры &НаСервере Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение) ДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанных); ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение); ДанныеФайла.Записать(ПутьКФайлу); СоответствиеПолей = Новый Соответствие; СоответствиеПолей.Вставить("name", "Наименование"); СоответствиеПолей.Вставить("fullname", "НаименованиеПолное"); СоответствиеПолей.Вставить("partner_type", "ВидКонтрагента"); СоответствиеПолей.Вставить("inn", "ИНН"); СоответствиеПолей.Вставить("kpp", "КПП"); СоответствиеПолей.Вставить("phone", "Телефон"); СоответствиеПолей.Вставить("email", "ЭлектроннаяПочта"); СоответствиеПолей.Вставить("is_customer", "Покупатель"); СоответствиеПолей.Вставить("is_supplier", "Поставщик"); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ПутьКФайлу); ДанныеXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); // Если элемент в коллекции один, то тип будет "ОбъектXDTO", который в цикле не обойти // Создаем в таком случае принудительно массив Если ТипЗнч(ДанныеXDTO.Partner) = Тип("ОбъектXDTO") Тогда МассивКонтрагентовXDTO = Новый Массив; МассивКонтрагентовXDTO.Добавить(ДанныеXDTO.Partner); Иначе МассивКонтрагентовXDTO = ДанныеXDTO.Partner; КонецЕсли; Для каждого ОбъектXDTO Из МассивКонтрагентовXDTO Цикл НоваяСтрока = Объект.ДанныеФайла.Добавить(); СвойстваXDTO = ОбъектXDTO.Свойства(); Для каждого СвойствоXDTO Из СвойстваXDTO Цикл ИмяСвойства = СвойствоXDTO.Имя; Если ТипЗнч(ОбъектXDTO[ИмяСвойства]) = Тип("ОбъектXDTO") Тогда Продолжить; КонецЕсли; ИмяРеквизита = СоответствиеПолей.Получить(ИмяСвойства); Если ИмяРеквизита <> Неопределено Тогда НоваяСтрока[ИмяРеквизита] = ОбъектXDTO[ИмяСвойства]; КонецЕсли; КонецЦикла; КонецЦикла; ЧтениеXML.Закрыть(); УдалитьФайлы(ПутьКФайлу); КонецПроцедуры ```