CRM
Реквизиты CRM
Владелец реквизита, шаблон полей и создание через REST.
REST подходит для облака и коробки с доступным API. PHP-классы CRM относятся только к коробке.
Компания и реквизит — разные записи
У реквизита свой ID. В полях ENTITY_TYPE_ID и ENTITY_ID указаны тип и ID владельца — компании или контакта. PRESET_ID выбирает шаблон реквизитов; число 2 не является универсальным шаблоном для всех порталов.
Нужный шаблон найдите через crm.requisite.preset.list. Состав полей зависит от страны и шаблона. Банковские данные хранятся отдельно и ссылаются уже на ID реквизита.
Добавление реквизита компании
Пример для приложения с подключённым BX24.js. Замените 123 на ID компании, 7 — на ID её шаблона реквизитов. В примере создаётся запись без вымышленных налоговых номеров.
BX24.init(function () {
BX24.callMethod('crm.requisite.add', {
fields: {
ENTITY_TYPE_ID: 4,
ENTITY_ID: 123,
PRESET_ID: 7,
NAME: 'Основные реквизиты',
ACTIVE: 'Y'
}
}, function (result) {
if (result.error()) {
console.error(result.error());
return;
}
console.log('ID реквизита:', result.data());
});
});Поля RQ_* сопоставляйте с выбранным шаблоном. Сохранённое поле, отсутствующее в шаблоне, может не отображаться в форме.
Изменение и удаление
Для изменения используется crm.requisite.update с ID самого реквизита и массивом fields. Удаление выполняет crm.requisite.delete. Перед ним проверьте, не используется ли запись в документах и платёжных данных; совпадение названия не делает две записи взаимозаменяемыми.
В коробке есть класс EntityRequisite. Успех его изменяющего метода нельзя проверять приведением объекта к bool, а ID — приведением результата к int. Проверяйте контракт метода своей версии и его ошибки. REST-пример выше не требует обращения к внутренним PHP-классам.
Поиск организации по ИНН
Заполнение реквизитов по ИНН — обращение к отдельному сервису, а не свойство таблицы реквизитов. Доступность зависит от страны, сервиса и условий портала. Нельзя обещать такой поиск для любой коробки только по наличию класса Socialservices\Properties\Client.