Работа со списочными полями (тип, источник, стадия, ...) в Битрикс24

Углубленное изучение Битрикс
  • Работа со списочными полями (тип, источник, стадия, ...) в Битрикс24

    Антон Долганин 23 Июня 2016 9:59 1715
    В статье речь пойдет про данные поля (и многие другие), которые присутствуют во всех сущностях CRM

    Screenshot_2.png


    Управляются они все одними методами, поэтому работать с ними достаточно легко.

    К примеру, чтобы получить список "Тип компании", достаточно воспользоваться конструкцией
    CModule::IncludeModule('crm'); 
    $status = new CCrmStatus('COMPANY_TYPE'); 
    $status->GetStatusListEx('COMPANY_TYPE'); 


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

    Встает вопрос как узнать нужный вам тип (например, сфера деятельности, или тип компании, тип клиента). Достаточно взглянуть в таблицу b_crm_status (так как CRM постоянно расширяется, список может устареть). Там достаточно сгруппировать по типу запросом
    select * from b_crm_status group by ENTITY_ID;


    Чтобы увидеть такую вполне понятную картинку

    Screenshot_1.png

    По второй колонке вам станет понятно код нужного вам типа.

    Как добавить программно новый элемент таких списков?
    Вот так
    CModule::IncludeModule('crm');
    $status = new CCrmStatus('COMPANY_TYPE');
    $status->add(array(
       'STATUS_ID' => 'MYTT2',
       'NAME' => 'My new',
       'SORT' => '500'
    ));


    Заметьте, я COMPANY_TYPE указываю при инициации, а в массиве добавляемого элемента я его не указываю. В данном случае я добавляю программно новый вариант типа компании.

    Если код выполнился, а ничего не произошло, то скорее всего ошибка (чаще всего это дубль символьного кода). Чтобы увидеть ошибку, надо сделать следующее:
    if ($ex = $APPLICATION->getException()) {
       echo $ex->getString();
    }


    На этом все.