Имя: Пароль:
1C
1С v8
Дерево значений -сохранить Реквизит в документе
0 shlyahtich
 
22.02.12
06:57
Простая задачка... вроде бы
Есть документ
В нем реквизит формы с типом ДеревоЗначений
рф_дерево
данные этого реквизита формы визуализируются в табличном поле
Как удобней всего сохранить в реквизитах документа это дерево значений, чтобы потом разворачивать его в таб форме? Ну чтобы не
делать регулярно запрос, по которому я его заполняю типа...

   Запрос.Текст = "ВЫБРАТЬ
                    |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Контрагент,
                    |    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК ДоговорКонтрагента,
                    |    ЕСТЬNULL(ХозрасчетныйОстаткиИОбороты.Валюта, &ВалютаРубль) КАК Валюта,
                    |    ХозрасчетныйОстаткиИОбороты.Счет КАК СчетУчета,
                    |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт,
                    |    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт,
                    |    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт,
                    |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК ОстатокВРублях,
                    |    ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаНачальныйОстатокКт,
                    |    ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотДт,
                    |    ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотКт,
                    |    ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокКт КАК ОстатокВВалюте,
                    |    ХозрасчетныйОстаткиИОбороты.Подразделение КАК Подразделение
                    |ИЗ
                    |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Период, ДвиженияИГраницыПериода, Счет В (&МассивСчетов), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
                    |ИТОГИ ПО
                    |    Валюта,
                    |    СчетУчета,
                    |    Контрагент,
                    |    ДоговорКонтрагента,
                    |    Подразделение";


Я пытался сохранить результаты запроса в таб части документа и оттуда их восстанавливать, но в таком случае теряю группировки
1 Wobland
 
22.02.12
06:58
ЗначениеВСтрокуВнутр?
2 Rovan
 
гуру
22.02.12
07:27
(0) очень странная задача - хранить в документе отображение оборотов бух. регистра
3 shlyahtich
 
22.02.12
09:06
(1) в том то и дело что ?
4 shlyahtich
 
22.02.12
09:08
(2)
все оч просто - так я нахожу все что связано с займами полученными а потом по ним расчтитываю проценты к уплате и делаю проводки.
Поэтому и надо мне хранить результаты в документе. Ничего странного. Чтобы визуализировать то, что я насчитал.
5 SeraFim
 
22.02.12
09:09
Хранилище значения?
6 SeraFim
 
22.02.12
09:15
что-то типа такого: при записи запихиваем это дерево в реквизит
Документ.ДеревоХранилищеЗначения = Новый ХранилищеЗначения(ДанныеФормыВЗначение(ДеревоФорма, Тип("ДеревоЗначений"));
при открытии формы достаем из этого реквизита и запихиваем в реквизит формы
ЗначениеВДанныеФормы(Документ.ДеревоХранилищеЗначения.Получить(), ДеревоФорма);

ЗЫ работало на УФ, на обычных могут быть какие-то особенности)
7 ice777
 
22.02.12
09:18
(6) да везде работает.
8 shlyahtich
 
22.02.12
09:22
(6) С хранилищем не работал - щас попробую
отпишусь тогда
9 shlyahtich
 
22.02.12
09:25
(6)хм... а очищать предыдущее значение не требуется перед записью?
10 SeraFim
 
22.02.12
09:26
(7)ну, я не проверял) помню, была там какая-то заморочка. Что-то вроде объявил Реквезит "Дерево" с типом "ДеревоЗначений". Потом смотрю в отладчике - а там у него тип другой - "ДанныеФормыДерево"
(9) неа. ты же перезаписываешь значение, то есть старое "затирается"
11 shlyahtich
 
22.02.12
09:37
(10)
Я ввел реквизит формы рф_ДеревоЗначений с типом дерево значений
и ввел реквизит объекта ДеревоЗначений с типом ХранилищеЗначений
И на форме ЭлементФормы.ДеревоЗначений
так вот рф_ДеревоЗначений и является данными для элемента формы

ЭлементФормы.ДеревоЗначений.данные=рф_ДеревоЗначений

в идеале если я реквизит формы рф_ДеревоЗначений сохранил в хранилище, потом достал при открытии - значит выходит всю свою древообразную структуру я сохранил в одном реквизите...

Для моей ситуации это удобней чем "прямая таблица"
Ща... пробую что выйдет. Почему то один раз вообще приложение "вылетело" с предложением написать мелкософту
12 shlyahtich
 
22.02.12
09:38
ЭлементФормы.ДеревоЗначений  имеет тип конечно ТаблицаЗначений
13 shlyahtich
 
22.02.12
09:38
то есть Табличное поле блин
14 SeraFim
 
22.02.12
09:50
ах да, на УФ можно же сразу для Реквизита формы "ДеревоЗначений" указать какие колонки, и какие у них типы.
и табличное поле сразу автоматом правильно создастся (там еще отображение "дерево" должно стоять)
на обычной, видимо, программно колонки добавлять придется
15 shlyahtich
 
22.02.12
09:58
ДеревоЗаймовПолученных = Новый ХранилищеЗначения(рф_ДеревоЗаймовПолученных, Тип("ДеревоЗначений"));
по причине:
Несоответствие типов (параметр номер '2')

При этом ДеревоЗаймовПолученных это реквизит документа с типом ХранилищеЗначения

рф_ДеревоЗаймовПолученных реквизит формы с типом ДеревоЗначений

Что ему не нравится? Формы обычные
16 shlyahtich
 
22.02.12
09:58
при записи ошибка
17 SeraFim
 
22.02.12
09:59
прямо в отладчике так и написано, что рф_ДеревоЗаймовПолученных реквизит формы - с типом ДеревоЗначений?
18 SeraFim
 
22.02.12
10:01
второй параметр - это для ДанныеФормыВЗначение
19 shlyahtich
 
22.02.12
10:02
(17)
да в отладчике тоже все ОК
рф_ДеревоЗаймовПолученных значение= ДеревоЗначений
тип = ДеревоЗначений
20 SeraFim
 
22.02.12
10:02
тогда просто ДеревоЗаймовПолученных = Новый ХранилищеЗначения(рф_ДеревоЗаймовПолученных);
второй параметр был нужен для другой функции
21 shlyahtich
 
22.02.12
10:06
да теперь разворачивать пробую
рф_ДеревоЗаймовПолученных=ДеревоЗаймовПолученных.Получить()
22 shlyahtich
 
22.02.12
10:08
но перед этим конечно в форме делаю

       ЭлементыФормы.ДеревоЗаймовПолученных.СоздатьКолонки();
23 shlyahtich
 
22.02.12
10:17
Теперь не могу понять - я удаляю в таб форме когда строки, то наверно надо реквизит формы перезаписывать... потому что при открытии я все равно вижу все