Имя: Пароль:
1C
1С v8
Вывод запроса в Дерево знач на форме
0 gabd_marat
 
18.07.18
13:54
Всем, привет. Вывожу запрос в дерево значений , но выводиться только первая группировка участок остальное нет. Дерево знач на форме , есть колонка наименование - сост тип данных

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

//Процедура формирует отчет по следующему участку и техоперации паспорта
//
Процедура СформироватьОтчет()
    
    // Получение данных отчета.
    ВыборкаПаспорта = ПолучитьВыборку();
    
    //ДеревоЗначенийУчасток.НачальноеОтображениеДерева = НачальноеОтображениеДерева.НеРаскрывать;
    //Модифицированность = Истина;
    ВыборкаУчасток = ВыборкаПаспорта.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Участок");
    
    Пока ВыборкаУчасток.Следующий() Цикл
        
        Строка = ДеревоЗначенийУчасток.Строки.Добавить();
        Строка.Наименование = ВыборкаУчасток.Участок;
        ВыборкаТехОперация = ВыборкаУчасток.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Техоперация");
        Пока ВыборкаТехОперация.Следующий() Цикл
            
            Подстрока = Строка.Строки.Добавить();
            Подстрока.Наименование = ВыборкаТехОперация.ТехОперация;
            
            ВыборкаМаршрутка = ВыборкаТехОперация.Выбрать();
            Пока ВыборкаМаршрутка.Следующий() Цикл
                
                ПодстрокаСтроки = Подстрока.Строки.Добавить();
                ПодстрокаСтроки.Наименование = ВыборкаМаршрутка.Паспорт;
                
            КонецЦикла;
        КонецЦикла;
        
    КонецЦикла;
    дерево = ДеревоЗначенийУчасток;
КонецПроцедуры // СформироватьОтчет()
1 gabd_marat
 
18.07.18
13:56
дерево = ДеревоЗначенийУчасток; - просто тестировал
2 gabd_marat
 
18.07.18
13:59
Обход запроса не правильный?
3 Dohter2010
 
18.07.18
14:04
Выборка = Запрос.Выполнить();
    Выборка2 = Выборка.Выгрузить();
    Возврат Выборка;

а это так надо ?
4 gabd_marat
 
18.07.18
14:13
Выборка2 = Выборка.Выгрузить(); - хотел понять что получилось в результате запроса
5 gabd_marat
 
18.07.18
14:14
Подскажите в чем проблема
6 gabd_marat
 
18.07.18
14:14
Запрос вроде работающий, группировки есть, но вывод не правильный как я понимаю
7 gabd_marat
 
18.07.18
14:16
ЭЭЭ
8 gabd_marat
 
18.07.18
14:23
Ник то подсказать не может?
9 gabd_marat
 
18.07.18
14:25
Как можно вывести дерево знач ? Как из запроса вывести в 1 поле дер знач 3 поля запроса?
10 Kondarat
 
18.07.18
14:27
У колонки Наименование установить галочку "ОтображатьИерархию"?
11 gabd_marat
 
18.07.18
14:33
(10) Да спасибо, проблема была в этом
12 xxTANATORxx
 
18.07.18
14:40
в толстом клиенте как-то так

ЭлементыФормы.Дерево.Значение = Запрос.Выполнить().Выгрузить(ОбходРезЗапроса...);

ЭлементыФормы.Дерево.СоздатьКолонки()
13 gabd_marat
 
18.07.18
15:00
формлениеСтроки.Ячейки.Переместить.ОтображатьФлажок - какая команд вместо ОтображатьФлажок должна быть что бы появилась лупа в ячейке?