- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/component/gridvariationform.php
- Класс: BitrixCatalogComponentGridVariationForm
- Вызов: GridVariationForm::getColumnValues
public function getColumnValues(bool $allowDefaultValues = true): array
{
$values = $this->getShowedValues($allowDefaultValues);
foreach ($this->getGridHeaders() as $description)
{
$name = $description['id'];
if (!isset($values[$name]))
{
continue;
}
$currentValue = $values[$name];
switch ($description['type'])
{
case 'string':
case 'text':
if (!empty($values[$name]))
{
$values[$name] = HtmlFilter::encode($values[$name]);
}
break;
case 'number':
$values[$name] = (float)($values[$name] ?: 0);
break;
case 'multilist':
if (is_array($currentValue))
{
$formatted = [];
$items = [];
foreach ($description['data']['items'] as $item)
{
$items[$item['VALUE']] = $item['HTML'] ?? HtmlFilter::encode($item['NAME']);
}
foreach ($currentValue as $multipleItemValue)
{
$formatted[] = $items[$multipleItemValue];
}
$values[$name] = $formatted;
}
break;
case 'boolean':
$code = '';
if (
$description['id'] === static::formatFieldName('ACTIVE')
|| $description['id'] === static::formatFieldName('AVAILABLE')
|| $description['id'] === static::formatFieldName('VAT_INCLUDED')
)
{
$code = $currentValue === 'Y' ? 'YES' : 'NO';
}
else
{
$code = ($currentValue !== '') ? 'YES' : 'NO';
}
$values[$name] = Loc::getMessage('CATALOG_PRODUCT_CARD_VARIATION_GRID_VALUE_' . $code);
break;
case 'list':
if (isset($description['editable']['items']))
{
$values[$name] = HtmlFilter::encode($description['editable']['items'][$currentValue] ?? '');
break;
}
foreach ($description['data']['items'] as $item)
{
if ($currentValue === $item['VALUE'])
{
$values[$name] = HtmlFilter::encode($item['NAME'] ?? '');
break;
}
}
break;
case 'custom':
$values[$name] = $values[$description['data']['view']];
break;
case 'user':
$values[$name] = HtmlFilter::encode($values[$name . '_FORMATTED_NAME'] ?? '');
break;
case 'readOnlyVat':
$currentVat = (int)$values[$name];
$values[$name] = '';
if ($currentVat > 0)
{
foreach ($this->getVats() as $vat)
{
if ((int)$vat['ID'] === $currentVat)
{
$values[$name] = htmlspecialcharsbx($vat['NAME']);
break;
}
}
}
break;
case 'barcode':
$barcodes =
is_array($values[$name])
? array_column($values[$name], 'BARCODE')
: null
;
$values[$name] = $barcodes ? htmlspecialcharsbx(implode(', ', $barcodes)) : '';
break;
case 'money':
if (isset($description['data']['isProductProperty']) && $description['data']['isProductProperty'])
{
$separatedValues = IblockMoneyProperty::getSeparatedValues($values[$name]);
$amount = (float)($separatedValues['AMOUNT'] . '.' . $separatedValues['DECIMALS']);
$currency = $separatedValues['CURRENCY'];
$values[$name] = CCurrencyLang::CurrencyFormat($amount, $currency, true);
}
break;
}
if (is_array($values[$name]))
{
$values[$name] = implode(', ', $values[$name]);
}
}
return $values;
}