Как наполнять и поддерживать в актуальном состоянии справочники сотрудников и оргструктуры: что для этого есть в самом продукте (REST API, поля моделей, ключи сопоставления) и какие готовые внешние скрипты можно использовать.
Инвентаризация ведет справочник сотрудников (пользователей) и оргструктуру. Заполнять их можно вручную, но в организации эти данные обычно уже есть в кадровой системе и/или Active Directory. Продукт рассчитан на то, что внешние скрипты будут:
Встроенного планировщика синхронизации в продукте нет - обмен выполняется внешними скриптами через REST API:
/web/api/users - CRUD и поиск по сотрудникам. Поиск возможен по id, ФИО (name), табельному номеру (employee_id/num), логину (login), организации (org_id), внешнему ключу (uid), признаку увольнения (uvolen);/web/api/org-struct - CRUD по подразделениям оргструктуры (древовидная структура; для сопоставления с кадровой системой у подразделений есть внешние ключи hr_id/parent_hr_id).Полное описание API доступно в Swagger UI приложения (/site/api-doc, доступ - с правами администратора).
Модель сотрудника содержит, в частности, поля для кадровых данных (табельный номер, тип трудоустройства, должность, подразделение, даты приема/увольнения, признак “уволен”, день рождения), контакты (внутренний, городской, мобильный телефоны, email) и учетные данные (логин AD, внешний ключ uid).
Отдельно про поле Руководитель (manager_id): это настоящая ссылка на запись сотрудника - целочисленный id записи в инвентаризации, а не кадровый идентификатор. Скрипт синхронизации, проставляющий руководителя, должен сначала найти запись руководителя (например, по своему ключу uid или табельному номеру через /web/api/users) и передать в manager_id полученный целочисленный id.
Обзор всех практически реализованных интеграций - на странице интеграции с внешними ИС.
С точки зрения кадров один человек может иметь несколько трудоустройств (несколько записей с разными табельными номерами, в т.ч. одновременно по разным типам трудоустройства), а с точки зрения большинства информационных систем есть один пользователь с одной должностью в одной организации. В инвентаризации каждое трудоустройство - отдельная запись сотрудника. Чтобы выбрать, какое из трудоустройств считать “основным” (например, выгружать в AD), логин прописывается только у одной из записей человека (логин уникален в пределах БД).
nosync) - запрет внешнему скрипту синхронизации с кадровой БД обновлять эту запись (проверка флага должна быть реализована во внешнем скрипте). Удобно для служебных/ручных записей, которых нет в кадровой системе.