|
v7: Запись xml. Не могу добиться нужной структуры. | ☑ | ||
---|---|---|---|---|
0
NoobiC
08.09.18
✎
17:48
|
Всем привет.
Необходимо написать выгрузку для сайта из самописной 7.7. Сайтоделы прислали такую структуру: -<Склад> <Код>101</Код> <Наименование>Склад1</Наименование> </Склад> а у меня при формировании получается такая: <Склад Наименование="Склад1" Код="101"/> ..... собственно, вот фрагмент кода, который формирует хмл: Корень=XMLАнализатор.СоздатьДокумент(); Данные = Корень.СоздатьПодчиненныйЭлемент("Данные"); Склады = Данные.СоздатьПодчиненныйЭлемент("Склады"); Склад=СоздатьОбъект("Справочник.Склады"); Склад.ВыбратьЭлементы(); Пока Склад.ПолучитьЭлемент() = 1 Цикл СкладXML=Склады.СоздатьПодчиненныйЭлемент("Склад"); СкладXML.УстановитьАтрибут("Код", Склад.Код); СкладXML.УстановитьАтрибут("Наименование", СокрЛП(Склад.Наименование)); КонецЦикла; пробовал вместо установки атрибутов пользоваться СоздатьУзел() и потом добавить Подчиненный: СкладКод = СкладXML.СоздатьУзел("Код",Склад.Код); СкладXML.ДобавитьПодчиненный(СкладКод); так 1С ругается, что поле агрегатного объекта не обнаружено (СоздатьУзел). Подскажите, плиз, где че не так-то? |
|||
1
youalex
08.09.18
✎
18:03
|
пользуй msxml domdocument
|
|||
2
NoobiC
08.09.18
✎
18:10
|
(1) это вот это вот? Книга знаний: Работа с XML по интерфейсу DOM
|
|||
3
Cool_Profi
08.09.18
✎
18:22
|
СкладКод = Корень.СоздатьУзел("Код",Склад.Код);
А так? |
|||
4
NoobiC
08.09.18
✎
18:27
|
(1) получилась точно такая же структура как и ранее...
(3) а так создается в корне, а мне надо, чтобы тэг(?) создавался именно внутри узла Склад. То есть (если идти вниз по иерархии), структура будет выглядеть примерно так: Корень склады Склад1 код наименование и т.д. товары Товар1 код намиенование и т.д. |
|||
5
trdm
08.09.18
✎
18:41
|
//==============================================================================
// Сформировать() © trdm 2018-09-08 18:41 Процедура Сформировать() вТескт = СоздатьОбъект("Текст"); вТескт.ДобавитьСтроку("<Склады>"); вТескт.ДобавитьСтроку("<Склады>"); вСпрМх = СоздатьОбъект("Справочник.МестаХранения"); вСпрМх.ВыбратьЭлементы(); Пока вСпрМх.ПолучитьЭлемент() = 1 Цикл Если вСпрМх.ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; вТескт.ДобавитьСтроку("<Склад>"); вТескт.ДобавитьСтроку("<Код>" + вСпрМх.Код + "</Код>"); вТескт.ДобавитьСтроку("<Наименование>" + вСпрМх.Наименование + "</Наименование>"); вТескт.ДобавитьСтроку("</Склад>"); КонецЦикла; вТескт.ДобавитьСтроку("</Склады>"); вИмяФайла = "C:\"+_GetPerformanceCounter()+".xml"; вТескт.Записать(вИмяФайла); ЗапуститьПриложение(вИмяФайла); КонецПроцедуры // Сформировать() |
|||
6
trdm
08.09.18
✎
18:45
|
дубль строки убрать только:
вТескт.ДобавитьСтроку("<Склады>"); |
|||
7
trdm
08.09.18
✎
18:50
|
ну и по логике в (0)
СкладXML=Склады.СоздатьПодчиненныйЭлемент("Склад"); вВремУзел = СкладXML.СоздатьПодчиненныйЭлемент("Код"); вВремУзел.Текст = Склад.Код; вВремУзел = СкладXML.СоздатьПодчиненныйЭлемент("Наименование"); вВремУзел.Текст = СокрЛП(Склад.Наименование); |
|||
8
NoobiC
08.09.18
✎
19:02
|
(7) ай спасибо огромное тебе, добрый человек!!! Прямо в десятку!!!
|
|||
9
trdm
08.09.18
✎
19:13
|
(8) ты просто синтакс-помошник время от времени покуривай:
http://prntscr.com/ks36m9 |
|||
10
Strogg
08.09.18
✎
19:19
|
(9) у меня синтакс-помощник дважды показывает в7 плюс. Ну как я мог догадаться, что они замечают, что присвоение этого свойства полностью реорганизует всю структуру подчиненных узлов? И что это именно то, то мне надо...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |