Проблема С Группировкой (метод Свернуть)

  • Автор темы nestovby
  • Дата начала
N

nestovby

#1
Делал отчет для универа у себя, на своей базе - все группирует и сворачивает как нужно. Но когда принес в универ, там запустил, и все элементы не сгруппировались, т.е. вывелись просто по порядку.
Может быть я что-то не правильно описал в методе "свернуть"? Но ведь у меня на компе все сворачивает, все хорошо! Никак не пойму в чем дело.
может быть подскажите в чем тут я мог ошибиться?
Код:
Процедура Сформировать()
перем пд,фонд, Ст1гоРазряда, итогоСтавка, ИтогоФонд;
Таб=СоздатьОбъект("ТаблицаЗначений");
СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
ПрикДл=СоздатьОбъект("Справочник.ПриказыДлительногоДействия");
КадрДанные=СоздатьОбъект("Справочник.КадровыеДанные");
ДопУчСт= СоздатьОбъект("Справочник.ДоплатыЗаУченуюСтепень");
ДопУчЗв= СоздатьОбъект("Справочник.ДоплатыЗаУченыеЗвания");
Таб.НоваяКолонка("Степень","Перечисление.УченаяСтепень");
Таб.НоваяКолонка("Ставка","Число",4,2);
Таб.НоваяКолонка("ЧислоСтавокНеППС","Число",4,2);
Таб.НоваяКолонка("ЧислоСтДляППС","Число",4,2);
Таб.НоваяКолонка("ЧислоСтавокДляППС","Число",4,2);
Таб.НоваяКолонка("Звание","Перечисление.УченоеЗвание");												
Таб.НоваяКолонка("Совместитель","Справочник.ВнутренниеСовместители");
СпрСотр.ИспользоватьДату(ДатаОт);
СпрСотр.ПорядокНаименований();
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
ПрикДл.ИспользоватьВладельца(СпрСотр.ТекущийЭлемент());
ПрикДл.ВыбратьЭлементы();
Пока ПрикДл.ПолучитьЭлемент()=1 Цикл 
КадрДанные.ИспользоватьВладельца(СпрСотр.ТекущийЭлемент());
КадрДанные.ВыбратьЭлементы();
пока кадрДанные.ПолучитьЭлемент()=1 цикл
Таб.НоваяСтрока();
Таб.Степень=КадрДанные.УченаяСтепень.ученаястепень;
Таб.Звание=КадрДанные.УченоеЗвание;
Таб.Ставка=?(ПустоеЗначение(ПрикДл.Приказ.ВнСовместитель)=1,СпрСотр.Ставка,ПрикДл.Приказ.ВнСовместитель.Ставка.Получить(ДатаОт)); 
Таб.Совместитель=ПрикДл.Приказ.ВнСовместитель;

ДопУчЗв.выбратьэлементы();
пока ДопУчЗв.получитьЭлемент()=1 цикл
если ДопучЗв.УченоеЗвание=Таб.Звание тогда
Таб.ЧислоСтавокДляППС=ДопУчЗв.ЧислоСтавокДляППС.Получить(ДатаОт);
КонецЕсли;
конецЦикла; 
ДопУчСт.выбратьэлементы();				
пока допучст.получитьэлемент()=1 цикл
если ДопУчСт.УченаяСтепень=таб.Степень тогда
Таб.ЧислоСтДляППС=ДопУчСт.ЧислоСтавокДляППС.Получить(ДатаОт);
конецЕсли;
конецЦикла; 
конеццикла;
КонецЦикла;
КонецЦикла;									
// !!!!!!!!!!!!!!!
Таб.Свернуть("Звание,Степень,Совместитель,ЧислоСтДляППС,ЧислоСтавокДляППС","Ставка");
///!!!!!!!!!!
ТабД=СоздатьОбъект("Таблица");
ТабД.ВывестиСекцию("Заголовок");
ТабД.ПовторятьПриПечатиСтроки(3,3);
ТабД.ВывестиСекцию("Шапка");
Таб.Сортировать("Ставка");
Таб.Свернуть("Звание,Степень,Совместитель,Ст1гоРазряда, фонд,ЧислоСтДляППС,ЧислоСтавокДляППС","Ставка");
Таб.ВыбратьСтроки();
Пока Таб.ПолучитьСтроку()=1 Цикл			
Ст1гоРазряда=Таб.ЧислоСтавокДляППС+Таб.ЧислоСтДляППС;
фонд=Ст1гоРазряда*таб.ставка*Константа.МТ.Получить(ДатаОт);
ТабД.ВывестиСекцию("Строка");
КонецЦикла;
Таб.ВыбратьСтроки();
Пока Таб.ПолучитьСтроку()=1 Цикл			
ИтогоФонд=ИтогоФонд+(Таб.ЧислоСтавокДляППС+Таб.ЧислоСтДляППС)*таб.ставка*Константа.МТ.Получить(ДатаОт);
итогоСтавка=итогоСтавка+таб.ставка;
КонецЦикла;					
ТабД.ВывестиСекцию("Итого");
КС=ТабД.КоличествоСтраниц();
ТабД.Показать("Фонд доплат");
КонецПроцедуры
 

unknown181538

НеГуру
28.12.2008
1 417
0
#2
Не знаю, какая у вас задача, но интуитивно то, что имеет тип "число" должно быть во втором параметре.
 

Paume

Well-known member
15.12.2010
107
0
#3
Фигню ты какую-то написал.
Сначала у тебя:

Таб.Свернуть("Звание,Степень,Совместитель,ЧислоСтДляППС,ЧислоСтавокДляППС","Ставка");

потом откуда-то появились еще колонки и сворачиваешь уже по ним:

Таб.Свернуть("Звание,Степень,Совместитель,Ст1гоРазряда, фонд,ЧислоСтДляППС,ЧислоСтавокДляППС","Ставка");

ВыводСекции у тебя отрабатывает же в цикле по второй свертке, а не по первой.
 
H

Hryv

#4
потом откуда-то появились еще колонки и сворачиваешь уже по ним:

Таб.Свернуть("Звание,Степень,Совместитель,Ст1гоРазряда, фонд,ЧислоСтДляППС,ЧислоСтавокДляППС","Ставка");
поддерживаю, что это Свернуть лишнее