Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 16:10

Выгрузка в XML

Автор casper21, 16 окт 2015, 14:44

0 Пользователей и 1 гость просматривают эту тему.

casper21

Как сделать чтобы вывело иерархически?
С группами?


Процедура ВыполнитьЗаписьДанных() Экспорт

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "----Выгрузка в узел----";
Сообщение.Сообщить();

    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл("d:\temp\tovar.xml");
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    ЗаписьXML.ЗаписатьНачалоЭлемента("Корневой");

    // Записать атрибут элемента Корневой
    ЗаписьXML.ЗаписатьАтрибут("Справочник", "Товари");
    ЗаписьXML.ЗаписатьКомментарий("Элементы справочника:");

    Выборка = Справочники.Товари.ВыбратьИерархически();
    Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
        ЗаписьXML.ЗаписатьНачалоЭлемента("ЭлементСправочника");

            ЗаписьXML.ЗаписатьНачалоЭлемента("Код");
            ЗаписьXML.ЗаписатьТекст(Выборка.Код);
            ЗаписьXML.ЗаписатьКонецЭлемента();

            ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование");
            ЗаписьXML.ЗаписатьТекст(Выборка.Наименование);
            ЗаписьXML.ЗаписатьКонецЭлемента();

            ЗаписьXML.ЗаписатьНачалоЭлемента("Виробник");
            ЗаписьXML.ЗаписатьТекст(Выборка.Виробник);
            ЗаписьXML.ЗаписатьКонецЭлемента();           

        ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;   

    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.Закрыть();
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "----Конец выгрузки----";
Сообщение.Сообщить();
КонецПроцедуры


Этот код выводит просто список данных.
Это где-то надо поменять здесь?
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;


TrigubovichL

Да, Вы правы - "где-то здесь".
Например ках-то так:
...
    Выборка = Справочники.Товари.ВыбратьИерархически();
    ТекГруппа = Неопределено;
    Пока Выборка.Следующий() Цикл
        Если Выборка.ЭтоГруппа Тогда
            //тут маленькая примочка:
            Если ТекГруппа <> Неопределено Тогда
                //то есть начало уже писали - допишем конец:
                ЗаписьXML.ЗаписатьКонецЭлемента(); // конец тек.группы
            КонецЕсли;
            ЗаписьXML.ЗаписатьНачалоЭлемента("ГруппаСправочника"); // начало тек.группы
            ТекГруппа = Выборка.Ссылка; // и запомним ее, чтобы "закрыть" тэг

            ЗаписьXML.ЗаписатьНачалоЭлемента("Код");
            ЗаписьXML.ЗаписатьТекст(Выборка.Код);
            ЗаписьXML.ЗаписатьКонецЭлемента();

            ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование");
            ЗаписьXML.ЗаписатьТекст(Выборка.Наименование);
            ЗаписьXML.ЗаписатьКонецЭлемента();
            // и т.д. - все что нужно для группы
           
            Продолжить;
        КонецЕсли;

        ЗаписьXML.ЗаписатьНачалоЭлемента("ЭлементСправочника");

            ЗаписьXML.ЗаписатьНачалоЭлемента("Код");
            ЗаписьXML.ЗаписатьТекст(Выборка.Код);
            ЗаписьXML.ЗаписатьКонецЭлемента();

            ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование");
            ЗаписьXML.ЗаписатьТекст(Выборка.Наименование);
            ЗаписьXML.ЗаписатьКонецЭлемента();

            ЗаписьXML.ЗаписатьНачалоЭлемента("Виробник");
            ЗаписьXML.ЗаписатьТекст(Выборка.Виробник);
            ЗаписьXML.ЗаписатьКонецЭлемента();           

        ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;   

   // и еще вот тут не забыть:
   Если ТекГруппа <> Неопределено Тогда
       //то есть начало уже писали - допишем конец:
       ЗаписьXML.ЗаписатьКонецЭлемента(); // конец тек.группы
   КонецЕсли;

Теги:

Похожие темы (1)

Рейтинг@Mail.ru

Поиск