Имя: Пароль:
1C
1С v8
Группировки в Табличном документе
,
0 pin4er
 
19.08.14
14:52
Приветствую всех.
Помогите пожалуйста разобраться с проблемой группировки строк в табличном документе, первый раз сталкиваюсь, СП-читал.

Что я пытаюсь вывести: 2-х уровненную группировку в виде
1ур. КоординаторКонтрагента -(у одного координатора может быть множество контрагентов)
2ур. Контрагент -(у одного контрагента может быть множество реализаций)

запрос есть данные выбираются так: http://s017.radikal.ru/i406/1408/cb/ae6082922978.jpg
все отлично все устраивает, а как правильно теперь вывести не понимаю.

Проблема заключается в следующем:
вывожу все в табличный документ, указываю группировки. Когда они развернуты кажется все хорошо, но есть несколько но...
1. Если группировки с "-" сворачиваю "+" и начинаю с самого низа, то все они складываются в один "+"
если допустим у нас "- - - - -" то при сворачивании получается просто "+", а надо как "+ + + + +"

2. как закрепить заголовок 2ур. чтобы он отображался при сворачивании группировок, а не было просто "+" с левой стороны отчета.?

Вот тут видно что если сворачивать снизу то свернется в "+", ели если нажать посередине Группировки, то какую-то группировку я вообще не смогу сложить: http://s017.radikal.ru/i420/1408/f2/9690429f1fdb.png

т.е. нашел вот картинку как хотелось бы вывести: http://v8.1c.ru/overview/images/PlTabDoc1.GIF

Вот мой код, пробывал и так и сяк:

ВыборкаКоординатор = Запрос.Выполнить();

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

            // ОбластьКонтрагент.Параметры.Заполнить(ВыборкаКонтрагент);
            
            ОбластьКонтрагент.Параметры.Контрагент = ВыборкаКонтрагент.Контрагент;
                    
            // ТабДок.ЗакончитьГруппуСтрок(); // Окончание Группировка по контрагенту

            ТабДок.Вывести(ОбластьКонтрагент);//, 2, "Контрагент", Ложь);              
            
            Выборка = ВыборкаКонтрагент.Выбрать();//(ОбходРезультатаЗапроса.ПоГруппировкам);
            
            Пока Выборка.Следующий() Цикл
                // ОбластьСтрока.Параметры.Заполнить(ВыборкаКонтрагент);
                ОбластьСтрока.Параметры.ДокРеализация = Выборка.Ссылка.Номер;
                ОбластьСтрока.Параметры.ДокДата = Формат(Выборка.Ссылка.Дата, "ДЛФ=Д");
                ТабДок.Вывести(ОбластьСтрока);
            КонецЦикла;
            
            ТабДок.ЗакончитьГруппуСтрок(); // Окончание Группировка по контрагенту
        КонецЦикла;
        
        // ТабДок.ЗакончитьГруппуСтрок(); // Окончание Группировка по координатору
        
        ОбластьКоординатор.Параметры.Координатор = ВыборкаКоординатор.КоординаторКонтрагента;
        
        // ТабДок.ЗакончитьГруппуСтрок(); // Окончание Группировка по координатору
        
        ТабДок.ИтогиСнизу = Ложь;
        ТабДок.ОтображатьСетку = Истина;
        ТабДок.Вывести(ОбластьКоординатор);//, 1,"Координатор",Ложь);          
    КонецЦикла;
1 acsent
 
19.08.14
14:54
делай автогруппировки и играйся с уровнем при выводе секции
2 pin4er
 
19.08.14
14:56
(1) авто делал, там получалось по аналогии...
либо вообще не выводились подгруппы
3 pin4er
 
19.08.14
15:11
(0) а и делаю отчет на 8.2 Обычные Формы  (в ут 10.3, это уж совсем для справки)
4 Михаил Козлов
 
19.08.14
16:06
(3) Не пробовали через УниверсальныйОтчет?
5 pin4er
 
19.08.14
16:10
(4) только через СКД, но сложность заключалась в том что он совсем не ту цифру брал по группировкам в Контрагентах и Координаторе,
поэтому руками обхожу и считаю некоторые группировки..

а так тоже ни разу не сталкивался с УниверсальнымОтчетом.
6 Михаил Козлов
 
19.08.14
16:40
(5) " не ту цифру" - может нужно запрос отладить?
7 pin4er
 
19.08.14
17:19
(6) приходилось считать как Группировка для контрагента МАКСИМУМ(реализации).

в результате получалось так: для группировки контрагента он подставлял нормально посчитанное количество реализаций, а в итого выбирал Максимум по группировке. Соответственно МАКСИМУМ мне не нужен, а отдельно прибавляю друг к другу количество каждой группировки и потом вывожу в итого.

как пример:
     СКД    руками
      1       1
      3       3
      2       2
      _       _
итог: 3       6
8 pin4er
 
20.08.14
09:07
up
9 pin4er
 
20.08.14
16:13
Собственно разобрался, всем спасибо за то что откликнулись.

Можно закрывать Тему
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший