On this page
description
Работа с реквизитами контактов
Примеры работы с реквизитами контактов в Битрикс24: добавление, обновление и удаление.
Добавление или обновление реквизитов контакта
Этот 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);