Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 07:00

Программно добавить колонку ресурсов в отчет скд

Автор Pi, 17 мая 2023, 21:09

0 Пользователей и 1 гость просматривают эту тему.

Pi

Есть отчет с успеваемостью учеников(сделан через скд). Формирую его программно, на форме отчета.
Каким образом можно добавить свою колонку с итогами, которая будет рассчитывать средний балл учеников основываясь только на тех полях, в которых есть оценка?(обычные итоги скрыл через настройки, тк рассчитывает неправильно). Прикладываю код и фото того что есть, и то что нужно сделать
&НаСервере
Процедура СформироватьОтчетНаСервере(ТабДок)
ОбъектОтчет = РеквизитФормыВЗначение("Отчет");
ОСКД = ОбъектОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
НастройкиОСКД = ОСКД.НастройкиПоУмолчанию;


ПараметрыДанныхОСКД = НастройкиОСКД.ПараметрыДанных.Элементы;
ЭлементНП = ПараметрыДанныхОСКД.Найти("НачалоПериода");
ЭлементНП.Использование = Истина;
ЭлементНП.Значение = Отчет.НачалоПериода;
ЭлементКП = ПараметрыДанныхОСКД.Найти("КонецПериода");
ЭлементКП.Использование = Истина;
ЭлементКП.Значение = Отчет.КонецПериода;
ЭлементУч = ПараметрыДанныхОСКД.Найти("Класс");
ЭлементУч.Использование = Истина;
ЭлементУч.Значение = Отчет.Класс;
ЭлементПр = ПараметрыДанныхОСКД.Найти("Предмет");
ЭлементПр.Использование = Истина;
ЭлементПр.Значение = Отчет.Предмет;

КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакетаОСКД.Выполнить(ОСКД, НастройкиОСКД);
ПроцессорКомпоновкиОСКД = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиОСКД.Инициализировать(Макет);
ТабДок.Очистить();

ПроцессорВыводаОСКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВыводаОСКД.УстановитьДокумент(ТабДок);
ПроцессорВыводаОСКД.Вывести(ПроцессорКомпоновкиОСКД);
КонецПроцедуры


&НаКлиенте
Процедура СформироватьОтчет(Команда)
СформироватьОтчетНаСервере(Результат);
Элементы.Результат.ОтображениеСостояния.Видимость = Ложь;
Элементы.Результат.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;
КонецПроцедуры

antoneus

Зачем такую суету наводить? Среднее считайте через вычисляемое поле типа

выбор когда Сумма(Выбор когда естьnull(Оценка, 0) = 0 тогда 0 иначе 1 конец) = 0 тогда 0 иначе
Сумма(Оценка) / Сумма(Выбор когда естьnull(Оценка, 0) = 0 тогда 0 иначе 1 конец) конец

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск