А подскажите как обрабатывать XML файл со "вложеной" структурой т.е.
<?xml version="1.0" encoding="UTF-8"?>
<Корневой ИмяСправочника="ФизическиеЛица">
<!--Началась выгрузка-->
<ЭлементСправочника>
<Код>000000004</Код>
<Наименование>Барашко Ирина Георгиевна</Наименование>
<Таблица>
<НомерСтрока>1</НомерСтрока>
<ЗначениеСтроки>Бла-бла-бла</ЗначениеСтроки>
</Таблица>
</ЭлементСправочника>
и так далее...
<?xml version="1.0" encoding="UTF-8"?>
<Корневой ИмяСправочника="ФизическиеЛица">
<!--Началась выгрузка-->
<ЭлементСправочника>
<Код>000000004</Код>
<Наименование>Барашко Ирина Георгиевна</Наименование>
<Таблица>
<НомерСтрока>1</НомерСтрока>
<ЗначениеСтроки>Бла-бла-бла</ЗначениеСтроки>
</Таблица>
</ЭлементСправочника>
и так далее...
По теме из базы знаний
- Загрузка электронной накладной в 1С 8.1 Розница. Аптека
- Алкогольная декларация для 1С 8.1, 8.2, 8.3 (1, 2, 3, 4, 5, 6, 7, 8 формы) УТ10.2/10.3, УТ11, УПП, КА, БП2.0/3.0, БП КОРП, Розница 1.0/2.1, Далион, Астор, УТАП и др. с подписью и шифрованием, редакция 2.3
- Загрузка из EXCEL в 1С. Чтение файла XLSX средствами 1С. ЧтениеXML
- Доработка конвертации данных КД2 (версии 2.1). Расширенная диагностическая информация при выгрузке по правилам из 1С 7.7 и при загрузке в 1С 7.7
- Загрузка в 1С: Бухгалтерию 3.0 КОРП из "БЭСТ-5.Аптека". Подходит для УСН 15%
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Здравствуйте!
Хотелось бы узнать как загрузить из XML файла произвольной структуры:
Может быть кто-то занимался такой загрузкой?
И вообще как мне загрузить из другой системы, например написанной на Java, любой xml файл?
Структура справочников естественно разная, пространство имен прописать в файл не получится.
Хотелось бы узнать как загрузить из XML файла произвольной структуры:
<?xml version="1.0" encoding="UTF-8"?>
<Корневой ИмяСправочника="ФизическиеЛица">
<!--Началась выгрузка-->
<ЭлементСправочника>
<Код>000000004</Код>
<Наименование>Барашко Ирина Георгиевна</Наименование>
</ЭлементСправочника>
<ЭлементСправочника>
<Код>000000008</Код>
<Наименование>Захаров Виктор Николаевич</Наименование>
</ЭлементСправочника>
<ЭлементСправочника>
<Код>000000003</Код>
<Наименование>Карасев Юрий Николаевич</Наименование>
</ЭлементСправочника>
<ЭлементСправочника>
<Код>000000005</Код>
<Наименование>Маркина Алла Константиновна</Наименование>
</ЭлементСправочника>
<ЭлементСправочника>
<Код>000000006</Код>
<Наименование>Самкова Анна Николаевна</Наименование>
</ЭлементСправочника>
<ЭлементСправочника>
<Код>000000007</Код>
<Наименование>Широков Андрей Юрьевич</Наименование>
</ЭлементСправочника>
</Корневой>
ПоказатьМожет быть кто-то занимался такой загрузкой?
И вообще как мне загрузить из другой системы, например написанной на Java, любой xml файл?
Структура справочников естественно разная, пространство имен прописать в файл не получится.
Неужели никто не сталкивался? Как загрузить данные из xml в 1с? Как мне сначала прочитать значение из xml, а потом создать новый элемент в справочнике, если Наименование не присутствует в справочнике?! А если присутствует, необходимо же их сравнить каким-то образом? У кого-нибудь есть ответы?
Спасибо за подсказку.
Ок приведу пример своего кода, для создания нового элемента.
Непоятно как мне присвоить все реквизиты из xml нужно же поочереди проходить все строки в xml, а значения меняются, тип то у меня один - "текст".
Т.е. в данном случае Код успешно добавляю, а как потом добавить Наименование?
Ок приведу пример своего кода, для создания нового элемента.
Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика.
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл("doc3.xml");
Пока ЧтениеXML.Прочитать() Цикл
ПолучитьXMLТип(ЧтениеXML);
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Сообщить("Начало " + ЧтениеXML.Имя);
Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
Атрибут = ЧтениеXML.Значение;
Сообщить("атрибут:" + ЧтениеXML.Имя + "=" + ЧтениеXML.Значение);
КонецЦикла;
КонецЕсли;
Если ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
Код = ЧтениеXML.Значение;
Сообщить(ЧтениеXML.Значение);
КонецЕсли;
Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
НовыйЭлемент = Справочники.ФизическиеЛица.СоздатьЭлемент();
НовыйЭлемент.Код = Код;
Сообщить("Конец " + ЧтениеXML.Имя);
КонецЕсли;
КонецЦикла;
ПоказатьНепоятно как мне присвоить все реквизиты из xml нужно же поочереди проходить все строки в xml, а значения меняются, тип то у меня один - "текст".
Т.е. в данном случае Код успешно добавляю, а как потом добавить Наименование?
Вот нашел какую-то древнюю свою обработку:
Организации загружает из XML файла...
ХМЛ=Новый ЧтениеXML;
ХМЛ.ОткрытьФайл(ФайлЗагрузки);
Пока ХМЛ.Прочитать() Цикл
Если ХМЛ.ТипУзла=ТипУзлаXML.НачалоЭлемента Тогда
Если ХМЛ.Имя="CatalogObject.Организации" Тогда
СоответствиеРеквизитов.Очистить();
КонецЕсли;
Имя=ХМЛ.Имя;
ИначеЕсли ХМЛ.ТипУзла=ТипУзлаXML.Текст Тогда
СоответствиеРеквизитов.Вставить(Имя,ХМЛ.Значение);
ИначеЕсли ХМЛ.ТипУзла=ТипУзлаXML.КонецЭлемента Тогда
Если ХМЛ.Имя="CatalogObject.Организации" Тогда
ДобавитьЭлемент(СоответствиеРеквизитов);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ХМЛ.Закрыть();
Процедура ДобавитьЭлемент(СоответствиеРеквизитов)
Орг=Справочники.Организации.ПолучитьСсылку(Новый УникальныйИдентификатор(СоответствиеРеквизитов.Получить("Ref")));
ОргОбъект=Орг.ПолучитьОбъект();
Если ОргОбъект=Неопределено Тогда
ОргОбъект=Справочники.Организации.СоздатьЭлемент();
ОргОбъект.УстановитьСсылкуНового(Орг);
КонецЕсли;
ОргОбъект.ОбменДанными.Загрузка=Истина;
ОргОбъект.Код=СоответствиеРеквизитов.Получить("Code");
ОргОбъект.Наименование=СоответствиеРеквизитов.Получить("Description");
ОргОбъект.ПометкаУдаления=СоответствиеРеквизитов.Получить("DeletionMark");
ОргОбъект.Префикс=СоответствиеРеквизитов.Получить("Префикс");
ОргОбъект.ИНН=СоответствиеРеквизитов.Получить("ИНН");
ОргОбъект.КПП=СоответствиеРеквизитов.Получить("КПП");
// ...
ОргОбъект.Записать();
КонецПроцедуры
ПоказатьОрганизации загружает из XML файла...
Вот Если кому Интересно Тогда выкладываю свой код;
Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика.
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл("C:\1c_bases\Загрузка\doc3.xml");
Имя = ЧтениеXML.Имя;
Массив = Новый Структура(Имя);
Пока ЧтениеXML.Прочитать() Цикл
ПолучитьXMLТип(ЧтениеXML);
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
//НовыйЭлемент = Справочники.ФизическиеЛица.СоздатьЭлемент();
Имя = ЧтениеXML.Имя;
Сообщить("Начало " + ЧтениеXML.Имя);
Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
Атрибут = ЧтениеXML.Значение;
Сообщить("атрибут:" + ЧтениеXML.Имя + "=" + ЧтениеXML.Значение);
КонецЦикла;
КонецЕсли;
Если ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
Массив.Вставить(Имя,ЧтениеXML.Значение);
//НовыйЭлемент.Код = ЧтениеXML.Значение;
Сообщить(ЧтениеXML.Значение);
КонецЕсли;
Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
Если ЧтениеXML.Имя = "ЭлементСправочника" Тогда
ДобавитьЭлемент(Массив);
КонецЕсли;
Сообщить("Конец " + ЧтениеXML.Имя);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьЭлемент(Массив)
НовыйЭлемент = Справочники.ФизическиеЛица.СоздатьЭлемент();
НовыйЭлемент.Код = Массив.Код;
НовыйЭлемент.Наименование = Массив.Наименование;
НовыйЭлемент.Записать();
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот