Имя: Пароль:
1C
 
Не формирует отчет
0 Ket9346
 
01.04.15
20:18
Не могу правильно сформировать отчет, помогите пожалуйста
Нужно было добавить кроме оценок, ФИО, предмета еще преподавателя вот с ним и загвоздка...сначала сделала без него всё работало а вот сейчас когда добавила преподавателя то уже нет


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

    |    СеместровыеИтоги.Регистратор.Ссылка
    
    |ИЗ
    |    РегистрСведений.СеместровыеИтоги КАК СеместровыеИтоги
    |ГДЕ
    |    СеместровыеИтоги.Группа = &Группа ";
    Если Не Дисциплина.Пустая() Тогда
        Запрос.Текст = Запрос.Текст +
        "И СеместровыеИтоги.Дисциплина = &Дисциплина ";
    КонецЕсли;
    Запрос.Текст = Запрос.Текст +
    "И СеместровыеИтоги.Семестр = &Семестр
    |СГРУППИРОВАТЬ ПО
    |    СеместровыеИтоги.ФИО,
    |    СеместровыеИтоги.Дисциплина,
    |    СеместровыеИтоги.Дисциплина.КраткоеНаименование,
    |    СеместровыеИтоги.Группа,
    |    СеместровыеИтоги.Преподаватель,
    |    СеместровыеИтоги.Преподаватель.КраткоеНаименование,
   |    СеместровыеИтоги.Оценка,

    |   СеместровыеИтоги.Регистратор.Ссылка
    
    |УПОРЯДОЧИТЬ ПО
    |    ФИО,
    |    Дисциплина";
    
    Запрос.УстановитьПараметр("Группа", Группа);
    Запрос.УстановитьПараметр("Семестр", Семестр);
    Запрос.УстановитьПараметр("Дисциплина", Дисциплина);
    Результат = Запрос.Выполнить();
    //ТабРез = Запрос.Выполнить().Выгрузить();
    //ТабРез.ВыбратьСтроку();
    
    //  Выборка прогулов по ФИО из регистра накопления Пропуски
        
    // Выборка успеваемости
    ВыборкаДетали = Результат.Выбрать();
    ДеревоГруппы = Новый ДеревоЗначений;
    КолонкиГруппы = ДеревоГруппы.Колонки;
    КолонкиГруппы.Добавить("ФИО");
    КолонкиГруппы.Добавить("СсылкаФИО");
    КолонкиГруппы.Добавить("СсылкаРегистратор");
    КолонкиГруппы.Добавить("ДисциплинаКр");  
    КолонкиГруппы.Добавить("Дисциплина");
      КолонкиГруппы.Добавить("Оценка");
        КолонкиГруппы.Добавить("ПреподавательКр");  
    КолонкиГруппы.Добавить("Преподаватель");
    
    
    ФИО = "";
    Пока ВыборкаДетали.Следующий() Цикл
        Если ВыборкаДетали.РегистраторСсылка = Null Тогда
            Продолжить;
        КонецЕсли;
        
        Если Не ФИО = ВыборкаДетали.ФИО Тогда
            ФИОГруппы  =  ДеревоГруппы.Строки.Добавить();
            ФИОГруппы.СсылкаФИО = ВыборкаДетали.ФИО;
            // Поиск по ФИО прогулов из таблицы значений
            ФИОГруппы.ФИО = ВыборкаДетали.ФИО.КраткоеНаименование;
            
            // строки дерева
            Оценки = ФИОГруппы.Строки.Добавить();
            Оценки.ДисциплинаКр = ВыборкаДетали.Дисциплина.КраткоеНаименование;
            Оценки.ПреподавательКр = ВыборкаДетали.Преподаватель.КраткоеНаименование;
            Оценки.СсылкаРегистратор = ВыборкаДетали.РегистраторСсылка;
            Оценки.Дисциплина = ВыборкаДетали.Дисциплина;
            Оценки.Дисциплина = ВыборкаДетали.Преподаватель;
            Оценки.Оценка = ВыборкаДетали.Оценка;
            Оценки.СсылкаРегистратор = ВыборкаДетали.РегистраторСсылка;

            ФИО = ВыборкаДетали.ФИО;
        Иначе
            Оценки = ФИОГруппы.Строки.Добавить();
            Оценки.ДисциплинаКр = ВыборкаДетали.Дисциплина.КраткоеНаименование;
            Оценки.СсылкаРегистратор = ВыборкаДетали.РегистраторСсылка;
            Оценки.ПреподавательКр = ВыборкаДетали.Преподаватель.КраткоеНаименование;
             Оценки.Дисциплина = ВыборкаДетали.Преподаватель;
            
            Оценки.Дисциплина = ВыборкаДетали.Дисциплина;
            Оценки.Оценка = ВыборкаДетали.Оценка;
            
        КонецЕсли;
        
    КонецЦикла;
    //ДеревоГруппы.ВыбратьСтроку();
    ДеревоГруппы.Строки.Сортировать("ФИО Возр, ДисциплинаКр Возр",Истина);
    ОбластьЗаголовок =  МакетСводная.ПолучитьОбласть("Заголовок");
    ОбластьЗаголовок.Параметры.УчГод = Константы.УчебныйГод.Получить();
    ОбластьЗаголовок.Параметры.Группа = Группа;
    ОбластьЗаголовок.Параметры.Семестр = Семестр;
    ОбластьЗаголовок.Параметры.Курс = Прав(Группа.Родитель,1);
    
    
    ОбластьШапка = МакетСводная.ПолучитьОбласть("Шапка");
    ОбластьСтрока = МакетСводная.ПолучитьОбласть("Строка");
    ОбластьСтрока1 = МакетСводная.ПолучитьОбласть("Строка1");

    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    ТаблДисциплин = Новый ТаблицаЗначений;
    ТаблДисциплин.Колонки.Добавить("Дисц");

    Для каждого Строка   из ДеревоГруппы.Строки Цикл
        к = 0;  
        
        Для Каждого Стр из Строка.Строки Цикл             
            ОбластьШапка.Параметры[к] = Стр.ДисциплинаКр;
            к=к+1;
            ТД = ТаблДисциплин.Добавить();
            ТД.Дисц = Стр.ДисциплинаКр;
                      
        КонецЦикла;
        //ВсегоДисциплин = к;
    КонецЦикла;
    
    
    ТабДок.Вывести(ОбластьШапка);
    НомерПП = 0;  
    
    ТаблПреподаватели = Новый ТаблицаЗначений;
    ТаблПреподаватели.Колонки.Добавить("П");
    Для каждого Строка   из ДеревоГруппы.Строки Цикл
        к = 0;  
        
        Для Каждого Стр из Строка.Строки Цикл             
            ОбластьСтрока1.Параметры[к] = Стр.ПреподавательКр;
            к=к+1;
            ТД = ТаблПреподаватели.Добавить();
            ТД.П = Стр.ПреподавательКр;
                      
        КонецЦикла;
        //ВсегоДисциплин = к;
    КонецЦикла;
    ТабДок.Вывести(ОбластьСтрока1);
    НомерПП = 0;  
    
        

    Для каждого Строка   из ДеревоГруппы.Строки Цикл
        СемРейтинг = 0; КолДисцРейтинг = 0;  ВсегоДисциплин = 0;
        
        НаСредНО = 0;
        
        Стипендия = 1; НаСтипендию = 0; КолДисцСтипендия = 0;
        НомерПП =НомерПП + 1;
        к = 0;
        ОбластьСтрока.Параметры[к] = НомерПП;
        к=к+1;          
        ОбластьСтрока.Параметры[к] = Строка.ФИО;
                
        Зачеты =""; Экзамены = "";
        
        ТаблСессия = Новый ТаблицаЗначений;
        КЧ = Новый КвалификаторыЧисла(10,0);
        Массив = Новый Массив;
        Массив.Добавить(Тип("Число"));
        ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
        
        ТаблСессия.Колонки.Добавить("Пять",ОписаниеТиповЧ);
        ТаблСессия.Колонки.Добавить("Четыре",ОписаниеТиповЧ);
        ТаблСессия.Колонки.Добавить("Три",ОписаниеТиповЧ);
        ТаблСессия.Колонки.Добавить("Два",ОписаниеТиповЧ);
        ТаблСессия.Колонки.Добавить("Зачет",ОписаниеТиповЧ);
        
        Для Каждого Стр из Строка.Строки Цикл
            СемРейтинг = СемРейтинг + Стр.Оценка;
            ОбластьСтрока.Параметры[12] = "";
            к=к+1;
            ОбластьСтрока.Параметры[к] = Стр.Оценка;  
            СтрокаСессии = ТаблСессия.Добавить();
        КонецЦикла;
        
        
                
        ТабДок.Вывести(ОбластьСтрока);
        
        
        //ТаблСессия.ВыбратьСтроку();
    КонецЦикла;
    
    
        
            ТабДок.ЗакончитьАвтогруппировкуСтрок();
    //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
КонецПроцедуры
1 D_E_S_131
 
01.04.15
20:46
Без фото разгребать этот код сил нет.
2 Ket9346
 
01.04.15
20:50
3 Ket9346
 
01.04.15
20:54
4 D_E_S_131
 
01.04.15
20:56
5 D_E_S_131
 
01.04.15
20:58
И это (а то вдруг с логикой не очень)
http://www.forum.mista.ru/users_photo.php?id=86378
6 Ket9346
 
01.04.15
20:59
а чем так не устраивает ?
7 D_E_S_131
 
01.04.15
21:01
(6) Да вообще ничем (если конечно Вы не таблица).
8 yavasya
 
01.04.15
21:04
(6) с фото помогается лучше