|
Xml создание файла | ☑ | ||
---|---|---|---|---|
0
GStiv
15.06.17
✎
16:24
|
Поступила задача организовать выгрузку и загрузку через xml файлы и дали пример, не могу сообразить через что можно создать такую структуру
<?xml version="1.0" encoding="windows-1251"?> <AxaptaXMLExport xmlns:Table="urn:http://www.navision.com/Formats/Table" version="1.0" xmlns="urn:http://www.navision.com/Formats/Table1"> <!--XML Data output generated on 27.02.2017 at 11:09:49 by ****--> <transaction version="1.0"> <Table:Record name="VendReceiptExportDC" row="1"> <Table:Field name="ItemId">*******</Table:Field> итд Через ЗаписьXML = Новый ЗаписьXML; как мне кажется не получится и разобрать на чтение не смогу. Подтолкните в нужном направление, или кто занимался написание выгрузки для Объединенный кондитер готов обсудить. |
|||
1
Dmitry1c
15.06.17
✎
16:39
|
Если выгрузить из 1С в 1С, то можно сделать так:
ЗаписьXML = Новый ЗаписьXML(ПутьКТвоемуФайлу); СериализаторXDTO.ЗаписатьXML(ТвоиДанные, ЗаписьXML); ЗаписьXML.Закрыть(); Аналогично прочитать данные. ТвоиДанные - здесь должна быть таблица значений, однотипная для приемника и для источника. Все, больше ничего придумывать для данной задачи не надо. |
|||
2
mexanik_96
15.06.17
✎
16:58
|
автору дали xsd, необходимо использовать фабрику xdto, путь в (2) так себе(по опыту). создаешь фабрику, описываешь типы, создаешь объекты, загоняешь в файл.
|
|||
3
mexanik_96
15.06.17
✎
16:59
|
через фабрику + типы по схеме прикинь да, даже читать сможешь!
|
|||
4
GStiv
15.06.17
✎
17:01
|
Не совсем 1с, я не знаю в какую программу будут грузить у меня есть только формат по которому должно быть выгружено.
xsd не давали |
|||
5
Живой Ископаемый
15.06.17
✎
17:07
|
Я бы получал xml который создает например функция из типовых
ТиповыеОтчеты.СериалзоватьОбъектXDTO(Объект) полученную ХМЛ-строку подвергал бы каким-то или элементарным строковым преобразованиям , или не сильно элементарным (регулярки), и уже получал бы структуру которая требуется в (0) и записывал бы просто в ЗаписьТекста, но файл бы называл с расширением хмл. Но нужно смотреть, если этих приеобазований много, то может быть и пришлось бы перебирать коллекции объектов, и конструировать хмл вообще вручную |
|||
6
mexanik_96
15.06.17
✎
18:48
|
(4) ну дак скачай схему она у тебя в описании
|
|||
7
GStiv
15.06.17
✎
19:44
|
В описание вордовский файл с таблицей
Строка файла .xml Описание поля Формат данных <Table:Record name="VendTableExportDC" row="1"> <Table:Field name="CustVendID">00001</Table:Field> Код поставщика text |
|||
8
GStiv
18.06.17
✎
20:03
|
Продолжим
сделал так XMLDOM = новый COMОбъект("Microsoft.XMLDOM"); XMLDOM = новый COMОбъект("MSXML.DOMDocument"); XMLDOM.async = 0; XMLDOM.validateOnParse = 0; XMLDOM.resolveExternals = 0; XMLDOM.appendChild(XMLDOM.createProcessingInstruction("xml", "version='1.0' encoding='windows-1251'")); КорневойЭлемент = XMLDOM.createElement("AxaptaXMLExport"); КорневойЭлемент.setAttribute("xmlns:Table", "urn:http://www.navision.com/Formats/Table"); КорневойЭлемент.setAttribute("version", "1.0"); XMLDOM.appendChild(КорневойЭлемент); Транзакция = XMLDOM.createElement("transaction"); Транзакция.setAttribute("version","1.0"); КорневойЭлемент.appendChild(Транзакция); Для а=1 по 10 цикл Строчка1 = XMLDOM.createElement("Table:Record"); Строчка1.setAttribute("name","InventTableExportDC"); Строчка1.text ="row="""+а+""""; Транзакция.appendChild(Строчка1); Строчка = XMLDOM.createElement("Table:Field"); Строчка.setAttribute("name","ManDate"); Строчка.text = 123; Строчка1.appendChild(Строчка); Строчка = XMLDOM.createElement("Table:Field"); Строчка.setAttribute("name","ManDate2"); Строчка.text = 123; Строчка1.appendChild(Строчка); конеццикла; XMLDOM.Save("c:\222.xml"); получается правильно но есть один косяк должно быть <Table:Record name="InventTableExportDC" row="1"> а получаеться <Table:Record name="InventTableExportDC">row="2" понимаю что косяк Строчка1 = XMLDOM.createElement("Table:Record"); Строчка1.setAttribute("name","InventTableExportDC"); Строчка1.text ="row="""+а+""""; Транзакция.appendChild(Строчка1); как сделать XMLDOM.createElement с двумя параметрами |
|||
9
Genayo
18.06.17
✎
20:58
|
(8) Тебе читать или писать надо, или и то и другое?
|
|||
10
Genayo
18.06.17
✎
21:05
|
(8) Да, кстати платформа 1С 8?
|
|||
11
GStiv
18.06.17
✎
21:24
|
ДА прошу прощения сейчас писать а завтра и читать
1с8 |
|||
12
youalex
18.06.17
✎
22:03
|
(8) у тебя здесь row="1" - это еще один атрибут (еще один setAttribute), а ты его пихаешь как текст.
|
|||
13
GStiv
18.06.17
✎
22:10
|
сделал
Строчка1 = XMLDOM.createElement("Table:Record"); Строчка1.setAttribute("name","InventTableExportDC"); Строчка1.setAttribute("raw",а); Транзакция.appendChild(Строчка1); вроде получилось, спасибо |
|||
14
Genayo
18.06.17
✎
22:25
|
(11) Отправил на почту в профиле.
|
|||
15
GStiv
18.06.17
✎
22:47
|
Спасибо увидел, ответил
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |