Практика внедрения 1С:Колледж. Оценочные ведомости (часть 2 из 10)





Цикл статей посвящен описанию годового опыта внедрения продукта 1С:Колледж в образовательную организацию. Описываются этапы работы, выполненные доработки, трудности внедрения, особенности обучения сотрудников, оценка производительности труда сотрудников до и после внедрения 1С:Колледж. Во второй части раскрывается внедрение подсистемы Успеваемость, а именно ведение оценочных ведомостей.

При внедрении 1С:Колледж в образовательную организацию главным принципом было распределение обязанностей по ведению базы данных, в связи с чем решено предоставить права доступа преподавателям к вводу оценок студентов. В 1С:Колледж за ввод оценок студентов по дисциплинам отвечает документ Ведомость и регистр накоплений ОценкиСтудентов.

Так как внедрять подсистему Успеваемость мы начали перед выпуском в январе 2024 года, на этот период пришелся выпуск групп квалифицированных рабочих и служащих (бывшие НПО группы), то встал вопрос быстрого внесения итоговых оценок, который пойдут в диплом. Поэтому были предоставлены права кураторам групп ввода всех оценок по своей группе. Для этого в конфигурации предоставлены права на Документ Ведомость и регистру ОценкиСтудентов роли Преподаватель. Позже введена константа, включающая возможность ввод ведомостей кураторам групп, а также написана функция, проверяющая права текущей учетной записи к вводу оценок по выбранной группе. В настройках учетных записей пользователей указаны соответствующие ссылки на элементы справочника Сотрудники, чтобы проверить, является ли текущий Пользователель-Сотрудник Куратором Учебной группы.

Написанная функция МожетЛиПользовательЗаполнятьВедомостьГруппы проверки прав выполняется при выборе группы, попытки записи и проведении документа. Бизнес-процесс выглядит следующим образом. Пользователь (преподаватель) входит под своей учетной записью в 1С:Колледж, создает документ Ведомость, выбирает Учебную группу. Если сотрудник, привязанный к учетной записи пользователя, не является куратором группы, то появляется предупреждение о том, что у пользователя нет прав и документ не будет сохранен.

// Функция проверяет, может ли пользователь заполнить ведомость
Функция МожетЛиПользовательЗаполнятьВедомостьГруппы(УчебнаяГруппа, Организация = Неопределено, СтрокаРУП = Неопределено,
ВидКонтроля = Неопределено, УчебныйПериод = Неопределено, Автор = Неопределено) Экспорт
ф = Ложь;

ЕстьРольПреподаватель = УправлениеДоступом.ЕстьРоль("Преподаватель",,);
ЕстьРольЗав = УправлениеДоступом.ЕстьРоль("ЗаведующийОтделением",,);
Если ЕстьРольЗав Тогда
ф = Истина;
ИначеЕсли Не ЕстьРольЗав и ЕстьРольПреподаватель Тогда
//Если есть роль Преподаватель, то тогда должен быть куратором группы
//чтобы иметь возможность создавать ведомость для группы.

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

Иначе
//если сотрудник не заполнен, то запрещаем.
ф = Ложь;
КонецЕсли;
КонецЕсли;

Возврат ф;
КонецФункции

Реализованные возможности оказались эффективными в плане разделения прав доступа. Вместе с тем, тестируя ввод оценок, я посчитал необходимым реализовать подбор необходимого вида контроля по дисциплине, чтобы преподавателям не приходилось вспоминать и думать, какой вид контроля предполагается по ней. Проблема заключается в том, что в справочнике СтрокиРУП в табличной части РаспределениеПоСеместрам в реквизите ФормаКонтроля указывается форма контроля из Перечисления.ФормыКонтроля. В документе Ведомость есть реквизит ВидКонтроля, имеющий тип Справочники.ВидыКонтроля, при этом связи с Видом контроля в Ведомости и Формой контроля в Строке РУП учебного плана никакой нет. Поэтому я решил ввести дополнительный реквизит в справочник ВидыКонтроля — ФормаКонтроляПоРУП, с тем чтобы поставить в соответствие виду контроля — форму контроля. Естественно, что такая связь имеет тип многие-к-одному, то есть нескольким видам контроля можно поставить в соответствие только одну форму. В этом состоит ограничение, такого делать нельзя, иначе все алгоритмы определения вида контроля по форме не могут работать однозначно.

