// ============================================================================= // Получение расписания занятий ДО конкретного учителя на заданную неделю // ============================================================================= // 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); }); })()