Имя: Пароль:
1C
1С v8
Вывести итоги из табличной части печатной формы
0 Mtrlcnlk
 
25.05.20
16:10
Добрый день, делаю лабораторную работу. Документ "Экзамен" в табличной части ФИО студентов и их оценки. Оценки созданы с помощью перечисления (Отлично, Хорошо, Удоволетворительно и тд). В подвале печатной формы мне нужно вывести сколько студентов получили оценку Отлично, сколько хорошо и тд). Я нашел примерный вариант решения, но он не работает. Ругается на "ЭтотОбьект". Буду благодарный за любой совет!


ЗапросН = Новый Запрос;
ЗапросН.УстановитьПараметр("Оценка1",Перечисления.Оценки.Неявка );
ЗапросН.УстановитьПараметр("Оценка2",Перечисления.Оценки.Недопуск );
ЗапросН.УстановитьПараметр("Ссылка",ЭтотОбъект.Ссылка);
ТекстЗапросаН = "ВЫБРАТЬ ЭкзаменационнаяВедомостьТабличнаяЧасть1.Оценка
|ИЗ Документ.ЭкзаменационнаяВедомость.ТабличнаяЧасть1 КАК ЭкзаменационнаяВедомостьТабличнаяЧасть1
|ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭкзаменационнаяВедомость КАК ЭкзаменационнаяВедомость1
|ПО ЭкзаменационнаяВедомостьТабличнаяЧасть1.Ссылка = ЭкзаменационнаяВедомость1.Ссылка
|ГДЕ (ЭкзаменационнаяВедомостьТабличнаяЧасть1.Оценка = &Оценка1
|ИЛИ ЭкзаменационнаяВедомостьТабличнаяЧасть1.Оценка = &Оценка2)
|И ЭкзаменационнаяВедомость1.Ссылка = &Ссылка" ;
ЗапросН.Текст = ТекстЗапросаН;
Область.Параметры.Неявка = ЗапросН.Выполнить().Выбрать().Количество();
//Подсчет оценок
ТекстЗапроса = "ВЫБРАТЬ ЭкзаменационнаяВедомостьТабличнаяЧасть1.Оценка
|ИЗ Документ.ЭкзаменационнаяВедомость.ТабличнаяЧасть1 КАК ЭкзаменационнаяВедомостьТабличнаяЧасть1
|ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭкзаменационнаяВедомость КАК ЭкзаменационнаяВедомость1
|ПО ЭкзаменационнаяВедомостьТабличнаяЧасть1.Ссылка = ЭкзаменационнаяВедомость1.Ссылка
|ГДЕ ЭкзаменационнаяВедомость1.Ссылка = &Ссылка
|И ЭкзаменационнаяВедомостьТабличнаяЧасть1.Оценка = &Оценка" ;
//Подсчет 5(отл)
Запрос5 = Новый Запрос;
Запрос5.УстановитьПараметр("Оценка",Перечисления.Оценки.Отлично );
Запрос5.УстановитьПараметр("Ссылка",ЭтотОбъект.Ссылка);
Запрос5.Текст = ТекстЗапроса;
Область.Параметры.Отлично = Запрос5.Выполнить().Выбрать().Количество();
//Подсчет 4(хор)
Запрос4 = Новый Запрос;
Запрос4.УстановитьПараметр("Оценка",Перечисления.Оценки.Хорошо );
Запрос4.УстановитьПараметр("Ссылка",ЭтотОбъект.Ссылка);
Запрос4.Текст = ТекстЗапроса;
Область.Параметры.Хорошо = Запрос4.Выполнить().Выбрать().Количество();
//Подсчет 3(удов)
Запрос3 = Новый Запрос;
Запрос3.УстановитьПараметр("Оценка",Перечисления.Оценки.Удовлетворительно);
Запрос3.УстановитьПараметр("Ссылка",ЭтотОбъект.Ссылка);
Запрос3.Текст = ТекстЗапроса;
Область.Параметры.Удовл = Запрос3.Выполнить().Выбрать().Количество();
//Подсчет 2(неуд)
Запрос2 = Новый Запрос;
Запрос2.УстановитьПараметр("Оценка",Перечисления.Оценки.Неудовлетворительно );
Запрос2.УстановитьПараметр("Ссылка",ЭтотОбъект.Ссылка);
Запрос2.Текст = ТекстЗапроса;
Область.Параметры.Неуд = Запрос2.Выполнить().Выбрать().Количество();
1 lodger
 
25.05.20
17:52
такое количество запросов к одной и той же ТЧ это явно неуд.
напиши один запрос, а подсчетами занимайся потом.
Ругается на "ЭтотОбьект" - это смотря где разместить этот код.