|
Сохранить документы в дерево значений
| ☑ |
0
GomerSimpson
21.02.14
✎
09:54
|
Всем привет.
Есть выборка документов. Нужно из нее получить дерево значений.
Максимальный уровень вложенности 2.
Т.е. реквизиты шапки и все табличные части.
Вместо ссылок - наименование, остальные типы как есть.
Фишка в том что код должен работать с любым типом документа.
Заранее спс за идею.
|
|
1
Godofsin
21.02.14
✎
09:56
|
(0) для любой конфы?
|
|
2
ДенисЧ
21.02.14
✎
09:56
|
Продаю идею: обход по метаданным...
|
|
3
GomerSimpson
21.02.14
✎
10:21
|
(1) конфа БП 2.0, но вобще то желательно для любой.
(2) я думал создавать текст запроса обоходя метаданные, потом результат выгрузить в дерево.
Ну может просто есть какой универсальный механизм попроще.
|
|
4
ДенисЧ
21.02.14
✎
10:23
|
(3) в XML сериализуй...
|
|
5
GomerSimpson
21.02.14
✎
10:46
|
(4) XML тут конечно удобно, как бы всего одной строчкой кода.
ЗаписатьXML(ЗаписьXML,ВыгружаемыйОбъект);
Но там для ссылочных типов записывается уид, а мне надо наименование, если это можно поправить, подскажите, буду признателен.
|
|
6
ДенисЧ
21.02.14
✎
10:48
|
(5) А кнопку "Сделать всё" тебе не продать?
Кстати, к ней скоро выйдет апргрейд (платный) "Сделать всё правильно"...
|
|
7
Godofsin
21.02.14
✎
10:48
|
(6) Platinum edition ))))
|
|
8
Wobland
21.02.14
✎
10:49
|
хочу апгрейд "Сделать всё правильно, бесплатно и кофе"!
|
|
9
GomerSimpson
21.02.14
✎
10:56
|
Не заставляйте меня думать. А то я научусь и отберу ваш хлеб.
Лучше дайте готовый код, это в ваших же интересах ))))))
|
|
10
Wobland
21.02.14
✎
11:00
|
только не бросай нас в терновый куст
|
|
11
ДенисЧ
21.02.14
✎
11:03
|
(9) Тебя песполезно заставлять.. Уж если не дано, так ...
|
|
12
GomerSimpson
21.02.14
✎
15:18
|
Вобщем пока придумал универсальный код для любых доков только в таком духе:
ЗаписьXML.ЗаписатьНачалоЭлемента(ДокОбъект.Метаданные().Имя +"___"+ДокОбъект.Ссылка.УникальныйИдентификатор());
ЗаписьXML.ЗаписатьНачалоЭлемента("Шапка");
Для Каждого Реквизит Из ДокОбъект.Метаданные().СтандартныеРеквизиты Цикл
Если ЗначениеЗаполнено(ДокОбъект[Реквизит.Имя]) Тогда
ЗаписьXML.ЗаписатьАтрибут(Реквизит.Имя, Строка(ДокОбъект[Реквизит.Имя]));
КонецЕсли;
КонецЦикла;
Для Каждого Реквизит Из ДокОбъект.Метаданные().Реквизиты Цикл
Если ЗначениеЗаполнено(ДокОбъект[Реквизит.Имя]) Тогда
ЗаписьXML.ЗаписатьАтрибут(Реквизит.Имя, Строка(ДокОбъект[Реквизит.Имя]));
КонецЕсли;
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента();
Ну и табличные части аналогично тоже перебором метаданных.
Если все же есть способ проще, дайте знать.
|
|