В форме Ведомость добавлена возможность выбор СтрокиРУП по учебному плану с учетом ВидаКонтроля. В справочник СтрокиРУП добавлена дополнительная форма выбора Строки РУП специально для документа Ведомость, в которой отображаются строки РУП только по определенному учебному периоду (из документа Ведомость) с указанием соответствующего вида контроля. Это означает, если по дисциплине в семестре предполагается экзамен и курсовая работа, то в форме выбора будут две строки с этой дисциплиной, но разными видами контроля.

Благодаря этому преподаватель теперь уже не ошибется и не выберет дисциплину «не из того» семестра (по сравнению с указанным в Ведомости) и не укажет «не тот» вид контроля. Все это сделано для минимизации числа ошибок, ведь в планах стояло внедрение ввода оценок в ведомости непосредственно преподавателями. Так как все мы понимаем, что преподаватели иногда могут не помнить вид контроля или ошибаться при заполнение ведомости. Вообще внедрение такого программного продукта даже в аспекте ведомостей влечет большую интеллектуальную нагрузку на преподавателей, если учесть разный возраст и опыт работы с ИКТ.

Аналогичные изменения произведены в документе ОтчетПоПрактике с тем, чтобы руководитель практики выбирал виды практик, предусмотренные учебным планом только по выбранному семестру, который подбирается по дате документа.

Очень важно, что благодаря электронным ведомостям упростился подсчет средней оценки за дисциплину. В форму документа Ведомость и форму документа ОтчетПоПрактике добавил кнопку «Выставить среднее». По щелчку на кнопку в документе Ведомость вычисляется средняя оценка за формы контроля по данной Дисциплине, а более точно по СтрокеРУП. Это удобно для таких дисциплин, которые ведутся несколько семестров, а в итоге средняя оценка за все семестры идет в Диплом. Аналогично по практикам, за каждую практику в междисциплинарном комплексе выставляется оценка, а в диплом идет средняя по каждому виду практики. В документе по щелчку на кнопке «Выставить среднее» в поле Оценка выставляется средняя оцека, а также для контроля в поле Примечание перечисляются оценки.

В образовательной организации принят следующий алгоритм итоговых оценок.

1. Если дисциплина выдается за один семестр, то форма промежуточной аттестации идет в диплом (экзамен или дифференцированный зачет).

2. Если дисциплина выдается за несколько семестров:

  2.1. при этом, если среди форм промежуточной аттестации есть экзамен (один), именно эта оценка идет в диплом.

  2.2. если нет экзамена, то создается ведомость с выставлением средней по всем формам аттестации и эта оценка идет в диплом (среди дифференцированных зачетов, контрольных и т.д.).

  2.3. если есть несколько экзаменов, то средняя за все экзамены является итоговой.

Как же вводить ведомости в 1С:Колледж? Аналогично, если попадаем под пункт:

п1. В созданной ведомости ставим флажок Идет в диплом.

п2.1. В ведомости за экзамен ставим флажок Идет в диплом.

п2.2. Создаем ведомости на каждую форму контроля по семестрам, в которые НЕ ставим флажок «Идет в диплом», и создаем дополнительную ведомость на эту же дисциплину, ставим флажок «Идет в диплом». Нажимаем кнопку «Выставить среднее». Оценки вычисляются автоматически.

п2.3. Создаем ведомости на каждую форму контроля по семестрам, в которые НЕ ставим флажок «Идет в диплом», и создаем дополнительную ведомость на эту же дисциплину за Экзамен (то есть чтобы в Виде контроля был указан Экзамен), ставим флажок «Идет в диплом». Нажимаем кнопку «Выставить среднее», тогда программа соберет оценки именно за Экзамены.

Реализуется все это следующим кодом:

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

СписокОценок = "";
Сум = 0;
Кол = 0;
Пока ТД.Следующий() Цикл
Сум = Сум + ТД.Оценка;
Кол = Кол + 1;
СписокОценок = СписокОценок + ТД.Оценка + "; ";
КонецЦикла;

Если Кол > 0 Тогда
студ.Примечание = СписокОценок;
студ.Оценка = Окр(Сум / Кол);
студ.Явка = Истина;
КонецЕсли;

КонецЦикла;



КонецПроцедуры

Благодаря этим упрощение, существенно упростилась работа преподавателей по определению итоговых оценок, так как отпала необходимость поднимать ведомости или журналы за предыдущие годы. Однако, прочувствовать преподаватели это смогли только в следующем семестре.

К 26 декабря 2024 реализовал данные изменения в боевую базу, после каникул решил организовать ввод оценок.

Продолжение следует…

1 Comment

  1. jONES1979

    Надеюсь, продолжение всё же следует! 🙂

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *