Имя: Пароль:
1C
1С v8
Не выводится группировка строк
0 BarakuzA
 
28.05.17
15:03
Добрый день,
Подскажите, в отчете (построитель отчета) не выводится группировка строк.
Прописывал АвтогруппировкаСтрок, не выводит.
1 BarakuzA
 
28.05.17
15:05
Таб = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    
    ДатаОтчета = "На дату: " + ?(ЗначениеЗаполнено(ДатаКонца), Формат(ДатаКонца, "ДЛФ=Д"), " - - ");
    
    ОбластьЗаголовокОтчета = Макет.ПолучитьОбласть("МакетЗаголовокОтчета");
    ОбластьЗаголовокОтчета.Параметры.ДатаОтчета = ДатаОтчета;
    Таб.Вывести(ОбластьЗаголовокОтчета);
    
    ОбластьШапкиТаблицы = Макет.ПолучитьОбласть("МакетШапкаТаблицы");
    Таб.Вывести(ОбластьШапкиТаблицы);
    
    Построитель.Параметры.Вставить("ДатаКонца", КонецДня(ДатаКонца));
    Построитель.Выполнить();
    
    Таб.НачатьАвтогруппировкуСтрок();
    
    //ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("МакетДетальныеЗаписи");
    //Выборка = РезультатЗапроса.Выбрать();
    //Пока Выборка.Следующий() Цикл
    //    ОбластьДетальныхЗаписей.Параметры.СкладШифр         = Выборка.СкладШифр;
    //    ОбластьДетальныхЗаписей.Параметры.Имущество         = Выборка.Имущество;
    //    ОбластьДетальныхЗаписей.Параметры.МестоЭксплуатации = Выборка.МестоЭксплуатации;
    //    ОбластьДетальныхЗаписей.Параметры.Ответственный     = Выборка.Ответственный;
    //    ОбластьДетальныхЗаписей.Параметры.КоличествоОстаток = Выборка.КоличествоОстаток;
    //    Таб.Вывести(ОбластьДетальныхЗаписей);
    //КонецЦикла;
    
    ОбластьИтоги         = Макет.ПолучитьОбласть("МакетИтоги");
    ОбластьСкладШифр     = Макет.ПолучитьОбласть("МакетСкладШифр");
    ОбластьПодразделение = Макет.ПолучитьОбласть("МакетПодразделение");
    ОбластьОтветственный = Макет.ПолучитьОбласть("МакетОтветственный");
    ОбластьИмущество     = Макет.ПолучитьОбласть("МакетИмущество");
    
    РезультатЗапроса= Построитель.Результат;
    
    ВыборкаОбщийИтог = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ОБЩИЕ");
    Пока ВыборкаОбщийИтог.Следующий() Цикл
        ОбластьИтоги.Параметры.Заполнить(ВыборкаОбщийИтог);
        Таб.Вывести(ОбластьИтоги);
                
        ВыборкаСкладШифр = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"СкладШифр");
        Пока ВыборкаСкладШифр.Следующий() Цикл
            //ОбластьСкладШифр.Параметры.Заполнить(ВыборкаСкладШифр,ВыборкаСкладШифр.Уровень(),,Ложь);
            ОбластьСкладШифр.Параметры.Заполнить(ВыборкаСкладШифр);
            Таб.Вывести(ОбластьСкладШифр);
            
            ВыборкаПодразделение = ВыборкаскладШифр.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Подразделение");
            Пока ВыборкаПодразделение.Следующий() Цикл
                //ОбластьПодразделение.Параметры.Заполнить(ВыборкаПодразделение,ВыборкаПодразделение.Уровень(),,Ложь);
                ОбластьПодразделение.Параметры.Заполнить(ВыборкаПодразделение);
                Таб.Вывести(ОбластьПодразделение);
                
                ВыборкаОтветственный = ВыборкаПодразделение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Ответственный");
                Пока ВыборкаОтветственный.Следующий() Цикл
                    ОбластьОтветственный.Параметры.Заполнить(ВыборкаОтветственный);
                    //Таб.Вывести(ОбластьОтветственный,ВыборкаОтветственный.Уровень(),,Ложь);
                    Таб.Вывести(ОбластьОтветственный);
                    
                    ВыборкаИмущество = ВыборкаОтветственный.Выбрать();
                    Пока ВыборкаИмущество.Следующий() Цикл
                        ОбластьИмущество.Параметры.Заполнить(ВыборкаИмущество);
                        Таб.Вывести(ОбластьИмущество);
                    КонецЦикла;
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;
КонецЦикла;    

    Таб.ЗакончитьАвтогруппировкуСтрок();
    
    

    //-------------------------------------
    ЭлементыФормы.ТабДок.Очистить();
    
    
    //КоличествоУровней = ЭлементыФормы.ТабДок.КоличествоУровнейГруппировокСтрок();
    //Для Уровень=1 По КоличествоУровней - 1 Цикл
    //    ЭлементыФормы.ТабДок.ПоказатьУровеньГруппировокСтрок(КоличествоУровней - Уровень);
    //КонецЦикла;
    ЭлементыФормы.ТабДок.Вывести(Таб);
2 mehfk
 
28.05.17
15:12
ТабличныйДокумент.Вывести (SpreadsheetDocument.Put)
ТабличныйДокумент (SpreadsheetDocument)
Вывести (Put)
Синтаксис:

Вывести(<Таблица>, <Уровень>, <ИмяГруппы>, <Открыта>)
Параметры:

<Таблица> (обязательный)

Тип: ТабличныйДокумент; ПолеТабличногоДокумента.
Выводимая таблица.
<Уровень> (необязательный)

Тип: Число.
Уровень используется для автоматической группировки строк табличного документа. Соседние строки с одинаковым уровнем будут отнесены к одной группе. Строки с минимальным уровнем в группу не объединяются.
<ИмяГруппы> (необязательный)

Тип: Строка.
Название группы, к которой относятся выводимые строки.
Значение по умолчанию: Пустая строка.
<Открыта> (необязательный)

Тип: Булево.
Истина - выведенная группа будет открыта; Ложь - группа будет выведена в свернутом виде.
Значение по умолчанию: Истина.
Возвращаемое значение:

Тип: ОбластьЯчеекТабличногоДокумента.
Область, в которую был осуществлен вывод.
Описание:

Выводит табличный документ в результирующий табличный документ, добавляя его со следующей строки вслед за самой нижней выведенной строкой, начиная с первой колонки.
Табличные документы, которые выводятся при помощи данного метода, не рекомендуется передавать между клиентом и сервером и обратно.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

Свойство Формат ячейки табличного документа не используется для форматирования значений, выводимых в при помощи шаблона.
Пример:

ТабДок = Новый ТабличныйДокумент;
Секция = ТабДок.ПолучитьОбласть("R1");
Секция.Область("R1C1").Текст = "Численность сотрудников";
ТабДок.НачатьАвтогруппировкуСтрок();
ТабДок.Вывести(Секция,1,"Группа",Истина);
Итого = 0;
Для Н=1 По 3 Цикл  
    Значение = Н; Итог = 0;  
    Секция.Область("R1C1").Текст = "Отдел "+Н;
    Секция.Область("R1C2").Текст = "";
    ТабДок.Вывести(Секция,2,"Группа 1",Истина);
    Секция.Область("R1C1").Текст = "Группа";
    Секция.Область("R1C2").Текст = "Численность";
    ТабДок.Вывести(Секция,2,"Группа 1",Истина);
    Для К=1 По 10 Цикл
        Секция.Область("R1C1").Текст = "А"+Н+К;
        Секция.Область("R1C2").Текст = Значение;
        ТабДок.Вывести(Секция,3,"Группа 2",Истина);
        Итог = Итог + Значение;
        Значение = Значение + 10;
    КонецЦикла;
    Секция.Область("R1C1").Текст = "Итого"+Н;
    Секция.Область("R1C2").Текст = Итог;
    ТабДок.Вывести(Секция,2,"Группа 1",Истина);
    Секция.Область("R1C1:R1C2").Текст = "";
    ТабДок.Вывести(Секция);
    Итого = Итого + Итог;
КонецЦикла;
Секция.Область("R1C1").Текст = "Всего:";
Секция.Область("R1C2").Текст = Итого;
ТабДок.Вывести(Секция,1,"Группа",Истина);
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.ИтогиСнизу = Истина;
ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать("Пример использования верт. автогруппировки");


См. также:

ТабличныйДокумент, метод Присоединить

--------------------------------------------------------------------------------

     Методическая информация
3 BarakuzA
 
28.05.17
15:22
(2) Заработало, но как-то коряво группирует.
4 BarakuzA
 
28.05.17
15:27
(3) А теперь нормально результат выводит.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший