Программирование

Вывести ошибку с HTML‑ссылкой при обновлении в Битрикс24

В Битрикс24 можно вывести сообщение об ошибке с HTML‑ссылкой, открывающей другую страницу в новой вкладке, при обновлении сделки с ID > 100. Как реализовать init.php?

Как вывести сообщение об ошибке с HTML‑разметкой (ссылкой) при обновлении сделки в коробочной версии Битрикс24? Нужно, чтобы при изменении сделки с ID > 100 выводилось сообщение с ошибкой, содержащим ссылку, открывающую другую страницу в новой вкладке. Как реализовать это в обработчике, подключенном в init.php, и какие свойства объекта $arFields использовать?

Краткий ответ
В init.php подключите обработчик OnBeforeCrmDealUpdate, в котором проверяете $arFields['ID'] напрямую. Если ID > 100, возвращайте массив с ключом ERROR и HTML‑ссылкой, например:

php
return ['ERROR' => 'Ошибка: <a href="https://example.com" target="_blank" rel="noopener noreferrer">Перейти</a>'];

Битрикс остановит обновление сделки и покажет сообщение с ссылкой в новой вкладке.


Содержание


Подключение обработчика в init.php

В файле init.php добавьте строку регистрации обработчика:

php
<?php
use Bitrix\Main\EventManager;

EventManager::getInstance()->addEventHandler(
    'main',
    'OnBeforeCrmDealUpdate',
    'onBeforeCrmDealUpdate'
);

Функция‑обработчик должна быть объявлена в том же файле или в подключаемом модуле:

php
function onBeforeCrmDealUpdate(&$arFields)
{
    // Логика будет описана далее
}

Ссылка на официальную документацию:
https://dev.1c-bitrix.ru/api_help/crm/events.php


Проверка ID сделки

$arFields содержит все поля, которые планируется обновить.
Для проверки идентификатора сделки используйте $arFields['ID']:

php
if ($arFields['ID'] > 100) {
    // Ошибка будет выставлена ниже
}

Если ID отсутствует (например, при создании сделки), условие не выполнится.


Возврат сообщения об ошибке с HTML‑ссылкой

В обработчике возвращайте массив с ключом ERROR. Битрикс автоматически отобразит его в форме редактирования и отменит обновление:

php
return [
    'ERROR' => 'Нельзя обновить сделку. <a href="https://example.com" target="_blank" rel="noopener noreferrer">Перейти</a>'
];

Что важно учесть

Пункт Что делать Почему
target="_blank" Открыть ссылку в новой вкладке Это требование задачи
rel="noopener noreferrer" Защита от XSS‑атак Рекомендуется при открытии в новой вкладке
Использовать только простые теги <a>, <b>, <i> Битрикс отбрасывает сложные конструкции

Ссылка на пример использования ошибок:
https://dev.1c-bitrix.ru/learning/course/lesson/13/2/


Какие свойства $arFields использовать

Свойство Назначение Пример использования
$arFields['ID'] Идентификатор сделки if ($arFields['ID'] > 100)
$arFields['ERROR'] (необязательно) можно задать напрямую, но предпочтительнее возвращать массив $arFields['ERROR'] = '...'; return [];
$arFields['PREV'] Содержит предыдущие значения полей (если нужны сравнения) if ($arFields['PREV']['STATUS_ID'] != $arFields['STATUS_ID'])
$arFields['VALUE'] Значения, которые отправляются при обновлении Не используется для проверки ID

Ссылка на подробную схему полей сделки:
https://dev.1c-bitrix.ru/api_help/crm/deal.php


Проверка и отладка

  1. Создайте или отредактируйте сделку с ID > 100 напрямую.
  2. Попытайтесь изменить любой её атрибут.
  3. Должно появиться сообщение с красным фоном и гиперссылкой.
  4. Перейдите по ссылке – откроется указанная страница в новой вкладке.

Если сообщение не появляется:

  • Убедитесь, что init.php загружается (проверьте LOGS).
  • Проверьте, что условие ID > 100 действительно выполняется.
  • Отключите кэш и перезапустите браузер.

Источники

  1. Битрикс24 – Events API – Описание события OnBeforeCrmDealUpdate.
  2. Битрикс24 – Работа с ошибками CRM – Как возвращать ошибки из обработчиков.
  3. Битрикс24 – Поля сделки – Список доступных свойств $arFields.
  4. Битрикс24 – Пример обработки событий – Практический пример регистрации обработчика в init.php.

Заключение

Подключите обработчик OnBeforeCrmDealUpdate в init.php напрямую. Проверяйте $arFields['ID'] и при ID > 100 возвращайте массив с ключом ERROR и HTML‑ссылкой напрямую. Ссылка открывается в новой вкладке благодаря target="_blank" и защищена атрибутом rel. После обновления сделки с ID > 100 пользователь увидит сообщение об ошибке и сможет перейти по ссылке, не так ли? Эти шаги позволяют гибко контролировать обновление сделок и информировать пользователей о дополнительных действиях, необходимых им напрямую.

Авторы
Проверено модерацией
Модерация
Вывести ошибку с HTML‑ссылкой при обновлении в Битрикс24