Имя: Пароль:
1C
1С v8
Табличный документ сворачивание группировок
0 Anabella
 
29.05.15
11:10
Подскажите, люди добрые. Задача: необходимо без СКД вывести отчет со сворачиваемыми группировками. Можно ли это сделать в макете? Если нет, можно ли выводить данные в табличный документ без макета? Гугл уверяет, что можно. но такой пример:

    ТабДок = Новый ТабличныйДокумент;
    Шапка = ТабДок.ПолучитьОбласть("Шапка");

Не срабатывает, потому что не найдена область шапка. А где её создать, как не в макете?
1 Dry_42
 
29.05.15
11:16
А макет прочитать забыли? он вообще есть макет?
2 Dry_42
 
29.05.15
11:18
Может так надо:
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
Шапка = Макет.ПолучитьОбласть("Шапка");
3 Anabella
 
29.05.15
11:22
(1) Можно ли в макете вывести отчет со сворачиваемыми группировками?
4 Рэйв
 
29.05.15
11:23
(3)Можно.Только не в макете, а в табличном документе
5 Рэйв
 
29.05.15
11:25
ТабличныйДокумент (SpreadsheetDocument)
НачатьГруппуСтрок (StartRowGroup)
Синтаксис:

НачатьГруппуСтрок(<ИмяГруппы>, <ОткрытаЛиГруппа>)
Параметры:

<ИмяГруппы> (необязательный)

Тип: Строка.
Название группы.
<ОткрытаЛиГруппа> (необязательный)

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

Начинает новую группу строк. Можно создавать вложенные группы строк.

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

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

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


См. также:

ТабличныйДокумент, метод ЗакончитьГруппуСтрок

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

     Методическая информация
6 Anabella
 
29.05.15
11:29
(5) я читала, но не поняла, соотносится ли это с макетом :) спасибо, попробую.
7 Рэйв
 
29.05.15
11:32
(6)С макетом никак. Соотносится с выводом в таб документ
8 ДенисЧ
 
29.05.15
11:34
Oh. My. God.