Документация для разработчиков
Темная тема

DynamicTypesMap

Методы


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

Чтобы эти данные не загружались несколько раз, а также для удобства доступа к этим данным, был сделан этот сервис.

Жизненный цикл работы с этим сервисом следующий:

  • Инстанс получается через контейнер.
  • Вызывается метод load с параметрами, какие данные надо загрузить.
  • Доступ к данным получается через методы getTypes / getCategories / getStages.
Обратите внимание, этот класс не осуществляет проверку прав доступа.
Метод Описание С версии
public function load(array $params = []): self
Загружает данные о смарт-процессах. Массив $params может содержать два ключа:
  • isLoadStages - загружать стадии или нет. По умолчанию true.
  • isLoadCategories - загружать направления или нет. По умолчанию true.

Если isLoadStages = true, то направления будут загружены в любом случае, т.к. без карты направлений нет возможности корректно загрузить все стадии.
Этот метод произведет загрузку только тех данных, которых не хватает.
Если все запрошенные данные уже были загружены ранее, то дополнительных запросов к базе данных не производится.
Все остальные методы этого сервиса должны вызываться только после того, как метод load был вызван хотя бы раз. Иначе будет выброшено исключение.
public function getTypes(): array
Вернет массив орм-объектов о смарт-процессах.
public function getCategories
(?int $entityTypeId = null): array
Вернет массив орм-объектов направлений смарт-процессов.
Если в методе load не были запрошены направления, то будет выброшено исключение.
public function getDefaultCategory(int $entityTypeId): 
?\Bitrix\Crm\Model\EO_ItemCategory
Вернет орм-объект направления по умолчанию для типа с идентификатором CRM $entityTypeId.
public function getStagesEntityId
(int $entityTypeId, ?int $categoryId = null): 
?string
Вернет идентификатор типа сущности для таблицы b_crm_status по идентификатору типа CRM $entityTypeId направления $categoryId.
Если $categoryId не передан, будет использовано направление по умолчанию для данного смарт-процесса.
public function getStages
(int $entityTypeId, ?int $categoryId = null): 
array
Вернет массив орм-объектов стадий Bitrix\Crm\EO_Status смарт-процесса с идентификатором типа CRM $entityTypeId направления $categoryId.
Если $categoryId не передан, будет использовано направление по умолчанию для данного смарт-процесса.

Пример

use Bitrix\Crm\Service;

$dynamicTypesMap = Service\Container::getInstance()->getDynamicTypesMap()->load();

foreach ($dynamicTypesMap->getTypes() as $type)
{
    echo 'type: ' . htmlspecialcharsbx($type->getTitle()) . PHP_EOL;
    foreach ($dynamicTypesMap->getCategories($type->getEntityTypeId()) as $category)
    {
        echo "\tcategory: " . htmlspecialcharsbx($category->getName()) . PHP_EOL;
        foreach ($dynamicTypesMap->getStages($type->getEntityTypeId(), $category->getId()) as $stage)
        {
            echo "\t\tstage: " . htmlspecialcharsbx($stage->getName()) . PHP_EOL;        
        }
    }
}

Пользовательские комментарии

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

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2023, «1С-Битрикс», 2023
Наверх