Имя: Пароль:
1C
1С v8
Группировка колонок в табличном документе
,
0 dainastar
 
12.03.15
16:36
Необходимо создать отчет с данными:
                Период день / Количество
Подразделение   01.02   02.02   03.02
  Продукция       5       7       10

Я выбираю данные запросом:
ВЫБРАТЬ
ПланыПроизводства.Подразделение КАК Подразделение,
ПланыПроизводства.Номенклатура КАК Продукция,
ПланыПроизводства.Период КАК Период,
СУММА(ПланыПроизводства.Количество) КАК Количество
ИЗ
РегистрНакопления.ПланыПроизводства КАК ПланыПроизводства
ГДЕ
ПланыПроизводства.Период МЕЖДУ &Д1 И &Д2
И ПланыПроизводства.Сценарий = &Сценарий
СГРУППИРОВАТЬ ПО
ПланыПроизводства.Подразделение,
ПланыПроизводства.Номенклатура,
ПланыПроизводства.Период
ИТОГИ
СУММА(Количество)
ПО
Период ПЕРИОДАМИ(ДЕНЬ, &Д1, &Д2),
Подразделение,
Продукция
АВТОУПОРЯДОЧИВАНИЕ

И мне нужно вывести отчет в табличный документ. Не получается вывести период в группировке колонок. Вот код:

ТабДок.НачатьАвтогруппировкуСтрок();
Выборка_Подразделение = Выборка_Период.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Подразделение");
    Пока Выборка_Подразделение.Следующий() Цикл
        Область = Макет.ПолучитьОбласть("Подразделение|Данные");
        Область.Параметры.Заполнить(Выборка_Подразделение);
        ТабДок.Вывести(Область,1);

            Выборка_НоменклатурнаяГруппа = Выборка_Подразделение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"НоменклатурнаяГруппа");
        Пока Выборка_НоменклатурнаяГруппа.Следующий() Цикл
            Область = Макет.ПолучитьОбласть("НоменклатурнаяГруппа|Данные");
            Область.Параметры.Заполнить(Выборка_НоменклатурнаяГруппа);
            ТабДок.Вывести(Область,2);
            Выборка_Продукция = Выборка_НоменклатурнаяГруппа.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Продукция");
            Пока Выборка_Продукция.Следующий() Цикл
                Область = Макет.ПолучитьОбласть("Продукция|Данные");
                Область.Параметры.Заполнить(Выборка_Продукция);
                ТабДок.Вывести(Область,3);
                Выборка_Сырье = Выборка_Продукция.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Сырье");
                Пока Выборка_Сырье.Следующий() Цикл
                    Область = Макет.ПолучитьОбласть("Сырье|Данные");
                    Область.Параметры.Заполнить(Выборка_Сырье);
                    Область.Параметры.КоличествоОстаток = ПолучитьОстаток(Выборка_Сырье.Сырье);
                    ТабДок.Вывести(Область,4);
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();

Подскажите как вывести группировки по периоду
1 D_E_S_131
 
12.03.15
18:06
При формировании шапки документа отдельно "пройтись" по группировке периодов.
2 Михаил Козлов
 
12.03.15
18:21
Если в конфе есть УниверсальныйОтчет, можно с его помощью.
Либо СКД.
3 dainastar
 
13.03.15
08:55
К сожалениб СКД или Универсальным не получается, потому что это только часть данных, при обходе будут другие данные собираться и выводиться в отчет
4 D_E_S_131
 
13.03.15
09:45
Ну а что с отдельным обходом по группировке Период и формированием шапки с помощью ПрисоединитьСекцию() неполучается?
5 dainastar
 
13.03.15
09:51
(4) Вывести шапку получается. Но когда выводятся данные, то они выходят, по порядку.
Т.е. если по продукции1 была план  01.03 и 05.03, то цифра для 05.03 вставет в 02.03
6 D_E_S_131
 
