Услуги профессионального Битрикс-программиста

Аналитика api bitrix24 коробка


Для информации: компонент, который в карточке crm выводит поле сквозная аналитика crm.tracking.entity.details
таблицы:
- b_crm_tracking_source - здесь содержатся ID ваших источников сквозной аналитики
- b_crm_tracking_trace_entity - здесь задается привязка сущности к источнику сквозной аналитики
- b_crm_tracking_trace - здесь нужно создать запись о том, что есть переход от источника сквозной аналитики. Затем этот ID будет использоваться в привязке к сущности в таблице b_crm_tracking_trace_entity
получить список источников (справочник)
$arSources = [];
$dbRow = CCrmStatus::GetList(['SORT'=>'asc'], ['ENTITY_ID'=>'SOURCE'],["ID","STATUS_ID","NAME"]);
while ($row = $dbRow->fetch()) {
    $arSources[$row["STATUS_ID"]] = $row["NAME"];
}
получить список сквозной аналитики
$arAnalytics = Bitrix\Crm\Tracking\Internals\SourceTable::getList([
    'select' => [
        'ID', 'NAME'
    ],
    'filter' => [
        //'=ACTIVE' => 'Y'
    ],
    'cache' => ['ttl' => 3600],
])->fetchAll();
получить сквозную аналитику у лида
if($arTracking = Bitrix\Crm\Tracking\Internals\TraceTable::getTraceByEntity(CCrmOwnerType::Lead, $leadId)){   
   $traceId = $arTracking["SOURCE_ID"];
}
получить источник у лида
$arFilter = array(
   "ID"=>31718,  //ID лида 
   "CHECK_PERMISSIONS"=>"N",
);
$arSelect = array(
   "ID",
   "SOURCE_ID",  
);            
$res = CCrmLead::GetListEx(Array(), $arFilter, $arSelect);
if($row = $res->Fetch()){
   $sourceId = $row["SOURCE_ID"];
}
обновить сквозную аналитику
апи пока нет, только напрямую править базу
if($trackingId = Bitrix\Crm\Tracking\Internals\TraceTable::getTraceIdByEntity(CCrmOwnerType::Lead, $row["ID"])){
//обновить
      // echo $trackingId."<br>";
       $DB->StartTransaction();
       $strSql = "UPDATE b_crm_tracking_trace SET SOURCE_ID=29 WHERE ID=".$trackingId." order by DATE_CREATE desc limit 1;"; //sql запрос
       $strSql = $DB->ForSql($strSql); //Подготавливает строку (заменяет кавычки и прочее) для вставки в SQL запрос
       $res1 = $DB->Query($strSql);
       $DB->Commit();
}
else{
//добавить

}
получить данные по расходам в кабинетах гугл и яндекс
use Bitrix\Main\Type\Date;\Bitrix\Main\Loader::includeModule('seo');

$r = \Bitrix\Seo\Analytics\Service::getAccount('yandex');
$r = $r->getExpenses(null, new Date('01.05.2021'), new Date('05.05.2021'));
$data = $r->getData(); 
print_R($data['expenses']->toArray());
получить данные по расходам, которые были внесены вручную
\Bitrix\Main\Loader::includeModule('crm');
use Bitrix\Crm\Tracking;
      $list = Tracking\Internals\ExpensesPackTable::getList([
         'select' => [
            'ID', 'DATE_INSERT', 'SOURCE_ID', 'DATE_FROM', 'DATE_TO',
            'ACTIONS', 'EXPENSES', 'CURRENCY_ID', 'COMMENT'
         ],
         'filter' => [],
         'limit' => 10,
         'count_total' => false
      ]);
while ($arRs = $list->Fetch()) 
{ 
print_r($arRs);
}
все лиды получить по аналитикам
// Все лиды по аналитикам
global $DB;

$sql = "SELECT b_crm_tracking_trace_entity.ENTITY_ID as LEAD_ID, b_crm_tracking_trace.SOURCE_ID as ANALYTIC_ID FROM b_crm_tracking_trace_entity, b_crm_tracking_trace WHERE b_crm_tracking_trace_entity.TRACE_ID = b_crm_tracking_trace.ID AND b_crm_tracking_trace_entity.ENTITY_TYPE_ID=1";
$sql = $DB->ForSql($sql); //Подготавливает строку (заменяет кавычки и прочее) для вставки в SQL запрос

$res = $DB->Query($sql); //выполняет запрос SELECT,INSERT,DELETE,UPDATE
$arResult['LEADS_BY_ANALYTICS'] = [];
while ($row = $res->Fetch()){
  $arResult['LEADS_BY_ANALYTICS'][$row['ANALYTIC_ID']][] = $row['LEAD_ID'];
}