calendar 25.195.0: активность БП считает минуты встреч и перестала терять последний день

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

Точечный релиз вокруг одной активности бизнес-процессов — «Получить информацию из календаря». Она научилась отдавать списки заголовков и суммарные минуты встреч, а заодно у неё поправили границу выборки. Публичного PHP API релиз не меняет.

Новые возвратные поля активности

У CBPCalendarGetInform появились EVENTS_TITLES_LIST, EVENTS_TITLES_BB_LIST и MeetingsTotalMinutes. Первые два — список заголовков событий (обычным текстом и в BB-разметке), третье — то, ради чего всё затевалось.

Сценарий понятный: бизнес-процесс, который раз в неделю собирает по сотруднику «сколько времени ушло на встречи». Раньше активность отдавала события, и считать минуты приходилось в самом процессе — то есть либо через вычисляемое поле, либо вообще никак.

Что считается «реальной встречей»

Самое ценное в этом релизе — критерии, по которым MeetingsTotalMinutes отсекает лишнее. В коде они помечены комментарием как INVARIANT, то есть менять их не планируют:

  • события на весь день (all-day) не считаются;
  • ACCESSIBILITY из free и absent не считается — «свободен» и «отсутствую» это не встреча;
  • MEETING_STATUS из N и Q не считается — отклонённые и неотвеченные приглашения тоже мимо.

Иначе говоря, в минуты попадает только то, где человек подтвердил участие и это время помечено как занятое. Если вы строите свою отчётность по загрузке календаря — имеет смысл взять те же критерии, чтобы цифры сходились с цифрами Битрикса.

Сдвиг верхней границы выборки

В fetchEvents() верхняя граница интервала теперь считается как $toTs - \CCalendar::GetDayLen(), добавлены preciseLimits => true и userId смотрящего.

Это правка того класса ошибок, где выборка «с 1 по 7 число» захватывала или теряла крайний день из-за того, что конец интервала попадал на начало следующих суток. Флаг preciseLimits заставляет выбирать события строго по границам, а не по дням целиком. Если у вас есть процессы на этой активности с ожиданиями по количеству событий — их стоит перепроверить: результат мог измениться на один день.

Мелочь

CCalendar перестал создавать SocialNetwork\FeatureService объектом ради одного вызова: было (new FeatureService())->isNewProjectsOn(), стало FeatureService::isNewProjectsOn().

Что делать

  • Если использовали свою реализацию подсчёта времени встреч — сверьте критерии с INVARIANT выше.
  • Перепроверьте бизнес-процессы, опирающиеся на выборку CBPCalendarGetInform по интервалу.

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

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

Подписаться

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

calendar 26.300.0 Безопасность Свежее

Calendar 26.300.0: закрыты дыры в правах на календари и переговорки, дельта в REST

Calendar 26.300.0 закрывает три дыры в правах: перенос события в чужой календарь без права на добавление, подмену чужой брони переговорки через `LOCATION[’OLD’]` или `room_event_id` и добавление в участники проектов, где пользователь не состоит. Для интеграций в `calendar.event.get` появилось инкрем…

2 мин
calendar 26.200.0 Ломающее Свежее

Calendar 26.150.0–26.200.0: двойная бронь переговорки стала ошибкой, а форма бронирования больше не отдаёт чужую занятость

Календарь вышел двумя версиями, 26.150.0 и 26.200.0. В 26.150.0 закрыли утечку в анонимном экшене бронирования CRM-формы, через который любой посетитель мог узнать занятость и имена сотрудников и ресурсов портала. В 26.200.0 занятость переговорок проверяется по умолчанию в `CCalendar::SaveEvent`, RE…

1 мин
calendar 26.125.100 Безопасность

Calendar 26.125.100: карточка события без полного доступа больше не выдаёт хоста, участников и раздел

В Calendar 26.125.100 карточка события и планировщик перестали отдавать пользователю без полного доступа хоста, автора, участников, данные раздела, ссылки и пользовательские поля. Режет данные новый класс `Bitrix\Calendar\View\EventViewData`, а ответы экшенов `getViewEventSlider`, `getCalendarViewSl…

5 мин
calendar 26.100.0 Безопасность

Calendar 26.100.0: почтовые приглашения и calendar.section.update берут хоста, тип и владельца из базы

В Calendar 26.100.0 REST-метод `calendar.section.update` берёт тип и владельца секции из базы, а обработчик входящих iCal-приглашений ищет событие только среди встреч получателя и при обновлении встречи читает её хоста из базы. В участники встречи теперь можно звать команды из модуля `humanresources…

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

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

на связи

пишет…

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

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

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

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

Войти