Чтение данных с сайта в формате XML и загрузка в 1С При разработке веб проекта нам потребовалось получать с одного сайта данные в формате XML и загружать их в 1С.
Сайт выдает XML вида (Ссылка на этот xml в коде, внизу):
Код 1C v 8.3 This XML file does not appear to have any style information associated with it. The document tree is shown below.
< updates version= "1.0" generator= "SEOBudget" url= "http://seobudget.ru/updates/" >
< update id= "cy" name= "Обновление тИЦ Яндекса" >
< date id= "1823" index= "1419324939" timestamp= "1419324939" > 23.12 . 2014 11 : 55 : 39 MSK< / date>
< date id= "1792" index= "1415776885" timestamp= "1415776885" > 12.11 . 2014 10 : 21 : 25 MSK< / date>
< date id= "1760" index= "1412923802" timestamp= "1412924102" > 10.10 . 2014 10 : 55 : 02 MSK< / date>
< / update>
< update id= "serp" name= "Обновление поисковой выдачи Яндекса" >
< date id= "1872" index= "1424898000" timestamp= "1425604249" > 06.03 . 2015 04 : 10 : 49 MSK< / date>
< date id= "1871" index= "1423602000" timestamp= "1425586715" > 05.03 . 2015 23 : 18 : 35 MSK< / date>
< date id= "1868" index= "1423602000" timestamp= "1425402241" > 03.03 . 2015 20 : 04 : 01 MSK< / date>
< / update>
< update id= "yaca" name= "Обновление Яндекс.Каталога" >
< date id= "1875" index= "1425931200" timestamp= "1425973201" > 10.03 . 2015 10 : 40 : 01 MSK< / date>
< date id= "1874" index= "1425758400" timestamp= "1425886502" > 09.03 . 2015 10 : 35 : 02 MSK< / date>
< date id= "1873" index= "1425585600" timestamp= "1425628803" > 06.03 . 2015 11 : 00 : 03 MSK< / date>
< / update>
< update id= "pr" name= "Обновление Google PR" >
< date id= "1512" index= "1386353345" timestamp= "1386353345" > 06.12 . 2013 22 : 09 : 05 MSK< / date>
< date id= "1265" index= "1360130400" timestamp= "1360130400" > 06.02 . 2013 10 : 00 : 00 MSK< / date>
< date id= "1196" index= "1352376123" timestamp= "1352376123" > 08.11 . 2012 16 : 02 : 03 MSK< / date>
< / update>
< update id= "user" name= "Обновление ПФ в Яндексе" >
< date id= "1799" index= "1415950021" timestamp= "1416986821" > 26.11 . 2014 10 : 27 : 01 MSK< / date>
< date id= "1763" index= "1409237032" timestamp= "1413211432" > 13.10 . 2014 18 : 43 : 52 MSK< / date>
< date id= "1665" index= "1400617705" timestamp= "1401222505" > 28.05 . 2014 00 : 28 : 25 MSK< / date>
< / update>
< / updates> < br>
В результате была написана обработка загрузки данных с сайта в 1С, ее код:
Код 1C v 8.3 &НаСервере
Функция ЧтениеXMLВДерево(Путь)
Дерево = Новый ДеревоЗначений;
Дерево. Колонки. Добавить( "Имя" ) ;
Дерево. Колонки. Добавить( "Значение" ) ;
XMLФайл = Новый ЧтениеXML;
XMLФайл. ОткрытьФайл( Путь) ;
ПрочитатьXMLПоТегам( XMLФайл, Дерево. Строки) ;
XMLФайл. Закрыть( ) ;
ТекДанные = Неопределено ;
Для каждого СтрокаП из Дерево. Строки Цикл
Для каждого СтрокаВ из СтрокаП. Строки Цикл
Для каждого СтрокаТ из СтрокаВ. Строки Цикл
Если СтрокаТ. Значение = "cy" тогда
ТекДанные = Перечисления. Показатель. TiC;
ИначеЕсли СтрокаТ. Значение = "serp" тогда
ТекДанные = Перечисления. Показатель. SYa;
ИначеЕсли СтрокаТ. Значение = "yaca" тогда
ТекДанные = Перечисления. Показатель. CatYa;
ИначеЕсли СтрокаТ. Значение = "pr" тогда
ТекДанные = Перечисления. Показатель. RP;
ИначеЕсли СтрокаТ. Значение = "user" тогда
ТекДанные = Перечисления. Показатель. PFYa;
КонецЕсли ;
Для каждого СтрокаД из СтрокаТ. Строки Цикл
Если СтрокаД. Имя= "timestamp" Тогда
ДатаИзменения = МестноеВремя( '19700101 '+ СтрокаД. значение) ;
НовЗапись = РегистрыСведений. ТиЦиRP. СоздатьМенеджерЗаписи( ) ;
НовЗапись. Показатель = ТекДанные;
НовЗапись. Период = ДатаИзменения;
НовЗапись. Записать( ) ;
КонецЕсли ;
КонецЦикла ;
КонецЦикла ;
КонецЦикла ;
КонецЦикла ;
КонецФункции
&НаСервереБезКонтекста
Процедура ПрочитатьXMLПоТегам(XMLФайл, ТекущийНаборСтрок)
Пока XMLФайл. Прочитать( ) Цикл
Если XMLФайл. ТипУзла = ТипУзлаXML. НачалоЭлемента Тогда
НоваяСтрока = ТекущийНаборСтрок. Добавить( ) ;
НоваяСтрока. Имя = XMLФайл. Имя;
НоваяСтрока. Значение = "" ;
Пока XMLФайл. ПрочитатьАтрибут( ) Цикл
НоваяСтрокаАтрибут = НоваяСтрока. Строки. Добавить( ) ;
НоваяСтрокаАтрибут. Имя = XMLФайл. Имя;
НоваяСтрокаАтрибут. Значение = СокрЛП( XMLФайл. Значение) ;
КонецЦикла ;
ПрочитатьXMLПоТегам( XMLФайл, НоваяСтрока. Строки) ;
ИначеЕсли XMLФайл. ТипУзла = ТипУзлаXML. КонецЭлемента Тогда
Возврат ;
ИначеЕсли XMLФайл. ТипУзла = ТипУзлаXML. Текст Тогда
ТекущийНаборСтрок. Родитель. Значение = СокрЛП( XMLФайл. Значение) ;
Иначе
Сообщить( "Тип узла: " + XMLФайл. ТипУзла + " НЕ ОБРАБОТАН" , СтатусСообщения. Важное) ;
Конецесли ;
КонецЦикла ;
КонецПроцедуры
&НаКлиенте
Процедура СборXML(Команда)
ЧтениеXMLВДерево( "http://seobudget.ru/downloads/updates.xml" ) ;
КонецПроцедуры
Результат загруженный в регистр сведений:
Категория:
Работа с Интернет, Почтой (Mail), FTP Работаем с XML используя ЧтениеXML и ЗаписьXML Примеры кода для Записи данных в XML файл и его последующего Чтения:
Код 1C v 8.3 &НаКлиенте
Функция ВывестиЭлем(ХМЛ,Знач Смещ) ;
Рез= 1 ;
Попытка
Пока ХМЛ. Прочитать( ) Цикл
ТипУзла= ХМЛ. ТипУзла;
Если ( ТипУзла= ТипУзлаXML. НачалоЭлемента) Тогда
Смещ= Смещ+ " " ;
Сообщить( Смещ+ "Элемент " + ХМЛ. Имя+ ":" , СтатусСообщения. Важное) ;
Пока ( ХМЛ. ПрочитатьАтрибут( ) ) Цикл
Сообщить( Смещ+ "Атрибут: " + ХМЛ. Имя+ ", значение: <" + ХМЛ. Значение+ ">" ) ;
КонецЦикла ;
ИначеЕсли ( ТипУзла= ТипУзлаXML. КонецЭлемента) Тогда
Смещ= Лев( Смещ, СтрДлина( Смещ) - 4 ) ;
ИначеЕсли ( ТипУзла= ТипУзлаXML. Текст) Тогда
Сообщить( Смещ+ "Текст элемента: <" + ХМЛ. Значение+ ">" ) ;
ИначеЕсли ( ТипУзла= ТипУзлаXML. СекцияCDATA) Тогда
Сообщить( Смещ+ "CDATA: <" + ХМЛ. Значение+ ">" ) ;
ИначеЕсли ( ТипУзла= ТипУзлаXML. Комментарий) Тогда
Сообщить( Смещ+ "Комментарий: <" + ХМЛ. Значение+ ">" , СтатусСообщения. Информация) ;
Иначе
Сообщить( Смещ+ "Элемент " + ХМЛ. Имя+ ":" ) ;
Сообщить( Смещ+ "Тип: " + ХМЛ. Значение) ;
КонецЕсли ;
КонецЦикла ;
Исключение
Сообщить( ОписаниеОшибки( ) ) ;
Рез= 0 ;
КонецПопытки ;
Возврат Рез;
КонецФункции
&НаКлиенте
Процедура ВыгрузитьХМЛ(ИмяФайла) Экспорт
ХМЛ= Новый ЗаписьXML;
ХМЛ. ОткрытьФайл( ИмяФайла, Новый ПараметрыЗаписиXML( "windows-1251" , , Ложь , Ложь ) ) ;
ХМЛ. ЗаписатьОбъявлениеXML( ) ;
ХМЛ. ЗаписатьНачалоЭлемента( "Файл" ) ;
ХМЛ. ЗаписатьАтрибут( "Атрибут_Файл_1" , "Здесь содержимое Атрибут_Файл_1" ) ;
ХМЛ. ЗаписатьТекст( "Здесь содержимое Файл" ) ;
ХМЛ. ЗаписатьКомментарий( "Далее следует содержимое файла" ) ;
ХМЛ. ЗаписатьНачалоЭлемента( "СодержимоеФайла" ) ;
ХМЛ. ЗаписатьАтрибут( "Атрибут_СодержимоеФайла_1" , "Здесь содержимое Атрибут_СодержимоеФайла_1" ) ;
ХМЛ. ЗаписатьТекст( "Здесь содержимое СодержимоеФайла" ) ;
ХМЛ. ЗаписатьСекциюCDATA( "Это секция CDATA" ) ;
ХМЛ. ЗаписатьКонецЭлемента( ) ;
ХМЛ. ЗаписатьКонецЭлемента( ) ;
ХМЛ. Закрыть( ) ;
ХМЛ= Неопределено ;
ХМЛ= Новый ЧтениеXML;
ХМЛ. ОткрытьФайл( ИмяФайла, Новый ПараметрыЧтенияXML( , , , ТипПроверкиXML. НетПроверки) ) ;
ВывестиЭлем( ХМЛ, "" ) ;
ХМЛ. Закрыть( ) ;
ХМЛ= Неопределено ;
КонецПроцедуры
Категория:
JSON, XML, TXT, CSV, DBF Парсер XML в дерево значений Код 1C v 8.2 УП
&НаСервере
Функция ЧтениеXMLВДерево(Путь)
Дерево = Новый ДеревоЗначений;
Дерево. Колонки. Добавить( "Имя" ) ;
Дерево. Колонки. Добавить( "Значение" ) ;
XMLФайл = Новый ЧтениеXML;
XMLФайл. ОткрытьФайл( Путь) ;
ПрочитатьXMLПоТегам( XMLФайл, Дерево. Строки) ;
XMLФайл. Закрыть( ) ;
Возврат Дерево;
КонецФункции
&НаСервереБезКонтекста
Процедура ПрочитатьXMLПоТегам(XMLФайл, ТекущийНаборСтрок)
Пока XMLФайл. Прочитать( ) Цикл
Если XMLФайл. ТипУзла = ТипУзлаXML. НачалоЭлемента Тогда
НоваяСтрока = ТекущийНаборСтрок. Добавить( ) ;
НоваяСтрока. Имя = XMLФайл. Имя;
НоваяСтрока. Значение = "" ;
Пока XMLФайл. ПрочитатьАтрибут( ) Цикл
НоваяСтрокаАтрибут = НоваяСтрока. Строки. Добавить( ) ;
НоваяСтрокаАтрибут. Имя = XMLФайл. Имя;
НоваяСтрокаАтрибут. Значение = СокрЛП( XMLФайл. Значение) ;
КонецЦикла ;
ПрочитатьXMLПоТегам( XMLФайл, НоваяСтрока. Строки) ;
ИначеЕсли XMLФайл. ТипУзла = ТипУзлаXML. КонецЭлемента Тогда
Возврат ;
ИначеЕсли XMLФайл. ТипУзла = ТипУзлаXML. Текст Тогда
ТекущийНаборСтрок. Родитель. Значение = СокрЛП( XMLФайл. Значение) ;
Иначе
Сообщить( "Тип узла: " + XMLФайл. ТипУзла + " НЕ ОБРАБОТАН" , СтатусСообщения. Важное) ;
Конецесли ;
КонецЦикла ;
КонецПроцедуры
Категория:
JSON, XML, TXT, CSV, DBF Сохранение реквизитов и табличных частей объектов в XML Сохранение производится процедурой СохранитьРеквизитыИТабличныеЧасти. В качестве параметров она принимает сохраняемый объект и имя файла. Ссылочные реквизиты сохраняются в виде GUID.
Код 1C v 8.х Процедура СохранитьРеквизитыИТабличныеЧасти (Объект, ИмяФайлаXML=Неопределено) Экспорт
ФайлXML = Новый ЗаписьXML;
ФайлXML. ОткрытьФайл( ИмяФайлаXML) ;
ФайлXML. ЗаписатьОбъявлениеXML( ) ;
ФайлXML. ЗаписатьНачалоЭлемента( "Root" ) ;
ФайлXML. ЗаписатьАтрибут( "Объект" , Объект. Метаданные( ) . Имя) ;
Для Каждого Реквизит Из Объект. Метаданные( ) . Реквизиты Цикл
ФайлXML. ЗаписатьНачалоЭлемента( "Реквизит" ) ;
ФайлXML. ЗаписатьАтрибут( "Имя" , Реквизит. Имя) ;
ТипЗначения = ТипЗнч( Объект[Реквизит. Имя]) ;
Если Не ТипЗначения = Тип( "Неопределено" ) Тогда
ФайлXML. ЗаписатьАтрибут( "ИмяТипа" , XMLТип( ТипЗначения) . ИмяТипа) ;
ФайлXML. ЗаписатьАтрибут( "URI" , XMLТип( ТипЗначения) . URIПространстваИмен) ;
КонецЕсли ;
ФайлXML. ЗаписатьТекст( XMLСтрока( Объект[Реквизит. Имя]) ) ;
ФайлXML. ЗаписатьКонецЭлемента( ) ;
КонецЦикла ;
Для Каждого ТЧ из Объект. Метаданные( ) . ТабличныеЧасти Цикл
ФайлXML. ЗаписатьНачалоЭлемента( "ТабличнаяЧасть" ) ;
ФайлXML. ЗаписатьАтрибут( "Имя" , ТЧ. Имя) ;
Для Каждого СтрокаТЧ из Объект[ТЧ. Имя] Цикл
ФайлXML. ЗаписатьНачалоЭлемента( "ЭлементКоллекции" ) ;
Для Каждого РеквизитТЧ Из ТЧ. Реквизиты Цикл
ФайлXML. ЗаписатьНачалоЭлемента( "Реквизит" ) ;
ФайлXML. ЗаписатьАтрибут( "Имя" , РеквизитТЧ. Имя) ;
ТипЗначения = ТипЗнч( СтрокаТЧ[РеквизитТЧ. Имя]) ;
Если Не ТипЗначения = Тип( "Неопределено" ) Тогда
ФайлXML. ЗаписатьАтрибут( "ИмяТипа" , XMLТип( ТипЗначения) . ИмяТипа) ;
ФайлXML. ЗаписатьАтрибут( "URI" , XMLТип( ТипЗначения) . URIПространстваИмен) ;
КонецЕсли ;
ФайлXML. ЗаписатьТекст( XMLСтрока( СтрокаТЧ[РеквизитТЧ. Имя]) ) ;
ФайлXML. ЗаписатьКонецЭлемента( ) ;
КонецЦикла ;
ФайлXML. ЗаписатьКонецЭлемента( ) ;
КонецЦикла ;
ФайлXML. ЗаписатьКонецЭлемента( ) ;
КонецЦикла ;
Если Не ФайлXML= Null Тогда
ФайлXML. ЗаписатьКонецЭлемента( ) ;
ФайлXML. Закрыть( ) ;
КонецЕсли ;
КонецПроцедуры
За чтение объекта отвечают процедуры ЗагрузитьРеквизитыИТабличныеЧасти и ЗагрузитьОбъектРекурсивно. Чтобы прочитать объект вызывается первая, ей передаются объект, который необходимо заполнить, и имя файла. Вторая является вспомогательной.
Код 1C v 8.х Процедура ЗагрузитьРеквизитыИТабличныеЧасти(Объект, ИмяФайлаXML=Неопределено) Экспорт
Если Не ИмяФайлаXML = Неопределено Тогда
ФайлXML = Новый ЧтениеXML;
ФайлXML. ОткрытьФайл( ИмяФайлаXML) ;
Пока ФайлXML. Прочитать( ) Цикл
Если ФайлXML. ТипУзла = ТипУзлаXML. НачалоЭлемента Тогда
ЗагрузитьОбъектРекурсивно( ФайлXML, Объект, ФайлXML. Имя) ;
КонецЕсли
КонецЦикла ;
КонецЕсли ;
КонецПроцедуры
Процедура ЗагрузитьОбъектРекурсивно(ФайлXML, Объект, знач ИмяУзла)
ИмяТипа = "" ;
ПространствоИмен = "" ;
Пока ФайлXML. ПрочитатьАтрибут( ) Цикл
Если ФайлXML. Имя = "ИмяТипа" Тогда
ИмяТипа = ФайлXML. Значение;
ИначеЕсли ФайлXML. Имя = "URI" Тогда
ПространствоИмен = ФайлXML. Значение;
КонецЕсли ;
КонецЦикла ;
Пока ФайлXML. Прочитать( ) Цикл
Если ФайлXML. ТипУзла = ТипУзлаXML. КонецЭлемента И ФайлXML. Имя = ИмяУзла Тогда
Возврат ;
ИначеЕсли ФайлXML. ТипУзла = ТипУзлаXML. Текст Тогда
ТипОбъекта = ИзXMLТипа( ИмяТипа, ПространствоИмен) ;
Если НЕ ТипОбъекта = Неопределено тогда
Объект = XMLЗначение( ТипОбъекта, ФайлXML. Значение) ;
КонецЕсли ;
ИначеЕсли ФайлXML. ТипУзла = ТипУзлаXML. НачалоЭлемента Тогда
ИмяТекУзла = ФайлXML. Имя;
Если ФайлXML. Имя = "ЭлементКоллекции" Тогда
ЗагрузитьОбъектРекурсивно( ФайлXML, Объект. Добавить( ) , ИмяТекУзла) ;
Иначе
Если ФайлXML. ПрочитатьАтрибут( ) Тогда
ЗагрузитьОбъектРекурсивно( ФайлXML, Объект[ФайлXML. Значение], ИмяТекУзла) ;
КонецЕсли ;
КонецЕсли ;
КонецЕсли ;
КонецЦикла ;
КонецПроцедуры
В приложенном файле -
Скачивать файлы может только зарегистрированный пользователь! - демонстрационная обработка, позволяющая сохранить ссылочный объект БД в файл и заполнить объект из файла. Заполняемый объект должен быть того же типа, что и сохраненный, а также он должен быть предварительно создан, сохранен в ИБ и выбран в поле "Ссылка".
Категория:
Документы Выгрузка / Загрузка данных посредством XML файлов? В основе работы с XML-файлами лежит технология доступа SAX, которая осуществляет считывание по одному тегу. Для этого существует два типа данных –
ЗаписьXML и
ЧтениеXML .
Запись данных справочника в XML-файл:
Код 1C v 8.х Запись = Новый ЗаписьXML;
Запись. ОткрытьФайл( ПутьКФайлу) ;
Запись. ЗаписатьОбъявлениеXML( ) ;
Запись. ЗаписатьНачалоЭлемента( "Клиенты" ) ;
Выборка = Справочники. Клиенты. Выбрать( ) ;
Пока Выборка. Следующий( ) Цикл
Запись. ЗаписатьНачалоЭлемента( "Клиент" ) ;
Запись. ЗаписатьАтрибут( "Код" , Строка( Выборка. Код) ) ;
Запись. ЗаписатьТекст( Выборка. Наименование) ;
Запись. ЗаписатьКонецЭлемента( ) ;
КонецЦикла ;
Запись. ЗаписатьКонецЭлемента( ) ;
Запись. Закрыть( ) ;
Чтение данных из XML-файла в справочник:
Код 1C v 8.х Чтение = Новый ЧтениеXML;
Чтение. ОткрытьФайл( ПутьКФайлу) ;
Спр= "" ;
Пока Чтение. Прочитать( ) Цикл
Если Чтение. ТипУзла = ТипУзлаXML. НачалоЭлемента Тогда
Если Чтение. Имя= "Клиент" Тогда
Спр = Справочники. Клиенты. СоздатьЭлемент( ) ;
Пока Чтение. ПрочитатьАтрибут( ) Цикл
Если Чтение. Имя= "Код" Тогда
Спр. Код = Число( Чтение. Значение) ;
КонецЕсли ;
КонецЦикла ;
КонецЕсли ;
ИначеЕсли Чтение. ТипУзла = ТипУзлаXML. Текст Тогда
Спр. Наименование = Чтение. Значение;
ИначеЕсли Чтение. ТипУзла = ТипУзлаXML. КонецЭлемента Тогда
Спр. Записать( ) ;
КонецЕсли ;
КонецЦикла ;
Создадим обработку в типовой конфигурации для экспорта плана счетов. Структура xml-файла должна быть такой. Корневой элемент xml-документа соответствует плану счетов в целом. В нем располагаются подчиненные элементы с именем Счет, содержащие информацию о счетах. В качестве содержимого элементов указывается наименование счета. Остальные данные записываются в качестве атрибутов (код, признаки валютного, количественного учета и пр.). В качестве подчиненных элементов для элемента Счет задаются элементы, обозначающие его субсчета с теми же атрибутами. Приведем код процедуры экспорта плана счетов.
Код 1C v 7.x Процедура Выполнить()
Если ЗагрузитьВнешнююКомпоненту( КаталогПрограммы( ) + "v7plus.dll" ) < > 1 Тогда
Предупреждение( "Компонента не обнаружена" ) ;
Возврат ;
КонецЕсли ;
Анализатор= СоздатьОбъект( "AddIn.XMLParser" ) ;
Корень= Анализатор. СоздатьДокумент( ) ;
План= Корень. СоздатьПодчиненныйЭлемент( "ПланСчетов" ) ;
Счет= СоздатьОбъект( "Счет.Основной" ) ;
Родитель= СоздатьОбъект( "Счет.Основной" ) ;
Счет. ВыбратьСчета( ) ;
Пока Счет. ПолучитьСчет( ) = 1 Цикл
Если Счет. Уровень( ) = 1 Тогда
Родитель. НайтиПоКоду( Счет. Код) ;
СчетXML= План. СоздатьПодчиненныйЭлемент( "Счет" ) ;
СчетXML. УстановитьАтрибут( "Код" , Счет. Код) ;
СчетXML. УстановитьАтрибут( "Валютный" , Счет. Валютный) ;
СчетXML. УстановитьАтрибут( "Количественный" , Счет. Количественный) ;
СчетXML. УстановитьАтрибут( "Забалансовый" , Счет. Забалансовый) ;
Если Счет. Активный= 1 Тогда
СчетXML. УстановитьАтрибут( "вид" , "активный" ) ;
ИначеЕсли Счет. Активный= 2 Тогда
СчетXML. УстановитьАтрибут( "вид" , "пассивный" ) ;
Иначе
СчетXML. УстановитьАтрибут( "вид" , "активно-пассивный" ) ;
КонецЕсли ;
СчетXML. Значение= Счет. Наименование;
Иначе
Если Счет. ПринадлежитГруппе( Родитель) = 1 Тогда
СубсчетXML= СчетXML. СоздатьПодчиненныйЭлемент( "Субсчет" ) ;
СубсчетXML. УстановитьАтрибут( "Код" , Счет. Код) ;
СубсчетXML. Значение= Счет. Наименование;
КонецЕсли ;
КонецЕсли ;
КонецЦикла ;
Корень. Записать( КаталогПрограммы( ) + "plan.xml" ) ;
КонецПроцедуры
В результате будет получен файл, вот его фрагмент:
Код
<?xml version="1.0" encoding="windows-12Sl" ?> - <ПланСчетов>
<Счет Код="00" Валютный="0" Количественный="0" Забалансовый="0" вид="активно-пассивный">Вспомогательный</Счет>
- <Счет Код="01" Валютный="0" Количественный="0" Забалансовый="0" вид="активный">
Основные средства
<Субсчет Код="01.1" Валютный="0" Количественный="0" Забалансовый="0"
вид="активный">ОС в организации</Субсчет> <Субсчет Код="01.2" Валютный="0" Количественный="0" Забалансовый="0"
вид="активный">Выбытие ОС</Субсчет> </Счет>
- <Счет Код="02" Валютный="0" Количественный="0" Забалансовый="0" вид="пассивный">
Амортизация ОС
А теперь приведем код для импорта плана счетов из xml-файла в новую конфигурацию. Код модуля соответствующей обработки должен содержать процедуру Выполнить(), которая имеет такой вид.
Код 1C v 7.x Процедура Выполнить()
Если ЗагрузитьВнешнююКомпоненту( КаталогПрограммы( ) + "v7plus.dll" ) < > 1 Тогда
Предупреждение( "Внешняя компонента не найдена" ) ;
Возврат ;
КонецЕсли ;
Анализатор= СоздатьОбъект( "AddIn.XMLParser" ) ;
Файл= Анализатор. СоздатьДокумент( ) ;
Файл. Загрузить( КаталогПрограммы( ) + "plan.xml" ) ;
План= Файл. ВыбратьУзел( "ПланСчетов" ) ;
кол= План. КоличествоПодчиненных( ) ;
Счет= СоздатьОбъект( "Счет.Основной" ) ;
Для инд= 1 по кол Цикл
СчетXML= План. ПолучитьПодчиненныйПоНомеру( инд) ;
КолСубсчетов= СчетXML. КоличествоПодчиненных( ) ;
Если КолСубсчетов> 1 Тогда
Счет. Новый( 1 ) ;
Иначе
Счет. Новый( 0 ) ;
КонецЕсли ;
Счет. Код= СчетXML. ПолучитьАтрибут( "Код" ) ;
Счет. Наименование= СчетXML. Значение;
Счет. Валютный= СчетXML. ПолучитьАтрибут( "Валютный" ) ;
Счет. Количественный= СчетXML. ПолучитьАтрибут( "Количественный" ) ;
Счет. Забалансовый= СчетXML. ПолучитьАтрибут( "Забалансовый" ) ;
Если СчетXML. ПолучитьАтрибут( "вид" ) = "активный" Тогда
Счет. Активный= 1 ;
ИначеЕсли СчетXML. ПолучитьАтрибут( "вид" ) = "пассивный" Тогда
Счет. Активный= 2 ;
Иначе
Счет. Активный= 3 ;
КонецЕсли ;
Счет. Записать( ) ;
Если КолСубсчетов> 1 Тогда
Счет1 = СоздатьОбъект( "Счет.Основной" ) ;
Для инд1 = 2 По кол_субсчетов Цикл
Субсчет= СчетXML. ПолучитьПодчиненныйПоНомеру( инд1 ) ;
Счет1 . Новый( 0 ) ;
Счет1 . Код= Субсчет. ПолучитьАтрибут( "Код" ) ;
Счет1 . Записать( ) ;
КонецЦикла ;
КонецЕсли ;
КонецЦикла ;
Категория:
JSON, XML, TXT, CSV, DBF Как можно загрузить XML-документ произвольной структуры? Код 1C v 8.х
Чтение = Новый ЧтениеXML;
Чтение. ОткрытьФайл( ПутьКФайлу) ;
Пока Чтение. Прочитать( ) Цикл
Если Чтение. ТипУзла = ТипУзлаXML. НачалоЭлемента Тогда
ИмяУзла = Чтение. Имя;
Сообщить( "--" + ИмяУзла) ;
Пока Чтение. ПрочитатьАтрибут( ) Цикл
ТипУзла = Чтение. ТипУзла;
Имя = Чтение. Имя;
Значение = Чтение. Значение;
КонецЦикла ;
ИначеЕсли Чтение. ТипУзла = ТипУзлаXML. Текст Тогда
Сообщить( "Текст:" + Чтение. Значение) ;
ИначеЕсли Чтение. ТипУзла = ТипУзлаXML. КонецЭлемента Тогда
Сообщить( "--Конец:" + Чтение. Имя) ;
Категория:
JSON, XML, TXT, CSV, DBF