Top.Mail.Ru
Центр помощи / Для администратора / 4. Интеграции / Синхронизация пользователей / Синхронизация статусов сотрудников из 1С (UnSpot Schedule Status Adapter)

Синхронизация статусов сотрудников из 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 и токен доступа. Их выдаёт карточка «Импорт расписания сотрудника»:

  1. В UnSpot откройте Администрирование → Интеграции → Настройки API.
  2. В блоке «Предоставление информации» найдите карточку «Импорт расписания сотрудника» и нажмите «Подключить». При подключении можно задать срок действия токена: без ограничения или от 1 до 24 месяцев.
  3. Скопируйте URL и токен — они понадобятся в настройках обработки. Токен показывается при подключении: сохраните его в надёжном месте.

Подключать карточку может Владелец или Администратор интеграций. Обратите внимание: это отдельный токен External API — токен SCIM 2.0 от синхронизации пользователей здесь не подойдёт.

Шаг 2. Установка обработки в 1С

  1. Запустите 1С:Предприятие (не Конфигуратор).
  2. Откройте Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Если ссылки нет, включите флажок «Дополнительные отчеты и обработки» на той же странице.
  3. Нажмите «Добавить из файла…» и выберите 1s-schedule-status-adapter.epf.
  4. В списке появится обработка 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                                   // Командировка

Встроенный ЗУП-скрипт работает так: получает действующих сотрудников через стандартный метод КадровыйУчет.СотрудникиОрганизации с отбором по заполненному 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#дата: там видны выборка, каждая отправка с ответом сервера, пропуски и итог.

Связанные статьи

Оставьте заявку, и мы свяжемся с вами в течение 30 минут.

Loading

Как улучшить работу офиса?

Оставьте контакт - покажем на демо как уйти от таблиц, двойных бронирований и путаницы с рабочими местами.

Loading