Имя: Пароль:
1C
 
Программно добавить группировку в табличный документ
0 rt2000
 
26.11.16
14:01
Как в табличный документ, добавить группировку, подскажите. Не могу понять, чего не хватает

ТабДок2 = новый ТабличныйДокумент;                    //создаем ТабДок
    Макет = ПолучитьМакет("Макет");                        //Получаем макет
    ОблМакета = Макет.ПолучитьОбласть("Шапка");          //получаем область
    ОблМакета.Параметры.ДнейВМесяц     = ДнейВМесяц;
    ТабДок2.НачатьАвтогруппировкуСтрок();          //начало группировки должно
    ТабДок2.Вывести(ОблМакета,0);
    ПерваяСтрока = 6;
    ОблМакета = Макет.ПолучитьОбласть("СтрокаОбласти");

    Пока ВыборкаГрупп.Следующий() цикл
        ПерваяСтрока = ПерваяСтрока + 1;         
        ОблМакета.Параметры.Период             = ВыборкаГрупп.Период;      //Период        
        ТабДок2.Вывести(ОблМакета);
    КонецЦикла;
    ТабДок2.ЗакончитьАвтогруппировкуСтрок();      //закончится группировка должна
    ТабДок2.Вывести(ОблМакета);
    ТабДок2.Показать();
1 jsmith
 
26.11.16
14:13

ТабДок2.Вывести(ОблМакета, 1, "Группа1", Истина);
ТабДок2.Вывести(ОблМакета, 2, "Группа2", Истина);
2 mehfk
 
26.11.16
14:14
ТабличныйДокумент (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 jsmith
 
26.11.16
14:18
У тебя, дружок, по ходу в одну группу строки попадают. Задавай уровни явно.
4 rt2000
 
26.11.16
14:48
Ничего не понимаю.
Попробовал разбить выборку, но не получается

Сч = 0;    
    Пока Выборка.Следующий() и Сч < 10 цикл
        Сч = Сч + 1;
        ПерваяСтрока = ПерваяСтрока + 1;         
        ОблМакета.Параметры.Период             = Выборка.Период;      //Период                    
        ТабДок2.Вывести(ОблМакета, 0);
    КонецЦикла;
    
    Пока Выборка.Следующий() и Сч >= 10 цикл
        Сч = Сч + 1;
        ПерваяСтрока = ПерваяСтрока + 1;
        
        ОблМакета.Параметры.Период             = Выборка.Период;      //Период                
        ТабДок2.Вывести(ОблМакета, 1);
    КонецЦикла;      
    Макет.ЗакончитьАвтогруппировкуСтрок();
5 jsmith
 
26.11.16
15:19
Афигеть ты группируешь
6 jsmith
 
26.11.16
15:22

ТабДок2 = новый ТабличныйДокумент;                    //создаем ТабДок
Макет = ПолучитьМакет("Макет");                        //Получаем макет
ОблМакета = Макет.ПолучитьОбласть("Шапка");          //получаем область
ОблМакета.Параметры.ДнейВМесяц = ДнейВМесяц;
ТабДок2.НачатьАвтогруппировкуСтрок();          //начало группировки должно
ТабДок2.Вывести(ОблМакета, 1, "Группа1");
ПерваяСтрока = 6;
ОблМакета = Макет.ПолучитьОбласть("СтрокаОбласти");
Пока ВыборкаГрупп.Следующий() цикл
        ПерваяСтрока = ПерваяСтрока + 1;        
        ОблМакета.Параметры.Период = ВыборкаГрупп.Период;      //Период        
        ТабДок2.Вывести(ОблМакета, 2, "Группа2");
КонецЦикла;
ТабДок2.ЗакончитьАвтогруппировкуСтрок();      //закончится группировка должна
ТабДок2.Вывести(ОблМакета);
ТабДок2.Показать();