• Модуль: 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);
	}
}