Загрузка данных


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

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

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

&НаКлиенте
Процедура СохранитьЖурнал(Команда)
	// Проверяем заполнение важных полей перед сохранением
	Если Не ЗначениеЗаполнено(Объект.ДатаЗанятия) 
		Или Не ЗначениеЗаполнено(Объект.Дисциплина) 
		Или Не ЗначениеЗаполнено(Объект.Преподаватель) Тогда
		ПоказатьПредупреждение(, "Заполните Дату, Дисциплину и Преподавателя!");
		Возврат;
	КонецЕсли;
	
	СохранитьОценкиВБазу();
	ПоказатьОповещениеПользователя("Успешно", , "Данные журнала сохранены!");
КонецПроцедуры