Имя: Пароль:
1C
1С v8
Дерево значений на форме
0 AntonH851
 
06.09.12
15:54
Добрый день
Нужно на форме отобразить дерево значений, оно формируется запросом, и дочерние строки добавляются потом где нужно.
Присваиваю полученное дерево значений реквизиту которые связан с табличным полем, в отладчике вижу что есть строки 2-го уровня а на форме отображается только строки 1-го уровня, т.е. просто как ТаблицаЗначений.
1 ОбычныйЧеловек
 
06.09.12
15:56
(0) Логично
2 AntonH851
 
06.09.12
15:57
А что нужно чтобы Дерево значений отображалось именно как дерево?
3 AntonH851
 
06.09.12
15:57
Вот мой код    

ПостроительЗапроса=Новый ПостроительЗапроса;
   ПостроительЗапроса.Текст = "ВЫБРАТЬ
                              |    ТаблицаСчетов.Ссылка,
                              |    ТаблицаСчетов.НомерСчетаПоставщика КАК НомерСчета,
                              |    ТаблицаСчетов.ДатаСчетаПоставщика КАК ДатаСчета,
                              |    ТаблицаСчетов.Поставщик,
                              |    ТаблицаСчетов.СуммаИтог КАК Сумма,
                              |    ТаблицаСчетов.Распределен КАК Распределен,
                              |    ТаблицаСчетов.Сопоставлен КАК Сопоставлен,
                              |    ТаблицаСчетов.ПометкаУдаления КАК ПометкаУдаления,
                              |    ТаблицаСчетов.ДатаОплаты,
                              |    ВЫБОР
                              |        КОГДА ЕСТЬNULL(ТаблицаКорректировки.Корректировка, 0) > 0
                              |            ТОГДА ИСТИНА
                              |        ИНАЧЕ ЛОЖЬ
                              |    КОНЕЦ КАК Корректировка
                              |ИЗ
                              |    (ВЫБРАТЬ
                              |        СчетПоставщика.Ссылка КАК Ссылка,
                              |        СчетПоставщика.НомерСчетаПоставщика КАК НомерСчетаПоставщика,
                              |        СчетПоставщика.ДатаСчетаПоставщика КАК ДатаСчетаПоставщика,
                              |        СчетПоставщика.Поставщик КАК Поставщик,
                              |        СчетПоставщика.СуммаИтог КАК СуммаИтог,
                              |        СчетПоставщика.Распределен КАК Распределен,
                              |        СчетПоставщика.Сопоставлен КАК Сопоставлен,
                              |        СчетПоставщика.ПометкаУдаления КАК ПометкаУдаления,
                              |        СчетПоставщика.ДатаОплаты КАК ДатаОплаты
                              |    ИЗ
                              |        Документ.СчетПоставщика КАК СчетПоставщика
                              |    ГДЕ
                              |        СчетПоставщика.ПометкаУдаления = ЛОЖЬ
                              |        И СчетПоставщика.Распределен = ЛОЖЬ
                              |        И СчетПоставщика.Сопоставлен = ИСТИНА
                              |        И ВЫБОР
                              |                КОГДА СчетПоставщика.Поставщик.ГраницаОплаты = &ПустаяСсылка
                              |                    ТОГДА ИСТИНА
                              |                ИНАЧЕ СчетПоставщика.ДатаОплаты > СчетПоставщика.Поставщик.ГраницаОплаты.ДатаОплаты
                              |            КОНЕЦ
                              |        И СчетПоставщика.ДатаОплаты > &ОбщаяГраницаОплаты) КАК ТаблицаСчетов
                              |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                              |            КорректировкаСчета.Счет КАК Счет,
                              |            КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КорректировкаСчета.Ссылка) КАК Корректировка
                              |        ИЗ
                              |            Документ.КорректировкаСчета КАК КорректировкаСчета
                              |        ГДЕ
                              |            КорректировкаСчета.Счет.Распределен = ЛОЖЬ
                              |            И КорректировкаСчета.Счет.ПометкаУдаления = ЛОЖЬ
                              |            И КорректировкаСчета.Счет.Сопоставлен = ИСТИНА
                              |            И ВЫБОР
                              |                    КОГДА КорректировкаСчета.Счет.Поставщик.ГраницаОплаты = &ПустаяСсылка
                              |                        ТОГДА ИСТИНА
                              |                    ИНАЧЕ КорректировкаСчета.Счет.ДатаОплаты > КорректировкаСчета.Счет.Поставщик.ГраницаОплаты.ДатаОплаты
                              |                КОНЕЦ
                              |            И КорректировкаСчета.Счет.ДатаОплаты > &ОбщаяГраницаОплаты
                              |        
                              |        СГРУППИРОВАТЬ ПО
                              |            КорректировкаСчета.Счет) КАК ТаблицаКорректировки
                              |        ПО ТаблицаСчетов.Ссылка = ТаблицаКорректировки.Счет
                              |{ГДЕ
                              |    ТаблицаСчетов.Поставщик.*,
                              |    ТаблицаСчетов.ДатаОплаты,
                              |    ТаблицаСчетов.Распределен,
                              |    ТаблицаСчетов.Сопоставлен,
                              |    ТаблицаСчетов.ПометкаУдаления}";
   Для Каждого СтрокаОтбора из ЭтаФорма.тпСчета.Отбор Цикл
       ДоступноеПоле=ПостроительЗапроса.ДоступныеПоля.Найти(СтрокаОтбора.Имя);
       Если ДоступноеПоле<>Неопределено И ДоступноеПоле.Отбор=Истина Тогда
           Если СтрокаОтбора.Имя = "Поставщик" Тогда
               СтрокаОтбораПостроителя=ПостроительЗапроса.Отбор.Добавить(СтрокаОтбора.Имя);
               СтрокаОтбораПостроителя.ВидСравнения = СтрокаОтбора.ВидСравнения;
               СтрокаОтбораПостроителя.Значение = СтрокаОтбора.Значение;
               СтрокаОтбораПостроителя.Использование = СтрокаОтбора.Использование;
           Иначе
               СтрокаОтбораПостроителя=ПостроительЗапроса.Отбор.Добавить(СтрокаОтбора.Имя);
               ЗаполнитьЗначенияСвойств(СтрокаОтбораПостроителя, СтрокаОтбора);
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   ПостроительЗапроса.Параметры.Вставить("ОбщаяГраницаОплаты", ОбщаяГраницаОплаты);
   ПостроительЗапроса.Параметры.Вставить("ПустаяСсылка", Документы.СчетПоставщика.ПустаяСсылка());
   ПостроительЗапроса.Выполнить();
   ТЗ=ПостроительЗапроса.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
   Отбор = Новый Структура;
   Отбор.Вставить("Корректировка", Истина);
   НС = ТЗ.Строки.НайтиСтроки(Отбор, Ложь);
   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    КорректировкаСчета.Ссылка,
                  |    КорректировкаСчета.Номер,
                  |    КорректировкаСчета.Дата,
                  |    КорректировкаСчета.Счет,
                  |    КорректировкаСчета.Сумма,
                  |    КорректировкаСчета.НДС10,
                  |    КорректировкаСчета.НДС18,
                  |    КорректировкаСчета.Распределен
                  |ИЗ
                  |    Документ.КорректировкаСчета КАК КорректировкаСчета
                  |ГДЕ
                  |    КорректировкаСчета.Счет = &Счет
                  |    И КорректировкаСчета.ПометкаУдаления = ЛОЖЬ";
   
   Для Каждого Стр Из НС Цикл
       
       Запрос.УстановитьПараметр("Счет", Стр.Ссылка);
       ТЗКорректировки = Запрос.Выполнить().Выгрузить();
       
       Для Каждого СтрК Из ТЗКорректировки Цикл
           НоваяСтр = Стр.Строки.Добавить();
           НоваяСтр.Ссылка = СтрК.Ссылка;
           НоваяСтр.Сумма = СтрК.Сумма;
           НоваяСтр.Распределен = СтрК.Распределен;
       КонецЦикла;
       
   КонецЦикла;
   
   тпСписокСчетов = ТЗ;
4 YF
 
06.09.12
15:58
(2) Вроде режим отображения есть у элемента формы
5 ОбычныйЧеловек
 
06.09.12
15:59
(2) У колонки есть свойство "Отображать иерархию" - ты ее включил?
6 AntonH851
 
06.09.12
16:00
Отображать иерархию - нет не включал
7 AntonH851
 
06.09.12
16:02
Спасибо огромное, я или не знал или забыл про это...
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс