Обучаю битриксу программистов, интеграторов. Подробнee ⇒

Компании, контакты - crm api коробка



список полей компании https://dev.1c-bitrix.ru/rest_help/crm/company/crm_company_fields.php
список полей контакта https://dev.1c-bitrix.ru/rest_help/crm/contacts/crm_contact_fields.php

Важно!
Раньше контакт мог быть привязанным только к одной компании. А сейчас к нескольким!

Компании
получить компанию
$companyId = intval($arFields["COMPANY_ID"]);
$arFilter = array("ID"=>$companyId,"CHECK_PERMISSIONS"=>"N");
$arSelect = array("TITLE", UF_CRM_TARIFF,UF_CRM_COMPANY_TIME);

$rsCompany = CCrmCompany::GetList(Array(),$arFilter,$arSelect);
if($arComp = $rsCompany->Fetch()){
  
}       
обновить компанию
$company  =  new  \CCrmCompany( false );
$arUpdateData = [UF_CRM_COMPANY_TIME => $newTime]; 
$arOptions = [
       //'DISABLE_USER_FIELD_CHECK' => true,
    "CURRENT_USER"=> 1,
    "ENABLE_SYSTEM_EVENTS" =>true
]; 
$upRes = $company->Update($companyId, $arUpdateData, true, true, $arOptions);
добавить запись в историю компании (лида, сделки, контакта)
$CCrmEvent = new CCrmEvent();            
$CCrmEvent->Add(
   array(
      'ENTITY_TYPE'=> "COMPANY", //LEAD, CONTACT, DEAL
      'ENTITY_ID' => $id,
      'EVENT_ID' => 'INFO',                  
      'EVENT_TEXT_1' => 'Просмотр карточки ais за '.date("d.m.Y", $date), //какой-то текст      
      //'FILES' => array(CFile::MakeFileArray('/bitrix/templates/bitrix24/images/template_sprite_21.png')),
      //'DATE_CREATE' => ConvertTimeStamp(time() + CTimeZone::GetOffset(), 'FULL', SITE_ID), //по умолчанию текущее время      
   )
);

Контакт
добавить контакт
$arFields = array(
   "NAME" => "Имя",
    "LAST_NAME" => "Фамилия",
    "SECOND_NAME" => "Отчество",
    "HONORIFIC" => "HNR_RU_1",
    "POST" => "Должность",
    "ADDRESS" => "Улица, дом, корпус, строение",
    "ADDRESS_2" => "Квартира / офис",
    "ADDRESS_CITY" => "Город",
    "ADDRESS_POSTAL_CODE" => "Почтовый индекс",
    "ADDRESS_REGION" => "Район",
    "ADDRESS_PROVINCE" => "Область",
    "ADDRESS_COUNTRY" => "Страна",
    "ADDRESS_COUNTRY_CODE" => "",
    "SOURCE_DESCRIPTION" => "Описание",
    "SOURCE_ID" => "SELF",
    "TYPE_ID" => "SHARE",   
    "POST" => "не указано",//должность               
    //"OPENED" => "N", //открыто для других пользователей                
    "EXPORT" => "Y",//участвует в экспорте                
    'FM' => array(//почта, телефон
        'EMAIL' => array(
               'n0' => array('VALUE' => $arNewUser["EMAIL"], 'VALUE_TYPE' => 'WORK')
             ),
             'PHONE' => array(
                'n0' => array('VALUE' => $arNewUser["PERSONAL_MOBILE"], 'VALUE_TYPE' => 'WORK')
             ) 
         ),
    //"COMPANY_ID" => $companyId, раньше только к одной можно было привязать
         "COMPANY_IDS"=>array(1,2,3), //массив id компаний, сейчас можно так                
    "ASSIGNED_BY_ID" => $manager,//id ответственного менеджера 
);
//создаем контакт   
$oContact = new \CCrmContact(false);
$oContact->add($arFields);
if($oContact->LAST_ERROR != ""){                           
   //не создался контакт
}
обновить контакт
$arFields = array(
  "NAME" => "Имя",
  "LAST_NAME"=> "Фамилия"
);
$oContact = new CCrmContact(false);
$oContact->Update($contactId,$arFields);
получить контактов по компании и отвязать их от компании
$arDelete = array();
$res = CCrmContact::GetContactByCompanyId($companyId);
while ($ar = $res->Fetch()) {
     $arDelete[] = $ar['ID'];
}
$CCrmContact = new CCrmContact();
$CCrmContact->UpdateCompanyId($arDelete, 0);
Еще вариант получить контактов по компании
$contactIDs = \Bitrix\Crm\Binding\ContactCompanyTable::getCompanyContactIDs($companyId);
Получить телефон, факс, email рабочий или личный Контакта или компании
$dbCont = CCrmFieldMulti::GetList(     
    array('ID' => 'asc'), //сортировка
    array(
     'ELEMENT_ID' => $contactId
     'ENTITY_ID' => "COMPANY", //"CONTACT","LEAD","DEAL"
     'TYPE_ID' => "PHONE" //"EMAIL",
    ) //фильтр
);
while($arCont = $dbCont->Fetch()){
  //$arCont["VALUE"] там значение 

}
добавить телефон (факс и пр)
$fieldMulti = new CCrmFieldMulti();
$fieldMulti->Add([
   'ELEMENT_ID' => $companyId,
   'ENTITY_ID' => "COMPANY", //"CONTACT","LEAD","DEAL"
   'TYPE_ID' => "PHONE", //"EMAIL",
   'VALUE' => $tel,
   'VALUE_TYPE' => 'WORK',
]);
Если блог был полезным, можете угостить меня "чашечкой кофе" :)

Сбер по номеру телефона +7 (953) 585-13-09 Вероника.
Спасибо!