Bitrix24 доступ к сделкам при помощи кода
Столкнулся с задачей - нужно проверять наличие в СРМ Битрикс сделки, созданной в сторонней системе. При открытии одной из страниц в Битрикс я забираю список идентификаторов сделок созданных сегодня из сторонней системы при помощи js (ajax). В ответ получаю список ID и далее по каждому id нужно в Битриксе проверить - создана ли сделка. Далее нужно создать отсутствующие.
Не могу найти информацию как корректно внутри Битрикса получить список сделок, список полей в сделке и как создать сделку при помощи кода
Подскажите, какими способами можно в Битриксе кодом получить сделки и данные по ним и как можно создать новую сделку?
Ответы (1 шт):
Это можно делать с помощью обращения к Rest API битрикс24.
Оставлю ссылку на документацию Rest API, методы которые вас интересуют: crm.deal.add
, crm.deal.fields
, crm.deal.get
.
Можете протестировать, что будете получать в результате, с помощью Postman.
Пример вызова метода crm.deal.add
с помощью JavaScript:
var current = new Date();
var nextMonth = new Date();
nextMonth.setMonth(current.getMonth() + 1);
var date2str = function(d)
{
return d.getFullYear() + '-' + paddatepart(1 +
d.getMonth()) + '-' + paddatepart(d.getDate()) + 'T' +
paddatepart(d.getHours()) + ':' + paddatepart(d.getMinutes()) +
':' + paddatepart(d.getSeconds()) + '+03:00';
};
var paddatepart = function(part)
{
return part >= 10 ? part.toString() : '0' + part.toString();
};
BX24.callMethod(
"crm.deal.add",
{
fields:
{
"TITLE": "Плановая продажа",
"TYPE_ID": "GOODS",
"STAGE_ID": "NEW",
"COMPANY_ID": 3,
"CONTACT_ID": 3,
"OPENED": "Y",
"ASSIGNED_BY_ID": 1,
"PROBABILITY": 30,
"CURRENCY_ID": "USD",
"OPPORTUNITY": 5000,
"CATEGORY_ID": 5,
"BEGINDATE": date2str(current),
"CLOSEDATE": date2str(nextMonth)
},
params: { "REGISTER_SONET_EVENT": "Y" }
},
function(result)
{
if(result.error())
console.error(result.error());
else
console.info("Создана сделка с ID " + result.data());
}
);
Пример кода с помощью PHP cURL:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://your.domain/rest/id_user/web-hook/lists.get?IBLOCK_TYPE_ID=lists',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;?>
Для этого надо будет зарегистрировать свой веб-хук в битрикс24.
Однако помните, что при работе с коробочной версией битрикса нужно использовать для JavaScript другую библиотеку, иначе будет ошибка вида: BX24 is not defined
.
В этом случае используем другой код, используя просто BX
:
BX.ready(function() {
var params = {
'IBLOCK_TYPE_ID': 'lists',
'IBLOCK_CODE': '...',
'FILTER': {
//...
}
};
BX.rest.callMethod(
'lists.element.get',
params,
function(result) {
if (result.error()) {
alert("Error: " + result.error());
} else {
console.log(result.data());
}
});