Всем привет!
Добавлю свои "пять копеек" к вариантам кастомизации коробочного Битрикс24. Недавно бизнес-заказчик попросил добавить в список компаний CRM столбец с последним комментарием в карточке. Кастомизировать JavaScript будет непросто. Снимать с поддержки шаблон компонента crm.company.list очень не хотелось. Можно применить хак, описанный в :
template.php
Теперь если добавить комментарий:
То его можно будет увидеть в списке:
Исходный код решения можно посмотреть на .
Добавлю свои "пять копеек" к вариантам кастомизации коробочного Битрикс24. Недавно бизнес-заказчик попросил добавить в список компаний CRM столбец с последним комментарием в карточке. Кастомизировать JavaScript будет непросто. Снимать с поддержки шаблон компонента crm.company.list очень не хотелось. Можно применить хак, описанный в :
- cоздать для шаблон компонента новый каталог /local/templates/.default/components/bitrix/crm.company.list/.default
- cоздать в этом каталоге файл result_modifier.php и template.php.
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) {
die();
}
$this->__file = '/bitrix/components/bitrix/crm.company.list/templates/.default/template.php';
$this->__folder = '/bitrix/components/bitrix/crm.company.list/templates/.default';
// Добавить новый столбец 'Последний комментарий'
$arResult['HEADERS'][] = [
'id' => 'CUSTOM_VIRTUAL_COMMENT',
'name' => 'Последний комментарий',
'sort' => false,
'editable' => false,
];
// Заполнить значениями новый столбец 'Последний комментарий'
foreach ($arResult['COMPANY'] as $id => &$company) {
$result = \Bitrix\Crm\Timeline\Entity\TimelineTable::query()
->addSelect('COMMENT')
->registerRuntimeField('binding', [
'data_type' => '\Bitrix\Crm\Timeline\Entity\TimelineBindingTable',
'reference' => [
'=this.ID' => 'ref.OWNER_ID',
],
'join_type' => 'inner',
])
->where('binding.ENTITY_ID', $id)
->where('binding.ENTITY_TYPE_ID', \CCrmOwnerType::Company)
->whereNotNull('COMMENT')
->setOrder(['CREATED' => 'DESC'])
->setLimit(1)
->exec()
->fetch()
;
$company['CUSTOM_VIRTUAL_COMMENT'] = $result['COMMENT'];
}
|
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) {
die();
}
|
То его можно будет увидеть в списке:
Исходный код решения можно посмотреть на .
: