stafftrack 26.500.0 Ломающее

Stafftrack 26.400.0–26.500.0: офисы с геозонами и новые правила приёма чекинов

4 мин чтения Устаревших API: 4
Узнавайте о ломающих изменениях Битрикса раньше, чем они доедут до прода: свежие разборы — в канале @bxmax_updates

Ломающее обновление

Удалены или изменены публичные API — прикладной код может перестать работать.

В Stafftrack 26.400.0 и 26.500.0 появился справочник офисов с геозонами, фотографиями и сигналами присутствия сотрудников. Одновременно изменились правила приёма точек маршрута и исчезли два публичных сервисных класса. Интеграциям, которые отправляют накопленные чекины или вызывают эти сервисы, потребуется проверка до обновления.

Новое

Заведите офисы и назначьте сотрудников

В 26.500.0 офис получил адрес, координаты, рабочее время, фотографии и геозону. Радиус выбирается из четырёх значений: 30, 50, 100 или 300 метров. Управлять офисами могут администратор, пользователь с правом редактировать всю структуру, руководитель или заместитель подразделения.

Функция по умолчанию выключена. Для неё нужны включённый чекин, разрешённые в регионе геофункции и флаг Bitrix\StaffTrack\Public\Feature\OfficesFlag. Пример включения флага в своём административном коде:

        use Bitrix\Main\Config\Feature;
use Bitrix\Main\Loader;
use Bitrix\StaffTrack\Public\Feature\OfficesFlag;

if (Loader::includeModule('stafftrack')) {
    Feature::enable(OfficesFlag::class);
}

    

Поставляются компоненты bitrix:stafftrack.offices и bitrix:stafftrack.employee.office.card. В intranet 26.1900.0 к ним добавлены страница /stafftrack/offices/, карточка в профиле и плитка в виджете приглашений.

Для своего кода есть команды Public\Command\Office\Add, Update, Delete, AddEmployees, RemoveEmployees, провайдеры офисов и AJAX stafftrack.office.*. Контроллер обслуживает список, карточку, сотрудников и фотографии; изменяющие действия принимают только POST. Это AJAX API портала: REST-интеграция контроллеров выключена.

Команда Public\Command\Office\ConfirmPresence принимает сигнал «сотрудник в офисе». Она обновляет присутствие, саму геоточку не сохраняет. Отдельная опция feature_office_presence_signal_enabled по умолчанию равна Y.

Выбирайте сотрудников на карте с учётом прав

С 26.400.0 Public\Provider\CheckInProvider::getLatestUsersCheckInByDepartment() принимает дополнительный массив entities из селектора: пользователей, отделы и отделы без вложенных подразделений. Лимиты составляют 50 сущностей и 300 сотрудников. Ответ содержит только тех, кого зритель вправе видеть, и новый ключ subscribedUserIds.

Проверки можно использовать отдельно через DepartmentProvider::canReadCheckInsOf($reader, $author) и isAccessibleEmployee($viewer, $employee). Доступ заместителей включается опцией feature_check_in_deputy_access_enabled, по умолчанию N. Получатели пушей тоже проходят проверку доступа.

На маршруте с 26.400.0 пунктир обозначает разрыв по времени больше 120 секунд; внутри стоянки разрыв не рисуется. Поле маркера observedDuration показывает, какая часть стоянки подтверждена записями. В 26.500.0 начало и конец рабочего дня скрываются от пользователя без права видеть рабочее время сотрудника, признак завершённого дня остаётся.

Что сломается

Обработайте отклонённые точки и дубли

В 26.400.0 окно приёма в прошлое сократилось с 48 до 36 часов. Исключение — автоматическая точка с описанием LEAVE, которая закрывает открытый сегмент. В пакетном запросе точка более чем на час в будущем отклоняется; раньше её время заменялось текущим. В одиночном запросе при опережении сервера более чем на 300 секунд время по-прежнему исправляется.

Автоматические точки ограничены квотой 4000 в день на сотрудника. Клиент получает STAFFTRACK_CHECK_IN_DAILY_QUOTA_EXCEEDED. К новым кодам относятся также STAFFTRACK_CHECK_IN_TIME_OUT_OF_WINDOW и STAFFTRACK_CHECK_IN_INVALID_POINT. Ошибка записи батча возвращается общим кодом STAFFTRACK_CHECK_IN_SAVE_FAILED.

Пакетный приём отсеивает дубли по времени, типу, описанию и координатам. Проверяйте checkIns[].isDuplicate и список rejected, чтобы отличать уже принятую точку от отклонённой. Public\Services\PointAcceptanceService::accept() и acceptBatch() выполняют предварительный отбор без записи в БД.

Замените удалённые сервисы

В 26.400.0 удалены Public\Services\CheckInAggregator и CheckInBacklogService. Агрегатор перенесён во внутреннюю часть модуля. Для обработки накопленных точек вместо старого backlog-сервиса используйте публичный CheckInService::getInstance()->aggregateStaleCheckIns().

Наследникам Public\Command\CheckIn\AbstractCommand тоже нужна правка: защищённый fitDateCreateToWindow() удалён. Второй аргумент sendBatchPushToDepartment() теперь содержит дельты с ключом localDate; старый произвольный extraPayload без этого ключа в пуш не попадёт.

Адресный кеш в 26.400.0 сменил ключи. Старые адреса будут запрашиваться в геосервисе заново: пересчёта ключей в диффе нет. На портале без crypto.crypto_key очередь не сможет определять адреса и запишет no geohash pepper в журнал.

Deprecated

В 26.400.0 DepartmentProvider::isMySubordinate($targetUserId) помечен устаревшим. Рекомендованная замена — isAccessibleEmployee($viewer, $employee) с явно переданным зрителем.

БД

В 26.500.0 добавлены четыре таблицы: b_stafftrack_office для справочника офисов, b_stafftrack_office_photo для фотографий, b_stafftrack_office_employee для назначений и b_stafftrack_office_presence для присутствия. Индекс UNIQUE по USER_ID в назначениях ограничивает сотрудника одним офисом. В таблице присутствия первичный ключ тоже USER_ID, рядом лежат OFFICE_ID, IN_ZONE_DATE и LAST_POINT_DATE.

Если ваш отчёт читает очередь адресов напрямую, учтите изменение 26.400.0: у b_stafftrack_address_queue удалён GEOHASH_KEY, а DATE_CREATE заменён на POINT_DATE.

Устаревшие и удалённые API в этой версии

Символ Статус Чем заменять
Bitrix\StaffTrack\Public\Provider\DepartmentProvider::isMySubordinate() Deprecated Bitrix\StaffTrack\Public\Provider\DepartmentProvider::isAccessibleEmployee()
Bitrix\StaffTrack\Public\Services\CheckInAggregator Удалено —
Bitrix\StaffTrack\Public\Services\CheckInBacklogService Удалено Bitrix\StaffTrack\Public\Services\CheckInService::aggregateStaleCheckIns()
Bitrix\StaffTrack\Public\Command\CheckIn\AbstractCommand::fitDateCreateToWindow() Удалено —

Новая версия вышла — разбор уже в Telegram

В канале @bxmax_updates публикуем каждый свежий разбор: что сломается, что устарело и что появилось в API. Узнаете до того, как обновите прод.

Подписаться

Читайте дальше

tasks 26.800.0 Ломающее Свежее

Tasks 26.700.0–26.800.0: роботы с проверкой прав, чек-листы и новая длительность в REST

Tasks 26.700.0, 26.750.0 и 26.800.0 добавляют сортировку канбана, несколько чек-листов в действии создания задачи и робот «Добавить результат». Интеграциям потребуется проверить плановую длительность в REST, собственные действия БП и обработчики скрама. Роботы теперь проверяют права автора, а REST о…

5 мин
socialnetwork 26.400.0 Безопасность Свежее

Socialnetwork 26.300.0–26.400.0: массовая проверка прав на группы и защита ленты

Socialnetwork 26.300.0 и 26.400.0 закрывают доступ к чужим данным ленты и добавляют массовую проверку прав на группы. В проектах появились команды из оргструктуры и встраиваемый блок информации, а коллабы без extranet принимают только внутренних участников. Проверьте свои приглашения, ссылки на скра…

4 мин
sign 26.1000.0 Ломающее Свежее

Sign 26.1000.0: процессы КЭДО, цепочка роботов и лимит в 1000 подписантов

Sign 26.1000.0 добавляет запуск кадровых процессов и цепочку роботов «черновик → настройка → отправка», обе возможности по умолчанию выключены. Одновременно появился жёсткий лимит в 1000 уникальных подписантов. На портале с крупными отделами проверьте массовую отправку документов до обновления.

4 мин
market 26.300.0 Ломающее Свежее

Market 26.300.0: приложение с OPEN_API открывается по ответу установки, класс лимита переименован

Market 26.300.0 меняет поведение после установки приложений с `OPEN_API=Y`: наличие своей страницы теперь определяется по URL и названию пункта меню. Публичный PHP-класс лимита приложений переименован без алиаса. Обновление нужно проверить разработчикам тиражных приложений и тем, кто расширяет компо…

2 мин
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…

Можно закрыть чат и перейти на другую страницу. Когда ответ будет готов, на кнопке Домового появится отметка.

Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти