Некоторые приемы работы с апи CRM Битрикс24 (коробочная версия)


Апи коробочной версии Битрикс24 — документировано достаточно слабо, поэтому я собираю для себя небольшую шпаргалку по использованию наиболее часто необходимых апи-функций по работе с CRM и с календарем в Битрикс24.

Добавление нового контакта в CRM Битрикс24:

$ct=new CCrmContact(false);
$arParams = array('HAS_PHONE'=>'Y');
$arParams['FM']['PHONE'] = array(
'n0' => array(
'VALUE_TYPE' => 'WORK',
'VALUE' => '12345678',
)
);
$arParams['FM']['EMAIL'] = array(
'n0' => array(
'VALUE_TYPE' => 'WORK',
'VALUE' => 'gfgfgf@gfh.ru',
)
);
 
$arParams['FULL_NAME']="Иванов Иван Иванович";
$arParams['LAST_NAME']="Иванов";
$arParams['HAS_EMAIL']='Y';
$arParams['HAS_PHONE']='Y';
$arParams['COMPANY_ID']=748;
$arParams['TYPE_ID'] ='CLIENT';
$arParams['SOURCE_ID']= 'WEB';
$arParams['OPENED'] = 'Y';
 
$new_contact_id=$ct->Add($arParams, true, array('DISABLE_USER_FIELD_CHECK' => true));
 
if ($new_contact_id){
print  $new_contact_id."<br/>";
}
else{
print $ct->LAST_ERROR;
}

И сюда же еще добавлю ссылочку на заметку другого разработчика: http://dev.1c-bitrix.ru/community/webdev/user/23714/blog/13659/?commentId=73155

Чтобы проапдейтить телефон контакта в CRM Битрикс24:

$ct=new CCrmContact(false);
$arParams = array('HAS_PHONE'=>'Y');
 
$arParams['FM']['PHONE'] = array(
'n0' => array(
'VALUE_TYPE' => 'WORK',
'VALUE' => '12345678',
)
);
 
$ct->Update(1400,$arParams);

Для того, чтобы проапдейтить сделку в CRM Битрикс24:

function OnAfterCrmDealAddHandler(&$arFields)
    {
    define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/custom_crm_log.txt");
  
        global $DB;
 
        $DB->StartTransaction();
 
        $arUpdateData = array(
               'COMMENTS' => "Hello world"
            );
 
        $deal = new CCrmDeal;
 
            if($deal->Update(
                $arFields['ID'],
                $arUpdateData,
                true,
                true,
                array('DISABLE_USER_FIELD_CHECK' => true))
            ) {
               AddMessage2Log("Successfully added", "custom_crm");
               $DB->Commit();
               $arErrors = array();
            }
            else
            {
               AddMessage2Log($deal->LAST_ERROR, "custom_crm");
               $DB->Rollback();
            }
   
    }

Чтобы создать подзадачу для задачи из бизнес-процесса в Битрикс24:

if (CModule::IncludeModule("tasks"))
{
global $USER;
 
    $arFields = Array(
        "TITLE" => "Task title",
        "DESCRIPTION" => "Task description",
        "RESPONSIBLE_ID" => $USER->GetID(),
        "GROUP_ID" => $this->GetVariable('WORKGROUPID'),
        "PARENT_ID"=>'{=A2629_10558_53461_99205:TaskId}',
    );
 
    $obTask = new CTasks;
    $ID = $obTask->Add($arFields);
    $success = ($ID>0);
}

Чтобы создать рабочую группу и ее диск из бизнес-процесса в Битрикс24:

CModule::IncludeModule('socialnetwork');
CModule::IncludeModule('disk');
CModule::IncludeModule('webdav');
 
$SocGroup=new CSocNetGroup;
global $USER;
 
