Search by

liventin / base.module.migration.smart.process

Liventin

Service for migration smart processes

Package info

github.com/Liventin/base.module.migration.smart.process

Type:bitrix-d7-module

pkg:composer/liventin/base.module.migration.smart.process

Statistics

Installs: 155

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.5 2026-09-18 06:56 UTC

This package is auto-updated.

Last update: 2026-09-18 06:56:42 UTC


README

Bitrix Base Module

install | update

"require": {
    "liventin/base.module.migration.smart.process": "^1.0.0"
}

redirect (optional)

"extra": {
  "service-redirect": {
    "liventin/base.module.migration.smart.process": "module.name",
  }
}

PhpStorm Live Template

<?php

namespace ${MODULE_PROVIDER_CAMMAL_CASE}\\${MODULE_CODE_CAMMAL_CASE}\Migration\SmartProcess;


use ${MODULE_PROVIDER_CAMMAL_CASE}\\${MODULE_CODE_CAMMAL_CASE}\Service\Container;
use ${MODULE_PROVIDER_CAMMAL_CASE}\\${MODULE_CODE_CAMMAL_CASE}\Service\Migration\SmartProcess\MigrateSmartProcessEntity;
use ${MODULE_PROVIDER_CAMMAL_CASE}\\${MODULE_CODE_CAMMAL_CASE}\Service\Migration\SmartProcess\MigrateSmartProcessService;
use Bitrix\Main\ObjectNotFoundException;
use Bitrix\Main\SystemException;
use Psr\Container\NotFoundExceptionInterface;
use ReflectionException;

class SmartProcessExample implements MigrateSmartProcessEntity
{
    public static function getName(): string
    {
        return 'ExampleName';
    }

    public static function getTitle(): string
    {
        return 'ExampleTitle';
    }

    public static function getCode(): string
    {
        return 'EXAMPLE_CODE';
    }

    /**
     * @throws NotFoundExceptionInterface
     * @throws ObjectNotFoundException
     * @throws ReflectionException
     * @throws SystemException
     */
    public static function getParams(): array
    {
        /** @var MigrateSmartProcessService ${DS}service */
        ${DS}service = Container::get(MigrateSmartProcessService::SERVICE_CODE);

        /** @var ParamsConstructor ${DS}config */
        ${DS}config = ${DS}service->getParamsConstructor();

        return ${DS}config
            ->setIsOpenPermissions(false)
            ->getParamsInArray();
    }
}

Права доступа при создании воронки (IS_SET_OPEN_PERMISSIONS)

Параметр «Права доступа при создании воронки» задаётся через ParamsConstructor::setIsOpenPermissions(bool).

  • false ('N') — после создания смарт-процесса всем ролям (включая администраторские) выставляются нулевые права на его воронки: все записи прав удаляются, доступа нет ни у кого. Это перекрывает дефолтное поведение ядра Bitrix, которое при создании воронки автоматически выдаёт права ролям по их пресетам (MANAGER → «свои», DEPUTY → «отдел», HEAD → «все», ADMIN → «все»).
  • true ('Y') — поведение ядра не меняется: права выдаются как обычно.

Закрытие выполняется фоновой задачей (поставленной в очередь ПОСЛЕ задачи ядра, которая выдаёт права), чтобы гарантированно перекрыть выдачу прав ядром. Используется штатный API ядра CCrmRole::EraseEntityPermissons() для каждой воронки — удаление всех записей прав означает нулевой доступ у всех ролей. Определение админ-ролей не выполняется: при N права закрываются у всех без исключения.