Yandex Metrika
sanches.free 19 просмотров

Автозапуск bizproc после действий публичного компонента и нюансы Wiki-публикаций

Разрыв между административными ожиданиями и поведением публичной формы

Галочка «запуск при изменении» в конструкторе процесса действует там, где сценарий предполагает полный контур сохранения. Упрощённый элементный компонент в публичной части может обойти тот триггер, из-за чего исполнитель не стартует.

Внешние точки входа через события инфоблока

Вставляют обработчик после сохранения сущности. В методе включают модуль процессов, подготовив пустые контейнеры ошибок для диагностируемости. Основному вызывающему коду сообщают идентификатор блока свойств данных и ключ события Create либо Edit в понятном для модуля формате.

final class GrainBizprocHook
{
    public static function afterAdd(array & $fields): void
    {
        if (!CModule::IncludeModule('bizproc')) {
            return;
        }
        $errors = [];
        CBPDocument::AutoStartWorkflows(
            ['iblock', 'CIBlockDocument', 'iblock_' . $fields['IBLOCK_ID']],
            CBPDocumentEventType::Create,
            ['iblock', 'CIBlockDocument', $fields['ID']],
            [],
            $errors
        );
    }
}
AddEventHandler('iblock', 'OnAfterIBlockElementAdd', ['GrainBizprocHook', 'afterAdd']);

Wiki-дорожка

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

Важнее избежать блокирующего init.php ради маленьких проектов: подписки подключают либо в модуле, либо в окружающих конкретный сценарий файле публичного раздела, чтобы не платить временем сборки там, где инфоблок вовсе отсутствует.

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии