tasks 26.900.0 Ломающее

Tasks 26.900.0: скрытие выполненных пунктов и удалённые API AI и Scrum

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

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

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

В Tasks 26.900.0 настройка скрытия выполненных пунктов применяется ко всем задачам пользователя, а для шаблонов хранится отдельно. В Scrum появилось перемещение перед выбранным элементом. Одновременно удалены AI REST для сохранения изображений и три публичных метода Scrum.

Новое

Скройте выполненные пункты во всех задачах

Когда пользователь скрывает выполненные пункты в одной карточке, переключатель обновляет все корневые чек-листы и другие загруженные задачи. У шаблонов своя общая настройка; изменение в задаче на неё не влияет. По умолчанию выполненные пункты видны.

Для своей формы есть Bitrix\Tasks\V2\Public\Command\CheckList\SetHideCompletedCommand с аргументами конструктора bool $hide, int $userId. Команда выполняется через run(). Команда для шаблонов находится в Bitrix\Tasks\V2\Public\Command\Template\CheckList и принимает те же аргументы.

Читать выбор можно через Bitrix\Tasks\V2\Public\Provider\CheckListViewOptionProvider: методы isTaskCompletedHidden(int $userId) и isTemplateCompletedHidden(int $userId) возвращают bool. Так собственная форма сможет показывать то же состояние, что и штатная карточка. AJAX-действия tasks.V2.CheckList.setHideCompleted и tasks.V2.Template.CheckList.setHideCompleted принимают hide, пользователя берут текущего.

Перемещайте Scrum-элемент перед выбранным

Меню элемента двигает его на одну позицию или перед другим элементом, который можно найти поиском. Enter и пробел открывают панель действий; после выбора интерфейс возвращает фокус, операции озвучиваются через ui.a11y.

В PHP появился Bitrix\Tasks\Scrum\Service\ItemService::moveItemsBeforeItem(array $itemsToMove, int $targetItemId, int $entityId, ?PushService $pushService = null): array. Он перемещает корневые элементы и возвращает новую сортировку по ID. Компонентное действие moveItemsBeforeItemAction() проверяет группу, Scrum-сущность, право сортировки и доступ к элементам; лимит составляет 500 элементов.

Селектор entityId: scrum-item принимает опции groupId, entityId, excludeIds. Его можно подключить к своей форме для поиска корневых элементов бэклога или спринта с учётом прав пользователя.

Формы старта и завершения спринта тоже работают с клавиатуры. Фокус остаётся внутри формы и после закрытия возвращается на кнопку, которой её открыли. Ошибку показывает диалог с ролью alertdialog, у полей названия и цели спринта появились подписи.

Завершайте задачу, не отмечая пункты

Если задачу со скрам-канбана переносят в финальную колонку, а в чек-листе остались невыполненные пункты, открывается диалог с выбором. Можно отметить оставшиеся пункты выполненными или завершить задачу как есть. Для варианта «как есть» нужны право сортировки в канбане и право на завершение задачи, для отметки пунктов — ещё право её редактировать.

Отключите подсчёт общего числа записей времени

В task.elapseditem.getlist можно передать params[count_total]=false, если интерфейсу не нужен общий счётчик. Тогда ответ придёт без total и next: CTaskElapsedItem::getList($order, $filter, $select, $params) возвращает [items, null] и не вызывает getCount(). REST передаёт значения строками, поэтому n, no, false и off тоже выключают подсчёт. По умолчанию он включён.

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

Уберите вызовы удалённого AI REST

Метод tasks.task.ai.image.save удалён вместе с контроллером Bitrix\Tasks\Rest\Controllers\Task\AI\Image. Он загружал изображение по URL в пользовательский Диск и возвращал fileId. Объявленной замены нет. Прямые PHP-вызовы также потеряют классы Bitrix\Tasks\Integration\AI\Model\Image, Bitrix\Tasks\Integration\AI\Restriction\Image и Bitrix\Tasks\Integration\AI\WhiteList.

Проверьте вызовы и наследников ItemService

Из Bitrix\Tasks\Scrum\Service\ItemService удалены публичные методы:

  • tryUpdateEntityIdToItems(int $entityId, array $itemIds): bool;
  • trySortItems(array $sortInfo, array &$updatedItems = []): bool;
  • canSortItemsInGroup(int $groupId, array $sortInfo, array $additionalItemIds = []): bool.

Прямые вызовы закончатся ошибкой отсутствующего метода. Замены для этих трёх методов не объявлены. У sortItems(array $sortInfo, ?PushService $pushService = null) возвращаемый тип изменён с void на array. Наследники, которые переопределяют его с : void, несовместимы с новым контрактом.

У наследников список длиннее. В ItemService удалены protected updateItemEntityIds() и updateItemSorts(), в Bitrix\Tasks\Scrum\Service\TaskService — protected static createDeferredKanbanService(), а KanbanService::updateTaskStageId() стал private. Переопределения и вызовы этих методов из своих классов перестанут работать.

Передавайте пункты чек-листа из указанной задачи

REST чек-листов проверяет чтение задачи или шаблона до привязки пункта к запросу. Пункт ищется одновременно по своему ID и ID родителя; массовое сохранение тоже проверяет принадлежность. Запрос с пунктом из другой задачи или шаблона либо с недоступным родителем завершится ошибкой доступа.

Модель берёт из запроса только ID, остальные данные загружает из хранилища. Переданный CREATED_BY больше не служит источником прав. В PHP-контрактах контроллеров $taskId, $templateId, $beforeItemId и $afterItemId получили тип int; это касается прямых PHP-вызовов и переопределений методов.

БД

Обновление создаёт таблицу b_tasks_interaction_log и агент ClearOldInteractionLog::execute() с интервалом 1200 секунд: на эталоне Б24 после обновления есть и то и другое. В таблицу попадают создание, изменение, открытие и комментирование задач, их связи и сообщения в чате задачи. По этим записям селектор связанных задач ранжирует выдачу. Журнал ведётся только при включённом флаге Bitrix\Tasks\Feature\RankingFeature и только для действий из интерфейса. Агент удаляет записи старше 30 дней, а на пользователя хранится не больше 10 000 событий.

Мелочи и находки

  • Задача с несколькими предшественниками в Ганте пересчитывается после всех доступных предшественников и стартует от самой поздней из их дат. Раньше в расчёте у задачи был один предшественник. Для связи финиш—старт с учётом рабочего времени старт, попавший на конец рабочего дня или в нерабочее время, сдвигается на ближайшее рабочее время.
  • В «Моём плане» колонка «Новые» показывает и задачи, у которых ещё нет стадии в плане владельца. Стадия закрепляется за задачей, когда её переносят или сортируют вручную.
  • Просроченная задача, которую уже завершили, отложили или отправили на контроль, больше не снижает показатель «Эффективность»: при событии просрочки нарушение закрывается.
  • В скрам-канбане завершение и возобновление родительской задачи снова переносят её стадии без проверки типа колонки и права сортировки. Эти проверки и откат при сбое появились в 26.800.0. Статус по-прежнему меняется только при праве на завершение или возобновление, а перенос завершённой задачи из финальной колонки требует права возобновить её и при групповом переносе.

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

Символ Статус Чем заменять
tasks.task.ai.image.save Удалено —
Bitrix\Tasks\Rest\Controllers\Task\AI\Image Удалено —
Bitrix\Tasks\Integration\AI\Model\Image Удалено —
Bitrix\Tasks\Integration\AI\Restriction\Image Удалено —
Bitrix\Tasks\Integration\AI\WhiteList Удалено —
Bitrix\Tasks\Scrum\Service\ItemService::tryUpdateEntityIdToItems() Удалено —
Bitrix\Tasks\Scrum\Service\ItemService::trySortItems() Удалено —
Bitrix\Tasks\Scrum\Service\ItemService::canSortItemsInGroup() Удалено —

Новая версия вышла — разбор уже в 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 мин
tasks 26.600.0 Ломающее Свежее

Tasks 26.600.0: наблюдатель по запросу доступа, эпики в новой карточке и аватарки чатов на всех порталах

В задачах 26.600.0 для коробочного Битрикс24 сотрудника, который запросил доступ, можно добавить в наблюдатели прямо из уведомления, эпики создаются из новой карточки, а задачи завершаются из «Моего плана». Заодно обновление само включает статусные аватарки чатов задач, начинает отклонять пустые рез…

4 мин
tasks 26.500.100 Безопасность Свежее

Tasks 26.400.0–26.500.100: CRM в задачах, события спринта, ревизии чек-листа и закрытые дыры в правах

В коробочный Битрикс24 пришли сразу три версии задач: 26.400.0, 26.500.0 и 26.500.100. Разработчику достались события старта и завершения спринта, связи Ганта в REST 3.0 и привязка CRM к задачам, которая пока спрятана за опцией. Перед обновлением проверьте вызовы `SocialNetwork::getMemberList()`, од…

2 мин
tasks 26.350.0 Рутинное Свежее

Tasks 26.350.0: NEW_COMMENTS_COUNT читается точечно

В tasks 26.350.0 модуль иначе читает `NEW_COMMENTS_COUNT`, значения при этом прежние. Это касается `CTaskItem::fetchList()` и `fetchListArray()` с этим полем в select, а значит и `Manager\Task::getList()` с REST-методом `tasks.task.list`, и REST-метода `tasks.task.get`. Раньше ради этого поля `Count…

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

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

на связи

пишет…

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

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

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

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

Войти