Top.Mail.Ru
Центр помощи / Для администратора / 4. Интеграции / Синхронизация пользователей / 1С: Синхронизация пользователей – как устроен обработчик

1С: Синхронизация пользователей – как устроен обработчик

UnSpot получает сотрудников напрямую из 1С: внешняя обработка «UnSpot SCIM Adapter» выбирает из ЗУП (или другой конфигурации на базе БСП) сотрудников, руководителей и режим работы и передаёт их в UnSpot по стандарту SCIM 2.0. В статье описано, как устроен обмен: кто его инициирует, по какому протоколу и какие данные покидают информационную базу, как обработка сопоставляет, создаёт, обновляет и удаляет пользователей, где хранятся токен и настройки, что попадает в журнал регистрации и какие права нужны обработке. Статью можно передать службе информационной безопасности при согласовании интеграции. Пошаговая настройка — в статье 1С: Синхронизация пользователей – настройка интеграции, передача дерева подразделений — в статье 1С: Синхронизация оргструктуры – как устроен обработчик.

Кратко

  • Обмен односторонний и всегда по инициативе 1С: обработка отправляет исходящие HTTPS-запросы к SCIM API вашего рабочего пространства UnSpot. Входящих подключений к 1С нет.
  • В UnSpot уходят email, фамилия и имя, должность, табельный номер, подразделение, email руководителя и доля офисных дней; в режиме «Полная» — ещё идентификатор физлица.
  • Кого создать, обновить или архивировать, обработка решает сама: сравнивает список пользователей UnSpot с выборкой из 1С.
  • Настройки и токен хранятся в информационной базе 1С, ход каждого запуска — в журнале регистрации.
  • Незнакомое слово — загляните в раздел Термины статьи-обзора.

Важно для службы безопасности

  • Токен хранится в базе 1С без шифрования — в справочнике «Файлы». Его может получить любой, кому доступен этот справочник, и он попадает в резервные копии.
  • Безопасный режим выключен. Скрипт из настроек выполняется с правами сеанса синхронизации: право менять настройки обработки равно праву выполнить в базе любой код.
  • Сертификат сервера UnSpot обработка не проверяет. Трафик шифруется, но подлинность сервера не подтверждается — подробности в разделе Протокол, адреса и шифрование.
  • Журнал регистрации хранит персональные данные: тела запросов на создание и обновление пользователей и ответы UnSpot на них пишутся в него целиком.

Как работает синхронизация

Синхронизация выполняется внешней обработкой 1С «UnSpot SCIM Adapter» (файл 1s-to-scim-adapter-bsp.epf). Обработка устанавливается в вашу информационную базу и работает по расписанию или по кнопке. У неё две составляющие:

  1. Скрипт выбора данных — код на встроенном языке 1С, который выбирает из информационной базы сотрудников, подразделения и руководителей. Для типовой ЗУП 3.1 он уже встроен в обработку; для нестандартных конфигураций его можно написать самостоятельно. Подробности — в статьях 1С: Синхронизация пользователей – как устроен скрипт и 1С: Собственный скрипт – настройка интеграции.
  2. Код синхронизации — часть обработки, которая передаёт выбранные данные в UnSpot по SCIM API: читает текущих пользователей UnSpot, сопоставляет их с данными 1С, создаёт, обновляет и удаляет пользователей, а при включённом флажке «Оргструктура» обновляет дерево подразделений.

Каждый запуск проходит один и тот же конвейер: обработка читает настройки → получает по SCIM список всех пользователей UnSpot → выполняет скрипт выбора данных → сопоставляет два списка и определяет, кого создать, обновить или удалить → отправляет изменения → назначает отложенных руководителей → удаляет пропавших → при включённой оргструктуре передаёт дерево подразделений. Все шаги записываются в журнал регистрации 1С.

Направление и инициатор обмена

Соединение всегда устанавливает 1С. Обработка сама подключается к серверу UnSpot и отправляет запросы, а UnSpot к вашей информационной базе не обращается.

  • Инициатор — 1С. Обработка создаёт исходящее соединение в момент запуска: по регламентному заданию либо по кнопке в форме настроек. Постоянного соединения, вебхуков и подписки на события у интеграции нет.
  • Входящих подключений нет. Обработка не содержит сервисов, которые принимали бы входящие запросы: в БСП она регистрирует только две команды — открытие формы настроек и серверный запуск синхронизации. UnSpot не знает адреса вашей информационной базы и не получает к ней учётных данных.
  • Обратный поток — только чтение. В начале каждого запуска обработка читает из UnSpot список всех пользователей компании, чтобы сравнить его с данными 1С. Сам список живёт в оперативной памяти сеанса на время запуска. Но ответы UnSpot на создание и обновление пользователя пишутся в журнал регистрации целиком — это карточка пользователя UnSpot, в которой могут быть и поля, которых нет в 1С (подробнее — в разделе о журнале).
  • Данные UnSpot в 1С не переносятся. Брони, статусы присутствия, аналитика и любые другие сведения из UnSpot в 1С не попадают.

Протокол, адреса и шифрование

Обработка обращается к единственному внешнему адресу — к SCIM API вашего рабочего пространства UnSpot. Адрес задаётся администратором в поле «UnSpot API URL».

ПараметрКак устроено
ПротоколHTTPS, если адрес в поле «UnSpot API URL» начинается с https://. Соединение устанавливается защищённым средствами платформы 1С. Обработка создаёт его без списка сертификатов удостоверяющих центров, а в таком режиме платформа 1С, по её документации, подлинность сертификата сервера не проверяет: трафик шифруется, но подмена сервера не будет обнаружена. Если служба безопасности требует проверки сертификата, учтите это ограничение — настройки для неё в обработке нет
Порт443 для адреса, начинающегося с https://; для адреса с незащищённой схемой (без буквы «s») — 80, без шифрования. Порт определяется только протоколом: указать в адресе нестандартный порт нельзя
Адрес назначенияДомен вашего рабочего пространства UnSpot, например ваш-домен.unspot.ru. К нему обработка добавляет пути ресурсов: /Users — карточки сотрудников, /OrgUnits — дерево подразделений. Других внешних адресов обработка не вызывает
АутентификацияЗаголовок Authorization: Bearer с токеном подключения SCIM 2.0 — в каждом запросе. Логин и пароль, клиентский сертификат и взаимный TLS не используются
Формат данныхapplication/scim+json в запросах на создание, обновление и передачу оргструктуры
Таймаут60 секунд
ПроксиПоля для прокси в форме настроек нет, и при создании соединения прокси не задаётся

Что учитывать. Адрес с незащищённой схемой (без буквы «s») обработка примет: соединение будет установлено по порту 80 без шифрования, и токен вместе с персональными данными уйдёт открытым текстом. Указывайте адрес только с https://. Адрес без протокола обработка отклонит с ошибкой «Неверный формат URL».

Что передаётся в UnSpot

Наружу уходят только перечисленные ниже поля. Их состав зависит от режима синхронизации и трёх флажков формы настроек — «Оргструктура», «Менеджер» и «Режим работы»; что означает каждый из них — в статье 1С: Синхронизация пользователей – настройка интеграции.

Поле в UnSpotЧто этоОткуда берётся в 1СКогда передаётся
userNameEmail сотрудника, в нижнем регистреКадровые данные, реквизит EMailПредставлениеВсегда
externalIdИдентификатор физлица (36 символов) — ключ сопоставления, не зависящий от смены emailИдентификатор элемента справочника «Физические лица»Режим «Полная»
name.familyNameФамилияКадровые данные, реквизит ФамилияКроме режима «Только обновление оргструктуры»
name.givenNameИмя. Отчество не передаётсяКадровые данные, реквизит ИмяКроме режима «Только обновление оргструктуры»
titleДолжностьНаименование элемента справочника «Должности»Кроме режима «Только обновление оргструктуры»
employeeIdТабельный номерКадровые данные, реквизит ТабельныйНомерКроме режима «Только обновление оргструктуры»
orgUnitПолный путь подразделения через /Иерархия справочников «Организации» и «Подразделения организаций»Флажок «Оргструктура» включён
departmentНазвание подразделения сотрудника. UnSpot находит по нему подразделение верхнего уровня с таким названием или создаёт его и привязывает к нему сотрудникаНаименование подразделения сотрудникаФлажок «Оргструктура» выключен
managerEmail руководителяКонтактная информация физлица — руководителя подразделения или организацииФлажок «Менеджер»
attendanceДоля офисных дней, целое от 0 до 100Расчёт по графикам работы за текущий месяцФлажок «Режим работы»
activeПризнак активности учётной записи, всегда истинаНе из 1С — проставляется обработкойРежим «Полная»

Персональные данные, которые покидают контур 1С: фамилия и имя, email, должность, подразделение, табельный номер, email руководителя и рассчитанная доля офисных дней. Отчество, телефон, фотография и любые другие сведения о человеке не передаются.

Что учитывать. Email руководителя берётся из контактной информации физлица — используется первый элемент с типом «Адрес электронной почты». Если у руководителя в 1С заполнен личный адрес, в UnSpot уйдёт он.

Что не передаётся

  • Пароли и любые аутентификационные данные. Обработка не читает пароли пользователей 1С; учётные данные для входа в UnSpot создаёт сам UnSpot.
  • Телефоны, фотографии, дата рождения, паспортные данные, СНИЛС, ИНН, адреса. Список кадровых реквизитов, которые запрашивает встроенный скрипт, закрыт и этих полей не содержит.
  • Сведения о зарплате, начислениях, отпусках, больничных и командировках. В расчёт режима работы попадают только виды учёта времени «Явка» и «Дистанционная работа», остальные не учитываются и наружу не уходят.
  • Дата приёма, количество ставок и вид занятости. Они читаются из 1С, но нужны только для выбора одной позиции у совместителя и удаляются из данных сотрудника до отправки.
  • Ссылки на объекты информационной базы. Служебная ссылка на элемент справочника «Сотрудники» удаляется перед отправкой; наружу уходит только идентификатор физлица в поле externalId.
  • Уволенные сотрудники и сотрудники без email. Они не попадают в выборку, а значит и в запросы к UnSpot. Единственное исключение — руководитель организации: при включённой оргструктуре в режиме «Полная» он добавляется как пользователь, если у него есть email (блок 5 в статье 1С: Синхронизация пользователей – как устроен скрипт).

Как обработка синхронизирует данные с UnSpot

Когда скрипт сформировал данные, код синхронизации сопоставляет их с UnSpot и применяет изменения по SCIM API. Подробное описание API — в справочнике External API: Синхронизация пользователей по стандарту SCIM.

Чтение пользователей UnSpot

Обработка постранично загружает всех пользователей компании (GET /Users, по 20 записей за запрос), включая деактивированных. Для каждого запоминаются идентификатор, email, ФИО, должность, подразделение, руководитель и режим работы — это «текущее состояние», с которым сравниваются данные 1С.

Сопоставление

В режиме «Полная» пользователи сопоставляются сначала по externalId, затем оставшиеся — по email. В режимах «Только обновление» и «Только обновление оргструктуры» — только по email. В режиме «Полная» есть защита от конфликтов: если пользователь UnSpot найден по email, но его externalId уже сопоставлен с другим сотрудником 1С, он пропускается. В обновление попадают только те пользователи, у которых хотя бы одно синхронизируемое поле реально изменилось, поэтому повторные запуски без изменений в 1С почти не создают запросов. Исключение — поле «Отдел» при выключенном флажке «Оргструктура»: UnSpot возвращает его с завершающим /, и такие пользователи могут обновляться при каждом запуске.

Создание (режим «Полная»)

Для сотрудников 1С, не найденных в UnSpot, выполняется POST /Users. Новый пользователь получает роль «Сотрудник»; если в подключении SCIM включён тумблер «Отправлять приветственные письма», ему уходит приглашение. Если email принадлежит ранее удалённому (архивированному) пользователю, UnSpot восстанавливает его вместо создания дубля. Пример запроса:

POST /api/scim/Users
{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
              "urn:ietf:params:scim:schemas:extension:Unspot:2.0:User"],
  "externalId": "f81d4fae-7dec-11d0-a765-00a0c91e6bf6",
  "userName": "i.petrov@company.ru",
  "name": { "familyName": "Петров", "givenName": "Иван" },
  "active": true,
  "title": "Менеджер по продажам",
  "extensionUser": { "employeeId": "0000-00042",
                     "orgUnit": "Компания/Департамент продаж/Отдел продаж",
                     "attendance": 75 },
  "enterpriseUser": { "manager": { "value": "a.sidorov@company.ru" } }
}
HTTPS

Обновление

Изменившиеся пользователи обновляются запросом PATCH /Users/{id} (стандарт SCIM PatchOp). В запрос уходят все поля сотрудника из данных 1С, а не только изменившиеся: первой — замена email (userName), затем фамилия и имя, должность, табельный номер, подразделение, руководитель, режим работы; в режиме «Полная» дополнительно externalId и active=true. Пустое подразделение передаётся операцией Remove — привязка сотрудника к подразделению снимается. Пример запроса (часть операций опущена):

PATCH /api/scim/Users/6d1a...c204
{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
  "Operations": [
    { "op": "Replace", "path": "title", "value": "Руководитель отдела продаж" },
    { "op": "Replace",
      "path": "urn:ietf:params:scim:schemas:extension:Unspot:2.0:User:orgUnit",
      "value": "Компания/Департамент продаж" },
    { "op": "Replace",
      "path": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager",
      "value": "d.ivanov@company.ru" },
    { "op": "Replace",
      "path": "urn:ietf:params:scim:schemas:extension:Unspot:2.0:User:attendance",
      "value": 100 }
  ]
}
HTTPS

Отложенное назначение руководителей

Руководителем в UnSpot может стать только активный пользователь. Если руководитель сотрудника сам создаётся в этом же запуске, обработка сначала создаёт и обновляет всех пользователей, а затем вторым проходом назначает руководителей тем, у кого назначение было отложено.

Удаление (режим «Полная»)

Пользователи UnSpot с заполненным externalId, не сопоставленные ни с одним сотрудником 1С, удаляются запросом DELETE /Users/{id}. Под это правило попадают:

  • все пользователи, которых создала 1С;
  • все, кого 1С в режиме «Полная» хотя бы раз нашла по email, — обработка записывает им externalId, в том числе созданным вручную или каталогом;
  • пользователи другого SCIM-источника (например, Entra ID) — у них тоже заполнен externalId.

Удаление в UnSpot — это архивация, а не безвозвратное стирание: пользователь исчезает из активных списков, все его брони отменяются, закреплённые столы, парковочные места и ячейки локеров освобождаются; если сотрудник вернётся, синхронизация восстановит учётную запись по email. Пользователя с календарём, привязанным к переговорной, UnSpot удалить не даст — сначала отвяжите календарь.

Пользователя каталожной синхронизации (AD, LDAP) UnSpot по такому запросу не архивирует, а деактивирует. Пользователи, у которых externalId не заполнен, — добавленные вручную или каталогом и ни разу не найденные 1С, — не удаляются.

Оргструктура

При включённом флажке «Оргструктура» в конце запуска обработка передаёт дерево подразделений одним запросом PUT /OrgUnits. Правила обновления дерева — в статье 1С: Синхронизация оргструктуры – как устроен обработчик.

Сводка запросов

Все запросы выполняются с заголовком Authorization: Bearer; запросы с телом — с Content-Type: application/scim+json.

ЗапросКогда выполняется
GET /UsersКаждый запуск — постраничное чтение всех пользователей компании
POST /UsersСоздание сотрудника (режим «Полная»)
PATCH /Users/{id}Обновление изменившихся полей и отложенное назначение руководителя
DELETE /Users/{id}Удаление пропавших из 1С сотрудников (режим «Полная»)
PUT /OrgUnitsПередача дерева подразделений (флажок «Оргструктура»)

Где хранятся токен и настройки

Все настройки обработки — адрес API, токен доступа, режим синхронизации, состояния флажков и ваш скрипт выбора данных — хранятся внутри информационной базы 1С. Ни файлов на диске, ни ключей в реестре обработка не создаёт.

  • Место хранения. Элемент справочника «Файлы» с наименованием UnSpotSettings в папке «Шаблоны», тип хранения — «В информационной базе». Это штатный механизм БСП.
  • Форма хранения. Значение записывается как хранилище значения со сжатием. Сжатие — это не шифрование: токен лежит в информационной базе в открытом виде. Любой пользователь 1С, которому доступен этот элемент справочника «Файлы», может получить токен, а вместе с ним — доступ к SCIM API вашего рабочего пространства.
  • Что с этим делать. Ограничьте доступ к справочнику «Файлы» и папке «Шаблоны» ролями 1С, а резервные копии информационной базы храните как носитель секрета. При компрометации пересоздайте подключение SCIM 2.0 в UnSpot: старый токен перестанет действовать сразу.
  • Поле ввода. «Токен доступа» в форме настроек — обычное текстовое поле, без режима пароля: значение видно на экране целиком.
  • Журнал. Токен в журнал регистрации не записывается — туда попадает только адрес API.

От чьего имени выполняется обработка. Отдельной служебной учётной записи у интеграции нет: код исполняется в сеансе 1С — при ручном запуске от имени пользователя, нажавшего кнопку, при запуске по расписанию — в сеансе регламентного задания на сервере 1С:Предприятия. Исходящее соединение к UnSpot устанавливается оттуда же.

Безопасный режим выключен. Обработка регистрируется в БСП с выключенным безопасным режимом, потому что исполняет скрипт выбора данных методом Выполнить. Содержимое поля «Код выбора данных для синхронизации» выполняется с полными правами того сеанса, в котором запущена синхронизация. Тот, кто может редактировать этот код, фактически может выполнить в вашей информационной базе любой код 1С, поэтому доступ к форме настроек должен быть только у администратора.

Что попадает в журнал регистрации и что кэшируется

Единственное, что обработка сохраняет за пределами оперативной памяти, — записи журнала регистрации 1С и элемент настроек UnSpotSettings. Имя события в журнале имеет вид UnSpot#ггммдд.

Что записываетсяСостав записи
Чтение пользователей UnSpotАдрес API и количество прочитанных записей. Сами карточки в журнал не пишутся
Итог сопоставленияСколько записей отобрано на создание, обновление и удаление и сколько подразделений выбрано
Создание и обновление пользователяПолное тело отправленного запроса в формате JSON: email, фамилия и имя, должность, табельный номер, путь подразделения, email руководителя, режим работы. Отдельной записью — код ответа и тело ответа UnSpot
Назначение руководителяТело запроса с email руководителя, код и тело ответа
Удаление пользователяИдентификатор пользователя в UnSpot, код и тело ответа
Передача оргструктурыКоличество переданных подразделений, код и тело ответа

Что учитывать. Журнал регистрации становится вторым местом, где хранятся персональные данные, уходящие в UnSpot: тела запросов пишутся в него целиком. Срок хранения журнала и доступ к нему настраиваются штатными средствами 1С — учтите это при определении сроков хранения персональных данных. Токен доступа в журнал не попадает.

Кэша у обработки нет. Список пользователей UnSpot, выборка из 1С и промежуточные соответствия существуют только в памяти на время одного запуска и после его завершения не сохраняются. Единственная запись обработки в базу — элемент UnSpotSettings: чтобы стереть сохранённый токен, удалите этот элемент справочника «Файлы».

Требования к правам в 1С и к сети

Обработке нужны права на чтение кадровых данных и на запись одного служебного элемента. Права на изменение кадровых данных, документов и расчётов ей не требуются.

Что нужноЗачем
Подключение обработокПраво администратора на добавление дополнительных отчётов и обработок: обработка регистрируется с выключенным безопасным режимом
Кадровые данныеЧтение сотрудников организаций: сотрудник, физлицо, подразделение, должность, количество ставок, вид занятости, фамилия, имя, email, табельный номер, дата приёма
Справочники оргструктурыЧтение справочников «Организации», «Подразделения организаций», «Структура предприятия» — построение дерева подразделений и поиск руководителей
Контактная информацияЧтение контактной информации физических лиц — email руководителей
Регистры графиковЧтение графиков работы сотрудников, данных индивидуальных графиков и регистра «Дистанционная работа сотрудников» — расчёт режима работы
Справочник «Файлы»Чтение и запись элемента UnSpotSettings — хранение настроек и токена
Исходящее соединениеРазрешение на исходящее соединение по HTTPS (TCP 443) к домену вашего рабочего пространства UnSpot. Соединение устанавливает сервер 1С:Предприятия. Входящие правила не нужны

