Имя: Пароль:
1C
 
Свертка группировок на печатной форме
0 Baracus
 
07.08.07
09:53
Как сделать печатную форму отчета с номенклатурными показателями сворачиваемой по группировкам?
1 yalex
 
07.08.07
09:57
метод у табличногодокумента есть
ТабДок.НачатьАвтогруппировкуСтрок()
//формирование табдока
ЗакончитьАвтогруппировкуСтрок();
2 Baracus
 
07.08.07
10:05
Все равно не получается. Сделал так:
   ТабДок.НачатьАвтогруппировкуСтрок();
   Для каждого строкаДз из дзДанных.Строки цикл
       ВывестиСтрокуДЗНапечать(строкаДз,ТабДок,Макет);                      
   КонецЦикла;
   ТабДок.ЗакончитьАвтогруппировкуСтрок();

Может ли быть проблема в том, что в дереве все элементы сохранены на одном уровне?
3 yalex
 
07.08.07
10:12
(2)в процедуру ВывестиСтрокуДЗНапечать(строкаДз,ТабДок,Макет) попробуй вставить, тоесть в само формирование табдока;
4 Baracus
 
07.08.07
10:20
По прежнему:
       ОбластьСтрокаНоменклатура  = Макет.ПолучитьОбласть("Строка|НоменклатураКолонка");
       ОбластьСтрокаСклад = Макет.ПолучитьОбласть("Строка|Склад");
       ОбластьСтрокаИтогоСклады = Макет.ПолучитьОбласть("Строка|ИтогоСклады");
       ОбластьСтрокаПоказатели = Макет.ПолучитьОбласть("Строка|Показатели");
       //
       ОбластьСтрокаНоменклатура.Параметры.Заполнить(строкаДз);
       ТабДок.НачатьАвтогруппировкуСтрок();
       ТабДок.Вывести(ОбластьСтрокаНоменклатура);
       Для каждого Склад из ВыбСклад Цикл
           ИмяСклада = "Склад_" + СокрЛП(СтрЗаменить(Склад.Значение.Код,"-","_"));
           ОбластьСтрокаСклад.Параметры.ОстМатрКолво    = строкаДз[ИмяСклада + "_ОстМатрКолво"];
           ОбластьСтрокаСклад.Параметры.ОстМатрСумма    = строкаДз[ИмяСклада + "_ОстМатрСумма"];
           ОбластьСтрокаСклад.Параметры.ОстРаспрКолво    = строкаДз[ИмяСклада + "_ОстРаспрКолво"];
           ОбластьСтрокаСклад.Параметры.ОстРаспрСумма  = строкаДз[ИмяСклада + "_ОстРаспрСумма"];
           ТабДок.Присоединить(ОбластьСтрокаСклад);
       КонецЦикла ;
       ОбластьСтрокаИтогоСклады.Параметры.Заполнить(строкаДз);
       ТабДок.Присоединить(ОбластьСтрокаИтогоСклады);
       ОбластьСтрокаПоказатели.Параметры.Заполнить(строкаДз);
       ТабДок.Присоединить(ОбластьСтрокаПоказатели);
       ТабДок.ЗакончитьАвтогруппировкуСтрок();
5 Baracus
 
07.08.07
10:20
Результат тот же
6 yalex
 
07.08.07
10:31
(4) В этой процедуре автоматической группировкой не получиться - нужно применять дополнительные параметры в методах вывести() и присоединить(). Например уровень, который может быть получен через Выборку  

Применяй "ручной" метод табдока НачатьГруппуСтрок() и ЗакончитьГруппуСтрок()
7 sergoqwe
 
07.08.07
10:32
УровеньГруппировки=2;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.ПоказатьУровеньГруппировокСтрок(УровеньГруппировки);
8 IronDemon
 
07.08.07
10:35
А кто уровень будет указывать при выводе?
9 Baracus
 
07.08.07
10:36
7, сделал так:

       ОбластьСтрокаИтогоСклады.Параметры.Заполнить(строкаДз);
       ТабДок.Присоединить(ОбластьСтрокаИтогоСклады);
       ОбластьСтрокаПоказатели.Параметры.Заполнить(строкаДз);
       ТабДок.Присоединить(ОбластьСтрокаПоказатели);
       УровеньГруппировки=2;
       ТабДок.ЗакончитьАвтогруппировкуСтрок();
       ТабДок.ПоказатьУровеньГруппировокСтрок(УровеньГруппировки);


Эффект тот же
10 Baracus
 
07.08.07
10:37
6, сейчас попробую
11 Baracus
 
07.08.07
10:42
Сделал так:

       ТабДок.НачатьАвтогруппировкуСтрок();
       ТабДок.Вывести(ОбластьСтрокаНоменклатура,строкаДз.Уровень);
       Для каждого Склад из ВыбСклад Цикл
           ИмяСклада = "Склад_" + СокрЛП(СтрЗаменить(Склад.Значение.Код,"-","_"));
           ОбластьСтрокаСклад.Параметры.ОстМатрКолво    = строкаДз[ИмяСклада + "_ОстМатрКолво"];
           ОбластьСтрокаСклад.Параметры.ОстМатрСумма    = строкаДз[ИмяСклада + "_ОстМатрСумма"];
           ОбластьСтрокаСклад.Параметры.ОстРаспрКолво    = строкаДз[ИмяСклада + "_ОстРаспрКолво"];
           ОбластьСтрокаСклад.Параметры.ОстРаспрСумма  = строкаДз[ИмяСклада + "_ОстРаспрСумма"];
           ТабДок.Присоединить(ОбластьСтрокаСклад,строкаДз.Уровень);
       КонецЦикла ;
       ОбластьСтрокаИтогоСклады.Параметры.Заполнить(строкаДз);
       ТабДок.Присоединить(ОбластьСтрокаИтогоСклады,строкаДз.Уровень);
       ОбластьСтрокаПоказатели.Параметры.Заполнить(строкаДз);
       ТабДок.Присоединить(ОбластьСтрокаПоказатели,строкаДз.Уровень);
       УровеньГруппировки=строкаДз.Уровень;
       ТабДок.ЗакончитьАвтогруппировкуСтрок();
       ТабДок.ПоказатьУровеньГруппировокСтрок(УровеньГруппировки);




Уровни разные, но все равно не получается, буду пробовать ручной метод
12 Wladimir_spb
 
07.08.07
10:47
(11) Сделай свой отчет с помощью конструктора выходной формы. Он сам все уровни настроит. Заодно посмотришь как это делается.
13 Baracus
 
07.08.07
11:06
Получилось! Совет в 12 помог, все очень просто оказалось. Сделал группировку на этом уровне:


   ТабДок.НачатьАвтогруппировкуСтрок();
   Для каждого строкаДз из дзДанных.Строки цикл
       ВывестиСтрокуДЗНапечать(строкаДз,ТабДок,Макет);                      
   КонецЦикла;
   ТабДок.ЗакончитьАвтогруппировкуСтрок();



А внутри процедуры надо было просто расставить уровни в Присоединить() и Вывести()
14 Baracus
 
07.08.07
11:16
Всем спасибо за помощь