# Модуль расписания учебных групп поверх CRM — кейс Auspex

> Учебный центр собирал расписание групп вручную. Auspex написал кастомный модуль поверх коробочной CRM: автоформирование, drag&drop, контроль накладок.

Source: https://auspex.company/ru/blog/training-center-scheduling-module-case/

[Блог](/ru/blog/) / Field Notes

# Расписание учебных групп: кастомный модуль поверх CRM вместо ручного планирования.

Автор: Андрей Марьясов · 27 июл. 2026 г. · 7 мин чтения

Курсы, группы и подгруппы у этого клиента уже жили в CRM — мы перенесли их туда раньше. А расписание на следующий месяц методист всё равно собирал руками: раскладывал группы по дням, следил, чтобы две группы одного курса не попали на одни и те же часы, нумеровал их сквозно с начала года. Auspex написал поверх коробочной CRM собственный модуль, который делает это за одно нажатие — и позволяет потом поправить результат перетаскиванием. Вот как он устроен и почему это не «настройка CRM».

## Что было: расписание собирали руками до 15-го числа.

Учебный центр работает привычным для отрасли циклом: до 15-го числа текущего месяца нужно сформировать группы на следующий. Карточки курсов, групп и подгрупп уже были в CRM как смарт-процессы — с длительностью, типом курса, лимитами участников и связями со сделками зачисленных клиентов. Данных хватало. Не хватало инструмента, который из этих данных соберёт календарь.

Поэтому методист собирал его в голове и на листе. Правил, которые надо держать одновременно, набирается немало: рабочий день — восемь часов, выходные не планируются, две группы одного курса не могут занимать одни и те же часы (кроме курсов, где параллельные группы разрешены явно), у смешанных курсов короткие и длинные группы должны чередоваться равномерно, последняя группа месяца может заканчиваться уже в следующем, а нумерация с начала года начинается заново.

Цена ошибки здесь отложенная. Накладка двух групп не подсвечивается в момент, когда её делают, — она просто становится видимой, когда слушатели уже пришли на занятие. И исправляют её не в системе, а люди.

## Почему не «донастроить CRM», а писать модуль.

Коробочная CRM хорошо делает то, для чего она сделана: карточки, списки, канбан, права, бизнес-процессы. Но она не умеет раскладывать часы по рабочим дням по отраслевым правилам конкретного учебного центра — и никакая настройка полей этого не даст. Здесь нужен не конструктор, а код.

Ключевое ограничение мы поставили себе сами: никаких изменений в ядре платформы. Весь модуль живёт в собственном изолированном каталоге и пользуется штатными механизмами — своими таблицами, контроллерами, расширениями интерфейса, API смарт-процессов. Это скучное на вид требование, от которого зависит всё: клиент должен обновлять свою CRM дальше, и обновления не должны ломать то, что мы дописали.

## Что построили.

В главном меню CRM появился пункт «Расписание групп» с двумя основными экранами — календарём и черновиком.

Календарь показывает сетку рабочих дней с плашками групп: название курса, тип (длинная или короткая), номер группы, количество слушателей. Если на один день приходится больше двух групп, лишние сворачиваются в бейдж «+N». Группы, начавшиеся в прошлом месяце и продолжающиеся дальше, помечаются маркером «ПР». Группы, которые после ручных правок начали накладываться друг на друга вопреки правилам, подсвечиваются красным — сразу, а не задним числом.

-   Фильтры: период (месяц, неделя, произвольный диапазон), курсы мультивыбором, тип курса, состояние сертификатов — сформированы или нет.
-   Печать расписания за текущий период с учётом применённых фильтров, в вёрстке под A4.
-   Клик по курсу или номеру группы открывает соответствующую карточку в боковой панели — без перехода на другую страницу.
-   Три роли: инспектор смотрит и печатает, методист формирует и настраивает, администратор может ещё и перегенерировать уже финализированное расписание.

Второй экран — черновик. Методист нажимает «Сформировать», и система по настройкам курсов раскладывает группы на следующий месяц. Это ещё не реальные группы, а черновик, который видно и можно поправить: микроблок группы перетаскивается на другой день, после чего пересчитываются даты начала и завершения, занятость часов и конфликты. Когда картина устраивает — «Сформировать» второй раз. Только теперь система назначает номера в формате «год/номер», фиксирует время и создаёт реальные элементы смарт-процесса «Группы».

Настройки — отдельный экран, где для каждого курса задаётся количество коротких и длинных групп на месяц, общее количество и сам факт участия курса в автоформировании. Это то, что превращает модуль из разовой автоматизации в инструмент: правила меняются в течение года, появляются новые курсы, и методист меняет их сам, без нас.

## Две детали, от которых зависит, будет ли такой модуль работать.

Первая — планировщик «волн». Группы одного курса разбиваются на волны: параллельные идут в одном временном слоте, последовательные — одна за другой. Волна заполняет восьмичасовой день; если не вмещается — переходит на следующий рабочий день, а если заканчивается в середине дня — остаток отдаётся следующей волне. Выходные пропускаются. Планирование ведётся в часах с поддержкой дробных значений — это понадобится, когда дойдёт очередь до поурочного плана подготовки.

Вторая — двухфазная финализация. Создание элементов CRM не завернёшь в транзакцию базы данных, поэтому сбой посередине оставил бы половину групп созданными, а половину — нет. Поэтому модуль сначала создаёт элементы в CRM, затем в транзакции обновляет собственные таблицы, и если вторая фаза падает — откатывает первую, удаляя только что созданные группы. Повторное нажатие «Сформировать» не плодит дублей. Каждое значимое действие — генерация, перетаскивание, финализация — пишется в журнал: кто, что и когда.

## Сколько это заняло.

Оценка на старте была 60 часов разработки и 2,5–3 месяца календарного времени. Рабочая версия стояла на сервере клиента через две недели от первого коммита — дальше шла приёмка, правки по замечаниям методистов и финальное закрытие задачи. Мы не называем это «сделали за две недели»: писать код и сдать систему в эксплуатацию — разные по длительности вещи, и честнее показывать обе.

-   Около 6 500 строк собственного кода — бэкенд, интерфейс, стили.
-   73 юнит-теста на планировщик волн, детектор конфликтов, нумерацию групп и проверку прав.
-   Три собственные таблицы базы под настройки, запуски формирования и элементы черновика.
-   Ноль изменений в ядре платформы — модуль переживает обновления коробки.

Работа на этом не закончилась: дальше в очереди подгруппы с буквенными индексами и отдельная вкладка расписания для методистов с разбивкой часов на теорию, практику и экзамены. Модуль изначально проектировался под это — поэтому следующие блоки добавляются, а не переписывают предыдущие.

## Что из этого выносить.

Когда бизнес упирается в то, что CRM «почти подходит», решений обычно рассматривают два: терпеть или менять систему. Есть третье — дописать недостающую часть поверх имеющейся. Данные, права, карточки клиентов, сделки и привычки команды остаются на месте; добавляется ровно тот кусок, которого не хватало. Auspex делает такие доработки отдельными модулями — именно чтобы их можно было развивать дальше и не бояться обновлений.

«Коробка не умеет» — не приговор и не повод менять CRM целиком. Часто дешевле и быстрее дописать недостающий модуль поверх той системы, в которой команда уже работает.

Читать дальше

-   [CRM для учебных центров и образования](/ru/industries/education/)
-   [Миграция с Zoho Creator: переписали калькулятор за несколько дней](/ru/blog/zoho-creator-rewrite-case/)
-   [Как Auspex внедряет CRM: неделя за неделей](/ru/blog/crm-in-4-6-weeks-week-by-week/)
-   [Все кейсы Auspex](/ru/cases/)

Андрей Марьясов основатель Auspex

Основатель Auspex. Внедряет CRM и автоматизирует бизнес-процессы с 2015 года — 1500+ проектов.

[amaryasov.expert →](https://amaryasov.expert)

## Частые вопросы

Не сломается ли такой модуль после обновления CRM?

Именно поэтому он написан как отдельный модуль в изолированном каталоге, без единой правки ядра платформы, и использует только штатные механизмы — API смарт-процессов, собственные таблицы, стандартные контроллеры и расширения интерфейса. Обновления коробки обновляют ядро, которого мы не касались. Это стандартное требование Auspex к любой доработке on-premise системы, а не особенность этого проекта.

Почему не сделать расписание отдельным сервисом сбоку от CRM?

Потому что расписание живёт из тех же данных, что и остальная CRM: курсы, группы, подгруппы, сделки зачисленных клиентов. Отдельный сервис означал бы синхронизацию двух баз, расхождения между ними и второй интерфейс, в который надо заходить отдельно. Здесь методист работает в одном окне: клик по группе открывает её карточку, клик по курсу — карточку курса, права действуют те же, что и в CRM.

Сколько стоит и сколько длится такая разработка?

Фиксированного прайса нет — всё зависит от сложности правил. Ориентир из этого проекта: оценка была 60 часов разработки, рабочая версия оказалась на сервере клиента через две недели от старта, а полный цикл с приёмкой и правками занял дольше. Мы сначала смотрим на процесс и текущую конфигурацию, затем называем оценку под конкретный объём.

У нас не учебный центр. Подход подойдёт?

Подход — да, конкретная логика — нет. Здесь автоматизировали отраслевые правила учебного центра: восьмичасовой день, параллельные группы, чередование коротких и длинных курсов, сквозная нумерация с начала года. В производстве, логистике или клинике правила другие, но сама схема та же: описать правила, вынести их в модуль поверх имеющейся CRM и оставить менеджеру возможность поправить результат руками.

Кто может формировать расписание, а кто только смотреть?

В модуле три роли, и они определяются по принадлежности пользователя к группам в CRM. Инспектор просматривает, фильтрует и печатает. Методист дополнительно формирует черновик, перетаскивает группы, меняет тип группы и управляет настройками автоформирования. Администратор может ещё и перегенерировать уже финализированное расписание. Каждое действие пишется в журнал с указанием автора.

## Дайджест по автоматизации бизнеса

2–3 письма в месяц — что действительно работает в CRM и автоматизации.

Без спама. Отписаться можно в один клик.

[Бесплатный CRM-аудит →](/ru/contact/)

↳ БЕСПЛАТНЫЙ АУДИТ 30 мин · бесплатно · ↓

## Готовы навести порядок в продажах?

Бесплатный аудит ваших процессов — 30 минут, и вы получите:

1 200+ компаний с 2015 года · медиана запуска — 30 дней

01 Карту потерь в заявках

02 Приоритеты: что автоматизировать первым

03 План внедрения за 2–4 недели

Перезвоним в течение 24 часов. План — ваш, даже если мы не начнём работать вместе.