$arFieldsSG=array(
   "NAME"=>"{=Document:TITLE}",
   "SITE_ID" => "s1",
   "DESCRIPTION"=>"{=Document:TITLE} Workgroup",
   "ACTIVE"=>"Y",
   "VISIBLE"=>"Y",
   "OPENED"=>"Y",
   "CLOSED"=>"N",
   "SUBJECT_ID"=>4,
   "OWNER_ID"=>1,
   "INITIATE_PERMS"=>A,
   "SPAM_PERMS"=>"N",
   "SUBJECT_NAME"=>"Management Board"
 
);
 
$GroupID=CSocNetGroup::CreateGroup($USER->GetID(),$arFieldsSG);
 
if (CModule::IncludeModule("disk"))
{
BitrixDiskDriver::getInstance()->addGroupStorage($GroupID);
}
 
$this->SetVariable('WORKGROUPID',$GroupID);

Чтобы программно добавить событие в календарь пользователя в Битрикс24:

$fromTs=MakeTimeStamp($_POST['from'], "MM/DD/YYYYS");
$toTs=MakeTimeStamp($_POST['to'], "MM/DD/YYYYS");
$arFieldsCalend = array(
"CAL_TYPE" =>'user',
"NAME" => $_POST['eventName'],
"DESCRIPTION" => $_POST['description'],
"SKIP_TIME" => date('H:i', $fromTs) == '00:00' && date('H:i', $toTs) == '00:00',
"IS_MEETING" => false,
"RRULE" => false
);
$arFieldsCalend['DT_FROM_TS'] = $fromTs;
$arFieldsCalend['DT_TO_TS'] = $toTs; 
 
$arFieldsCalend["OWNER_ID"] = 1;
$CalEventId = CCalendar::SaveEvent(
array(
'arFields' => $arFieldsCalend,
'autoDetectSection' => true
)
);

Чтобы программно запустить бизнес-процесс в Битрикс24 для элемента CRM:

CModule::IncludeModule('bizproc');
 
CBPDocument::StartWorkflow(
      4,
      array("bizproc","CBPVirtualDocument",$LidID),
      array(),
      $arErrorsTmp
);

Чтобы программно запустить бизнес-процесс в Битрикс24, не привязанный к CRM:

$documentId = CBPVirtualDocument::CreateDocument(
    0,
    array(
     "IBLOCK_ID" => 27,
     "NAME" => "Create Notification",
     "CREATED_BY" => "user_".$GLOBALS["USER"]->GetID(),
    )
   );
 
   $arErrorsTmp = array();
 
   $wfId = CBPDocument::StartWorkflow(
   27,
    array("bizproc", "CBPVirtualDocument", $documentId),
    array_merge(array(), array("TargetUser" => "user_".intval($GLOBALS["USER"]->GetID()))),
    $arErrorsTmp
   );

Чтобы программно создать лид в CRM Битрикс24:

CModule::IncludeModule('crm');
 
$oLead = new CCrmLead;
 
$arFields = Array(
    "TITLE" => "EVENT CREATION ".$_POST['eventName'],
    "COMPANY_TITLE" => "EVENT CREATION ".$_POST['eventName'],
// "NAME" => "ИмяКонтакта",
// "LAST_NAME" => "ФамилияКонтакта",
// "SECOND_NAME" => "ОтчествоКонтакта",
// "POST" => "ДолжностьКонтакта",
    "ADDRESS" => $_POST['address'],
// "COMMENTS" => "КомментарийКомментарийКомментарий",
    "SOURCE_DESCRIPTION" => $_POST['description'],
// "STATUS_DESCRIPTION" => "",
//"OPPORTUNITY" => 123456,
"CURRENCY_ID" => "USD",
// "PRODUCT_ID" => "PRODUCT_1",
"SOURCE_ID" => "SELF",
    "STATUS_ID" => "NEW",
    "ASSIGNED_BY_ID" => $_POST['owner'],
    "UF_CRM_1431935906" => true,
    "UF_CRM_1431950264" => $eventID,
);
 
$LidID=$oLead->Add($arFields);

 

,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *