[РЕШЕНО] xml-файл(подчиненный элемент)

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем fenlork, 5 фев 2016.

  1. TopicStarter Overlay
    fenlork
    Offline

    fenlork Опытный в 1С

    Регистрация:
    5 сен 2013
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    Приветствую! Какими функциями сделать подчиненное вложение? и как настроить отступы(или как то закрывать атрибуты.
    нужна схема типа
    -<Database>
    -<Materials>
    - <Material>
    <Article>51</Article>
    <Name>ДВП кашированная бук</Name>
    <Group_Name>Листовой материал/ДВП</Group_Name>
    <Unit_Measure>кв.м</Unit_Measure>
    </Material>
    .... и далее
    У меня же все в строку одну
    <?xml version="1.0" encoding="UTF-8"?>

    -<Database>


    -<Materials>

    <Material Unit_Measure="м" Group_Name="Текстиль" Name="100105 К/з Fusion Earth" Article=""/>

    <Material Unit_Measure="м" Group_Name="Материалы" Name="100105 Тк. Design Lar 28-01" Article=""/>
    Вот код
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    ЗаписьXML.ЗаписатьНачалоЭлемента("Database");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Materials");
    Выборка = Справочники.Номенклатура.Выбрать();
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    | Номенклатура.Наименование,
    | Номенклатура.Артикул,
    | Номенклатура.Родитель,
    | Номенклатура.БазоваяЕдиницаИзмерения
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Ссылка В ИЕРАРХИИ(&Ссылка)";
    Запрос.УстановитьПараметр("ссылка",Справочники.Номенклатура.НайтиПоКоду("00000022244"));
    Выборка=Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл //

    ЗаписьXML.ЗаписатьНачалоЭлемента("Material");
    ЗаписьXML.ЗаписатьАтрибут("Unit_Measure",Строка(Выборка.БазоваяЕдиницаИзмерения));
    ЗаписьXML.ЗаписатьАтрибут("Group_Name",Строка(Выборка.Родитель));
    ЗаписьXML.ЗаписатьАтрибут("Name",Строка(Выборка.Наименование));
    ЗаписьXML.ЗаписатьАтрибут("Article",Строка(Выборка.Артикул));
    ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.ЗаписатьКонецЭлемента();
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Почему ЗаписатьАтрибут()? Unit_Measure, Group_Name и т.д. это такие же элементы.
    fenlork нравится это.
  3. TopicStarter Overlay
    fenlork
    Offline

    fenlork Опытный в 1С

    Регистрация:
    5 сен 2013
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    Честно говоря, не знаю почему-в инете пример был, попробую как элемент
  4. Yurifm
    Offline

    Yurifm Новичок в 1С

    Регистрация:
    29 май 2015
    Сообщения:
    15
    Симпатии:
    3
    Баллы:
    4
    Зачем же так сложно...вот пример

    Код:
    ЗаписьXML = Новый ЗаписьXML;
        ЗаписьXML.ОткрытьФайл(ПолноеИмяФайла);
      
        ЗаписьXML.ЗаписатьОбъявлениеXML();
      
        ЗаписьXML.ЗаписатьНачалоЭлемента("Выписки");
      
        Пока Выборка.Следующий() Цикл     
            ЗаписьXML.ЗаписатьНачалоЭлемента("Выписка");
          
            ЗаписьXML.ЗаписатьНачалоЭлемента("УидКонтрагента");
            ЗаписьXML.ЗаписатьТекст(XMLСтрока(Выборка.УидКонтрагента));
            ЗаписьXML.ЗаписатьКонецЭлемента();
          
            ЗаписьXML.ЗаписатьНачалоЭлемента("НаименованиеКонтрагента");
            ЗаписьXML.ЗаписатьТекст(Строка(Выборка.НаименованиеКонтрагента));
            ЗаписьXML.ЗаписатьКонецЭлемента();
          
          
            ЗаписьXML.ЗаписатьКонецЭлемента();  
        КонецЦикла;
      
        ЗаписьXML.ЗаписатьКонецЭлемента();
        ЗаписьXML.Закрыть();
    Последнее редактирование: 5 фев 2016
    fenlork нравится это.

Поделиться этой страницей