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

Вакансии

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

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

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

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

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