Розробка кастомних дій бізнес-процесів Бітрікс24 під ключ
Стандартні дії Бізнес-процесів Бітрікс24 — відправити лист, змінити поле, створити задачу. Для інтеграційних завдань цього недостатньо. Наприклад, коли в процесі узгодження потрібно запросити дані з 1С, створити документ у SharePoint або відправити повідомлення в Telegram. Наші інженери з 10+ років досвіду розробляють кастомні дії бізнес-процесів під ключ. За 5 років роботи ми виконали понад 500 проєктів автоматизації. Кастомна дія — це PHP-клас, що успадковує \Bitrix\Bizproc\Activity\BaseActivity або CBPActivity. Вона реєструється як обробник події OnBizProcActivityList. На відміну від роботів CRM, кастомна дія доступна у всьому редакторі бізнес-процесів — для списків, диска, CRM. Ми розробляємо як прості синхронні дії, так і асинхронні з retry-логікою. Отримайте консультацію — ми оцінимо ваше завдання та запропонуємо оптимальне рішення.
Навіщо потрібні кастомні дії?
Кастомна дія — це PHP-клас, що успадковує \Bitrix\Bizproc\Activity\BaseActivity (сучасний API) або CBPActivity. Вона реєструється як обробник події OnBizProcActivityList. На відміну від роботів CRM, кастомна дія доступна у всьому редакторі бізнес-процесів — для списків, диска, CRM. Ми розробляємо як прості синхронні дії, так і асинхронні з retry-логікою.
Як обрати: REST API чи PHP-модуль?
| Критерій | REST API | PHP-модуль |
|---|---|---|
| Хмара | Так | Ні |
| Коробка | Так | Так |
| Час виконання | Обмеження 5 с (синхр.) | Не обмежено |
| Складність розгортання | Низька (вебхук) | Висока (зміна файлів) |
| Повернення значень | Через callback | Напряму |
| Управління версіями | Автоматично | Вручну |
Для швидкої інтеграції краще REST API, для складної логіки всередині коробки — PHP-модуль. Оцінимо ваш сценарій безкоштовно.
Як розробити кастомну дію через REST API?
Реєструється методом bizproc.activity.add згідно з офіційною документацією Бітрікс24. Приклад:
$client->call('bizproc.activity.add', [ 'CODE' => 'GET_1C_PRICE', 'HANDLER' => 'https://my-server.com/bp-activity-handler', 'AUTH_USER_ID' => 1, 'NAME' => [ 'ru' => 'Получить цену из 1С', 'en' => 'Get price from 1C', ], 'USE_SUBSCRIPTION' => 'Y', 'PROPERTIES' => [ 'article' => [ 'Name' => ['ru' => 'Артикул товара'], 'Type' => 'string', 'Required' => 'Y', ], ], 'RETURN_PROPERTIES' => [ 'price' => [ 'Name' => ['ru' => 'Цена из 1С'], 'Type' => 'double', ], 'available' => [ 'Name' => ['ru' => 'В наличии'], 'Type' => 'bool', ], ], ]); USE_SUBSCRIPTION: Y — обов'язково, якщо дія виконується довше 5 секунд. Бітрікс24 одразу повертає 200, а обробник асинхронно надсилає результат через bizproc.event.send. Без цього токена воркфлоу зависне.
Кроки розробки:
- Визначте код та параметри — задайте унікальний
CODEта опишітьPROPERTIES,RETURN_PROPERTIES. - Викличте метод
bizproc.activity.add— передайтеHANDLERURL, встановітьUSE_SUBSCRIPTIONвYдля асинхронних дій. - Реалізуйте обробник — скрипт на вашому сервері приймає POST-запит від Бітрікс24, виконує бізнес-логіку та надсилає результат через
bizproc.event.sendз правильнимevent_token. - Протестуйте — запустіть процес з різними сценаріями, перевірте обробку помилок та таймаутів.
Розробка PHP-дії для коробкового Бітрікс24
Клас реєструється у файловій системі. Структура:
class My1CPriceActivity extends \Bitrix\Bizproc\Activity\BaseActivity { protected function execute(array &$arProperties) { $article = $this->getFieldValue('article'); $result = \My1CConnector::getPrice($article); if ($result->isSuccess()) { $this->setResultValue('price', $result->getPrice()); $this->setResultValue('available', $result->getAvailable()); } else { $this->writeToTrackingService( 'Помилка запиту до 1С: ' . $result->getErrorMessage() ); } return \CBPActivityExecutionStatus::Closed; } public static function getPropertiesDialog($params) { // Рендер форми налаштування } } Метод writeToTrackingService пише в журнал БП — важливо для налагодження.
Реальний кейс: автоматизація узгодження заявок з перевіркою кредитного ліміту
Завдання: дистриб'ютор, процес узгодження заявки на відвантаження з відстрочкою платежу. Потрібно отримати з CRM кредитний ліміт та заборгованість, потім автоматично схвалити або направити на ручне узгодження.
Рішення: розробили кастомну PHP-дію CheckCreditLimitActivity. Параметри: ID компанії в CRM, сума заявки. Вона запитує внутрішній API фінансової системи по HTTP, повертає змінні available_limit та approval_required. Потім в БП стоїть умова: якщо approval_required = true — завдання фінансовому директору, інакше — автоматичне схвалення.
Складність: фінансова система була недоступна в 3–5% випадків. Додали retry-логіку: дія повторює запит до 30 хвилин через агент, при недоступності — переводить заявку на ручне узгодження з повідомленням.
Результат: цикл узгодження скоротився з 4 годин до 20 хвилин для автоматичних заявок (68% випадків). Вартість розробки кейсу склала $400–580ів.
Які помилки допускають при розробці?
- Таймаут без USE_SUBSCRIPTION — синхронний обробник довше 5 секунд, процес зависає.
- Не передано event_token — результат не доходить до БП, воркфлоу чекає нескінченно.
- Необроблений виняток у PHP-дії — валить весь воркфлоу. Завжди try-catch.
Що входить в роботу?
- Аналіз — розбір бізнес-процесу та вимог до інтеграції.
- Проектування — вибір архітектури (REST/PHP), узгодження протоколу.
- Реалізація — написання коду, реєстрація дії, налаштування форми параметрів.
- Тестування — на тестовому процесі з граничними сценаріями.
- Документація — інструкція з встановлення та використання.
- Підтримка — 30 днів гарантійного супроводу.
Строки розробки
| Завдання | Час |
|---|---|
| Проста синхронна дія | 2–3 дні |
| Асинхронна дія з retry | 4–6 днів |
| PHP-дія з UI-формою | 5–7 днів |
| Тестування, налагодження, документація | 2–3 дні |
Розробка кастомної дії під ключ займає 1–2 тижні в залежності від складності. Економія від впровадження — до $900–1.3kів на місяць. Оцінка проєкту — безкоштовно. Зв'яжіться з нами, щоб обговорити ваше завдання — отримайте консультацію та комерційну пропозицію.







