![]() |
|
Загрузка YML в 1С | ☑ | ||
---|---|---|---|---|
0
Быдло замкадное
30.11.20
✎
10:21
|
Привет.
Есть у кого шаблон загрузки из YML? Или даже XML видимо.. Вобщем из файла ниже мне нужен только блок "products", т.е. таблица товаров. С минимальным кодингом) <!DOCTYPE yml_catalog SYSTEM "shops.dtd"> <!-- saved from url=(0052)https://XXXXXX.ru/XXXXXX_action4_yml.php?id=151 --> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><yml_catalog date="2020-09-24 15:21:03"> <shop> <name>Заказы акции #4</name> <company>XXXXXX</company> <url>http://XXXXXX.ru/</url> <currencies><currency id="RUR" rate="1"></currency></currencies> <customer> <user_id>95</user_id> <fio>Иван Тест заказа </fio> <city>Москва</city> <phone></phone> </customer> <offer> <id>151</id> <date>2020-09-24 15:21:03</date> <comment>Тестовый заказ. Если Вы получили это письмо - просьба сообщить менеджеру XXXXXX.</comment> <region>Свердловская область</region> <distributor>119</distributor> <kurs>87.5</kurs> <totalsum>61618</totalsum> </offer> <products> <product> <name>XXXXXX</name> <sku>F10638</sku> <fullprice>1015 <price>559</price> <count>1</count> <currencyid>RUR</currencyid> </fullprice></product> <product> <name>XXXXXX</name> <sku>F10638</sku> <fullprice>1015 <price>559</price> <count>1</count> <currencyid>RUR</currencyid> </fullprice></product> </products> </shop> </yml_catalog> </body></html> |
|||
1
Kigo_Kigo
30.11.20
✎
10:25
|
Не, XML это не YML
YML - это формат Яндекса |
|||
2
Kassern
30.11.20
✎
10:26
|
Чтение=Новый ЧтениеXML;
Чтение.ОткрытьФайл(ВыбранноеИмяФайла); Фабрика=Новый ФабрикаXDTO; ОбXDTO=Фабрика.ПрочитатьXML(Чтение); |
|||
3
fisher
30.11.20
✎
10:27
|
(1) Зато YML - это XML
|
|||
4
Быдло замкадное
30.11.20
✎
10:27
|
(2) благодарю, для начала достаточно)
|
|||
5
fisher
30.11.20
✎
10:30
|
||||
6
Быдло замкадное
30.11.20
✎
10:37
|
буду основываться на:
Файл = Новый ЧтениеТекста(ФайлХМЛ,КодировкаТекста.UTF8, "</offer>"); ТекСтрока = Файл.ПрочитатьСтроку(); Пока ТекСтрока <> Неопределено Цикл ТекСтрока = СокрЛП(Файл.ПрочитатьСтроку()); ТекСтрока = ТекСтрока + "</offer>"; Сч = Сч+1; ЧтениеХМЛ = Новый ЧтениеXML; ПараметрыЧтенияХМЛ = Новый ПараметрыЧтенияXML(,,,,,,,,Истина,Истина); ЧтениеХМЛ.УстановитьСтроку(ТекСтрока,ПараметрыЧтенияХМЛ); ПостроительDOM = Новый ПостроительDOM(); ДокументDOM = ПостроительDOM.Прочитать(ЧтениеХМЛ); ЧтениеХМЛ.Закрыть(); Списокoffer=ДокументDOM.ПолучитьЭлементыПоИмени("offer"); Для Каждого НоменклатураУзел ИЗ Списокoffer Цикл //Тута делаем все что нужно КонецЦикла; КонецЦикла; у меня как раз оффер |
|||
7
Быдло замкадное
30.11.20
✎
19:01
|
в итоге как-то так. Вдруг кому пример пригодится:
Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПоле) Экспорт; КаталогФАйла = "C:\"; ДиалогФыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогФыбораФайла.Фильтр = "Файл (*.htm*)|*.htm*"; ДиалогФыбораФайла.Каталог = КаталогФайла; ДиалогФыбораФайла.Заголовок = "Выберите файл"; ДиалогФыбораФайла.ПредварительныйПросмотр = Ложь; ДиалогФыбораФайла.Расширение = "htm"; ДиалогФыбораФайла.ИндексФильтра = 0; ДиалогФыбораФайла.ПроверятьСуществованиеФайла = Ложь; Если ДиалогФыбораФайла.Выбрать() Тогда Имя = ДиалогФыбораФайла.ПолноеИмяФайла; Иначе Сообщить("Файл не выбран!"); Возврат; КонецЕсли; КаталогФайла = ДиалогФыбораФайла.Каталог; ВыбФайл = Новый Файл(ДиалогФыбораФайла.ПолноеИмяФайла); ЧтениеТекста = Новый ЧтениеТекста(ВыбФайл.ПолноеИмя, КодировкаТекста.UTF8); ФайлXML = ЧтениеТекста.Прочитать(); НомерСимволаНачало = СтрНайти(ФайлXML, "<products>"); НомерСимволаКонец = СтрНайти(ФайлXML, "</products>"); КоличествоСимволов = НомерСимволаКонец - НомерСимволаНачало + 11; ФайлXML = Сред(ФайлXML, НомерСимволаНачало, КоличествоСимволов); ЧтениеХМЛ = Новый ЧтениеXML; ЧтениеХМЛ.УстановитьСтроку(ФайлXML); ПостроительDOM = Новый ПостроительDOM(); ДокументDOM = ПостроительDOM.Прочитать(ЧтениеХМЛ); Для Каждого ТабличныеЧасти Из ДокументDOM.ДочерниеУзлы Цикл Для Каждого ЭлементТЧ Из ТабличныеЧасти.ДочерниеУзлы Цикл Для Каждого РеквизитНоменклатуры Из ЭлементТЧ.ДочерниеУзлы Цикл Если РеквизитНоменклатуры.ИмяУзла = "sku" Тогда НоваяСтрока = Объект[ИмяТабличнойЧасти].Добавить(); Артикул = РеквизитНоменклатуры.ТекстовоеСодержимое; НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |