Как получить адрес клиента из CRM
Scope:
crmКто может выполнять метод: пользователи с административным доступом к разделу CRM
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Адрес клиента может храниться в Битрикс:
- в пользовательском поле типа «адрес» любого объекта CRM. Чтобы получить адрес из поля, вызовите метод get или list для нужного типа объекта.
- в реквизитах контактов, компаний и лидов. В реквизитах в рамках одного поля
Адресможет храниться несколько адресов с указанием их типов. У одного клиента может быть записано несколько реквизитов.
Чтобы получить адрес клиента из реквизитов, последовательно выполните два метода:
1. Получаем реквизиты, связанные с контактом
Получение ID реквизита — необходимый шаг, так как адрес не имеет прямой привязки к контакту или компании. Адрес привязан к объекту реквизита.
Для получения реквизитов используем метод crm.requisite.list с фильтром:
- в
ENTITY_TYPE_IDукажем значение3— идентификатор для типа контакт. Для типа компании используйте идентификатор4 - в
ENTITY_ID— ID контакта, в примере2429. Получить ID можно методом crm.contact.list с фильтром по любому известному полю контакта. Чтобы получить ID компании, используйте crm.company.list. Если необходимо получить ID контакта или компании по номеру телефона или почте, используйте туториал «Поиск дубликатов по номеру телефона»
Как использовать примеры в документации
JS
PHP
Python
BX24.callMethod(
"crm.requisite.list",
{
filter: {
"ENTITY_TYPE_ID": "3",
"ENTITY_ID": "2429",
},
select: [
"ID",
"ENTITY_TYPE_ID",
"ENTITY_ID",
],
},
);
require_once('crest.php');
$result = CRest::call(
'crm.requisite.list',
[
'filter' => [
'ENTITY_TYPE_ID' => '3',
'ENTITY_ID' => '2429',
],
'select' => [
'ID',
'ENTITY_TYPE_ID',
'ENTITY_ID',
],
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
from b24pysdk import BitrixWebhook, Client
from b24pysdk.errors import BitrixAPIError
client = Client(
BitrixWebhook(
domain="your-domain.bitrix24.com",
webhook_token="user_id/webhook_key",
)
)
result = client.crm.requisite.list(
filter={
"ENTITY_TYPE_ID": "3",
"ENTITY_ID": "2429",
},
select=[
"ID",
"ENTITY_TYPE_ID",
"ENTITY_ID",
],
).response.result
Мы получили ID реквизита 361 — параметр, необходимый для следующего запроса.
Array
(
[result] => Array
(
[0] => Array
(
[ID] => 361
[ENTITY_TYPE_ID] => 3
[ENTITY_ID] => 2429
)
)
[total] => 1
)
2. Получаем адрес
Для получения адреса используем метод crm.address.list с фильтром:
- в
ENTITY_TYPE_IDукажем значение8— идентификатор для типа реквизит - в
ENTITY_ID— ID реквизита, полученный в предыдущем запросе, в примере361 - в
TYPE_ID— тип адреса, если необходимо получить конкретный. Например, тип адрес доставки —11, юридический адрес —6.
JS
PHP
Python
BX24.callMethod(
"crm.address.list",
{
filter: {
"ENTITY_TYPE_ID": 8,
"ENTITY_ID": 361,
"TYPE_ID": 11,
},
},
);
require_once('crest.php');
$result = CRest::call(
'crm.address.list',
[
'filter' => [
'ENTITY_TYPE_ID' => 8,
'ENTITY_ID' => 361,
'TYPE_ID' => 11,
],
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
result = client.crm.address.list(
filter={
"ENTITY_TYPE_ID": 8,
"ENTITY_ID": 361,
"TYPE_ID": 11,
}
).response.result
Мы получили данные адреса для доставки контакта.
Array
(
[result] => Array
(
[0] => Array
(
[TYPE_ID] => 11
[ENTITY_TYPE_ID] => 8
[ENTITY_ID] => 361
[ADDRESS_1] => Гранатный переулок, 10 c1
[ADDRESS_2] =>
[CITY] => Москва
[POSTAL_CODE] => 123001
[REGION] => Пресненский район
[PROVINCE] => Москва
[COUNTRY] => Россия
[COUNTRY_CODE] =>
[LOC_ADDR_ID] => 571
[ANCHOR_TYPE_ID] => 3
[ANCHOR_ID] => 2429
)
)
[total] => 1
)
Пример кода
JS
PHP
Python
var contactId = "ваш_контакт_ID_здесь"; // Замените на фактический ID контакта
// Метод для получения ID реквизита
BX24.callMethod(
"crm.requisite.list",
{
filter: {
"ENTITY_TYPE_ID": 3,
"ENTITY_ID": contactId
},
select: ["ID"]
},
function(requisiteResult) {
if (requisiteResult.error()) {
console.error(requisiteResult.error());
} else {
var requisites = requisiteResult.data();
if (requisites.length > 0) {
var requisiteId = requisites[0].ID;
console.log("Requisite ID:", requisiteId);
// Метод для получения адреса
BX24.callMethod(
"crm.address.list",
{
filter: {
"ENTITY_TYPE_ID": 8,
"ENTITY_ID": requisiteId,
"TYPE_ID": 11
}
},
function(addressResult) {
if (addressResult.error()) {
console.error(addressResult.error());
} else {
var addresses = addressResult.data();
if (addresses.length > 0) {
// Создаем таблицу для отображения адресов
var table = [];
addresses.forEach(function(address) {
table.push({
"Адрес": address.ADDRESS_1 || "Не указано",
"Город": address.CITY || "Не указано",
"Индекс": address.POSTAL_CODE || "Не указано",
"Страна": address.COUNTRY || "Не указано"
});
});
console.table(table);
} else {
console.log("Адрес для доставки не найден.");
}
}
}
);
} else {
console.log("Реквизит не найден.");
}
}
}
);
require_once('crest.php');
$contactId = 'ваш_контакт_ID_здесь'; // Замените на фактический ID контакта
// Метод для получения ID реквизита
$requisiteResult = CRest::call(
'crm.requisite.list',
[
'filter' => [
'ENTITY_TYPE_ID' => 3,
'ENTITY_ID' => $contactId
],
'select' => ['ID']
]
);
if (isset($requisiteResult['error'])) {
echo 'Error: ' . $requisiteResult['error_description'];
} else {
$requisites = $requisiteResult['result'];
if (count($requisites) > 0) {
$requisiteId = $requisites[0]['ID'];
echo 'Requisite ID: ' . $requisiteId . PHP_EOL;
// Метод для получения адреса
$addressResult = CRest::call(
'crm.address.list',
[
'filter' => [
'ENTITY_TYPE_ID' => 8,
'ENTITY_ID' => $requisiteId,
'TYPE_ID' => 11
]
]
);
if (isset($addressResult['error'])) {
echo 'Error: ' . $addressResult['error_description'];
} else {
$addresses = $addressResult['result'];
if (count($addresses) > 0) {
// Создаем таблицу для отображения адресов
echo '<table border="1">';
echo '<tr><th>Адрес</th><th>Город</th><th>Индекс</th><th>Страна</th></tr>';
foreach ($addresses as $address) {
echo '<tr>';
echo '<td>' . ($address['ADDRESS_1'] ?? 'Не указано') . '</td>';
echo '<td>' . ($address['CITY'] ?? 'Не указано') . '</td>';
echo '<td>' . ($address['POSTAL_CODE'] ?? 'Не указано') . '</td>';
echo '<td>' . ($address['COUNTRY'] ?? 'Не указано') . '</td>';
echo '</tr>';
}
echo '</table>';
} else {
echo 'Адрес для доставки не найден.';
}
}
} else {
echo 'Реквизит не найден.';
}
}
from b24pysdk import BitrixWebhook, Client
from b24pysdk.errors import BitrixAPIError
client = Client(
BitrixWebhook(
domain="your-domain.bitrix24.com",
webhook_token="user_id/webhook_key",
)
)
contact_id = "ваш_контакт_ID_здесь"
try:
requisites = client.crm.requisite.list(
filter={
"ENTITY_TYPE_ID": 3,
"ENTITY_ID": contact_id,
},
select=["ID"],
).response.result
except BitrixAPIError as error:
print(f"Ошибка: {error}")
else:
if requisites:
requisite_id = requisites[0]["ID"]
print(f"ID реквизита: {requisite_id}")
try:
addresses = client.crm.address.list(
filter={
"ENTITY_TYPE_ID": 8,
"ENTITY_ID": requisite_id,
"TYPE_ID": 11,
}
).response.result
except BitrixAPIError as error:
print(f"Ошибка: {error}")
else:
if addresses:
print("Адрес\tГород\tИндекс\tСтрана")
for address in addresses:
print(
"\t".join(
[
str(address.get("ADDRESS_1") or "Не указано"),
str(address.get("CITY") or "Не указано"),
str(address.get("POSTAL_CODE") or "Не указано"),
str(address.get("COUNTRY") or "Не указано"),
]
)
)
else:
print("Адрес для доставки не найден.")
else:
print("Реквизит не найден.")
Скопировано
Следующая