8.х Таблица Значений->Дерево Значений

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем alexburn, 22 мар 2011.

  1. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Приветствую вас!!! Как перенести ТЗ в ДЗ с группировкой по определенной колонке в ТЗ?
    Уже весь мозг сломал :D , подскажите пожалуйста :angry:
    Или может как-то запросом пройтись по ТЗ и в нем уже сгруппировать.
  2. afinogen
    Offline

    afinogen Опытный в 1С

    Регистрация:
    28 фев 2011
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    делал для 8.2
    Код:
    Процедура
    Запрос = Новый Запрос;
    Результат = Запрос.Выполнить();
    ДеревоИсточников = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    
    Дерево = Список.ПолучитьЭлементы();
    Дерево.Очистить();
    
    РекурсивныйВыводДереваЗначений(Дерево, ДеревоИсточников);
    
    КонецПроцедуры // ОбновитьСписокНоменклатуры()
    
    
    // Процедура выводит дерево значений на форму.
    //
    Процедура РекурсивныйВыводДереваЗначений(ЭлементыДерева, ЭлементыДереваСтроки)
    
    Для каждого СтрокаДеревоЗначений Из ЭлементыДереваСтроки.Строки Цикл
    
    Если СтрокаДеревоЗначений.ЭтоГруппа Тогда
    
    СтрокаДерево = ЭлементыДерева.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаДерево, СтрокаДеревоЗначений);            
    ЭлементыДереваНовый = СтрокаДерево.ПолучитьЭлементы();
    РекурсивныйВыводДереваЗначений(ЭлементыДереваНовый, СтрокаДеревоЗначений);
    
    ИначеЕсли НЕ СтрокаДеревоЗначений.ЭтоГруппа  Тогда
    
    СтрокаДерево = ЭлементыДерева.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаДерево, СтрокаДеревоЗначений);            
    ЭлементыДереваНовый = СтрокаДерево.ПолучитьЭлементы();
    РекурсивныйВыводДереваЗначений(ЭлементыДереваНовый, СтрокаДеревоЗначений);
    
    Иначе            
    
    
    СтрокаДерево = ЭлементыДерева.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаДерево, СтрокаДеревоЗначений);
    
    КонецЕсли;            
    
    КонецЦикла;    
    
    КонецПроцедуры // РекурсивныйВыводДереваЗначений()
    
    
    
    
  3. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Спасибо, про рекурсию читал где-то, буду ковырять:)
  4. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Что-то как то это муторно все, думаю может через ПостроительЗапроса можно это реализовать?
  5. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Ребята, сделал то что искал, оказалось все намного проще:
    Код:
    ПЗ = Новый ПостроительЗапроса;
    ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ВременнаяТаблица);//передаем ТЗ
    ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
    ПЗ.ИсточникДанных.Колонки.Комментарий.Измерение = Истина;//по этой колонке идет группировка
    ПЗ.ЗаполнитьНастройки();
    ПЗ.Выполнить();
    Дерево = ПЗ.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    Дерево.ВыбратьСтроку();
    
    Всем спасибо :angry:
  6. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    И еще один вопрос созрел, как добавить отбор в код который я привел?
  7. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Апнем тему:) Или где можно почитать про построитель запроса?
  8. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Попробовал сделать так:
    Код:
    Отбор = ПЗ.Отбор;
    Отбор.Добавить("ВидДвижения", ,"Вид движения").Использование = Истина;
    Отбор.Добавить("ВидДвижения", ,"Вид движения").ВидСравнения = ВидСравнения.Равно;
    Отбор.Добавить("ВидДвижения", ,"Вид движения").Значение = "Приход";
    
    Ругается что
    Отбор.Добавить("ВидДвижения", ,"Вид движения").Использование = Истина;
    по причине:
    Недопустимое значение параметра (параметр номер '1')

    В чем причина, блин, всю голову уже сломал :angry:
  9. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Может?
    Код:
    Отбор.Добавить("ВидДвижения", ,"Вид движения") = Неопределено
    
    
    поэтому и ругается
  10. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Нет, не из-за этого, на другом ресурсе читал что отбор должен быть типизированным, только ума не приложу как это сделать:(
  11. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Выяснил что в ПостроителеЗапроса отбор только для чтения. Похоже что не удастся поставить отбор.:(((
  12. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    А каков смысл отбора в построителе, если можно тоже самое сделать через параметры запроса?

Поделиться этой страницей