13.03.15
10:12
(5) Потому что периоды д.б. выбраны все и по порядку.

Синтаксис:

Выбрать(<ТипОбхода>, <Группировки>, <ГруппировкиДляЗначенийГруппировок>)
...
<ГруппировкиДляЗначенийГруппировок> (необязательный)

Тип: Строка.
Список группировок, из которых будут выбираться значения группировок для обхода, разделенных запятыми. Если указано "Все", то будут выбираться все значения группировок. Если указана пустая строка, то значения для группировок будут выбираться из предыдущей группировки.
7 dainastar
 
13.03.15
10:58
(6) D_E_S_131, правильно ли я вас поняла:
1) выводим шапку по периодам;
2) в запросе итоги:
|ПО
|    Период ПЕРИОДАМИ(ДЕНЬ, &Д1, &Д2),
|    Подразделение,
|    НоменклатурнаяГруппа,
|    Продукция,
|    Сырье
3) Выборка_Периода = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Период");
4) Выборка_Подразделение = Выборка_Периода.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Подразделение","Период");
при выводе этой группировки
ТабДок.Вывести(Макет.ПолучитьОбласть("Подразделение|Данные"),1);
ТабДок.Присоединить(Макет.ПолучитьОбласть("Подразделение|День"),1);
8 D_E_S_131
 
13.03.15
11:11
У метода результата запроса "Выбрать()" есть 3-й (секретный!!!) параметр. Обратите наконец на него внимание.
9 dainastar
 
13.03.15
11:15
(8) да, я использую его:
Выборка_Подразделение = Выборка_Периода.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Подразделение","Период");
Правильно ли я это делаю?
10 dainastar
 
13.03.15
11:33
(8) ткните меня носом пож-та, что я не так делаю. Никак не получается приручить секретный параметр ;-(
11 D_E_S_131
 
13.03.15
11:37
"ВСЕ" вместо "Период".
12 dainastar
 
13.03.15
11:44
(11) когда я ставлю ВСЕ у меня все равно по подразделению не разбивает по периоду, а ставит только общий итог в первую колонку
13 D_E_S_131
 
13.03.15
11:45
(12) А порядок по Периоду не используете?
14 dainastar
 
13.03.15
11:46
Вот мой код вывода результата:
Выборка_Периода = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Период");
Пока Выборка_Периода.Следующий() Цикл
    Выборка_Подразделение = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Подразделение","Все");
    Пока Выборка_Подразделение.Следующий() Цикл
        Область = Макет.ПолучитьОбласть("Подразделение|Данные");
        Область.Параметры.Заполнить(Выборка_Подразделение);
        ТабДок.Вывести(Область,1);
            
        Область = Макет.ПолучитьОбласть("Подразделение|День");
        Область.Параметры.Заполнить(Выборка_Подразделение);
        ТабДок.Присоединить(Область,1);
        КонецЦикла;
КонецЦикла;
15 dainastar
 
13.03.15
11:49
Сам отчет получается таким:
Подразделение          01.03  02.03  03.03
Цех1
Цех2
Цех1
Цех2
Цех1
Цех2

Т.Е. группировки по периоду выходят в строки
16 dainastar
 
13.03.15
13:51
D_E_S_131, помогите пожалуйста...
17 D_E_S_131
 
13.03.15
15:15
18 D_E_S_131
 
13.03.15
15:16
19 dainastar
 
16.03.15
14:27
D_E_S_131, извиняюсь, что поздно отвечаю. Ваш пример мне очень помог. Огромное преогромное спасибо Вам за него.
Только и в примере и у меня получается, что количество выходит не в нужном периоде, а по порядку. Как это можно исправить?
20 dainastar
 
16.03.15
14:29
Если формирую отчет в консоле, то там выводится красиво, все цифры в нужном периоде.
21 dainastar
 
16.03.15
14:36
Все, получилось! Спасибо!