Синхронизация статусов сотрудников из 1С (UnSpot Schedule Status Adapter)
UnSpot Schedule Status Adapter — внешняя обработка 1С, которая ежедневно переносит рабочие статусы сотрудников из 1С:ЗУП в расписание UnSpot: больничные, отпуска, командировки, отсутствия и удалённую работу. Коллеги видят в расписании UnSpot актуальный статус сотрудника без ручного ввода — источником служат кадровые данные 1С. Обработка дополняет синхронизацию пользователей из 1С (UnSpot SCIM Adapter): та управляет карточками сотрудников и оргструктурой, а эта — ежедневными статусами в расписании.
Как работает обработка
Обработка состоит из двух частей. Движок синхронизации — скомпилированный код обработки: он отправляет статусы в UnSpot по HTTPS, ведёт кэш уже отправленных статусов и пишет подробный журнал. Код выбора данных — скрипт на встроенном языке 1С, который собирает из информационной базы список сотрудников и их статусы по датам. Для типовой конфигурации ЗУП 3.1 скрипт встроен в обработку и не требует настройки; для нестандартных конфигураций его можно заменить собственным.
При каждом запуске обработка: выбирает действующих сотрудников с заполненным email; определяет статус каждого сотрудника на каждый день в окне ±45 дней от текущей даты (по данным учёта рабочего времени ЗУП — графики, табели, документы отклонений); сравнивает результат с кэшем и отправляет в UnSpot только новые и изменившиеся статусы — по одному запросу на статус, с паузой в 1 секунду. Статусы передаются через External API «Импорт расписания сотрудника» — сотрудники сопоставляются по email.
Дни, когда сотрудник работает в обычном режиме, тоже синхронизируются: для них обработка отправляет сброс статуса. Так статус «Отпуск» автоматически исчезает из расписания, когда в 1С отпуск закончился или был отменён. В пределах окна синхронизации (±45 дней) статусы в расписании UnSpot приводятся в соответствие с данными 1С — на этот период источником статусов выступает 1С.
Требования
- 1С 8.3 (работа проверена на версии 8.3.27.1688) с Библиотекой стандартных подсистем (БСП, проверено на 3.1.9.89).
- Конфигурация «Зарплата и управление персоналом» 3.1 ПРОФ или КОРП (проверено на 3.1.27.51 ПРОФ и 3.1.28.84 КОРП) — для неё выбор данных встроен. Другие конфигурации подключаются в режиме «Нестандартная конфигурация» с собственным кодом выбора данных.
- Файл внешней обработки 1s-schedule-status-adapter.epf — предоставляет команда UnSpot.
- У сотрудников в 1С заполнены email, и пользователи с теми же email существуют в UnSpot. Если пользователей ещё нет, сначала настройте синхронизацию пользователей из 1С или другой способ синхронизации.
Шаг 1. Подключение в UnSpot
Обработке нужны адрес API и токен доступа. Их выдаёт карточка «Импорт расписания сотрудника»:
- В UnSpot откройте Администрирование → Интеграции → Настройки API.
- В блоке «Предоставление информации» найдите карточку «Импорт расписания сотрудника» и нажмите «Подключить». При подключении можно задать срок действия токена: без ограничения или от 1 до 24 месяцев.
- Скопируйте URL и токен — они понадобятся в настройках обработки. Токен показывается при подключении: сохраните его в надёжном месте.

Подключать карточку может Владелец или Администратор интеграций. Обратите внимание: это отдельный токен External API — токен SCIM 2.0 от синхронизации пользователей здесь не подойдёт.
Шаг 2. Установка обработки в 1С
- Запустите 1С:Предприятие (не Конфигуратор).
- Откройте Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Если ссылки нет, включите флажок «Дополнительные отчеты и обработки» на той же странице.
- Нажмите «Добавить из файла…» и выберите 1s-schedule-status-adapter.epf.
- В списке появится обработка UnSpot Schedule Status Adapter с двумя командами: Settings (форма настроек) и Sync (запуск синхронизации).
Обработка регистрируется с отключённым безопасным режимом — для установки и запуска нужны соответствующие права в 1С (полные права или права на дополнительные обработки).
Шаг 3. Настройки обработки
Откройте команду UnSpot Schedule Status Adapter Settings — появится форма «Настройки синхронизации статусов сотрудников в UnSpot». Настройки сохраняются внутри информационной базы, поэтому вводятся один раз.
UnSpot API URL
Полный адрес эндпоинта из карточки «Импорт расписания сотрудника» — вида https://<домен>/api/external/v1/user-schedule. Обработка отправляет запросы ровно по этому адресу: ничего дописывать или сокращать не нужно. Используется защищённый протокол HTTPS (порт 443): карточка в UnSpot выдаёт именно https-адрес, и токен вместе с данными сотрудников передаётся по защищённому соединению.
Токен доступа
Токен из той же карточки. Передаётся в каждом запросе в заголовке Authorization (Bearer). Если при подключении карточки задан срок действия, по его истечении запросы начнут отклоняться с ошибкой 401 «API token has expired» — переподключите карточку и обновите токен в настройках обработки.
Конфигурация 1С
Определяет, каким кодом обработка выбирает данные из информационной базы. Два значения:
- ЗУП 3.1 (ПРОФ/КОРП) — используется встроенный код выбора данных. Поле «Код выбора данных» показывает его в режиме «только просмотр»; при обновлении обработки встроенный код обновляется вместе с ней.
- Нестандартная конфигурация — поле «Код выбора данных» становится редактируемым: адаптируйте встроенный скрипт под вашу конфигурацию. Код сохраняется в настройках и выполняется вместо встроенного.
Код выбора данных для синхронизации
Скрипт на встроенном языке 1С. Его контракт: заполнить переменную СотрудникиДляUnSpot (соответствие «идентификатор физлица → структура с полями email и name») и переменную СтатусыСостоянийДляUnSpot (соответствие «дата → идентификатор физлица → код статуса»). Коды статусов возвращает функция обработки ПолучитьСоответствиеСтатусовUnSpot: РабочееВремя, Больничный, Отпуск, Командировка, Отсутствие, УдаленнаяРабота. Схематичный пример структуры данных:
// СтатусыСостоянийДляUnSpot:
// 2026-07-21 // дата
// b0d4ce5d-2757-4699-948c-cfa72ba94f86 // идентификатор физлица
// 1 // РабочееВремя
// 550e8400-e29b-41d4-a716-446655440000
// 3 // Отпуск
// 2026-07-22
// b0d4ce5d-2757-4699-948c-cfa72ba94f86
// 4 // Командировка1СВстроенный ЗУП-скрипт работает так: получает действующих сотрудников через стандартный метод КадровыйУчет.СотрудникиОрганизации с отбором по заполненному email (сотрудники без email не синхронизируются; совместители сводятся к одному месту работы — приоритет у основного, затем большая ставка, затем более поздняя дата приёма); статусы по датам строит через подсистему учёта рабочего времени ЗУП (УчетРабочегоВремениРасширенный) с учётом плановых графиков и документов отклонений; дополнительно учитывает регистр «Дистанционная работа сотрудников» — если день рабочий, но действует период дистанционной работы по договору, статус станет «Удалённая работа».
Кнопки формы
- Сохранить — сохраняет настройки. Любое сохранение сбрасывает кэш отправленных статусов: следующий запуск пройдёт полностью.
- Сохранить и проверить — сохраняет настройки и выполняет пробный прогон за текущий день: показывает, сколько выбрано сотрудников с email и статусов на сегодня, отправляет один статус в UnSpot и выводит ответ сервера. Кэш при проверке не используется.
- Сохранить и запустить — сохраняет настройки и запускает полную синхронизацию фоновым заданием. Ход выполнения пишется в Журнал регистрации.
Шаг 4. Проверка и регулярный запуск
Заполните настройки и нажмите «Сохранить и проверить». Успешная проверка выглядит так: «Настройки сохранены» → «Проверка синхронизации..» → «Выбрано сотрудников с email: N» → «Выбрано статусов сотрудников на текущую дату: N» → «Синхронизация статуса сотрудника … на дату …: …» → «OK» → «Синхронизация статуса успешна, проверка завершается» → «Проверка завершена».
Для регулярной синхронизации настройте регламентное задание: на странице обработки в строке фонового задания UnSpot Schedule Status Adapter Sync включите расписание (флажок в колонке с часами) либо запускайте задание вручную кнопкой «Выполнить». Достаточно одного запуска в сутки — например, ночью. Повторный запуск при уже идущей синхронизации не стартует: обработка сообщит «Синхронизация уже выполняется, подождите завершения».
Первый полный прогон может занять заметное время: отправляется по одному статусу в секунду за период ±45 дней по каждому сотруднику. Последующие запуски быстрые — уходит только то, что изменилось.
Какие статусы передаются
Статусы определяются по буквенным кодам видов учёта рабочего времени ЗУП (включая основное время вида) и передаются в UnSpot так:
| Ситуация в 1С | Буквенные коды | Статус в UnSpot | Код в расписании |
|---|---|---|---|
| Рабочий день | виды времени с признаком «рабочее время» | сброс статуса (день без отметки) | — |
| Больничный | Б, Т | Не работаю · «Больничный» | БЛ |
| Отпуск | О, ОТ, ОД, ОУ, ДБ, Р, УД, У, ОЗ, ДО, ОЖ | Не работаю · «Отпуск» | ОТ |
| Командировка | К, ПК, ПМ | Работаю удалённо · «Командировка» | К |
| Отсутствие | НН, НБ, НО, ПВ, П, Г, ЗБ, НЗ, ПР | Не работаю · «Отсутствие» | НН |
| Удалённая работа | Д (или период дистанционной работы по договору) | Работаю удалённо · «Удаленная работа» | Д |
Каждый статус — отдельный запрос к API (statusType принимает значение NOT_WORKING для «Не работаю» и REMOTE_WORK для «Работаю удалённо»). Пример тела запроса для отпуска:
POST /api/external/v1/user-schedule
Authorization: Bearer <токен>
Content-Type: application/json
{
"userEmail": "employee@company.ru",
"date": "2026-07-28",
"statusType": "NOT_WORKING",
"statusName": "Отпуск",
"statusCode": "ОТ"
}HTTPSЦвет плашки статуса в расписании назначает UnSpot автоматически; в отчётах такие изменения отображаются с местом действия «внешний API». Подробное описание эндпоинта — в справочнике External API: обновление статуса в расписании.
Правила и ограничения
| Правило | Как работает |
|---|---|
| Сопоставление по email | Статус получает пользователь UnSpot с тем же email, что у сотрудника в 1С (email передаётся в нижнем регистре). Архивные и деактивированные пользователи статусы не получают — сервер отвечает «User not found». |
| Сотрудник есть в 1С, но не в UnSpot | Сервер возвращает ошибку 400, обработка записывает её в журнал и продолжает работу. Ошибка не кэшируется — когда пользователь появится в UnSpot, его статусы передадутся при следующем запуске автоматически. |
| Один статус на день | В UnSpot у сотрудника один статус на дату. Если в 1С на день приходится несколько разных отметок (например, полдня отпуска и полдня работы), обработка пропускает этот день и фиксирует это в журнале. |
| Неизвестные виды времени | Вид учёта времени без соответствия в таблице выше пропускается; для видов с буквенным кодом это фиксируется в журнале регистрации. |
| Ограничение частоты | Сервер принимает не более 1 запроса в секунду на токен — обработка соблюдает лимит автоматически (пауза между запросами). |
| Только статусы | Обработка не создаёт и не изменяет пользователей, отделы или права — за это отвечает синхронизация пользователей (SCIM). Настраивайте её первой. |
Кэширование
Каждый успешно отправленный статус запоминается в кэше (служебные файлы в справочнике «Файлы», папка UnSpotScheduleStatus). При следующем запуске статус отправляется повторно только если он изменился — поэтому регулярные запуски проходят быстро и не нагружают API. Кэш сбрасывается при любом сохранении настроек; проверочный запуск («Сохранить и проверить») кэш не использует и не изменяет.
Возможные ошибки
| Сообщение | Причина | Что делать |
|---|---|---|
| 401 Invalid API token | Токен не подходит: опечатка или использован токен другой карточки (например, SCIM 2.0) | Скопируйте токен из карточки «Импорт расписания сотрудника» заново |
| 401 API token has expired | Истёк срок действия токена | Переподключите карточку и обновите токен в настройках обработки |
| 400 User not found | В UnSpot нет активного пользователя с таким email | Проверьте email сотрудника в 1С и наличие пользователя в UnSpot; настройте синхронизацию пользователей |
| 429 Too Many Requests | Превышен лимит 1 запрос/сек — например, запросы к API идут параллельно из другой системы с тем же токеном | Не используйте один токен в нескольких интеграциях одновременно |
| «Синхронизация уже выполняется» | Предыдущее фоновое задание ещё не завершилось | Дождитесь завершения — ход виден в Журнале регистрации |
| «Не найдено сотрудников с заполненным email» | У сотрудников в 1С не заполнены email | Заполните email в карточках сотрудников (Главное → Сотрудники → Личные данные) |
Подробный журнал каждого запуска — в 1С: Администрирование → Обслуживание → Журнал регистрации, источник вида UnSpotScheduleStatus#дата: там видны выборка, каждая отправка с ответом сервера, пропуски и итог.