Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Работа механизма: Подробное руководство», проанализируем лучшие практики и покажем, как правильно использовать битрикс в реальных задачах.
Работа механизма
[TOC]
В настоящий момент поддержка универсального API не включена для всех сущностей.
Новый API полностью поддерживается для:
- смарт-процессов,
- счетов,
- коммерческих предложений,
- документов (подсистема подписи).
Опциональная поддержка (зависит от настроек):
- лиды,
- сделки,
- контакты,
- компании.
> Команда Битрикс24 надеется что переход пройдет незаметно. Весь существующий код должен продолжать работать без изменений. Пожалуйста, если вы обнаружили какую-то несовместимость в работе старого и нового API, свяжитесь с технической поддержкой.
Как узнать включено ли?
Проверить, включено ли новое API, можно только через php-код.
Для проверки можно использовать как через специальные классы настроек:
use \Bitrix\Crm\Settings;
use \Bitrix\Main\Loader;
Loader::requireModule('crm');
var_dump([
'deal' => Settings\DealSettings::getCurrent()->isFactoryEnabled(),
'lead' => Settings\LeadSettings::getCurrent()->isFactoryEnabled(),
'contact' => Settings\ContactSettings::getCurrent()->isFactoryEnabled(),
'company => Settings\CompanySettings::getCurrent()->isFactoryEnabled(),
]);Так и через объекты сущностей:
use \Bitrix\Main\Loader;
Loader::requireModule('crm');
var_dump([
'deal' => ( new \CCrmDeal() )->isUseOperation(),
'lead' => ( new \CCrmLead() )->isUseOperation(),
'contact' => ( new \CCrmContact() )->isUseOperation(),
'company' => ( new \CCrmCompany() )->isUseOperation(),
]);Пример результата (когда использование выключено):
array(4) {
["deal"] => bool(false)
["lead"] => bool(false)
["contact"] => bool(false)
["company"] => bool(false)
}Как включить?
Включить механизм можно так же двумя способами: через код и через браузер.
Для включения через код, необходимо через механизм настроек перевести флаг в положение true:
\Bitrix\Main\Loader::requireModule('crm');
\Bitrix\Crm\Settings\DealSettings::getCurrent()->setFactoryEnabled(true);Аналогично можно сделать для других сущностей — достаточно вместо DealSettings использовать LeadSettings, ContactSettings и CompanySettings соответственно.
Для включения через браузер достаточно просто перейти в раздел CRM и добавить ?enableFactory=Y.
>ВАЖНО! Включить новую настройку может любой пользователь с правами на доступ в CRM!
Отключение
Отключение механизма производится аналогичным подключением, с единственной разницей — необходимо передавать false в php-коде и N (вместо Y) в адресной строке.
>Если вы отменяете переход на универсальное API из-за ошибок связанных с отказом в работоспособности ваших обработчиков или другого кода — обязательно свяжитесь с технической поддержкой для описания произошедшего!
💡 Экспертное мнение и рекомендации
Практические рекомендации:
- При написании кастомных компонентов для «Работа механизма: Подробное руководство» всегда разделяйте бизнес-логику и представление (шаблон).
- Используйте отладку SQL-запросов через конструкцию
$wpdb->last_queryили стандартный трекер Битрикса, чтобы контролировать нагрузку.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru