Как правильно ввести адрес в Контакте Битрикс 24?

Как добавить адрес в реквизиты, используя класс "\Bitrix\Crm\EntityRequisite()"? Я пытался использовать метод "add", но не могу понять, почему адрес не добавляется. Если использовать метод "update" и предварительно создать запись в реквизите с каким-либо значением и ссылкой на его ID, все работает хорошо. В методе "add" вызывается другая функция другого класса, которая создает экземпляр реквизита и передает адрес. Однако, эта функция всегда возвращает "0", и ничего не происходит дальше. Я уже перечитал все связанные классы, но не могу понять, в чем причина.  Вот мой код:

CModule::IncludeModule("crm");
$arRQAddr['6'] = [
    'ADDRESS_1' => 'ул. Семашко, д.1',
    'ADDRESS_2' => '',
    'POSTAL_CODE' => '355029',
    'PROVINCE' => 'Ставропольский край',
    'CITY' => 'город Ставрополь',
    'COUNTRY' => "Россия"
];
$fields = [
    'ENTITY_TYPE_ID' => '3',
    'ENTITY_ID' => '144333',
    'ADDRESS_ONLY' => "Y",
    'RQ_ADDR' => $arRQAddr,
];

$requisite = new \Bitrix\Crm\EntityRequisite();
$res = $requisite->add($fields);
  • 13 октября 2023 г. 23:18
Ответы на вопрос 2
Правильный способ добавления адреса в реквизиты в Контакте Битрикс 24 с использованием класса "\Bitrix\Crm\EntityRequisite()" выглядит следующим образом:

```php
// Подключение необходимого модуля
CModule::IncludeModule("crm");

// Создание массива с данными адреса
$arRQAddr['6'] = [
    'ADDRESS_1' => 'ул. Семашко, д.1',
    'ADDRESS_2' => '',
    'POSTAL_CODE' => '355029',
    'PROVINCE' => 'Ставропольский край',
    'CITY' => 'город Ставрополь',
    'COUNTRY' => "Россия"
];

// Создание массива с полями реквизитов
$fields = [
    'ENTITY_TYPE_ID' => '3', // Тип сущности (3 - Контакт)
    'ENTITY_ID' => '144333', // ID сущности
    'ADDRESS_ONLY' => "Y", // Флаг, указывающий, что нужно добавить только адрес
    'RQ_ADDR' => $arRQAddr, // Данные адреса
];

// Создание экземпляра класса EntityRequisite
$requisite = new \Bitrix\Crm\EntityRequisite();

// Добавление адреса в реквизиты
$res = $requisite->add($fields);
```

Однако, есть одна важная деталь в вашем коде: параметр 'ENTITY_TYPE_ID' должен быть строкой, а не числом. Поэтому следует исправить строку `'ENTITY_TYPE_ID' => '3',` на `'ENTITY_TYPE_ID' => 'CONTACT',` или `'ENTITY_TYPE_ID' => 'DEAL',` в зависимости от типа сущности, к которой вы добавляете реквизиты.

Если все остальное в коде корректно, то после вызова метода `add` в переменной `$res` будет содержаться результат операции: "0" в случае ошибки или ID вновь созданного реквизита в случае успешного добавления. Если возвращается "0", можно попробовать использовать метод `GetLastError()` для получения более подробной информации об ошибке:

```php
if ($res === false) {
    $error = $requisite->GetLastError();
    // Обработка ошибки
} else {
    $requisiteID = $res;
    // Обработка успешного добавления
}
```

Также обратите внимание, что перед вызовом метода `add` необходимо убедиться, что модуль CRM уже подключен, как это сделано в первой строке кода.
CModule::IncludeModule("crm");

$arRQAddr['6'] = [
    'ADDRESS_1' => 'ул. Семашко, д.1',
    'ADDRESS_2' => '',
    'POSTAL_CODE' => '355029',
    'PROVINCE' => 'Ставропольский край',
    'CITY' => 'город Ставрополь',
    'COUNTRY' => "Россия"
];

$fields = [
    'PRESET_ID' => 1,
    'NAME' => 'Организация',
    'ACTIVE' => 'Y',
    'ENTITY_TYPE_ID' => '3',
    'ENTITY_ID' => '144333',
    'ADDRESS_ONLY' => "Y",
    'RQ_ADDR' => $arRQAddr,
];

$requisite = new \Bitrix\Crm\EntityRequisite();
$res = $requisite->add($fields);
Похожие вопросы