• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/component/gridvariationform.php
  • Класс: BitrixCatalogComponentGridVariationForm
  • Вызов: GridVariationForm::setGridSettings
public function setGridSettings(string $settingId, $selected, array $currentHeaders = []): AjaxJson
{
	$headers = static::getHeaderIdsBySettingId($settingId);

	if (!empty($headers))
	{
		$options = new BitrixMainGridOptions($this->getVariationGridId());
		$allUsedColumns = $options->getUsedColumns();

		if (empty($allUsedColumns))
		{
			$allUsedColumns = $currentHeaders;
		}

		if ($selected === 'true')
		{
			// sort new columns by default grid column sort
			$defaultHeaders = array_column($this->getGridHeaders(), 'id');
			$currentHeadersInDefaultPosition = array_values(
				array_intersect($defaultHeaders, array_merge($allUsedColumns, $headers))
			);
			$headers = array_values(array_intersect($defaultHeaders, $headers));

			foreach ($headers as $header)
			{
				$insertPosition = array_search($header, $currentHeadersInDefaultPosition, true);
				array_splice($allUsedColumns, $insertPosition, 0, $header);
			}
		}
		else
		{
			$allUsedColumns = array_diff($allUsedColumns, $headers);
		}

		$options->setColumns(implode(',', $allUsedColumns));
		$options->save();
	}

	return AjaxJson::createSuccess();
}