|
Вопрос по выгрузке в XML | ☑ | ||
---|---|---|---|---|
0
aranadan
10.12.14
✎
14:31
|
Можно ли сделать группировку по сотруднику, то есть объединить все элементы номенклатуры связанные с этим сотрудником? Если да то как?
ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл("\\admin2\!_install\it.xml", "UTF-8"); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьXML.ЗаписатьНачалоЭлемента("REPORT"); ЗаписьXML.ЗаписатьТекст(Формат(ТекущаяДата())); Запрос = Новый Запрос( "ВЫБРАТЬ | АрендаСрезПоследних.Сотрудники.Наименование КАК Сотрудники, | АрендаСрезПоследних.Номенклатура.Наименование КАК Номенклатура, | АрендаСрезПоследних.Период КАК Период |ИЗ | РегистрСведений.Аренда.СрезПоследних КАК АрендаСрезПоследних | |УПОРЯДОЧИТЬ ПО | Сотрудники, | Номенклатура, | Период" ); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл; //Если Не Выборка.Номенклатура.ЭтоГруппа Тогда ЗаписьXML.ЗаписатьНачалоЭлемента("ITEM"); //Запись Сотрудника ЗаписьXML.ЗаписатьНачалоЭлемента("user"); ЗаписьXML.ЗаписатьТекст(Выборка.Сотрудники); ЗаписьXML.ЗаписатьКонецЭлемента(); //Запись Номенклатуры ЗаписьXML.ЗаписатьНачалоЭлемента("device"); ЗаписьXML.ЗаписатьТекст(Выборка.Номенклатура); ЗаписьXML.ЗаписатьКонецЭлемента(); //Запись Периода ЗаписьXML.ЗаписатьНачалоЭлемента("from"); ЗаписьXML.ЗаписатьТекст(Формат(Выборка.Период,"ДФ=yyyy-MM-dd")); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.ЗаписатьКонецЭлемента(); //КонецЕсли; КонецЦикла; ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.Закрыть(); |
|||
1
Кир Пластелинин
10.12.14
✎
14:39
|
объединить где? в запроса? в xml?
|
|||
2
aranadan
10.12.14
✎
14:42
|
(1) в XML.
|
|||
3
Кир Пластелинин
10.12.14
✎
14:42
|
узлы добавить
|
|||
4
palpetrovich
10.12.14
✎
14:48
|
ну, наверное так примерно: в запрос добавить итоги, в выборке:
ВыборкаСотр = Результат.Выбрать(); Пока ВыборкаСотр.Следующий() Цикл; ЗаписьXML.ЗаписатьНачалоЭлемента("user"); ЗаписьXML.ЗаписатьТекст(Выборка.Сотрудники); //Запись Номенклатуры ВыборкаНоменклатура = ВыборкаСотр.Выбрать(); Пока ВыборкаНоменклатура.Следующий() Цикл; ЗаписьXML.ЗаписатьНачалоЭлемента("device"); ЗаписьXML.ЗаписатьТекст(Выборка.Номенклатура); ЗаписьXML.ЗаписатьКонецЭлемента(); КонецЦикла; КонецЦикла; ЗаписьXML.ЗаписатьКонецЭлемента(); // "user" |
|||
5
13_Mult
10.12.14
✎
14:54
|
Можно.
ЗаписьXML.ЗаписатьНачалоЭлемента("Сотрудники"); ЗаписьXML.ЗаписатьАтрибут("Сотрудник", Выборка.Сотрудник); ЗаписьXML.ЗаписатьАтрибут("Номенклатура", бла бла); ЗаписьXML.ЗаписатьАтрибут("Период", бла бла); ЗаписьXML.ЗаписатьКонецЭлемента(); |
|||
6
aranadan
10.12.14
✎
15:01
|
(4) получился сотрудник в сотруднике и без номенклатуры =)
|
|||
7
Живой Ископаемый
10.12.14
✎
15:02
|
Можно выгрузить в ТЗ, и ее сериализовать.
|
|||
8
aranadan
10.12.14
✎
15:07
|
(5),(7) спасибо, попробую.
|
|||
9
aranadan
10.12.14
✎
15:24
|
(3) можно подробнее?
|
|||
10
Кир Пластелинин
10.12.14
✎
15:32
|
(9) более яснее выражено в (5)
только бы сделал так ЗаписьXML.ЗаписатьНачалоЭлемента("Сотрудник"); ЗаписьXML.ЗаписатьАтрибут("Сотрудник", Выборка.Сотрудник); ЗаписьXML.ЗаписатьНачалоЭлемента("Данные"); ЗаписьXML.ЗаписатьАтрибут("Номенклатура", бла бла); ЗаписьXML.ЗаписатьАтрибут("Период", бла бла); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.ЗаписатьКонецЭлемента(); но тут уж зависит от того - подойдет ли такая структура на выходе и дальнейшей обработки |
|||
11
aranadan
10.12.14
✎
15:44
|
(10) ЗаписьXML.ЗаписатьНачалоЭлемента("ITEM");
//Запись Сотрудника ЗаписьXML.ЗаписатьНачалоЭлемента("user"); ЗаписьXML.ЗаписатьАтрибут("user",Выборка.Сотрудники); ЗаписьXML.ЗаписатьНачалоЭлемента("device"); ЗаписьXML.ЗаписатьАтрибут("device",Выборка.Номенклатура); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.ЗаписатьКонецЭлемента(); // ЗаписьXML.ЗаписатьНачалоЭлемента("device"); //ЗаписьXML.ЗаписатьТекст(Выборка.Номенклатура); // ЗаписьXML.ЗаписатьКонецЭлемента(); // // ЗаписьXML.ЗаписатьНачалоЭлемента("from"); //ЗаписьXML.ЗаписатьТекст(Формат(Выборка.Период,"ДФ=yyyy-MM-dd")); // ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.ЗаписатьКонецЭлемента(); //КонецЕсли; и получаеться : <ITEM> <user user="ИТ-ОТДЕЛ"> <device device="GOCLEVER TAB M713G"/> </user> </ITEM> <ITEM> <user user="ИТ-ОТДЕЛ"> <device device="GOCLEVER TAB M713G"/> </user> </ITEM> <ITEM> <user user="ИТ-ОТДЕЛ"> <device device="Lenovo G580 (20157)"/> </user> </ITEM> <ITEM> <user user="ИТ-ОТДЕЛ"> <device device="Lenovo Idea Tab A3000"/> </user> </ITEM> <ITEM> <user user="ИТ-ОТДЕЛ"> <device device="MI-FI 2200"/> </user> </ITEM> <ITEM> <user user="ИТ-ОТДЕЛ"> <device device="MI-FI 2200"/> </user> </ITEM> <ITEM> <user user="ИТ-ОТДЕЛ"> <device device="NOKIA ASHA 200"/> </user> </ITEM> <ITEM> <user user="ИТ-ОТДЕЛ"> <device device="Pixus Play Three"/> </user> </ITEM> |
|||
12
aranadan
10.12.14
✎
15:45
|
хочу объединить номенклатуру.
|
|||
13
Кир Пластелинин
10.12.14
✎
15:51
|
(12) мм. замечательно. а итоги в запросе кто будет делать?
|
|||
14
palpetrovich
10.12.14
✎
15:57
|
(6) хм, итоги добавил? ...в бщем код:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Товар, | ЕдиницыИзмерения.Ссылка КАК Ед |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения | ПО Номенклатура.Ссылка = ЕдиницыИзмерения.Владелец |ГДЕ | Номенклатура.Родитель = &Пустая | И НЕ Номенклатура.ЭтоГруппа |ИТОГИ ПО | Товар, | Ед"; Запрос.УстановитьПараметр("Пустая", справочники.Номенклатура.ПустаяСсылка()); Результат = Запрос.Выполнить(); ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.ОткрытьФайл(ИмяФайла, "windows-1251"); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьXML.ЗаписатьНачалоЭлемента("Items"); ВыборкаТовар = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаТовар.Следующий() Цикл ЗаписьXML.ЗаписатьНачалоЭлемента("Item"); ЗаписьXML.ЗаписатьАтрибут("Name", " "+ВыборкаТовар.Товар); ВыборкаЕд = ВыборкаТовар.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаЕд.Следующий() Цикл ЗаписьXML.ЗаписатьНачалоЭлемента("Ed"); ЗаписьXML.ЗаписатьТекст(" "+ВыборкаЕд.Ед); ЗаписьXML.ЗаписатьКонецЭлемента(); КонецЦикла; ЗаписьXML.ЗаписатьКонецЭлемента(); КонецЦикла; ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.Закрыть(); результат: <Items> <Item Name=" Карандаш"> <Ed> шт. </Ed> <Ed> л </Ed> </Item> <Item Name=" Авторучка"> <Ed> шт. </Ed> <Ed> кг. </Ed> <Ed> 100 шт. </Ed> </Item> </Items> |
|||
15
aranadan
10.12.14
✎
16:17
|
(14) супер, то что надо! Спасибо огромное!!!!
|
|||
16
palpetrovich
10.12.14
✎
16:20
|
(15) хм, не за что :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |