← Назад к справке

Пользовательские действия

Общее устройство

Как устроены пользовательские действия бизнес-процессов в коробочном Bitrix24: где лежат, из каких файлов состоят и как появляются в дизайнере.

Пользовательское действие имеет смысл делать тогда, когда PHP-блок разросся, повторяется в разных шаблонах или должен выглядеть для сотрудников как обычный блок дизайнера бизнес-процессов.

Общее понимание

Пользовательское действие — это отдельный блок бизнес-процесса со своим PHP-классом, описанием, настройками и результатами выполнения.

Когда нужно своё действие

  • один и тот же PHP-код копируется в разные бизнес-процессы;
  • нужно скрыть сложную реализацию за понятной формой настроек;
  • нужен готовый блок для сотрудников в дизайнере;
  • нужно возвращать несколько результатов отдельными полями;
  • нужна динамическая форма: выбор CRM-сущности, списки полей, AJAX-подгрузка;
  • логику нужно сопровождать в одном месте, а не искать её по шаблонам процессов.

Чем отличается от PHP-блока

Вариант Где подходит Ограничение
PHP-блок Разовая проверка, короткая логика, быстрый служебный код. Код легко размножить по шаблонам и сложно потом поддерживать.
Пользовательское действие Повторяемая логика, своя форма настроек, готовый блок в дизайнере. Нужно завести структуру файлов и поддерживать совместимость свойств.

Если действие уже добавлено в реальные шаблоны, коды свойств и результатов лучше не переименовывать без необходимости. Шаблон бизнес-процесса хранит именно эти коды.

Где хранить

Для своих действий используется /local/activities. Файлы ядра в /bitrix/modules/bizproc/activities не меняются.

Путь Комментарий
/local/activities/crmadvancedfindactivity Рабочий путь для своего действия в коробке.
/local/activities/custom Вариант с общей папкой для своих действий, если так принято в проекте.
/bitrix/activities/custom Старый путь из примеров и документации.
/bitrix/modules/bizproc/activities Ядро. Для своих правок не используется.

Именование

Папка и основной файл называются по действию в нижнем регистре. Класс начинается с CBP, а в описании указывается имя без этого префикса.

Что Пример
Папка действия crmadvancedfindactivity
Основной файл crmadvancedfindactivity.php
Класс CBPCrmAdvancedFindActivity
CLASS в описании CrmAdvancedFindActivity

Рабочая схема

Минимальному действию нужны описание, PHP-класс и языковые файлы. Для сложной формы добавляются properties_dialog.php и AJAX.

Минимальная структура

/local/activities/crmadvancedfindactivity/
├── .description.php
├── crmadvancedfindactivity.php
├── properties_dialog.php
├── ajax.php
└── lang/
    └── ru/
        └── .description.php

В простом действии можно обойтись без properties_dialog.php и ajax.php. В действии с выбором CRM-сущности, фильтрами и подгрузкой полей эти файлы уже нужны.

Назначение файлов

Файл Назначение
.description.php Название, описание, категория, класс, входные свойства и результаты.
crmadvancedfindactivity.php Класс действия, Execute(), обработка настроек и результатов.
properties_dialog.php HTML и JS формы настроек в дизайнере бизнес-процессов.
ajax.php Подгрузка полей CRM, значений списков и элементов для привязок.
lang/ru/.description.php Языковые фразы для названия и описания.

Как блок появляется в дизайнере

Дизайнер читает .description.php. В этом файле задаются название, тип, класс, JS-класс и категория.

<?php

if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) {
    die();
}

$arActivityDescription = [
    'NAME' => 'CRM: расширенный поиск элемента',
    'DESCRIPTION' => 'Ищет первый элемент CRM или смарт-процесса с наименьшим ID по выбранным полям.',
    'TYPE' => 'activity',
    'CLASS' => 'CrmAdvancedFindActivity',
    'JSCLASS' => 'BizProcActivity',
    'CATEGORY' => [
        'ID' => 'document',
        'OWN_ID' => 'crm',
        'OWN_NAME' => 'CRM',
    ],
];

Если блока нет в дизайнере, обычно проверяют путь, имя папки, имя класса, ошибки PHP и кеш административного раздела.

Источники