Принцип минимальных привилегий. Заведите для регулярного запуска отдельного пользователя 1С с правами только на перечисленные объекты. Безопасный режим у обработки выключен, и единственным ограничителем служат права роли 1С, под которой она работает, — поэтому давать ей роль полного администратора для регулярных запусков не следует.

Совместная работа с синхронизацией из каталога

Синхронизацию из 1С можно использовать одновременно с синхронизацией пользователей из корпоративного каталога — AD LDAP, OpenLDAP, Entra ID или Google Workspace. Типовой сценарий: каталог отвечает за сами учётные записи (кто имеет доступ), а 1С дополняет их кадровыми данными, которых в каталоге нет, — табельными номерами, должностями, оргструктурой, руководителями и режимом работы.

UnSpot различает источники так: пользователи, созданные каталожной синхронизацией, помечаются как «синхронизируемые» — их основные поля и email нельзя редактировать вручную, ими управляет каталог. Пользователи, созданные из 1С по SCIM, определяются по заполненному externalId: в карточке такого пользователя UnSpot тоже блокирует основные поля (имя, фамилию, должность, email, табельный номер) с подсказкой о синхронизации по SCIM — ими управляет 1С. SCIM-подключение для 1С работает параллельно с каталожной синхронизацией.

  • Каталог создаёт учётные записи, 1С дополняет. Рекомендуемая схема. В обработке включите режим «Только обновление»: 1С найдёт пользователей по email и дополнит их кадровыми данными, никого не создавая и не архивируя. Email в 1С и в каталоге должны совпадать.
  • Один сотрудник есть и в каталоге, и в 1С. Оба источника обновляют одну учётную запись (сопоставление по email). Общие поля — имя, фамилия, должность, отдел, руководитель — перезаписываются тем источником, который синхронизировался последним. Чтобы данные не «мигали», настройте пересекающиеся поля только в одном источнике. Поля, которых нет в каталожной синхронизации (табельный номер, режим работы), остаются за 1С
  • Режим «Полная» при подключённом каталоге. Не рекомендуется. 1С создаст в UnSpot сотрудников, которых нет в каталоге, а пользователей каталога, найденных по email, пометит своим externalId: когда такой сотрудник пропадёт из выборки 1С, UnSpot его деактивирует. Обновляя карточку, 1С к тому же активирует пользователя, которого деактивировали вручную или каталогом. Уволенных сотрудников нужно убирать из обеих систем.
  • Удаление и блокировка. Каталожная синхронизация архивирует пользователей, пропавших из каталога или заблокированных в нём, — включая созданных 1С, если их email попал в выборку каталога. Запрос PATCH архивированного пользователя не находит и не восстанавливает; в режиме «Полная» архивированный пользователь восстанавливается, когда 1С создаёт его заново запросом POST по тому же email, а пользователь каталога — при следующем появлении в каталоге
  • Подразделения. Дерево подразделений в UnSpot общее, и каждый источник при запуске удаляет синхронизированные подразделения, которых нет в его выгрузке, — не включайте оргструктуру одновременно в 1С и в каталоге. Учтите, что и без флажка «Оргструктура» 1С передаёт название подразделения сотрудника: UnSpot создаёт по нему плоское подразделение и переносит туда сотрудника из дерева каталога. Если подразделения ведёт каталог, используйте собственный скрипт, который не добавляет в структуру сотрудника ключи orgUnit и department (пустое значение тоже не годится: оно очищает подразделение), — см. 1С: Собственный скрипт – настройка интеграции.
  • 1С вместе с Entra ID (SCIM-провижинг). Не совмещайте два SCIM-источника в режиме «Полная»: оба записывают externalId в одно поле и перетирают его друг у друга, а пользователи Entra ID, которых нет в выборке 1С, будут архивироваться. Если Entra ID уже создаёт пользователей по SCIM, используйте для 1С режим «Только обновление» или «Только обновление оргструктуры».

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

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

Loading

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

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

Loading