Вход | Регистрация

1С:Предприятие ::

Метки: 

v7: Запись xml. Не могу добиться нужной структуры.

Я
   NoobiC
 
08.09.18 - 17:48
Всем привет.
Необходимо написать выгрузку для сайта из самописной 7.7.
Сайтоделы прислали такую структуру:
-<Склад>

<Код>101</Код>

<Наименование>Склад1</Наименование>

</Склад>

а у меня при формировании получается такая:

<Склад Наименование="Склад1" Код="101"/>

.....
собственно, вот фрагмент кода, который формирует хмл:

  Корень=XMLАнализатор.СоздатьДокумент();
  Данные = Корень.СоздатьПодчиненныйЭлемент("Данные");
  Склады = Данные.СоздатьПодчиненныйЭлемент("Склады");
  Склад=СоздатьОбъект("Справочник.Склады");
  Склад.ВыбратьЭлементы();
  Пока Склад.ПолучитьЭлемент() = 1 Цикл
      СкладXML=Склады.СоздатьПодчиненныйЭлемент("Склад");
      СкладXML.УстановитьАтрибут("Код", Склад.Код);
      СкладXML.УстановитьАтрибут("Наименование", СокрЛП(Склад.Наименование));
  КонецЦикла;

пробовал вместо установки атрибутов пользоваться СоздатьУзел() и потом добавить Подчиненный:

  СкладКод = СкладXML.СоздатьУзел("Код",Склад.Код);
  СкладXML.ДобавитьПодчиненный(СкладКод);

так 1С ругается, что поле агрегатного объекта не обнаружено (СоздатьУзел).
Подскажите, плиз, где че не так-то?
 
 
   youalex
 
1 - 08.09.18 - 18:03
пользуй msxml domdocument
   NoobiC
 
2 - 08.09.18 - 18:10
   Cool_Profi
 
3 - 08.09.18 - 18:22
СкладКод = Корень.СоздатьУзел("Код",Склад.Код);

А так?
   NoobiC
 
4 - 08.09.18 - 18:27
(1) получилась точно такая же структура как и ранее...
(3) а так создается в корне, а мне надо, чтобы тэг(?) создавался именно внутри узла Склад.
То есть (если идти вниз по иерархии), структура будет выглядеть примерно так:
Корень
   склады
      Склад1
        код
        наименование
        и т.д.
   товары
      Товар1
        код
        намиенование
        и т.д.
   trdm
 
5 - 08.09.18 - 18:41
//==============================================================================

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


Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует