Как завести справочник мест, разметить календари по площадкам и связать календари с общим временем — один человек в двух расписаниях или один кабинет на двоих, — чтобы один час нельзя было продать дважды.

Модуль решает две задачи сразу, и их полезно различать.
Первая — места. Появляется раздел «Площадки»: зал на Пушкинской, зал на Соколова, кабинет в филиале. У календаря можно указать, где именно он работает, а клиент на публичной странице записи выбирает, куда ему удобно.
Вторая — общее время. Календарей несколько, а занятое время у них одно. Так бывает в двух случаях: тренер Иван ведёт в двух залах (один человек — два расписания) или два специалиста принимают в одном кабинете (несколько человек — одно место). Модуль даёт поле, которым вы говорите: вот с кем это время общее. После него занятый час у одного закрывает тот же час у другого — и запрещено это на уровне базы данных, а не проверкой в интерфейсе.
Модуль надстраивается над «Онлайн-записью»: он размечает её календари («Ресурсы»), поэтому без неё установиться не может.
«Настройки» → «Конструктор» → вкладка «Модули» → карточка «Площадки и календари людей» → «Включить».
Что появляется:
Правил модуль не ставит и ничего не выключает: пока вы сами не разметили, кто где работает, всё ведёт себя ровно как до установки.

Настраивать ничего не нужно: оба новых поля появляются в карточке календаря сами, в самом низу, сразу после установки. Откройте любую запись раздела «Ресурсы» — «Площадка» и «Делит время с» уже там, рядом с остальными полями, и их сразу можно заполнять. Колонки в списке «Ресурсы» тоже появляются сами.
Дальше — по вашему вкусу. Порядок полей в карточке, их группировку по секциям и то, какие из них показывать в списке, вы меняете в любой момент: раздел «Ресурсы» → «Настроить виды» → вид «Карточка: Ресурсы». Это обычная настройка внешнего вида, а не обязательный шаг: модуль работает и без неё.
Включили модуль раньше 15 августа 2026? Тогда полей в карточке может не быть — раньше их действительно приходилось выводить руками. Добавьте их один раз тем же путём: «Ресурсы» → «Настроить виды» → «Карточка: Ресурсы» → отметьте «Площадка» и «Делит время с» → «Сохранить» (нужны права конструктора — они есть у владельца и администратора). Новые пространства этого шага уже не знают.

Раздел «Площадки» — обычный раздел вашего пространства: список, форма, импорт. Заведите по записи на каждое место, где действительно принимаете.

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

