Синхронизация пользователей из 1С (UnSpot SCIM Adapter)
UnSpot умеет получать сотрудников напрямую из 1С: внешняя обработка «UnSpot SCIM Adapter» выгружает из ЗУП (или другой конфигурации на базе БСП) пользователей, оргструктуру, руководителей и режим работы сотрудников и передаёт их в UnSpot по стандарту SCIM 2.0. В этой статье описано, как устроена синхронизация, что означает каждая настройка обработки, как работает скрипт выборки данных из 1С и код синхронизации, а также как 1С-синхронизация совместно работает с синхронизацией из Active Directory.
Содержание
Синхронизация пользователей (режим)
Код выбора данных для синхронизации
Кнопки «Сохранить», «Сохранить и проверить», «Сохранить и запустить»
Как работает скрипт выборки данных из 1С
Как работает синхронизация выбранных данных с UnSpot
Как работает синхронизация
Синхронизация выполняется внешней обработкой 1С «UnSpot SCIM Adapter» (файл 1s-to-scim-adapter-bsp.epf). Обработка устанавливается в вашу информационную базу 1С и работает по расписанию или по кнопке. У неё две составляющие:
1. Скрипт выборки данных — код на встроенном языке 1С, который выбирает данные из вашей информационной базы: сотрудников, подразделения, руководителей, графики работы. Для типовой ЗУП 3.1 скрипт уже встроен в обработку; для нестандартных конфигураций его можно написать самостоятельно прямо в форме настроек (поле «Код выбора данных для синхронизации»).
2. Код синхронизации — часть обработки, которая передаёт выбранные данные в UnSpot по SCIM API: читает текущих пользователей UnSpot, сопоставляет их с данными 1С, создаёт, обновляет и удаляет пользователей, обновляет оргструктуру.
Каждый запуск синхронизации проходит по одному и тому же конвейеру: обработка читает настройки → получает по SCIM список всех пользователей UnSpot → выполняет скрипт выборки данных из 1С → сопоставляет два списка и определяет, кого нужно создать, обновить или удалить → отправляет изменения в UnSpot → при включённой оргструктуре передаёт полное дерево подразделений. Все шаги протоколируются в журнале регистрации 1С.
Требования
Для работы синхронизации понадобится: платформа 1С 8.3 (работа проверена на версии 8.3.27); конфигурация с Библиотекой стандартных подсистем (БСП) — встроенная выборка данных реализована для «Зарплата и управление персоналом» 3.1 (ПРОФ и КОРП), для других конфигураций используется режим «Нестандартная конфигурация» с собственным кодом выборки; файл внешней обработки 1s-to-scim-adapter-bsp.epf — его предоставляет команда UnSpot; права администратора в 1С (обработка подключается без безопасного режима, так как исполняет код выборки данных); подключение SCIM 2.0 в UnSpot — URL и токен доступа (см. следующий раздел). Синхронизируются только сотрудники, у которых в 1С заполнен email: адрес электронной почты — это ключ, по которому UnSpot сопоставляет учётные записи.
Подключение на стороне UnSpot
Токен и адрес для обработки создаются в админ-консоли UnSpot. Понадобится роль Владельца или Администратора интеграций.
Откройте Настройка → Интеграции → Синхронизации и на карточке SCIM 2.0 нажмите «Подключить». UnSpot покажет: URL вида https://ваш-домен.unspot.ru/api/scim — это значение поля «UnSpot API URL» в обработке; секретный токен (строка из 64 символов) — значение поля «Токен доступа». Токен показывается один раз в момент создания — сохраните его сразу. Токен один на компанию: если пересоздать подключение, старый токен перестанет действовать, и его нужно будет заменить в настройках обработки.
В настройках подключения SCIM также доступны: срок работы токена — «Без ограничения» или ограниченный срок (по истечении запросы обработки начнут завершаться ошибкой «Token is expired», а на адреса исходящей подписки с событием «Системные ошибки» в день истечения придёт письмо-предупреждение); тумблер «Отправлять приветственные письма» — если он включён, каждый сотрудник, созданный синхронизацией, получит письмо с приглашением и паролем; по умолчанию тумблер выключен, и пользователей можно пригласить позже вручную.

Установка обработки в 1С
Обработка подключается стандартным механизмом БСП «Дополнительные отчеты и обработки»: запустите 1С:Предприятие (не Конфигуратор) → Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки (если ссылка недоступна, включите одноимённый флажок на этой же странице) → «Добавить из файла…» → выберите файл 1s-to-scim-adapter-bsp.epf. После подключения в списке появится обработка UnSpot SCIM Adapter с двумя командами: UnSpot SCIM Adapter Settings — форма настроек синхронизации; UnSpot SCIM Adapter Sync — серверная команда запуска синхронизации, на которую назначается регламентное задание.



Настройки обработки
Форма «Настройки синхронизации сотрудников в UnSpot» (команда UnSpot SCIM Adapter Settings) содержит следующие поля. Настройки сохраняются внутри информационной базы, поэтому вводятся один раз.

UnSpot API URL
Адрес SCIM API вашей компании — значение URL с карточки SCIM 2.0 в UnSpot, например https://ваш-домен.unspot.ru/api/scim. Обработка сама разбирает адрес: для https используется защищённое соединение (порт 443), для http — порт 80. К этому адресу обработка добавляет пути ресурсов (/Users, /OrgUnits). Если адрес указан не полностью или без протокола, при проверке настроек появится ошибка «Неверный формат URL».
Токен доступа
Секретный токен с карточки SCIM 2.0. Обработка передаёт его в каждом запросе в заголовке Authorization: Bearer. Если токен пустой, неверный или истёк, синхронизация останавливается с ошибкой авторизации (HTTP 401 или сообщение «Token is expired»); в этом случае пересоздайте подключение SCIM 2.0 в UnSpot и обновите токен в настройках обработки.
Конфигурация 1С
Определяет, какой скрипт выборки данных использовать. Два состояния:
«ЗУП 3.1 (ПРОФ/КОРП)» — используется встроенный скрипт выборки для типовой конфигурации «Зарплата и управление персоналом». Поле «Код выбора данных» при этом показывает текст встроенного скрипта только для чтения — его можно изучить, но не изменить. Встроенный скрипт обновляется вместе с обработкой при установке новой версии .epf.
«Нестандартная конфигурация» — используется ваш собственный код выборки: поле «Код выбора данных» становится редактируемым, и написанный вами скрипт сохраняется в настройках в информационной базе. Этот режим предназначен для любых конфигураций, отличных от типовой ЗУП 3.1 (например, отраслевых решений или Бухгалтерии предприятия): за основу можно взять встроенный ЗУП-скрипт и адаптировать имена справочников и регистров под вашу конфигурацию.
Синхронизация пользователей (режим)
Главная настройка, которая определяет, какие операции обработка вправе выполнять с учётными записями в UnSpot. Три режима:
| Режим | Что делает | Когда использовать |
|---|---|---|
| Полная | Создание, обновление и удаление. 1С — главный источник учётных записей: новые сотрудники создаются в UnSpot, изменившиеся обновляются, а пользователи, ранее созданные синхронизацией и пропавшие из выборки 1С (например, уволенные), удаляются из UnSpot. Сопоставление ведётся по внутреннему идентификатору физлица (externalId), а для новых — по email. При каждом обновлении пользователь активируется (active=true). | 1С — единственный или основной источник данных о сотрудниках. |
| Только обновление | Обновляются только уже существующие в UnSpot пользователи, найденные по email. Никто не создаётся, не удаляется и не активируется; идентификатор externalId не записывается. Обработка дополняет карточки данными из 1С: ФИО, должность, табельный номер, подразделение, руководитель, режим работы. | Учётные записи создаёт другой источник (Active Directory, Entra ID, Google Workspace, ручное добавление), а 1С обогащает их кадровыми данными. Рекомендуемый режим при совместной работе с AD. |
| Только обновление оргструктуры | Передаётся дерево подразделений (оргструктура) и обновляется привязка существующих пользователей к подразделениям. Другие поля пользователей не изменяются. Флажок «Оргструктура» в этом режиме включается принудительно, а «Режим работы» — отключается. | Нужна только оргструктура из 1С, все остальные данные ведёт другой источник. |
Важно про режим «Полная»: обработка удаляет только тех пользователей UnSpot, у которых заполнен externalId — то есть тех, кого она сама (или другой SCIM-источник) когда-то создала. Пользователи, добавленные вручную или каталожной синхронизацией (AD/LDAP), при полной синхронизации из 1С не удаляются.
Оргструктура
Флажок «Оргструктура» (подсказка в форме: «список подразделений и подразделения пользователей») управляет синхронизацией дерева отделов. Когда он включён: каждому сотруднику передаётся полный путь его подразделения через косую черту, например «Компания/Департамент продаж/Отдел по работе с партнёрами» — по этому пути UnSpot автоматически создаёт недостающие подразделения и привязывает к ним сотрудника; кроме того, после обновления пользователей обработка передаёт в UnSpot полное дерево подразделений одним запросом (включая пустые подразделения и их руководителей). Когда флажок выключен, сотруднику передаётся только название его подразделения как текстовое поле «Отдел» (department) без построения дерева.
В типовой ЗУП в дерево попадают справочники «Организации» и «Подразделения организаций»; расформированные подразделения исключаются. Если в базе несколько головных организаций (холдинг), название организации включается в начало пути каждого подразделения, чтобы одноимённые отделы разных юрлиц не конфликтовали; если головная организация одна, её название в пути не участвует. Синхронизация оргструктуры — односторонняя: 1С является источником истины, и подразделения, созданные предыдущими синхронизациями, но пропавшие из выборки 1С, будут удалены из UnSpot (сотрудники при этом не удаляются — у них просто очищается привязка к подразделению). Подразделения, созданные в UnSpot вручную, синхронизация не трогает.
Состояния флажка: в режиме «Только обновление оргструктуры» он включён принудительно и недоступен для изменения; в остальных режимах включается по желанию.
Менеджер
Флажок «Менеджер» включает передачу руководителя каждого сотрудника. Для типовой ЗУП руководитель определяется автоматически: у сотрудника это руководитель его подразделения (из регистра руководителей подразделений; заполнение руководителей подразделений доступно в ЗУП КОРП), у подразделений верхнего уровня — руководитель организации из настроек ответственных лиц. В UnSpot поле «Руководитель» влияет на согласования, отчёты «по подчинённым» и права руководителя.
Особенности: сотрудник не может быть руководителем самого себя — в этом случае руководитель не передаётся; руководителем в UnSpot может быть назначен только активный пользователь, поэтому если руководитель появляется в UnSpot в этом же запуске синхронизации, обработка назначит его руководителем подчинённых отложенно, после создания. Если email руководителя в 1С не заполнен, руководитель не синхронизируется.
Режим работы
Флажок «Режим работы» включает расчёт и передачу показателя attendance — доли офисных дней сотрудника, от 0 (полностью удалённая работа) до 100 (полностью офисная). Для типовой ЗУП показатель считается «на основании графика работы за текущий месяц»: обработка берёт график работы сотрудника за текущий календарный месяц (индивидуальный график, если он есть, полностью замещает общий), учитывает дни с видом времени «Явка» (код Я) как офисные и «Дистанционная работа» (код Д) как удалённые, дополнительно учитывает признак дистанционной работы из кадровых документов (регистр «Дистанционная работа сотрудников»), и делит число офисных дней на общее число рабочих дней месяца.
Пример: в июле у сотрудника по графику 20 рабочих дней, из них 15 отмечены «Явка» и 5 — «Дистанционная работа». Attendance = 15 / 20 × 100 = 75, в UnSpot сотрудник получит гибридный режим работы. Дни отпуска, больничного, командировок и других видов времени в расчёте не участвуют — они не считаются ни офисными, ни удалёнными. Если данных о графике за месяц нет, режим работы передаётся неопределённым.
В UnSpot значение attendance отображается в карточке сотрудника как режим работы (0 — «удалённый», 1–99 — «гибридный», 100 — «офисный», не задано — «свободный») и учитывается в аналитике гибридного офиса и отчётах. Состояния флажка: недоступен в режиме «Только обновление оргструктуры»; в остальных режимах включается по желанию.
Код выбора данных для синхронизации
Многострочное поле со скриптом выборки данных — второй составляющей обработки (см. раздел «Как работает скрипт выборки данных из 1С»). Состояния поля: при выборе «ЗУП 3.1 (ПРОФ/КОРП)» — только чтение, показывается встроенный скрипт с комментариями; при выборе «Нестандартная конфигурация» — редактируемое, и если своего кода ещё нет, поле заполняется шаблоном-инструкцией с перечнем обязательных и необязательных полей. Ваш код сохраняется вместе с остальными настройками в информационной базе.
Кнопки «Сохранить», «Сохранить и проверить», «Сохранить и запустить»
Сохранить — проверяет заполненность обязательных полей (URL, токен, выбор данных, режим синхронизации) и сохраняет настройки. Сохранить и проверить — дополнительно выполняет пробную выборку и пробное обращение к UnSpot без изменения данных; при успехе выводятся сообщения: «Настройки сохранены», «Проверка настроек..», «Выбрано пользователей 1С: N», при включённой оргструктуре «Выбрано подразделений 1С: N», «Проверен выбор пользователей UnSpot», «Проверка завершена». Если числа отличаются от ожидаемых (например, ноль пользователей), проверьте, заполнены ли email сотрудников. Сохранить и запустить — сохраняет настройки и сразу выполняет полную синхронизацию; ход выполнения записывается в журнал регистрации.
Регулярный запуск и журнал
Для регулярной синхронизации назначьте регламентное задание: откройте Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, дважды щёлкните по обработке UnSpot SCIM Adapter и в строке команды UnSpot SCIM Adapter Sync отметьте флажок в колонке с часами — откроется окно «Расписание», в котором задаётся периодичность запуска (например, ежедневно, один раз в день). Здесь же синхронизацию можно запустить вручную: выделите команду и нажмите «Выполнить». Рекомендуемая частота — не чаще одного раза в час: обновление оргструктуры на стороне UnSpot ограничено сервером примерно одним запросом в час, и более частые запуски с включённой оргструктурой будут завершаться ошибкой «Организационные подразделения не могут быть обновлены. Пожалуйста, попробуйте позже».

