Добавление или обновление реквизитов контакта

Этот PHP-код позволяет добавлять новые реквизиты для контакта в Битрикс24 или обновлять существующие, если они уже есть.

$ENTITY_ID = "{{ID}}"; // ID Сущности (Контакта или Компании)
$ENTITY_TYPE_ID = '3'; // ID Типа Сущности: 3 - Контакт, 4 - Компания
$PRESET_ID = '5'; // ID Шаблона Реквизитов (по умолчанию): Организация - 1, ИП - 3, Физ. лицо - 5
$IndexRQ = '12345'; // Индекс
$CountryRQ = 'Страна'; // Страна
$CityRQ = 'Город'; // Город
$StreetRQ = 'Улица, номер дома'; // Улица, номер дома
  
//Задаем переменные только для почтового индекса, города и страны  
$arRequisite["ADDRESS_STREET_NAME"] = $StreetRQ;
$arRequisite["ADDRESS_HOUSE"] = "";
$arRequisite["ADDRESS_BUILDING"] = "";
$arRequisite["ADDRESS_FLAT"] = "";
$arRequisite["ADDRESS_REGION_NAME"] = $CityRQ;
$arRequisite["ADDRESS_INDEX"] = $IndexRQ;
  
$requisite = new \Bitrix\Crm\EntityRequisite();
$requisiteList = $requisite->getList([
    'filter' => [
        'ENTITY_ID' => $ENTITY_ID,
        'ENTITY_TYPE_ID' => $ENTITY_TYPE_ID,
        'PRESET_ID' => $PRESET_ID
    ],
    'select' => ['ID']
])->fetchAll();
  
$requisiteId = null;
$operationStatus = false;

if (!empty($requisiteList)) {
    $requisiteId = $requisiteList[0]['ID'];
    $fields['ENTITY_ID'] = $ENTITY_ID;
    $fields['ENTITY_TYPE_ID'] = $ENTITY_TYPE_ID;
    $fields['PRESET_ID'] = $PRESET_ID;
    $fields['NAME'] = "{{Contact Name}}";
    $fields['SORT'] = 500;
    $fields['ACTIVE'] = 'Y';
    $updateResult = $requisite->update($requisiteId, $fields);
    if ($updateResult->isSuccess()) {
        $operationStatus = true;
    } else {
        $this->WriteToTrackingService("ОШИБКА: Не удалось обновить реквизит. " . implode(', ', $updateResult->getErrorMessages()));
    }
} else {
    $fields['ENTITY_ID'] = $ENTITY_ID;
    $fields['ENTITY_TYPE_ID'] = $ENTITY_TYPE_ID;
    $fields['PRESET_ID'] = $PRESET_ID;
    $fields['NAME'] = "{{Contact Name}}";
    $fields['SORT'] = 500;
    $fields['ACTIVE'] = 'Y';
    $addResult = $requisite->add($fields);
    if ($addResult->isSuccess()) {
        $requisiteId = $addResult->getId();
        $operationStatus = true;
    } else {
        $this->WriteToTrackingService("ОШИБКА: Не удалось добавить реквизит. " . implode(', ', $addResult->getErrorMessages()));
    }
}
  
$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable("RequisiteID", $requisiteId);
$rootActivity->SetVariable("RequisiteOperationStatus", $operationStatus);
  
if ($requisiteId > 0 && $operationStatus) {
    $address = new \Bitrix\Crm\EntityAddress();
    $addressResult = $address->register(8, $requisiteId, 6, array(
        "ADDRESS_1" => $arRequisite["ADDRESS_STREET_NAME"],
        "ADDRESS_2" => "",
        "CITY" => $arRequisite["ADDRESS_REGION_NAME"],
        "POSTAL_CODE" => $arRequisite["ADDRESS_INDEX"],
        "COUNTRY" => $CountryRQ
    ));
    if (!$addressResult->isSuccess()) {
        $this->WriteToTrackingService("ОШИБКА: Не удалось обновить/добавить адрес реквизита. " . implode(', ', $addressResult->getErrorMessages()));
    }
}

Удаление всех реквизитов контакта

Данный скрипт позволяет полностью удалить все реквизиты, привязанные к указанному контакту в Битрикс24.

$ENTITY_ID = "{{ID}}";

$requisite = new \Bitrix\Crm\EntityRequisite();
$requisiteList = $requisite->getList([
    'filter' => [
        'ENTITY_ID' => $ENTITY_ID,
        'ENTITY_TYPE_ID' => '3'
    ],
    'select' => ['ID']
])->fetchAll();

$requisiteDeleteStatus = true;
$deletedRequisiteCount = 0;

if (!empty($requisiteList)) {
    foreach ($requisiteList as $requisiteItem) {
        $requisiteId = $requisiteItem['ID'];
        $deleteResult = $requisite->delete($requisiteId);
        if ($deleteResult->isSuccess()) {
            $deletedRequisiteCount++;
        } else {
            $requisiteDeleteStatus = false;
            $this->WriteToTrackingService("ОШИБКА: Не удалось удалить реквизит ID: " . $requisiteId . ". " . implode(', ', $deleteResult->getErrorMessages()));
        }
    }
}

$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable("RequisiteDeleteStatus", $requisiteDeleteStatus);
$rootActivity->SetVariable("DeletedRequisiteCount", $deletedRequisiteCount);