Апи коробочной версии Битрикс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);