Аналитика «По офисам»: данные СКУД
Переключатель «По данным → СКУД» строит аналитику вкладки «По офисам» не по броням в UnSpot, а по фактическим проходам сотрудников через систему контроля доступа. Это способ увидеть разницу между «забронировал место» и «пришёл в офис» — и понять, насколько бронирования отражают реальную посещаемость.
Что даёт режим СКУД
Бронирование и фактический приход — разные события. Сотрудник может забронировать место и не прийти, прийти без брони или прийти на час вместо целого дня. Режим «СКУД» показывает вторую сторону этой картины.
Типовые задачи, ради которых его включают:
- Проверить, насколько брони соответствуют реальности, прежде чем принимать решение о сокращении или расширении офиса.
- Оценить посещаемость в компаниях, где бронирование мест не обязательно и брони есть не у всех.
- Найти дни и недели, когда людей в офисе заметно больше или меньше, чем предполагает график бронирований.
Переключатель находится в окне «Построить аналитику»: «Параметры графика» → «По данным» → «СКУД» → «Сохранить».
Загрузка событий СКУД
События СКУД приходят в UnSpot через входящую подписку (JSON или Sigur) либо загружаются файлом. Кнопка «Загрузить данные СКУД» стоит в правом верхнем углу страницы и доступна только Владельцу — у остальных ролей, включая администраторов офисов и пользователей, её нет. Саму вкладку «По офисам» и Владелец открывает только при наличии подчинённых или варианта «Все пользователи».
В окне два переключателя и кнопка «Загрузить», которая открывает системный диалог выбора файла — отдельного поля для перетаскивания файла в окне нет.
| Настройка | Варианты | Комментарий |
|---|---|---|
| Формат файла | UnSpot • SIGUR • RusGuard • PERCo • Bolid | Определяет, по каким колонкам система читает файл. Выбирайте формат той системы, из которой сделана выгрузка |
| Разделитель | Точка с запятой • Запятая | По умолчанию — точка с запятой. Должен совпадать с разделителем в файле |
| Кодировка | Только UTF-8 | Не настраивается. Файл в другой кодировке будет прочитан неверно |
| Файл | Только CSV | Выбирается системным диалогом по кнопке «Загрузить». Файлы других расширений не принимаются |
Форматы SIGUR, RusGuard, PERCo и Bolid доступны в установках с включёнными российскими сервисами; в остальных установках в списке только формат UnSpot.
Каждому событию из файла система старается приписать офис. В формате UnSpot значение берётся из колонки «Офис»: ищется офис или вложенное в него пространство (например, этаж) с таким названием, без учёта регистра; если одинаковых названий несколько, берётся любое из них. В остальных форматах берётся точка доступа — у SIGUR колонка «Точка доступа», у RusGuard — «Имя устройства», у PERCo — «Вход в» (для выхода — «Выход из»), у Bolid — «Источник» — и ищется среди точек доступа всех входящих подписок компании, в том числе выключенных. Не нашлось — событие загружается без офиса. Привязки точек доступа хранятся только в подписках: если события приходят к вам только файлами, создайте входящую подписку (её можно сразу выключить) и привяжите точки доступа в ней. Как это сделать — в статье «Входящие вебхуки: подключение СКУД».
Каждая строка файла привязывается к сотруднику по данным его карточки. Признаки проверяются по порядку, и каждый следующий применяется только к строкам, которые не сопоставились предыдущими:
- «Email» — единственный признак для формата UnSpot: строка с адресом, которого нет в UnSpot, отбрасывается.
- «Табельный номер» — для SIGUR (колонка «Таб. №») и RusGuard (номер ключа из колонки «Детали»).
- «Фамилия» и «Имя» (или инициал имени) — для SIGUR, RusGuard, PERCo и Bolid.
- «Отображаемое имя» — последний шаг для всех форматов, кроме UnSpot. Из ФИО в строке берутся первые два слова, у второго отбрасывается точка (инициал «И.» превращается в «И»), и ищется сотрудник, у которого поле «Отображаемое имя» начинается с этих двух слов (без учёта регистра); если таких несколько, берётся первый найденный. Для SIGUR и RusGuard это имя и отчество, для PERCo — имя и фамилия, для Bolid — фамилия и имя или инициал.
После загрузки система сообщает результат: «N из M строк успешно загружены». Загруженных строк может оказаться меньше, чем в файле, и это нормально по двум причинам: повторные события одного сотрудника за день с одинаковым направлением (например, два входа подряд) объединяются в одно, а событие не добавляется, если у сотрудника в этот день уже есть отметка с тем же направлением — после прошлой загрузки, из подключённой системы СКУД или от подтверждения брони по QR-коду, местоположению или кнопке. В последнем случае день в аналитику СКУД не попадёт: она учитывает только события СКУД и загруженные файлы. При этом вход и выход одного сотрудника за день — разные события, оба сохраняются. Если формат не распознан, вместо результата выводится «Неверный формат».
Офис приписывается событию один раз — при получении или загрузке. Если привязать точки доступа позже или загрузить тот же файл повторно, уже сохранённые события офиса не получат: повторы пропускаются. У событий, сохранённых до 05.10.2026, офиса нет вовсе.