Все шаги синхронизации записываются в журнал регистрации: Администрирование → Обслуживание → Журнал регистрации, события с именем вида «UnSpot#ггммдд». По каждому пользователю фиксируются отправленные данные и код ответа сервера — это основной инструмент диагностики.

Как работает скрипт выборки данных из 1С
Скрипт выборки — это код на встроенном языке 1С, который обработка исполняет в начале каждой синхронизации. Его задача — сформировать массив структур СотрудникиДляUnspot (и, при включённой оргструктуре, массив ОргструктураДляUnspot). Всё, что скрипт положит в эти массивы, код синхронизации передаст в UnSpot. Скрипту доступны настройки формы в виде переменных (СинхронизироватьОргструктуру, СинхронизироватьМенеджера, СинхронизироватьРежимРаботы, СинхронизацияПользователей), поэтому один и тот же скрипт корректно работает во всех режимах.
Встроенный скрипт для ЗУП 3.1 выполняет следующие шаги:
1. Выборка действующих сотрудников. Используется стандартный метод ЗУП КадровыйУчет.СотрудникиОрганизации с параметрами на текущую дату — он возвращает только не уволенных сотрудников. Запрашиваются кадровые данные: сотрудник, физлицо, подразделение, должность, количество ставок, вид занятости, фамилия, имя, email, табельный номер, дата приёма. Дополнительно накладывается отбор «email заполнен»: сотрудники без электронной почты в синхронизацию не попадают.
2. Дедупликация совместителей. Если одно физлицо занимает несколько позиций (основное место плюс совместительство), в UnSpot нужно передать одну учётную запись. Скрипт выбирает «лучшую» позицию по приоритету вида занятости (основное место работы → внутреннее совместительство → совместительство → подработка), а при равном приоритете — позицию с большей ставкой.
3. Формирование структуры сотрудника. Для каждого физлица собирается структура с полями для UnSpot: уникальный идентификатор физлица (externalId — используется как надёжный ключ сопоставления при полной синхронизации), email в нижнем регистре (userName), фамилия и имя, наименование должности (title), табельный номер (employeeId), подразделение — полным путём (orgUnit) или названием (department), в зависимости от флажка «Оргструктура».
4. Руководители. При включённом флажке «Менеджер» скрипт собирает руководителей: для организаций — из настроек ответственных лиц (функция ПодписиДокументов.ОтветственныеЛицаОрганизации), для подразделений — из данных руководителей подразделений (РуководителиПодразделений.ДанныеРуководителей по структуре предприятия; заполняется в ЗУП КОРП). Email руководителя определяется по контактной информации физлица. Каждому сотруднику в поле manager записывается email руководителя его подразделения.
5. Режим работы. При включённом флажке «Режим работы» вызывается встроенная функция ЗаполнитьРежимРаботыСогласноГрафикуРаботы, которая по регистрам графиков (ГрафикРаботыСотрудников, ГрафикиРаботыПоВидамВремени, ДанныеИндивидуальныхГрафиковСотрудников) и регистру «Дистанционная работа сотрудников» вычисляет attendance каждого сотрудника за текущий месяц, как описано в разделе «Режим работы».
6. Оргструктура. При включённом флажке «Оргструктура» скрипт обходит справочники «Организации» и «Подразделения организаций», строит для каждого элемента полный путь (функции ПолучитьИерархиюПодразделенийВСтроке и ПолучитьИерархиюОрганизацийВСтроке), исключает расформированные подразделения и добавляет руководителя и описание. Результат кладётся в массив ОргструктураДляUnspot.
Для нестандартной конфигурации вы пишете аналогичный код сами. Контракт простой: заполнить массив СотрудникиДляUnspot структурами со следующими полями (и ОргструктураДляUnspot — структурами с полями path, manager, description, если оргструктура включена):
| Поле | Обязательность | Что это в UnSpot |
|---|---|---|
| userName | обязательно | Email сотрудника — ключ сопоставления учётных записей |
| externalId | для режима «Полная» | Уникальный идентификатор физлица (до 36 символов) — ключ сопоставления, не зависящий от смены email |
| familyName, givenName | для режима «Полная» | Фамилия и имя |
| title | нет | Должность |
| employeeId | нет | Табельный номер |
| department | нет | Название отдела (текст, без дерева подразделений) |
| orgUnit | нет | Полный путь подразделения через «/», от корневого к дочернему |
| manager | нет | Email руководителя (должен быть активным пользователем UnSpot) |
| attendance | нет | Режим работы: целое от 0 (удалённый) до 100 (офисный) или Неопределено |
Пример формирования одной записи на встроенном языке 1С:
// каждый элемент массива СотрудникиДляUnspot — это Структура
Сотрудник = Новый Структура;
Сотрудник.Вставить("userName", "i.petrov@company.ru");
Сотрудник.Вставить("externalId", "f81d4fae-7dec-11d0-a765-00a0c91e6bf6");
Сотрудник.Вставить("familyName", "Петров");
Сотрудник.Вставить("givenName", "Иван");
Сотрудник.Вставить("title", "Менеджер по продажам");
Сотрудник.Вставить("employeeId", "0000-00042");
Сотрудник.Вставить("orgUnit", "Компания/Департамент продаж/Отдел продаж");
Сотрудник.Вставить("manager", "a.sidorov@company.ru");
Сотрудник.Вставить("attendance", 75);
СотрудникиДляUnspot.Добавить(Сотрудник);1СВ коде выборки доступны вспомогательные функции обработки: ПолучитьКонтактФизическогоЛица (email физлица), ПолучитьИерархиюПодразделенийВСтроке и ПолучитьИерархиюОрганизацийВСтроке (построение пути), ПолучитьКоличествоЭлементовСправочника, а также ЗаполнитьРежимРаботыСогласноГрафикуРаботы для расчёта attendance по графикам (требует, чтобы в структуре сотрудника было служебное поле entity со ссылкой на элемент справочника «Сотрудники»).
Как работает синхронизация выбранных данных с UnSpot
После того как скрипт выборки сформировал данные, код синхронизации сопоставляет их с UnSpot и применяет изменения по SCIM API (подробное описание API — в справочнике SCIM API UnSpot).
Чтение. Обработка постранично загружает всех пользователей компании (GET /Users, по 20 записей за запрос), включая деактивированных. Для каждого запоминаются идентификатор, email, ФИО, должность, подразделение, руководитель и режим работы — это «текущее состояние», с которым сравниваются данные 1С.
Сопоставление. В режиме «Полная» пользователи сопоставляются сначала по externalId (идентификатор физлица, устойчивый к смене email), затем оставшиеся — по email. В режимах «Только обновление» и «Только обновление оргструктуры» — только по email. В обновление попадают лишь те пользователи, у которых хотя бы одно синхронизируемое поле реально изменилось, поэтому повторные запуски без изменений в 1С не создают лишних запросов.
Создание (только режим «Полная»). Для сотрудников 1С, не найденных в UnSpot, выполняется POST /Users. Новый пользователь получает роль «Сотрудник»; если в UnSpot включён тумблер приветственных писем, ему уходит приглашение. Если 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" } }
}HTTPОбновление. Изменившиеся пользователи обновляются точечными операциями PATCH /Users/{id} (стандарт SCIM PatchOp): заменяются email, фамилия и имя, должность, табельный номер, подразделение, руководитель, режим работы; в режиме «Полная» дополнительно проставляются 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 }
]
}HTTPОтложенное назначение руководителей. Руководителем в UnSpot может стать только активный пользователь. Если руководитель сотрудника сам создаётся в этом же запуске, обработка сначала создаёт всех пользователей, а затем вторым проходом назначает руководителей тем, у кого назначение было отложено.
Удаление (только режим «Полная»). Пользователи UnSpot с заполненным externalId, не сопоставленные ни с одним сотрудником 1С, удаляются запросом DELETE /Users/{id}. Удаление в UnSpot — это архивация, а не безвозвратное стирание: пользователь исчезает из активных списков, все его брони отменяются, закреплённые столы, парковочные места и ячейки локеров освобождаются; если сотрудник вернётся, синхронизация восстановит учётную запись по email. Пользователь, деактивированный через active=false, отличается от удалённого: он сохраняет externalId и восстанавливается простой активацией. Особый случай: пользователя с календарём, привязанным к переговорной, UnSpot удалить не даст — сначала отвяжите календарь.
Оргструктура. При включённом флажке «Оргструктура» обработка передаёт полное дерево подразделений одним запросом PUT /OrgUnits. Это полная замена синхронизируемой части дерева: недостающие подразделения создаются, изменившиеся руководители и описания обновляются, а синхронизированные ранее подразделения, отсутствующие в новой выгрузке, удаляются вместе с вложенными. Руководитель подразделения указывается email’ом и назначается, только если такой пользователь существует и активен в UnSpot. Пример запроса:
PUT /api/scim/OrgUnits
{
"items": [
{ "path": "Компания", "manager": "ceo@company.ru", "description": "ООО Компания" },
{ "path": "Компания/Департамент продаж", "manager": "d.ivanov@company.ru", "description": null },
{ "path": "Компания/Департамент продаж/Отдел продаж", "manager": "a.sidorov@company.ru", "description": null }
]
}HTTPСводка запросов, которые выполняет обработка (все — с заголовком Authorization: Bearer и Content-Type: application/scim+json):
| Запрос | Когда выполняется |
|---|---|
| GET /Users | Каждый запуск — постраничное чтение всех пользователей компании |
| POST /Users | Создание сотрудника (режим «Полная») |
| PATCH /Users/{id} | Обновление изменившихся полей и отложенное назначение руководителя |
| DELETE /Users/{id} | Удаление пропавших из 1С сотрудников (режим «Полная») |
| PUT /OrgUnits | Полная синхронизация дерева подразделений (флажок «Оргструктура») |
Совместная работа с синхронизацией из Active Directory
Синхронизацию из 1С можно использовать одновременно с синхронизацией пользователей из корпоративного каталога — AD LDAP, OpenLDAP, Entra ID (Azure AD) или Google Workspace. Типовой сценарий: каталог отвечает за сами учётные записи (кто имеет доступ), а 1С обогащает их кадровыми данными, которых в каталоге нет — табельными номерами, должностями, оргструктурой, руководителями и режимом работы.
Как UnSpot различает источники: пользователи, созданные каталожной синхронизацией, помечаются как «синхронизируемые» — их основные поля и email нельзя редактировать вручную в консоли, ими управляет каталог. Пользователи, созданные из 1С по SCIM, такой блокировки не имеют (их можно править вручную), а признаком их принадлежности к 1С служит заполненный externalId. Каталожная синхронизация может быть подключена только одна (AD LDAP, OpenLDAP, Entra ID или Google Workspace — на выбор), SCIM-подключение для 1С работает параллельно с любой из них.
Правила и ограничения совместной работы:
| Ситуация | Поведение и рекомендация |
|---|---|
| Каталог создаёт учётные записи, 1С дополняет | Рекомендуемая схема. В обработке 1С включите режим «Только обновление»: 1С найдёт пользователей по email и дополнит их должностями, табельными номерами, оргструктурой, руководителями и режимом работы, не создавая и не удаляя никого. Email в 1С и в каталоге должны совпадать. |
| Один сотрудник есть и в AD, и в 1С | Оба источника обновляют одну и ту же учётную запись (сопоставление по email). Общие поля (имя, фамилия, должность, отдел, руководитель) перезаписываются тем источником, который синхронизировался последним. Чтобы данные не «мигали», настройте пересекающиеся поля только в одном источнике: например, отключите синхронизацию должности и руководителя в настройках AD-синхронизации, если их ведёт 1С. Поля, которых в AD-синхронизации нет (табельный номер, режим работы), всегда остаются за 1С. |
| Режим «Полная» в 1С при подключённом каталоге | Допустимо, но осторожно: 1С не удалит пользователей каталога (удаляются только учётные записи с externalId, а каталожная синхронизация его не заполняет), однако будет создавать в UnSpot сотрудников, которых нет в каталоге, и повторно активировать деактивированных вручную пользователей (полная синхронизация проставляет active=true при каждом обновлении). Уволенных сотрудников при такой схеме нужно убирать из обеих систем. |
| Удаление и блокировка | Каталожная синхронизация архивирует пользователей, пропавших из каталога или заблокированных в нём, — включая пользователей, созданных 1С, если их email попал в выборку каталога. Команда удаления из 1С для «каталожного» пользователя выполняет деактивацию, а не удаление. Восстановить архивированного пользователя SCIM-активацией нельзя — он восстанавливается при следующем появлении в своём источнике. |
| Оргструктура из двух источников | Не включайте синхронизацию оргструктуры одновременно в 1С и в каталожной синхронизации: дерево подразделений в UnSpot общее, и каждый источник при своём запуске удаляет синхронизированные подразделения, отсутствующие в его собственной выгрузке, — источники будут перетирать друг друга. Выберите один источник оргструктуры (обычно 1С, где она полнее). |
| 1С вместе с Entra ID (Azure AD) SCIM-провижинингом | Не рекомендуется совмещать два SCIM-источника в режиме «Полная»: оба записывают externalId в одно и то же поле (Entra ID — objectId, 1С — идентификатор физлица) и будут перетирать его друг у друга, а несопоставленные пользователи другого источника могут удаляться. Если Entra ID уже провижинит пользователей по SCIM, используйте для 1С режим «Только обновление» или «Только обновление оргструктуры». |
Ошибки и диагностика
Первый инструмент диагностики — журнал регистрации 1С (события «UnSpot#ггммдд»): в нём видны отправленные данные и коды ответов UnSpot по каждому пользователю. Типичные ситуации:
| Код / сообщение | Причина и что делать |
|---|---|
| 401 | Токен не передан или не совпадает. Проверьте поле «Токен доступа» и актуальность подключения SCIM 2.0 в UnSpot. |
| 400 Token is expired | Истёк срок работы токена. Пересоздайте подключение SCIM 2.0 и обновите токен в обработке. |
| 409 | Конфликт при создании: email или externalId уже занят другим пользователем. Обычно означает дубль сотрудника или пересечение с другим источником синхронизации. |
| 404 | Пользователь не найден (например, удалён вручную между чтением и записью). При следующем запуске состояние выровняется. |
| 400 при PUT /OrgUnits | Оргструктура обновляется чаще, чем раз в час, либо неверный формат пути. Уменьшите частоту регламентного задания. |
| «Выбрано пользователей 1С: 0» | У сотрудников не заполнены email, либо код выборки не подходит вашей конфигурации. |
| «Настройки не установлены» | Синхронизация запущена до первого сохранения настроек. Откройте форму настроек и сохраните их. |
Связанные статьи: справочник SCIM API UnSpot — описание всех SCIM-эндпоинтов и атрибутов; синхронизация пользователей с AD LDAP; синхронизация из on-premise AD через сервис LDAP-SCIM; синхронизация с Entra ID (Azure AD) через SCIM.