• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/component/baseform.php
  • Класс: BitrixCatalogComponentBaseForm
  • Вызов: BaseForm::getTableDescriptions
private function getTableDescriptions(array $tableMap): array
{
	$descriptions = [];

	$allowedFields = $this->getTableElementsWhiteList();

	/** @var ScalarField $field */
	foreach ($tableMap as $field)
	{
		$fieldName = $field->getName();

		if (!isset($allowedFields[$fieldName]))
		{
			continue;
		}

		$description = [
			'entity' => 'product',
			'name' => $this->prepareFieldName($fieldName),
			'originalName' => $fieldName,
			'title' => $field->getTitle(),
			'type' => $this->getFieldTypeByObject($field),
			'editable' => $this->isEditableField($field),
			'required' => $this->isRequiredField($field),
			'placeholders' => $this->getFieldPlaceholders($field),
			'defaultValue' => $field->getDefaultValue(),
			'optionFlags' => 1, // showAlways
		];

		if ($field instanceof EnumField)
		{
			if ($this->isSpecificCatalogField($fieldName))
			{
				$items = $this->getCatalogEnumFields($field->getName());
			}
			else
			{
				$items = $this->getCommonEnumFields($field);
			}

			$description['data']['items'] = $items;
		}

		if ($description['type'] === 'custom')
		{
			$description['data'] += $this->getCustomControlParameters($description['name']);
		}
		elseif ($description['type'] === 'user')
		{
			$description['data'] = [
				'enableEditInView' => false,
				'formated' => $description['name'] . '_FORMATTED_NAME',
				'position' => $description['name'] . '_WORK_POSITION',
				'photoUrl' => $description['name'] . '_PHOTO_URL',
				'showUrl' => 'PATH_TO_' . $description['name'],
				'pathToProfile' => 'PATH_TO_USER_PROFILE',
			];
		}
		elseif ($fieldName === 'MEASURE')
		{
			$measureList = [];
			$defaultMeasure = null;

			foreach ($this->getMeasures() as $measure)
			{
				$measureId = (int)$measure['ID'];
				$measureTitle = $measure['MEASURE_TITLE'];

				if (empty($measureTitle))
				{
					$measureTitle = CCatalogMeasureClassifier::getMeasureTitle($measure['CODE']);
				}

				$measureList[] = [
					'NAME' => HtmlFilter::encode($measureTitle),
					'VALUE' => $measureId,
				];

				if ($measure['IS_DEFAULT'] === 'Y')
				{
					$defaultMeasure = $measureId;
				}
			}

			$description['defaultValue'] = $defaultMeasure;
			$description['data']['items'] = $measureList;
			$description['type'] = 'list';
		}
		elseif ($fieldName === 'VAT_ID')
		{
			$defaultVat = $this->getDefaultVat();
			$description['defaultValue'] = $defaultVat['ID'];

			$vatList[] = [
				'VALUE' => $defaultVat['ID'],
				'NAME' => $defaultVat['NAME'],
			];

			if ($defaultVat['ID'] !== self::NOT_SELECTED_VAT_ID_VALUE && !Loader::includeModule('bitrix24'))
			{
				$vatList[] = [
					'VALUE' => self::NOT_SELECTED_VAT_ID_VALUE,
					'NAME' => Loc::getMessage("CATALOG_PRODUCT_CARD_VARIATION_GRID_NOT_SELECTED"),
				];
			}

			foreach ($this->getVats() as $vat)
			{
				if ($vat['RATE'] === $defaultVat['RATE'] && $vat['EXCLUDE_VAT'] === $defaultVat['EXCLUDE_VAT'])
				{
					continue;
				}

				$vatList[] = [
					'VALUE' => $vat['ID'],
					'NAME' => htmlspecialcharsbx($vat['NAME']),
				];
			}

			$description['data']['items'] = $vatList;
			$description['type'] = 'list';
		}
		elseif ($fieldName === 'VAT_INCLUDED')
		{
			if (Option::get('catalog', 'default_product_vat_included') === 'Y')
			{
				$description['defaultValue'] = ProductTable::STATUS_YES;
			}
		}

		$descriptions[] = $description;
	}

	return $descriptions;
}