Создание файла XML на основе XSD (технология XDTO)
По теме из базы знаний
Найденные решения
Не совсем понимаю, что Вы хотите сделать, может как-то вот так:
ТипXDTO = ФабрикаXDTO.Тип("МойПакет", "МойТипИзПакета");
XDTOЗначение = ФабрикаXDTO.Создать(ТипXDTO);
Excel = Новый COMОбъект("Excel.Application");
Excel.Visible = 0;
Excel.WorkBooks.Open(ИмяФайлаЗагрузки);
ExcelDoc = Excel.WorkSheets(ИмяЛиста);
XDTOЗначение.ПолеШапки1 = ИмяФайлаЗагрузки;
XDTOЗначение.ПолеШапки2 = ИмяЛиста;
Для НомПП = НомерНачало по НомерКонец Цикл
XDTOРасшифровка = ФабрикаXDTO.Создать(XDTOЗначение.Расшифровка.ВладеющееСвойство.Тип);
XDTOРасшифровка.ПолеРасшифровки1 = СокрЛП(ExcelDoc.Cells(НомПП,1).Value);
XDTOРасшифровка.ПолеРасшифровки2 = СокрЛП(ExcelDoc.Cells(НомПП,2).Value);
XDTOРасшифровка.ПолеРасшифровки3 = СокрЛП(ExcelDoc.Cells(НомПП,3).Value);
//...
XDTOЗначение.Расшифровка.Добавить(XDTOРасшифровка);
КонецЦикла;
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, XDTOЗначение);
Возврат ЗаписьXML.Закрыть();
Показать
(10)
Как-то так. все предельно просто
ТипXDTO = ФабрикаXDTO.Тип("Package1", "booklist");
XDTOЗначение = ФабрикаXDTO.Создать(ТипXDTO);
XDTObook = ФабрикаXDTO.Создать(XDTOЗначение.book.ВладеющееСвойство.Тип);
XDTObook.category = "COOKING";
XDTObook.title = "Everyday Italian";
XDTObook.author = "Giada De Laurentiis";
XDTObook.year = 2005;
XDTObook.price = 29.99;
XDTOЗначение.book.Добавить(XDTObook);
XDTObook = ФабрикаXDTO.Создать(XDTOЗначение.book.ВладеющееСвойство.Тип);
XDTObook.category = "CHILDREN";
XDTObook.title = "Harry Potter";
XDTObook.author = "J K. Rowling";
XDTObook.year = 2005;
XDTObook.price = 29.99;
XDTOЗначение.book.Добавить(XDTObook);
XDTObook = ФабрикаXDTO.Создать(XDTOЗначение.book.ВладеющееСвойство.Тип);
XDTObook.category = "WEB";
XDTObook.title = "Learning XML";
XDTObook.author = "Erik T. Ray";
XDTObook.year = 2003;
XDTObook.price = 39.95;
XDTOЗначение.book.Добавить(XDTObook);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, XDTOЗначение);
возврат ЗаписьXML.Закрыть();
ПоказатьКак-то так. все предельно просто
Прикрепленные файлы:
ПакетXDTO2.xsd
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Не совсем понимаю, что Вы хотите сделать, может как-то вот так:
ТипXDTO = ФабрикаXDTO.Тип("МойПакет", "МойТипИзПакета");
XDTOЗначение = ФабрикаXDTO.Создать(ТипXDTO);
Excel = Новый COMОбъект("Excel.Application");
Excel.Visible = 0;
Excel.WorkBooks.Open(ИмяФайлаЗагрузки);
ExcelDoc = Excel.WorkSheets(ИмяЛиста);
XDTOЗначение.ПолеШапки1 = ИмяФайлаЗагрузки;
XDTOЗначение.ПолеШапки2 = ИмяЛиста;
Для НомПП = НомерНачало по НомерКонец Цикл
XDTOРасшифровка = ФабрикаXDTO.Создать(XDTOЗначение.Расшифровка.ВладеющееСвойство.Тип);
XDTOРасшифровка.ПолеРасшифровки1 = СокрЛП(ExcelDoc.Cells(НомПП,1).Value);
XDTOРасшифровка.ПолеРасшифровки2 = СокрЛП(ExcelDoc.Cells(НомПП,2).Value);
XDTOРасшифровка.ПолеРасшифровки3 = СокрЛП(ExcelDoc.Cells(НомПП,3).Value);
//...
XDTOЗначение.Расшифровка.Добавить(XDTOРасшифровка);
КонецЦикла;
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, XDTOЗначение);
Возврат ЗаписьXML.Закрыть();
Показать
(5)
Если я правильно понимаю, то ФабрикаXDTO использует схему из файла XSD. А как подключить XSD-файл, чтобы его увидела Фабрика?
ТипXDTO = ФабрикаXDTO.Тип("МойПакет", "МойТипИзПакета");
XDTOЗначение = ФабрикаXDTO.Создать(ТипXDTO);
Excel = Новый COMОбъект("Excel.Application");
Excel.Visible = 0;
Excel.WorkBooks.Open(ИмяФайлаЗагрузки);
ExcelDoc = Excel.WorkSheets(ИмяЛиста);
XDTOЗначение.ПолеШапки1 = ИмяФайлаЗагрузки;
XDTOЗначение.ПолеШапки2 = ИмяЛиста;
Для НомПП = НомерНачало по НомерКонец Цикл
XDTOРасшифровка = ФабрикаXDTO.Создать(XDTOЗначение.Расшифровка.ВладеющееСвойство.Тип);
XDTOРасшифровка.ПолеРасшифровки1 = СокрЛП(ExcelDoc.Cells(НомПП,1).Value);
XDTOРасшифровка.ПолеРасшифровки2 = СокрЛП(ExcelDoc.Cells(НомПП,2).Value);
XDTOРасшифровка.ПолеРасшифровки3 = СокрЛП(ExcelDoc.Cells(НомПП,3).Value);
//...
XDTOЗначение.Расшифровка.Добавить(XDTOРасшифровка);
КонецЦикла;
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, XDTOЗначение);
Возврат ЗаписьXML.Закрыть();
ПоказатьXDTOЗначение = ФабрикаXDTO.Создать(ТипXDTO);
Excel = Новый COMОбъект("Excel.Application");
Excel.Visible = 0;
Excel.WorkBooks.Open(ИмяФайлаЗагрузки);
ExcelDoc = Excel.WorkSheets(ИмяЛиста);
XDTOЗначение.ПолеШапки1 = ИмяФайлаЗагрузки;
XDTOЗначение.ПолеШапки2 = ИмяЛиста;
Для НомПП = НомерНачало по НомерКонец Цикл
XDTOРасшифровка = ФабрикаXDTO.Создать(XDTOЗначение.Расшифровка.ВладеющееСвойство.Тип);
XDTOРасшифровка.ПолеРасшифровки1 = СокрЛП(ExcelDoc.Cells(НомПП,1).Value);
XDTOРасшифровка.ПолеРасшифровки2 = СокрЛП(ExcelDoc.Cells(НомПП,2).Value);
XDTOРасшифровка.ПолеРасшифровки3 = СокрЛП(ExcelDoc.Cells(НомПП,3).Value);
//...
XDTOЗначение.Расшифровка.Добавить(XDTOРасшифровка);
КонецЦикла;
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, XDTOЗначение);
Возврат ЗаписьXML.Закрыть();
Если я правильно понимаю, то ФабрикаXDTO использует схему из файла XSD. А как подключить XSD-файл, чтобы его увидела Фабрика?
Накидал пример XDTO-пакета согласно образцу кода - нужно импортировать его в рабочую конфу
Прикрепленные файлы:
ПакетXDTO1.xsd
(10)
Как-то так. все предельно просто
ТипXDTO = ФабрикаXDTO.Тип("Package1", "booklist");
XDTOЗначение = ФабрикаXDTO.Создать(ТипXDTO);
XDTObook = ФабрикаXDTO.Создать(XDTOЗначение.book.ВладеющееСвойство.Тип);
XDTObook.category = "COOKING";
XDTObook.title = "Everyday Italian";
XDTObook.author = "Giada De Laurentiis";
XDTObook.year = 2005;
XDTObook.price = 29.99;
XDTOЗначение.book.Добавить(XDTObook);
XDTObook = ФабрикаXDTO.Создать(XDTOЗначение.book.ВладеющееСвойство.Тип);
XDTObook.category = "CHILDREN";
XDTObook.title = "Harry Potter";
XDTObook.author = "J K. Rowling";
XDTObook.year = 2005;
XDTObook.price = 29.99;
XDTOЗначение.book.Добавить(XDTObook);
XDTObook = ФабрикаXDTO.Создать(XDTOЗначение.book.ВладеющееСвойство.Тип);
XDTObook.category = "WEB";
XDTObook.title = "Learning XML";
XDTObook.author = "Erik T. Ray";
XDTObook.year = 2003;
XDTObook.price = 39.95;
XDTOЗначение.book.Добавить(XDTObook);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, XDTOЗначение);
возврат ЗаписьXML.Закрыть();
ПоказатьКак-то так. все предельно просто
Прикрепленные файлы:
ПакетXDTO2.xsd
(11) Большое Вам спасибо за подробные примеры!
А если xml файлы более сложной структуры (см. вложение), то как быть? Нужно также прописывать все вручную, чтобы получить схемы XSD?
PS. У меня была идея такая:
1) построить по этим файлам схемы XSD (не знаю пока как это сделать);
2) загрузить схемы в ФабрикуXDTO для формирования на выходе XML;
3) cчитывать данные из файлов Excel и вставлять эти данные в XML.
А если xml файлы более сложной структуры (см. вложение), то как быть? Нужно также прописывать все вручную, чтобы получить схемы XSD?
PS. У меня была идея такая:
1) построить по этим файлам схемы XSD (не знаю пока как это сделать);
2) загрузить схемы в ФабрикуXDTO для формирования на выходе XML;
3) cчитывать данные из файлов Excel и вставлять эти данные в XML.
Прикрепленные файлы:
XBRL_1027807976680_PURCB_NSO_m_2017m9.xml
XBRL_1027807976680_PURCB_NSO_m_2017m1.xml
(12)
Погуглите про xdto в 1с - что такое директивы импорта, типы объектов, типы значений. Посмотрите как в той же Бух 3.0 реализованы существующие XDTO-пакеты, потом попробуйте импортировать ваши пакеты в конфу. Накладки вероятно будут, главное суметь импортировать схему хоть как-то. Работать голыми руками с XML через ЧтениеXML,ЗаписьXML - это в разы примитивнее и крайне неудобно (проверено на опыте)
Погуглите про xdto в 1с - что такое директивы импорта, типы объектов, типы значений. Посмотрите как в той же Бух 3.0 реализованы существующие XDTO-пакеты, потом попробуйте импортировать ваши пакеты в конфу. Накладки вероятно будут, главное суметь импортировать схему хоть как-то. Работать голыми руками с XML через ЧтениеXML,ЗаписьXML - это в разы примитивнее и крайне неудобно (проверено на опыте)
(14) Вроде бы нашел, как создавать (из XML) файл схемы XSD.
Получилась такая схема:
При попытке запуска в 1С выдаются ошибки:
Получилась такая схема:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:purcb-dic="http://www.cbr.ru/xbrl/nso/purcb/dic/purcb-dic" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.xbrl.org/2003/instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://www.xbrl.org/2003/linkbase" />
<xs:import namespace="http://www.cbr.ru/xbrl/nso/purcb/dic/purcb-dic" />
<xs:complexType name="xbrl">
<xs:sequence>
<xs:element ref="link:schemaRef" />
<xs:element maxOccurs="unbounded" name="unit">
<xs:complexType>
<xs:sequence>
<xs:element name="measure" type="xs:string" />
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="context">
<xs:complexType>
<xs:sequence>
<xs:element name="entity">
<xs:complexType>
<xs:sequence>
<xs:element name="identifier">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="scheme" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="period">
<xs:complexType>
<xs:sequence>
<xs:element name="instant" type="xs:date" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element ref="purcb-dic:DS_Kassa" />
<xs:element ref="purcb-dic:DS_raschet_scheta_KO" />
<xs:element ref="purcb-dic:DS_raschet_scheta_in_bank" />
<xs:element ref="purcb-dic:DS_klientov_Broker_pravo_isp" />
<xs:element ref="purcb-dic:DS_klientov_Broker_bez_prava_isp" />
<xs:element ref="purcb-dic:DSKODep_Otchit_KO" />
<xs:element ref="purcb-dic:DSKODep_Otchit_in_bank" />
<xs:element ref="purcb-dic:DS_Broker_dr_broker" />
<xs:element ref="purcb-dic:DS_Broker_in_liczo" />
<xs:element ref="purcb-dic:CZB_i_DS_IKO" />
<xs:element ref="purcb-dic:KSU_repo" />
<xs:element ref="purcb-dic:VLA_1_urovnya" />
<xs:element ref="purcb-dic:CZB_VLA_1" />
<xs:element ref="purcb-dic:CZB_VLA_1_repo" />
<xs:element ref="purcb-dic:VLA_2_urovnya" />
<xs:element ref="purcb-dic:CZB_VLA_2" />
<xs:element ref="purcb-dic:CZB_VLA_2_repo" />
<xs:element ref="purcb-dic:VLA_korrektirovka" />
<xs:element ref="purcb-dic:VLA" />
<xs:element ref="purcb-dic:Ottoki_vozvrat_sredstv_klientov" />
<xs:element ref="purcb-dic:Ottoki_poluchen_zajm" />
<xs:element ref="purcb-dic:Ottoki_kuplya_prodazha_CZB" />
<xs:element ref="purcb-dic:Ottoki_vypushh_dolg_CZB" />
<xs:element ref="purcb-dic:Ottoki_vozvrat_DS_pod_VLA1" />
<xs:element ref="purcb-dic:Obyaz_PFI" />
<xs:element ref="purcb-dic:Ottoki_vozvrat_DS_pod_VLA2" />
<xs:element ref="purcb-dic:Ottoki_vozvrat_DS_ne_VLA1_i_ne_VLA2" />
<xs:element ref="purcb-dic:Obyaz_obratnaya_postavka_CZB" />
<xs:element ref="purcb-dic:Ozhid_ottok_DS" />
<xs:element ref="purcb-dic:Prochie_obyaz_30_dnej" />
<xs:element ref="purcb-dic:Pritoki_vydan_zajm" />
<xs:element ref="purcb-dic:Pritoki_kuplya_prodazha_CZB" />
<xs:element ref="purcb-dic:Pritoki_vozvrat_DS_pod_VLA1" />
<xs:element ref="purcb-dic:Pritoki_vozvrat_DS_pod_VLA2" />
<xs:element ref="purcb-dic:Pritoki_vozvrat_DS_ne_VLA1_i_ne_VLA2" />
<xs:element ref="purcb-dic:Prochie_postupleniya_30_dnej" />
<xs:element ref="purcb-dic:Ozhid_pritok_DS" />
<xs:element ref="purcb-dic:CHOODS" />
<xs:element ref="purcb-dic:PKL" />
<xs:element ref="purcb-dic:OGRN_Prof_uch" />
<xs:element ref="purcb-dic:SokrNaim_Prof_uch" />
<xs:element ref="purcb-dic:AdresPocht_Prof_uch" />
<xs:element ref="purcb-dic:Poln_Naim_Prof_uch" />
<xs:element ref="purcb-dic:INN_Prof_uch" />
<xs:element ref="purcb-dic:Kod_Okato" />
</xs:sequence>
</xs:complexType>
</xs:schema>
ПоказатьПри попытке запуска в 1С выдаются ошибки:
Ошибка проверки модели XDTO: xdto-package-3.3 пакет: http://www.xbrl.org/2003/instance
Импортируемый пакет типов 'http://www.xbrl.org/2003/linkbase' не определен
Ошибка проверки модели XDTO: xdto-package-3.3 пакет:http://www.xbrl.org/2003/instance
Импортируемый пакет типов 'http://www.cbr.ru/xbrl/nso/purcb/dic/purcb-dic' не определен
Импортируемый пакет типов 'http://www.xbrl.org/2003/linkbase' не определен
Ошибка проверки модели XDTO: xdto-package-3.3 пакет:
Импортируемый пакет типов 'http://www.cbr.ru/xbrl/nso/purcb/dic/purcb-dic' не определен
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот