1. user933577 13.03.18 16:13 Сейчас в теме

Загрузка xml в 1с

Есть несколько видов выгрузки данных в xml формат.
Например,

<table name="regcontr">
            <column name="ID">1</column>
            <column name="USNAME">Дом</column>
            <column name="INN">7826652560</column>
        </table>


а есть еще такой вид:

<?xml version="1.0" encoding="windows-1251"?>
<!--Pay--><Root>
	<RegContr>
		<Contr ID="123" SNAME="Дом;" USNAME="Дом;" INN="" KPP="" JADRESS="" FAX="" PHONE="" ACCOUNT="" PADRESS="" OKPO="" OKONH="" BANK="" BIK="" CORACCOUNT="" EMAIL=""/>
	</RegContr>
</Root>


Вид кода, который я нашел, не подходит


&НаСервере
Процедура ПрочитатьXMLФайлНаСервере(Файлик)

	ПутьКФайлу = Файлик[0];
	
	//XML 
	
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
	
	
	СЗ = Новый СписокЗначений;
	
	Пока ЧтениеXML.Прочитать() Цикл
		
		
		Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
			 ЧтениеXML.ПрочитатьАтрибут();
			 Атрибут = ЧтениеXML.Значение;
			КонецЕсли;
		
			
		Если ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
			Если Атрибут = "USNAME" Тогда
				СЗ.Добавить(ЧтениеXML.Значение);		
			КонецЕсли;
			Если Атрибут = "INN" Тогда
				СЗ.Добавить(ЧтениеXML.Значение);		
			КонецЕсли;
				
		КонецЕсли;
		
		Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента and Атрибут="INN" Then 
			СоздатьЭлементСправочника(СЗ);
			
			СЗ.Очистить();
		КонецЕсли;
		
		
		
		
			
		КонецЦикла;
	
КонецПроцедуры

Процедура СоздатьЭлементСправочника(СЗ)
	Если СЗ.Количество() >0 Тогда 
		НовыйЭлемент = Справочники.Поставщики.СоздатьЭлемент();
		НовыйЭлемент.Наименование = СЗ[0].Значение;
		НовыйЭлемент.ИНН =СЗ[1].Значение;
		НовыйЭлемент.Записать();
	КонецЕсли
КонецПроцедуры


&НаКлиенте
Процедура ПрочитатьИзФайлаXML(Команда)
	Режим = режимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияфайла = Новый ДиалогВыборафайла(Режим);
Фильтр = "xml|*.xml";
ДиалогОткрытияфайла.фильтр = фильтр;
Если ДиалогОткрытияфайла.Выбрать() Тогда 
	файлик = ДиалогОткрытияфайла.Выбранныефайлы;
	ПрочитатьXMLФайлНаСервере (Файлик);
	КонецЕсли;

ОбновитьИнтерфейс();
КонецПроцедуры
Показать


Вопрос, что нужно изменить?
Ответы
Избранное Подписка Сортировка: Древо
2. gradi 3 13.03.18 16:29 Сейчас в теме
Сериализатором пробовали прочитать?
3. FesenkoA 30 13.03.18 16:52 Сейчас в теме
4. palsergeich 13.03.18 21:35 Сейчас в теме
Построчное чтение XML - ахронизм, и оправдано ИМХО если предполагается что файлы могут быть гигантского размера и все остальные методы отказываются с ними работать.
Объектная техника позволяет описать простые, небольшие и легкие для понимания и изменения алгоритмы.
Если файлы будут небольшие по размеру - то проще всего для понимания через DOM.
Технологичнее и быстрее по скорости чтения - через XDTO но там есть ньюансы.
Выше постом хорошая ссылка по теме, рекомендую ознакомиться.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день

Консультант-аналитик 1С (ЗУП)
Санкт-Петербург
Полный день