mail · mail 26.800.0 Заметное

mail 26.800.0: массовые действия над ящиками и fail-closed привязка письма к посту

3 мин чтения

Грид почтовых ящиков получил панель массовых действий: включить CRM или календарь пачке ящиков, отключить пачку ящиков разом. Фича спрятана за флагом. Плюс аккуратная переделка привязки письма к посту ленты и перевод установщика на миграции.

Массовые действия: зачем и как включить

На портале с сотней сотрудников включение CRM-интеграции каждому ящику вручную — это сотня заходов в карточку. Новые экшены закрывают ровно это:

        MailboxConnecting::massDisconnectMailboxesAction(array $mailboxIds)
MailboxConnecting::massSetCalendarIntegrationAction(array $mailboxIds, $enabled)
MailboxConnecting::massSetCrmIntegrationAction(array $mailboxIds, $enabled, ?array $crmOptions = null)

    

Все три закрыты префильтрами MassConnectAccess и MailboxGridBulkActionsAccess — массовое отключение чужих ящиков не должно быть доступно тому, кто просто видит грид.

Включается фича опцией:

        \Bitrix\Main\Config\Option::set('mail', 'enable_list_improvements', 'Y');

    

Проверка — Feature::isMailboxGridBulkActionsAvailable(). По умолчанию N, то есть после обновления вы ничего нового в интерфейсе не увидите, пока не включите. Это стоит знать, прежде чем искать баг.

Результат операции возвращается как BulkActionResult с тремя списками: applied, skipped, failed. Хороший контракт для массовых операций — частичный успех виден явно, а не сваливается в один булев флаг.

Со стороны сервиса добавились MailboxConnector::enableCrmWithDefaults(), updateCalendarOptions(), updateCrmOptions(), со стороны грида — MailboxGrid::createPanel() и набор actions (Enable/DisableCrmAction, Enable/DisableCalendarAction, ConfigureCrmAction, DisconnectMailboxAction, JsPanelAction, MailboxPanelProvider).

Привязка письма к посту ленты: маленький, но показательный кусок

Новый Secretary::bindFeedPostAction(int $messageId, int $postId, CurrentUser $currentUser) пишет UF_MAIL_MESSAGE через $USER_FIELD_MANAGER->Update('BLOG_POST', ...), а не через \CBlogPost::Update().

Разница существенная. CBlogPost::Update() — это полноценное обновление поста: события блога, пересчёт прав, потенциальная смена автора на того, кто выполняет операцию. Для того чтобы дописать одно пользовательское поле, это слишком много побочных эффектов. Прямое обновление UF трогает ровно то, что нужно, и автора поста не меняет.

Второе — экшен сделан fail-closed: успехом считается только случай, когда после обновления UF в MessageAccessTable действительно появилась запись для BLOG_POST. Не появилась — пишется AddMessage2Log и возвращается ошибка. Логика простая: привязка письма к посту — это раздача доступа к переписке, и «вроде записалось» здесь недопустимый ответ.

Установщик

InstallDB больше не гоняет install/db/{mysql,pgsql}/install.sql и не регистрирует обработчики через EventManager в index.php — всё ушло в install/migrations/: tables.php (b_mail_mailbox и остальные), events.php, agents.php (CMailbox::CleanUp() раз в сутки, AccessInstaller::install() каждые 60 секунд с лимитом 600). SQL-файлы удалены, добавлен migration_config.json.

Одна деталь для тех, кто мигрирует порталы: шифрование TOKENS на b_mail_oauth включается только при чистой установке после успешной миграции. На существующем портале само по себе не включится.

Что делать

  • Хотите массовые действия — включите mail / enable_list_improvements.
  • Пишете свои bulk-операции — посмотрите на BulkActionResult как на образец: applied / skipped / failed вместо true/false.
  • Если у вас был свой код привязки писем к постам через CBlogPost::Update — это хороший повод переписать его на USER_FIELD_MANAGER и перестать переписывать автора поста.

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

mail 26.700.0 Заметное Свежее

mail 26.700.0: статистика писем для AI-ассистента и предупреждение о провайдерах

Модуль научился считать входящие по ящику или сотруднику за период и отдавать это AI-ассистенту как инструмент. Плюс появился слой ограничений по почтовым провайдерам. Основной риск обновления — не удаления, а вставка аргументов в середину конструкторов двух DTO.

3 мин
bizprocdesigner 26.500.0 Заметное Свежее

bizprocdesigner 26.500.0: фильтр ноды приехал выключенным

Крупный UI-релиз редактора схем плюс новый тип конструкции — фильтр ноды. Ломающих изменений нет: все правки контроллера и DTO совместимы со старыми вызовами. Главное, что стоит знать заранее: фича спрятана за опцией и по умолчанию выключена.

3 мин
calendar 25.195.0 Заметное Свежее

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

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

3 мин
calendar 25.197.0 Заметное Свежее

calendar 25.197.0: тип события call_sync и чат, который создаётся сам

У события календаря появился собственный тип, и первый его пользователь — синхронизированные созвоны: при создании такого события автоматически поднимается чат с гостевой ссылкой. Ломающих изменений нет, все правки сигнатур совместимы.

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

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

на связи

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

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

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

Войти