Выборка дел в таймлайне

Пример выборки дел в таймлайне компании с известным ID

$arFilter = [
	'BINDINGS' => [
		[
			'OWNER_ID' => $ID,
			'OWNER_TYPE_ID' => CCrmOwnerType::Company
		],
	],
];

$arDB = CCrmActivity::GetList(
  	$arOrder = [], 
  	$arFilter, 
  	$arGroupBy = false, 
  	$arNavStartParams = false, 
  	$arSelectFields = [], 
  	$arOptions = []
);
$rows = [];
while($ar = $arDB->fetch()){
	$rows[] = $ar;
}
print_r($rows);

Выборка связей в таймлайне

\Bitrix\Main\Loader::includeModule('crm');
$ID = 123365;

$arDB = \Bitrix\Crm\Timeline\Entity\TimelineTable::getList([
        'filter' => [
            'BINDINGS.ENTITY_ID' => $ID,
			'BINDINGS.ENTITY_TYPE_ID' => CCrmOwnerType::Company
        ],
        'order' => [],
        'limit' => 10,
        'select' => [
            'BINDINGS.ENTITY_ID', 'BINDINGS.ENTITY_TYPE_ID', 'BINDINGS.IS_FIXED', 'BINDINGS.OWNER_ID', 
			'ID', 'COMMENT', 'TYPE_ID', 'TYPE_CATEGORY_ID', 'CREATED',
			'AUTHOR_ID', 
			'ASSOCIATED_ENTITY_ID',
			'ASSOCIATED_ENTITY_TYPE_ID',
			'SETTINGS'
        ]
]);

$rows = [];
foreach($arDB as $ar){
	$rows[] = $ar;
}
print_r($rows);

Вывод всех сообщений таймлайна

\Bitrix\Main\Loader::includeModule('crm');
use Bitrix\Crm;
use Bitrix\Crm\Timeline\TimelineType;
use Bitrix\Crm\Timeline\Entity\TimelineTable;
use Bitrix\Crm\Timeline\Entity\TimelineBindingTable;
use Bitrix\Crm\Timeline\ActivityController;
use Bitrix\Crm\Timeline\TimelineEntry;
$ID = 123365;
$filter['BINDINGS'] = [
	['OWNER_TYPE_ID' => CCrmOwnerType::Company, 'OWNER_ID' => $ID]
];
$dbResult = \CCrmActivity::GetList(
	['DEADLINE' => 'ASC'],
	$filter,
	false,
	false,
	[
		'ID', 'OWNER_ID', 'OWNER_TYPE_ID',
		'TYPE_ID', 'PROVIDER_ID', 'PROVIDER_TYPE_ID', 'ASSOCIATED_ENTITY_ID', 'DIRECTION',
		'SUBJECT', 'STATUS', 'DESCRIPTION', 'DESCRIPTION_TYPE',
		'DEADLINE', 'RESPONSIBLE_ID'
	],
	['QUERY_OPTIONS' => ['LIMIT' => 100, 'OFFSET' => 0]]
);

$items = [];
while($fields = $dbResult->Fetch())
{
	$items[$fields['ID']] = ActivityController::prepareScheduleDataModel($fields);
}
print_r($items);

Хак - включение комментов

Если доступ к сделке закрыт, но нужно открыть возможность оставить комментарий и видеть таймлайн
// \local\components\bitrix\crm.timeline\templates\.default\template.php

BX.CrmTimelineManager.create(
				"",
				{
					ownerTypeId: ,
					ownerId: ,
					ownerInfo: ,
					userId: ,
					//readOnly: <?=$arResult['READ_ONLY'] ? 'true' : 'false'?>,
					readOnly: 'false',


т.е. добавить кусок readOnly: 'false', вместо условия в исходном коде.

Добавить комментарий

$resId = \Bitrix\Crm\Timeline\CommentEntry::create(
    [
        'TEXT' => $data[2],
        'SETTINGS' => [], 
        'AUTHOR_ID' => $assignedByID, //ID пользователя, от которого будет добавлен комментарий
        'BINDINGS' => [
        	['ENTITY_TYPE_ID' => CCrmOwnerType::Company, 'ENTITY_ID' => $id]
        ]
]);

Изменить комментарий - закрепить

$resultUpdating = Bitrix\Crm\Timeline\Entity\TimelineBindingTable::update(
	['OWNER_ID' => $resId, 'ENTITY_ID' => $id, 'ENTITY_TYPE_ID' => CCrmOwnerType::Company],
	['IS_FIXED' => 'Y']
);
Результат
$affected = $resultUpdating->getAffectedRowsCount();
(0)
Отправьте заявку сейчас

Начните проект сейчас

Оставить заявку