• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/update/admingridoption.php
  • Класс: BitrixIblockUpdateAdminGridOption
  • Вызов: AdminGridOption::showProductField
static function showProductField(): void
{
	$crmCatalogId = CCrmCatalog::GetDefaultID();

	if ($crmCatalogId === 0)
	{
		return;
	}

	$tablePrefix = 'tbl_product_list_';
	$listId = 'CRM_PRODUCT_CATALOG.' . $crmCatalogId;

	if (CatalogConfigState::isProductCardSliderEnabled())
	{
		$listId .= '.NEW';
	}

	$tableId = $tablePrefix . md5($listId);

	$productGridOptions = new BitrixMainGridOptions($tableId);
	$visibleColumns = $productGridOptions->GetVisibleColumns();

	if (empty($visibleColumns))
	{
		return;
	}

	$hasProductField = in_array('CATALOG_PRODUCT', $visibleColumns, true);
	$hasMorePhotoField = in_array('MORE_PHOTO', $visibleColumns, true);

	$oldNameFieldIndex = array_search('NAME', $visibleColumns, true);

	if ($hasProductField)
	{
		if ($oldNameFieldIndex !== false)
		{
			unset($visibleColumns[$oldNameFieldIndex]);
		}
		elseif ($hasMorePhotoField)
		{
			return;
		}
	}
	else
	{
		if ($oldNameFieldIndex !== false)
		{
			$visibleColumns[$oldNameFieldIndex] = 'CATALOG_PRODUCT';
		}
		else
		{
			array_unshift($visibleColumns, 'CATALOG_PRODUCT');
		}
	}

	if (!$hasMorePhotoField)
	{
		$catalogProductFieldIndex = array_search('CATALOG_PRODUCT', $visibleColumns, true);
		$visibleColumnsBefore = array_slice($visibleColumns, 0, $catalogProductFieldIndex + 1);
		$visibleColumnsAfter = array_slice($visibleColumns, $catalogProductFieldIndex + 1);
		$visibleColumns = array_merge($visibleColumnsBefore, ['MORE_PHOTO'], $visibleColumnsAfter);
	}

	$productGridOptions->SetVisibleColumns($visibleColumns);
}