- Модуль: 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;
}