&НаСервереБезКонтекста
Функция ПолучитьСтудентовГруппы(ВыбраннаяГруппа)
// Запрос вытягивает только активных студентов этой группы
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Студенты.Ссылка КАК Студент
|ИЗ
| Справочник.Студенты КАК Студенты
|ГДЕ
| Студенты.Группа = &Группа
| И Студенты.Активен = ИСТИНА";
Запрос.УстановитьПараметр("Группа", ВыбраннаяГруппа);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
&НаКлиенте
Процедура ЗаполнительЖурнала(Команда)
// Проверяем, выбрал ли препод группу
Если Не ЗначениеЗаполнено(Объект.Группа) Тогда
ПоказатьПредупреждение(, "Сначала выберите группу в шапке журнала!");
Возврат;
КонецЕсли;
ТаблицаСтудентов = ПолучитьСтудентовГруппы(Объект.Группа);
// Очищаем старые данные на экране и заполняем новыми
Объект.SvetkaZhurnala.Очистить(); // Название ТЧ из твоих данных
Для Каждого СтрокаТЗ Из ТаблицаСтудентов Цикл
НоваяСтрока = Объект.SvetkaZhurnala.Добавить();
НоваяСтрока.Студент = СтрокаТЗ.Студент;
// По умолчанию ставим, что все пришли
НоваяСтрока.Посещаемость = ПредопределенноеЗначение("Перечисление.ВидыПосещаемости.Присутствовал");
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура СохранитьОценкиВБазу()
// Перебираем строки из журнала и пишем в независимый регистр
Для Каждого СтрокаЖурнала Из Объект.SvetkaZhurnala Цикл
Запись = РегистрыСведений.СведенияОбУспеваемости.СоздатьМенеджерЗаписи();
Запись.Период = Объект.ДатаЗанятия;
Запись.Студент = СтрокаЖурнала.Студент;
Запись.Дисциплина = Объект.Дисциплина;
Запись.Преподаватель = Объект.Преподаватель;
// Заполняем ресурсы
Запись.Оценка = СтрокаЖурнала.Оценка;
Запись.Посещаемости = СтрокаЖурнала.Посещаемость;
Запись.Записать(Истина); // Перезаписываем, если оценки за этот день уже правились
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьЖурнал(Команда)
// Проверяем заполнение важных полей перед сохранением
Если Не ЗначениеЗаполнено(Объект.ДатаЗанятия)
Или Не ЗначениеЗаполнено(Объект.Дисциплина)
Или Не ЗначениеЗаполнено(Объект.Преподаватель) Тогда
ПоказатьПредупреждение(, "Заполните Дату, Дисциплину и Преподавателя!");
Возврат;
КонецЕсли;
СохранитьОценкиВБазу();
ПоказатьОповещениеПользователя("Успешно", , "Данные журнала сохранены!");
КонецПроцедуры