|
Сохранить документы в дерево значений | ☑ | ||
---|---|---|---|---|
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.ЗаписатьКонецЭлемента(); Ну и табличные части аналогично тоже перебором метаданных. Если все же есть способ проще, дайте знать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |