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

Что содержит занятие
Две половины, редактируемые в одном диалоговом окне.
Определение — это то, чем занятие является: дисциплина, преподаватели, группы студентов, виды занятий, длительность и его активность. Длительность указывается в периодах — двойное занятие имеет длительность два и занимает два последовательных периода.
Под выбранными вами группами студентов в диалоговом окне указывается контингент — сколько групп вы выбрали и сколько студентов это составляет. Он пересчитывается при изменении выбора, поэтому всегда описывает то, что перед вами, а не то, что было в занятии, когда вы его открыли.
Об этом числе стоит знать две вещи.
Вложенные множества подсчитываются один раз. Выбор одновременно Потока 9 и 9А даёт размер Потока 9, а не сумму двух, потому что одно содержит другое. Диалоговое окно сообщает об этом, когда это происходит, иначе итоговое число, меньшее, чем его части, выглядело бы как ошибка.
Количество студентов указывается только тогда, когда у каждого подсчитанного множества есть размер. Если у какого-либо из них размер не указан, вы получите только количество групп. Это сделано намеренно: множество без размера — это неизвестное значение, а не ноль, и итоговое число, которое молча считало бы его нулём, было бы заведомо неверным. Укажите размеры множеств в разделе Студенты, и количество появится.
Размещение — это то, где занятие в данный момент находится: день, час и аудитория. Занятие без размещения является неразмещённым, что является совершенно нормальным состоянием — это означает, что занятие существует, но ему ещё не назначен временной интервал.
Деактивация — это не удаление. Неактивное занятие остаётся в расписании и в экспортируемом файле, помечается как неактивное и игнорируется при составлении расписания. Это правильный способ «припарковать» занятие, которое не проводится в этом семестре, не теряя его настроек.
Поиск нужных занятий
Полнотекстовый поиск находится на панели инструментов. Всё остальное находится за кнопкой Фильтры, на которой есть значок, показывающий, сколько фильтров активно, и которая добавляет удаляемую метку для каждого, чтобы вы всегда видели, что сужает список.
Внутри каждый параметр — дисциплина, преподаватель, группа студентов, вид занятий, день — представляет собой поисковый список с флажками, и каждый принимает несколько значений одновременно. Выбор двух преподавателей покажет занятия любого из них, а не только их общие занятия. Также есть переключатель только неразмещённые, который является самым быстрым способом перейти к оставшейся работе.
Заголовки столбцов сортируют список. Сортировка происходит по всему отфильтрованному набору, а не по видимой странице — сортировка одной страницы длинного списка ничего бы вам не дала. Размещение является исключением и не подлежит сортировке, потому что названия дней и часов — это метки, а не числа, и любой порядок, наложенный на них, был бы искусственным.
Элемент управления Столбцы скрывает неиспользуемые столбцы; столбец с дисциплинами остаётся.
Разделённые занятия
Занятие, которое проводится три раза в неделю, — это не три несвязанных занятия. Это одно занятие, разделённое на три компонента, которые имеют общую идентичность, поэтому правило, касающееся этого занятия, применяется ко всем из них.
Разделить на N создаёт эти компоненты. Они сохраняют общую групповую идентичность, а разделение добавляет собственное правило связывания FET, требующее как минимум одного дня между ними — именно это не позволяет занятию, которое должно быть распределено по неделе, полностью попасть на понедельник. Редактор перестаёт предлагать размещение после разделения занятия, потому что компоненты размещаются индивидуально; в этом и заключается весь смысл разделения.
И наоборот, выбор двух или более занятий и опция Объединить группирует их в одно разделённое занятие. Это не деструктивно: ничего не сливается, занятия становятся компонентами группы.
Есть отдельная функция, которая действительно выполняет слияние, и доступна она только одним способом. Если раздел обнаруживает занятия, которые стоят рядом в один и тот же день и могут быть одним более длинным занятием, он предлагает это в виде баннера с предложением. Принятие этого предложения сворачивает их в одно занятие объединённой длительности. Этот баннер — единственное место в продукте, где происходит такое сворачивание, поэтому оно никогда не станет для вас неожиданным побочным эффектом чего-то другого.
Разделённые занятия отображаются в списке наглядно. Опция Группировать разделённые собирает компоненты группы вместе под заголовком, указывающим количество частей, и каждый компонент имеет значок часть N из M. Когда сортировка или фильтр разбрасывает их, каждая строка сохраняет свой значок и предлагает ссылку обратно ко всей группе.
Занятие, являющееся частью разделённого, предлагает ровно одно структурное действие: Разгруппировать.
Закрепление размещения
Закрепление фиксирует занятие на его месте, чтобы последующее решение или случайное перетаскивание не могли его сдвинуть. Это важно для постоянных элементов, вокруг которых школа строит всё остальное — собраний, общего времени в актовом зале, фиксированного утра преподавателя, работающего неполный день.

У закрепления есть две оси, и они независимы:
- Время — день и период закреплены
- Место — аудитория закреплена
Закрепление времени, но не места, означает: это занятие проходит во вторник в 3-й период, и неважно, в какой аудитории. Закрепление места, но не времени, означает обратное. Быстрый переключатель в строке применяет оба закрепления сразу, что и нужно большинству пользователей; диалоговое окно области действия позволяет выбрать.
Закрепить / Открепить на панели инструментов работает с целой областью, а не с выделением: все занятия, занятия одного дня, занятия, завершающие день, или занятия с определённым видом занятий. Вы выбираете оси и видите в реальном времени счётчик, показывающий, сколько занятий будет затронуто, прежде чем применить изменения.
Открепление сохраняет размещение. Оно лишь убирает фиксацию.
Массовое изменение
Выделите строки, и панель массовых операций сможет установить или удалить виды занятий, назначить аудиторию, активировать или деактивировать, закрепить или открепить, отменить размещение или удалить — для всех них одновременно. Назначение аудитории может одновременно закрепить её по оси места.
Установить вид занятий и Удалить вид занятий принимают несколько видов занятий одновременно. «Установить вид занятий» заменяет виды занятий у каждого выбранного занятия на те, что вы выберете. «Удалить вид занятий» удаляет только выбранные вами виды занятий, остальные остаются. Части разделённого занятия имеют общие виды занятий, поэтому каждая часть получает то же изменение.
Если нужного вида занятий ещё не существует, введите его название в поле Новый вид занятий в диалоговом окне установки вида занятий. Диалоговое окно создаст этот вид занятий и добавит его к вашему выбору. Ничего не изменится в занятиях, пока вы не примените изменения.
Отмена размещения очищает информацию о размещении, но сохраняет само занятие. Удаление убирает его без возможности восстановления — в подтверждении будет указано, сколько занятий удаляется.