Формат файла UnSpot
Формат UnSpot повторяет структуру отчёта «История посещения офиса (СКУД)» из раздела «Отчеты», поэтому проще всего выгрузить такой отчёт, отредактировать его и загрузить обратно. Учтите, что колонка «Офис» в выгрузке содержит название одного пространства без родительских (например, «Этаж 3»): при обратной загрузке оно сопоставится с любым пространством с таким же названием. Из всего файла система читает четыре колонки — три обязательные и необязательную «Офис»; остальные, если они есть, игнорируются.
| Название колонки | Формат | Что содержит | Пример |
|---|---|---|---|
| Дата действия | ДД.ММ.ГГГГ ЧЧ:ММ | Момент прохода. Читается в часовом поясе компании | 14.07.2026 09:12 |
| Тип действия | Одно из двух значений | Направление прохода: • in_office — вход • out_office — выход | in_office |
| Email владельца | Адрес электронной почты | Сотрудник, которому принадлежит событие. Должен совпадать с email в UnSpot | ivanov@example.com |
| Офис | Название пространства | Необязательная. Куда пришёл сотрудник — офис или вложенное в него пространство, например этаж. Ищется по точному названию без учёта регистра; если одинаковых названий несколько, берётся любое из них. Пустое или незнакомое значение — событие загрузится без офиса | Лесная 2 |
Пример содержимого файла с разделителем «точка с запятой» (у третьей строки офис не указан — событие загрузится без офиса):
Дата действия;Тип действия;Email владельца;Офис 14.07.2026 09:12;in_office;ivanov@example.com;Лесная 2 14.07.2026 18:35;out_office;ivanov@example.com;Лесная 2 14.07.2026 09:47;in_office;petrova@example.com;
На что обратить внимание при подготовке файла:
- Значения в колонке «Тип действия» строго технические —
in_officeиout_office. Слова «Вход» и «Выход» не принимаются: файл загрузится, но все строки будут отклонены, а сообщение покажет «0 из N строк успешно загружены» без пояснения причины. - Строка без любой из трёх обязательных колонок пропускается молча, но в общем числе строк сообщения «N из M» учитывается. Заголовки колонок должны совпадать с заголовками выгрузки отчёта на текущем языке интерфейса: файл с русскими заголовками при английском интерфейсе даст «0 из N».
- Email должен принадлежать существующему сотруднику. Событие с незнакомым адресом не будет сопоставлено ни с кем и в аналитику не попадёт.
- Одного события на сотрудника в день достаточно. Для аналитики важен сам факт присутствия, а не количество проходов через турникет.
Что остаётся на странице
Режим СКУД сильно сокращает страницу. Из четырёх плиток работает только одна.
| Плитка | Состояние в режиме СКУД |
|---|---|
| Рабочие места | Работает, показывает данные проходов |
| Парковочные места | Отключена, «Нет данных для этого ресурса» |
| Переговорные | Отключена, «Нет данных для этого ресурса» |
| Локеры | Отключена, «Нет данных для этого ресурса» |
Набор блоков внутри вкладки «Рабочие места» остаётся прежним — посещаемость, потенциал вместимости, круговая диаграмма, столбчатая по дням недели и тенденция. Меняется их наполнение:
- Сегментов два вместо четырёх — «занятые» и «свободные». Понятий «закрепленные» и «недоступные» у данных проходной нет.
- Под круговой диаграммой не выводится легенда. Ориентируйтесь по легенде столбчатой диаграммы ниже: цвета у обоих графиков одинаковые.
- В выгрузке CSV колонки тоже другие — «Свободные» и «Занятые» вместо четырёх типов мест.

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