Имя: Пароль:
1C
1C 7.7
v7: Вывести группу в таблицу отчета
0 kobzon
 
11.04.13
13:46
Делаю отчет по реализации продукции по месяцам. Вроде сделал, выводится сколько какой клиент в каждом месяце купил.
Клиенты находятся в папках менеджеров.
Менеджеры выводятся Таб.ВывестиСекцию("Контрагент|Осн");
А вот количество по ним в "Итого|Мес" нет.
Как можно сделать?

//*********************************************
Процедура Сформировать()
   
   Перем Запрос, ТекстЗапроса, Таб;
   //Создание объекта типа Запрос
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   //|Без итогов;
   |Контрагент = Документ.РеализацияПродукции.Контрагент;
   |Всего = Документ.РеализацияПродукции.Всего;
   |Количество = Документ.РеализацияПродукции.Количество;
   |ЕдиницаИзмерения = Документ.РеализацияПродукции.ЕдиницаИзмерения;
   |Коэффициент = Документ.РеализацияПродукции.ЕдиницаИзмерения.Коэффициент;
   |Функция Сум = Сумма(Всего);
   |Функция Кол = Сумма(Количество*Коэффициент);
   |Группировка Контрагент;
   |Группировка Месяц все;
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;    
   
   ТЗ = СоздатьОбъект("ТаблицаЗначений");
   Запрос.Выгрузить(ТЗ,,);
   
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");

   Таб.ВывестиСекцию("Заг|Осн");      
   //СтрокаСворачивания = СоздатьОбъект("СписокЗначений");

   Пока Запрос.Группировка("Контрагент") = 1 Цикл
            Если Запрос.Контрагент.ЭтоГруппа() = 1 Тогда
               Продолжить;
            КонецЕсли;
       Пока Запрос.Группировка("Месяц") = 1 Цикл  
               
           Таб.ПрисоединитьСекцию("Заг|Мес");      
       КонецЦикла;
       Прервать;
       Прервать;
   КонецЦикла;

   Запрос.ВНачалоВыборки();
   
   // Заполнение полей "Заголовок"
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   Пока Запрос.Группировка(1) = 1 Цикл
       // Заполнение полей Товар
       Если Запрос.Контрагент.ЭтоГруппа() = 1 Тогда
       Таб.ВывестиСекцию("Итого|Осн");
       Иначе
       Таб.ВывестиСекцию("Контрагент|Осн");
   КонецЕсли;    
       Н = 0;  
             Пока Запрос.Группировка(2) = 1 Цикл
           // Заполнение полей Месяц
           Н = Н + 1;            
       Если Запрос.Контрагент.ЭтоГруппа() = 1 Тогда
           Кол = Запрос.Кол;
           Сумма = Запрос.Сум;
       КонецЕсли;                                        
               Таб.ПрисоединитьСекцию("Контрагент|Мес");
               
           КонецЦикла;    
   КонецЦикла;
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать", "");    
КонецПроцедуры
//****************************************
1 Ёпрст
 
11.04.13
13:48
клиентосы вниз, месяц направо ?
2 kobzon
 
11.04.13
13:51
да, клиентосы и менеджеры вниз, месяц вправо
3 Ёпрст
 
11.04.13
13:51
ии.. где в коде вывод секции Итого|мес ?
4 kobzon
 
11.04.13
13:53
Вот я не знаю куда воткнуть то, Куда не втыкаю, появляется рядом не нужный столбик пустой а сумм нет..
5 kobzon
 
11.04.13
15:09
Народ ну подскажите где ошибка то.
6 Ёпрст
 
11.04.13
15:16
Ну дык нам отсуда не видно, куда воткнул и что получаешь.
если что - итогов по группам не будет
7 kobzon
 
11.04.13
15:17
нужно чтобы по менеджерам итоги тоже были за каждый месяц? Низя?
8 Ёпрст
 
11.04.13
15:19
(7) я не помню уже, но в этом порядке итогов по группе справочника не будет в запросе - поменяешь местами - будут (или наеборот) - выгрузи запрос в тз и посмотри сам
9 kobzon
 
11.04.13
15:25
В смысле поменять местами группировки?
|Группировка Контрагент;    
|Группировка Месяц все;
10 kobzon
 
12.04.13
08:38
Смотрю в ТЗ если внутри только группировки контрагент то там есть итоги по менеджерам, то есть по каталогам. Как только добавляю группировку по месяцам, так группы не попадают, почему так?

Пока Запрос.Группировка(1) = 1 Цикл  
       Пока Запрос.Группировка(2) = 1 Цикл
           ТЗ.НоваяСтрока();
           ТЗ.Контрагент = Запрос.Контрагент;
           ТЗ.Сум = Запрос.Сум;
           ТЗ.Количество = Запрос.Количество;
           Таб.ВывестиСекцию("Контрагент");
       КонецЦикла;
   КонецЦикла;
11 Ёпрст
 
12.04.13
08:56
(10) запрос выгребает только ЭЛЕМЕНТЫ, группы он в результирующую таблицу добавляет потом сам.
А с предопределенными группировками - всегда так было - не умеет по ним итоги считать
12 kobzon
 
12.04.13
08:59
(11) И че делать? С таблицами значений мудрить?
13 Ёпрст
 
12.04.13
09:03
(12) ну да, или менять группировки местами.
14 kobzon
 
12.04.13
09:04
Когда меняю местами в тз вапще только 1 месяц попадает)