Автор скрипта @OlegROA
Дисклеймер публикации
Не забывайте читать комментарии внутри скрипта!
Сам скрипт: js-код для получения расписания ДО учителя (2025-26 учебныый год)
Получение расписания занятий ДО конкретного учителя на заданную неделю
1. Заходите в справочник кадров и открываете карточку нужного учителя.
2. Кликаете мышкой в адресную строку браузера и сохраняете число в конце адреса — это ид учителя.
3. Заходите в старую админку, на любую страницу.
4. Открываете в браузере панель инструментов разработчика.
5. Переходите на закладку Консоль
6. Открываете файл со скриптом и копируете все его содержимое в окно консоли (в ФайрФоксе возможно придется подтвердить вставку кода ручным вводом указанной фразы).
7. Проверяете начальные параметры — код учебного года, номер недели и указываете записанный на шаге 2 ид учителя.
8. Жмете Enter и получаете здесь же, в консоли, расписание указанного учителя на заданной неделе. Сортировка по дням недели, в рамках одного дня — по времени начала занятия.
// =============================================================================
// Основные параметры
// !!! Менять код можно ТОЛЬКО в этом блоке !!!
// вместо числа 20 - нужный номер недели
// вместо числа 12345 - нужный Ид учителя
var week_num = 20; // Номер недели
var th_id = 12345; // Ид учителя (см. пункт 2 выше)
// =============================================================================
var year_id = 13; // Идентификатор учебного года (2025-2026)
var th_sch = new Map();
(async () => {
async function fetchData(url) {
const res = await fetch(url);
const json = await res.json();
return(json);
};
// Получаем ид недельного расписания ДО на заданную неделю
const wsch = (await fetchData("core/api/ae_schedules?academic_year_id="+ year_id))
.filter(function(sch){return sch.week_number == week_num});
if (!wsch || !wsch.length || !wsch[0].id){
throw new Error("Указан некорректный номер учебной недели!");
};
let sch_id = wsch[0].id;
// Получаем программы ДО, которые ведет заданный учитель
const prg = await fetchData("core/api/ae_programs?page=1&per_page=100&teacher_profile_id="+ th_id);
if (!prg || !prg.length){
throw new Error("Заданный учитель не ведет программы ДО!");
};
// Формируем очередь запросов для получения расписания ДО по найденным программам
for (p of prg){
sch = await fetchData("core/api/ae_schedule_items?ae_schedule_id="+ sch_id +
"&page=1&per_page=1000&ae_program_id="+ p.id);
sch.forEach(function(ls){
let day = (new Date(ls.date)).getDay();
let key = day +"-"+ ls.begin_time;
th_sch.set(key,
{"day":day,"ftime":ls.begin_time,"ltime":ls.end_time,
"prg":ls.ae_program_name,"grp":ls.ae_group_name}
);
});
};
if (!th_sch.size){
throw new Error("У заданного учителя нет занятий ДО на заданной неделе!");
};
th_sch = new Map([...th_sch.entries()].sort());
[...th_sch.values()].forEach(function(ls){
console.log(["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"][ls.day] +
" ("+ ls.ftime +" - "+ ls.ltime +"): "+ ls.prg +"; "+ ls.grp);
});
})()
