\Bitrix\Main\Loader::requireModule('crm');
/**
* Телефон который будем искать
* @var string
*/
$phone = '2131164';
/**
* Список всех ID лидов с этим телефонным номером
* @var int[]
*/
$leadIds = [];
$adapter = \Bitrix\Crm\EntityAdapterFactory::create([
'FM' => [
'PHONE' => [
['VALUE' => $phone]
]
]
],
\CCrmOwnerType::Lead
);
$dups = (new \Bitrix\Crm\Integrity\ContactDuplicateChecker())
->findDuplicates(
$adapter,
new \Bitrix\Crm\Integrity\DuplicateSearchParams([
'FM.PHONE'
])
);
foreach($dups as &$dup)
{
if(!($dup instanceof \Bitrix\Crm\Integrity\Duplicate))
{
continue;
}
$entities = $dup->getEntities();
if(!(is_array($entities) && !empty($entities)))
{
continue;
}
//Each entity type limited by 50 items
foreach($entities as &$entity)
{
if(!($entity instanceof \Bitrix\Crm\Integrity\DuplicateEntity))
{
continue;
}
if ( $entity->getEntityTypeID() != \CCrmOwnerType::Lead)
{
continue;
}
$leadIds[] = $entity->getEntityID();
}
}
AddEventHandler("crm", "OnBeforeCrmLeadAdd", "CheckOnBeforeCrmLeadAdd");
AddEventHandler("crm", "OnAfterCrmLeadAdd", "CheckOnBeforeCrmLeadAdd");
AddEventHandler("crm", "OnAfterExternalCrmLeadAdd", "CheckOnBeforeCrmLeadAdd");
function CheckOnBeforeCrmLeadAdd(&$arFields) {
file_put_contents($_SERVER["DOCUMENT_ROOT"]."/log_lead.log",print_r($arFields,true)."\n",FILE_APPEND);
}
\Bitrix\Main\Loader::IncludeModule('crm');
$obLead = new \CCrmLead(false);
$ID = $obLead->Add(
$leadfields = ['TITLE'=>'test'],
true,
array("REGISTER_SONET_EVENT" => true, "DISABLE_USER_FIELD_CHECK" => true)
);
Как вызывать методы rest api Bitrix24 коробки из блока php-кода в бизнес-процессе?
Или как например выполните те же действия через методы классов https://dev.1c-bitrix.ru/api_help/crm/index.php
На сколько такое решение приемлимо?
Есть ли какие то более правильные, гибкие архитектурные решения?
Конечно интересует здесь и вопросы ИБ.
Тогда вопрос, зачем делать такую обертку если я могу тупо тянуть данные из $_POST напрямую?
что старое нужно удалить, как это лучше сделать?
Может можно вести сразу 2 корпоративных портала на одной админке, в коробочной версии.
А можно ли связать с задачами?
Как можно обновить через API уже существующий лид в Битрикс24?
Проблема в том что каждый раз когда пользователь редактирует свою заявку на стороне БУС в Битрикс24 создается новый лид. То есть один и тоже пользователь создает несколько лидов, в то время как нужно чтобы при изменении данных по заявке просто обновлялась информация лида.
Как правильно интегрировать веб-форму на 1C Битрикс (БУС) и сервис Битрикс24 так чтобы при редактировании новой заявки на стороне БУС можно было обновлять уже существующий лид?
Если потребуется использовать Webhook то нужны ли дополнительные настройки на стороне Битрикс24 и на стороне сервера?
Можно ли задать права доступа к сущности лида в зависимости от пользовательского поля битрикс.?
Как указать в запросе, что этот индекс должен изменяться просто динамически?
'halt' => 0,
'cmd' => [
'deals' => 'crm.deal.list?filter[STAGE_ID]=PREPAYMENT_INVOICE&filter[>ID]=0&limit=10',
'products_0' => 'crm.deal.productrows.get?id=$result[deals][0][ID]',
'products_1' => 'crm.deal.productrows.get?id=$result[deals][1][ID]',
...
'products_8' => 'crm.deal.productrows.get?id=$result[deals][8][ID]',
'products_9' => 'crm.deal.productrows.get?id=$result[deals][9][ID]',
]
'halt' => 0,
'cmd' => [
'deals' => 'crm.deal.list?filter[STAGE_ID]=PREPAYMENT_INVOICE&filter[>ID]=123456&limit=10',
'products_0' => 'crm.deal.productrows.get?id=$result[deals][0][ID]',
'products_1' => 'crm.deal.productrows.get?id=$result[deals][1][ID]',
...
'products_8' => 'crm.deal.productrows.get?id=$result[deals][8][ID]',
'products_9' => 'crm.deal.productrows.get?id=$result[deals][9][ID]',
]