Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отчет обработка иерархического справочника с уровнями и спойлерами (+)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Constantus
Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

Делаю отчет в Обработке (1 часть), а именно обход справочника "Контрагенты" по иерархии:

    Запрос.Текст = 
        "ВЫБРАТЬ
        |    Контрагенты.Наименование КАК Наименование
        |ИЗ
        |    Справочник.Контрагенты КАК Контрагенты
        |
        |УПОРЯДОЧИТЬ ПО
        |    Наименование ИЕРАРХИЯ";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        // Вставить обработку выборки ВыборкаДетальныеЗаписи
        Отступ = "";
        Для Шаг = 0 По Выборка.Уровень() Цикл
            Отступ = Отступ + "    ";
        КонецЦикла;
        //Сообщить(Отступ + Выборка.Наименование);
        Область = Макет.ПолучитьОбласть("Значения");
        Область.Параметры.Контрагенты = Отступ + Выборка.Наименование;
        ТабДок.Вывести(Область);
        
    КонецЦикла;


Отчет выводится в форме обработки в ПолеТабличногоДокумента. Сейчас иерархию добился только путем добавления пробелов.
Как можно добиться вывода отчета по иерархии путем появления спойлеров, т.е. как в отчете на СКД по уровням с (+) и (-)
Vidocq05
Constantus @ Сегодня, 9:06 необходимо зарегистрироваться для просмотра ссылки ,

Макет = ПолучитьМакет("Макет");
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Контрагенты.Ссылка КАК Ссылка,
        |    Контрагенты.Представление
        |ИЗ
        |    Справочник.Контрагенты КАК Контрагенты
        |ИТОГИ ПО
        |    Ссылка ИЕРАРХИЯ";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьСсылкаИерархия = Макет.ПолучитьОбласть("СсылкаИерархия");
    ОбластьСсылка = Макет.ПолучитьОбласть("Ссылка");
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    ВыборкаСсылка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаСсылка.Следующий() Цикл
        Если ВыборкаСсылка.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда
            Область = ОбластьСсылкаИерархия;
        Иначе
            Область = ОбластьСсылка;
        КонецЕсли;
    
        Область.Параметры.Заполнить(ВыборкаСсылка);
        ТабДок.Вывести(Область, ВыборкаСсылка.Уровень());
    КонецЦикла;
    
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.ТолькоПросмотр = Истина;
    
    ТабДок.Показать();
Constantus
Vidocq05 @ Сегодня, 16:11 необходимо зарегистрироваться для просмотра ссылки ,

Благодарю. Вроде это оно...

Немного не понял:
Область.Параметры.Заполнить(ВыборкаСсылка);


"Заполнить" выполняет заполнение, если наименование полей в запросе совпадает с параметрами в Макете?

Отчет получился, но почему-то дублируется в детализации наименование группы:

Группа01
____КК05
____КК06
____Группа01
____КК01
____КК02

И наименования идут не по порядку по возрастанию...

        |УПОРЯДОЧИТЬ ПО
        |    Ссылка

Vidocq05
Constantus @ Сегодня, 14:38 необходимо зарегистрироваться для просмотра ссылки ,
Цитата(Constantus @ 25.05.17, 14:38) необходимо зарегистрироваться для просмотра ссылки
"Заполнить" выполняет заполнение, если наименование полей в запросе совпадает с параметрами в Макете?

Да

Цитата(Constantus @ 25.05.17, 14:38) необходимо зарегистрироваться для просмотра ссылки
И наименования идут не по порядку по возрастанию...

сделайте упорядочить по наименованию
Цитата(Constantus @ 25.05.17, 14:38) необходимо зарегистрироваться для просмотра ссылки
Отчет получился, но почему-то дублируется в детализации наименование группы:

Прошу прощения ))

Запрос.Текст = 
        "ВЫБРАТЬ
        |    Контрагенты.Ссылка КАК Ссылка,
        |    Контрагенты.Представление
        |ИЗ
        |    Справочник.Контрагенты КАК Контрагенты
        |ГДЕ
        |    Контрагенты.ЭтоГруппа = ЛОЖЬ
        |ИТОГИ ПО
        |    Ссылка ИЕРАРХИЯ";
Constantus
Vidocq05 @ Сегодня, 17:25 необходимо зарегистрироваться для просмотра ссылки ,


Благодарю... и как я сам до такого не додумался :-)
Constantus
А как сделать спойлеры без учета всяких Иерархий...

Например, просто спрятать в спойлер определенную область макета?

Имеется код выполнения заполнения определенной области в макете, как только заканчивается, то эту область замочить в спойлер
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.