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

Вакансии

Программист 1С
Казань
Полный день

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

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

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

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