• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/discount/discountmanager.php
  • Класс: BitrixCatalogDiscountDiscountManager
  • Вызов: DiscountManager::fillEmptyProperties
static function fillEmptyProperties(array &$propertyValues, int $iblockId, array $itemIds, array $propertyIds): void
{
	if ($iblockId <= 0 || empty($itemIds) || empty($propertyIds))
	{
		return;
	}
	$propertyList = [];
	$iterator = IblockPropertyTable::getList([
		'select' => ['ID', 'PROPERTY_TYPE', 'MULTIPLE', 'USER_TYPE'],
		'filter' => ['=IBLOCK_ID' => $iblockId, '@ID' => $propertyIds]
	]);
	while ($row = $iterator->fetch())
	{
		$id = (int)$row['ID'];
		$multiple = ($row['MULTIPLE'] == 'Y');
		if ($multiple)
		{
			$row = $row
				+ [
					'VALUE_ENUM' => null,
					'VALUE_XML_ID' => null,
					'VALUE_SORT' => null,
					'VALUE' => false,
					'PROPERTY_VALUE_ID' => false,
					'DESCRIPTION' => false,
					'~DESCRIPTION' => false,
					'~VALUE' => false
				];
		}
		else
		{
			$row = $row
				+ [
					'VALUE_ENUM' => null,
					'VALUE_XML_ID' => null,
					'VALUE_SORT' => null,
					'VALUE' => '',
					'PROPERTY_VALUE_ID' => null,
					'DESCRIPTION' => '',
					'~DESCRIPTION' => '',
					'~VALUE' => '',
				];
		}
		if ($row['PROPERTY_TYPE'] == IblockPropertyTable::TYPE_LIST)
		{
			$row['VALUE_ENUM_ID'] = ($multiple ? false : null);
		}

		$propertyList[$id] = $row;
	}
	unset($row, $iterator);

	foreach ($itemIds as $id)
	{
		if (!empty($propertyValues[$id]))
		{
			continue;
		}
		$propertyValues[$id] = $propertyList;
	}
	unset($propertyList);
}