То же поле есть и у услуги. Откройте карточку в разделе «Услуги» — «Площадка» там уже стоит в форме, выводить её не нужно. Заполните, если услуга бывает только в одном месте: «Урок барабанов» — в барабанной, «Аппаратная чистка» — там, где стоит аппарат. Клиент, выбравший другой зал, такую услугу в списке не увидит вовсе, а ссылка с противоречивой парой «этот зал + эта услуга» получит честный отказ вместо чужого расписания. Пусто — услуга предлагается на всех площадках, как и было до модуля.
Правило у услуги и у календаря буквально одно: пустое поле подходит везде, заполненное — только своему залу. Поэтому размечать можно постепенно и в любом порядке.
Теперь вторая половина. Поле «Делит время с» отвечает на один вопрос: чьё время на самом деле занимает запись в этом календаре.
Но начните не с поля, а с «Настроек» → «Онлайн-запись». Знать про поле заранее — плохая защита: тот, кто о нём не слышал, узнаёт о нём в день, когда клиент приехал не туда. Поэтому похожие календари ищет сама система. Сразу под тремя шагами настройки записи появляется блок «Похожие календари»: два активных календаря с одним и тем же именем, между которыми общего времени нет, и два ответа — «Связать» и «Это разные».
Связать — значит сперва показать правду. Общее время действует на будущие записи, а те, что уже созданы, оно не отменяет: если человека успели записать в двух местах на один и тот же час, эта пара записей никуда не денется. Поэтому такие пересечения показаны списком до нажатия — с днём, часом и именами обоих клиентов, — и если они есть, кнопка ещё и переспросит. Связка — это не «починить», а «дальше так не будет».
Границы, которые стоит знать. Сравниваются имена целиком, а пометка места отбрасывается — всё,
что стоит после ·, тире, @, запятой, скобки или отдельно стоящего дефиса. Поэтому «Иван · Пушкинская»
и «Иван (Соколова)» — пара, а «Иван Петров» и «Петров И.» — нет; «Кабинет 1» и «Кабинет 2» не считаются
парой намеренно. Спрашивают только про календари, которые принимают записи: карточка-ключ общего
места (галочка снята — случай второй ниже) в предложения не попадёт никогда. И само поле общего времени
приносит этот модуль: без него блок пару покажет, но вместо кнопок предложит включить модуль.
Дальше — два случая, которые размечаются полем, и первый из них система обычно закрывает за вас.
Случай первый — один человек, два расписания. У того, кто ведёт в двух местах, обычно два календаря — «Иван · Пушкинская» и «Иван · Соколова». Именно эту пару блок «Похожие календари» и предложит связать. Если он молчит (например, календари названы по-разному), сделайте то же руками: откройте второй и заполните поле «Делит время с», указав первый. Заполняется оно у второго календаря, не у обоих: первый остаётся главным.
Что будет, если это поле не заполнить. Ничего — и в этом опасность. Два календаря одного человека по умолчанию независимы: для системы это два разных «кто принимает», как если бы работали два разных тренера. Вторник 19:00 занят в одном зале — во втором он по-прежнему предлагается клиенту, и запись пройдёт. Ни предупреждения, ни отказа не будет; человека просто ждут в двух местах одновременно. Свяжите календари до того, как расписание наполнится, — кнопкой «Связать» в блоке «Похожие календари» или полем руками, — и проверьте: заняли час в первом зале, откройте страницу записи второго, этого часа там быть не должно. Залов три и больше — все дополнительные календари указывают на один и тот же главный (звездой, а не цепочкой): связка читается на один шаг, см. «Честные ограничения».
Групповые занятия связку соблюдают так же, как персональные записи (с 21 августа 2026). Занятие закрывает час и у своего календаря, и у карточки, названной в «Делит время с», — каким бы способом его ни завели: обычной формой раздела «Занятия», кнопкой «Поставить такое же» или правкой уже стоящей карточки. Проверить можно ровно так же: поставьте группу в клубе, откройте страницу записи второго календаря того же человека — этого часа там быть не должно.
Случай второй — одно место, несколько принимающих. Два врача в одном кабинете, два мастера на одном кресле, двое преподавателей в одном зале, несколько услуг на одном станке. Тогда:
Карточка места записей не принимает никогда: клиенту она не показывается и выбрать её нельзя — она нужна только как общее время. График у неё заполнять не обязательно: часы приёма остаются у людей.
Этот случай система за вас не закроет. Карточка-ключ записей не принимает, поэтому в блок «Похожие календари» она не попадает, а имена «Иван» и «Кабинет №2» ничем не похожи. Общее место размечаете вы — и это единственное, ради чего поле приходится открывать руками.
После этого занятое время у связанных календарей общее. Час, занятый у одного, у второго уже не свободен — ни на публичной странице, ни при переносе в кабинете, ни при групповом занятии.
Обе половины работают одновременно. Запись занимает время каждого, кто в ней задействован: и того календаря, куда записан клиент, и карточки, с которой он делит время. Поэтому у преподавателя, который ведёт в зале и ездит к ученикам, можно связать оба: «Валера · зал» указывает на карточку зала, а «Валера · выезд» — на «Валера · зал». Тогда занятый урок в зале закрывает час и коллеге (общий зал), и самому Валере на выезде (общий человек), а урок коллеги выезд Валеры не трогает — общего времени у них нет.
Календарь без заполненного поля живёт сам по себе, как и раньше. Никакой миграции расписания делать не нужно.

Когда площадок, принимающих записи, больше одной, на публичной странице записи появляется первый шаг «где?» — раньше выбора услуги и мастера. Клиент выбирает зал, а свободное время дальше считается по календарям этой площадки. Список мастеров тоже сужается: человек, который в этом зале не работает, в нём не появится.
Под названием зала клиент видит его адрес — тот, что вы заполнили на шаге 3. И тот же адрес стоит строкой «Где» на экране «вы записаны»: шаг «где?» человек проходит за минуту до, а подтверждение открывает в день визита — именно оттуда он и узнаёт, куда ехать.
Лишнего экрана на пустом месте не возникает:
Своя ссылка на каждый зал — кнопкой, а не руками. Страница записи у пространства одна, но раздавать
её можно разными ссылками. Откройте «Настройки» → «Онлайн-запись»: под общей ссылкой стоит блок
«Ссылки для раздачи», а в нём два списка — «По площадкам» и «По услугам», строка на
каждый зал и на каждую услугу. Справа от адреса — кнопка-значок копирования, подписи у неё нет.
Нажали напротив «Зал на Соколова» — система отвечает «Ссылка скопирована», а в буфере лежит готовый
адрес …/b/ВАШ-КЛЮЧ?venue=Зал%20на%20Соколова. Клиент по нему шага «где?» не увидит вовсе: он уже
там, где нужно. Так же копируется ссылка сразу на услугу.
Строки в блоке появляются там, где клиенту есть из чего выбирать: зал один — шага «где?» на странице нет, и вместо ссылки панель пишет об этом прямо. Переименовали зал — скопируйте ссылку заново; старая при этом не сломается, а просто откроет обычный первый экран, а не ошибку.

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

Ядро модуля — общее время и подбор по площадке — работает полностью. Края вокруг него закрыты не все, и мы называем их поимённо.
?venue=Зал на Соколова), и это удобно: адрес читается вслух. Но если два зала названы
одинаково или зал назван числом, по имени его не отличить — тогда кнопка кладёт в буфер адрес с
внутренним номером (?venue=21). Работает он точно так же, просто выглядит менее наглядно; хотите
красивый адрес — дайте залам разные названия.