1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программирован. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление
  2. Чат codeby в telegram перезагрузка. Обсуждаем вопросы информационной безопасности и методы защиты информации, программирование. Задавайте свои вопросы и комментируйте чужие. Подробнее ...

    Скрыть объявление

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

Тема в разделе "Базы данных и администрирование", создана пользователем nestovby, 16 мар 2012.

  1. nestovby

    nestovby Гость

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

    unknown181538 НеГуру

    Репутация:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    1.417
    Симпатии:
    0
    Не знаю, какая у вас задача, но интуитивно то, что имеет тип "число" должно быть во втором параметре.
     
  3. Paume

    Paume Well-Known Member

    Репутация:
    0
    Регистрация:
    15 дек 2010
    Сообщения:
    107
    Симпатии:
    0
    Фигню ты какую-то написал.
    Сначала у тебя:

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

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

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

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

    Hryv Гость

    Репутация:
    0
    поддерживаю, что это Свернуть лишнее
     
Загрузка...

Поделиться этой страницей