Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
21 Июл 2017, 15:38
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Выгрузка в XML  (Прочитано 782 раз)

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

Оффлайн casper21

  • *
  • Сообщений: 21
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-04
  • Сайт: 
  • Профессия: Программист 1С
Как сделать чтобы вывело иерархически?
С группами?

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

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

    Запись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

  • *
  • Сообщений: 44
  • РЕПУТАЦИЯ: 1
  • КПД: 2%
  • Регистрация: 2015-11-06
  • Сайт: 
  • Профессия: Программист 1С
Re: Выгрузка в XML
« Ответ #1: 11 Ноя 2015, 18:02 »
Да, Вы правы - "где-то здесь".
Например ках-то так:
...
    Выборка = Справочники.Товари.ВыбратьИерархически();
    ТекГруппа = Неопределено;
    Пока Выборка.Следующий() Цикл
        Если Выборка.ЭтоГруппа Тогда
            //тут маленькая примочка:
            Если ТекГруппа <> Неопределено Тогда
                //то есть начало уже писали - допишем конец:
                ЗаписьXML.ЗаписатьКонецЭлемента(); // конец тек.группы
            КонецЕсли;
            ЗаписьXML.ЗаписатьНачалоЭлемента("ГруппаСправочника"); // начало тек.группы
            ТекГруппа = Выборка.Ссылка; // и запомним ее, чтобы "закрыть" тэг

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

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

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

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

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

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

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


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

oleg-x
122 Сообщений
alex0402
106 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
73 Сообщений
ilyay ilyay
50 Сообщений
Golickoff Golickoff
49 Сообщений
AIFrame
47 Сообщений
ab30ru
38 Сообщений
wise wise
36 Сообщений
Амал
32 Сообщений
Dethmontt Dethmontt
25 Сообщений

* Кто онлайн

  • Точка Гостей: 805
  • Точка Скрытых: 0
  • Точка Пользователей: 15
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal