- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/userfield/datamodifiers/element.php
- Класс: Bitrix\Crm\UserField\DataModifiers\Element
- Вызов: Element::setProducts
static function setProducts(array &$result, array $params, $userPermissions): void
{
if(in_array('PRODUCT', $params['ENTITY_TYPE'], true))
{
$result['ENTITY_TYPE'][] = 'product';
$selectFields = ['ID', 'NAME', 'PRICE', 'CURRENCY_ID'];
$pricesSelect = $vatsSelect = [];
$select = CCrmProduct::DistributeProductSelect(
$selectFields,
$pricesSelect,
$vatsSelect
);
$products = CCrmProduct::GetList(
['ID' => 'DESC'],
[],
$select,
self::ELEMENTS_LIMIT
);
$productsList = $productsId = [];
while($product = $products->Fetch())
{
foreach($pricesSelect as $fieldName)
{
$product[$fieldName] = null;
}
foreach($vatsSelect as $fieldName)
{
$product[$fieldName] = null;
}
$productsId[] = $product['ID'];
$productsList[$product['ID']] = $product;
}
CCrmProduct::ObtainPricesVats(
$productsList,
$productsId,
$pricesSelect,
$vatsSelect
);
unset($productsId, $pricesSelect, $vatsSelect);
foreach($productsList as $product)
{
$product['SID'] = ($result['PREFIX'] === 'Y' ? 'PROD_' . $product['ID'] : $product['ID']);
$isSelected = self::getIsSelectedValue($result, $params, $product);
self::removeItemFromResultList($result, $params, $product);
$result['ELEMENT'][] = [
'title' => $product['NAME'],
'desc' => CCrmProduct::FormatPrice($product),
'id' => $product['SID'],
'url' => CComponentEngine::MakePathFromTemplate(
COption::GetOptionString('crm', 'path_to_product_show'),
['product_id' => $product['ID']]
),
'type' => 'product',
'selected' => $isSelected
];
}
unset($productsList);
}
}