• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product.php
  • Класс: BitrixCatalogProductTable
  • Вызов: ProductTable::getMap
static function getMap(): array
{
	return [
		'ID' => new MainEntityIntegerField(
			'ID',
			[
				'primary' => true,
				'title' => Loc::getMessage('PRODUCT_ENTITY_ID_FIELD'),
			]
		),
		'QUANTITY' => new MainEntityFloatField(
			'QUANTITY',
			[
				'default_value' => 0,
				'title' => Loc::getMessage('PRODUCT_ENTITY_QUANTITY_FIELD'),
			]
		),
		'QUANTITY_TRACE' => new MainEntityEnumField(
			'QUANTITY_TRACE',
			[
				'values' => [
					self::STATUS_DEFAULT,
					self::STATUS_NO,
					self::STATUS_YES,
				],
				'default_value' => self::STATUS_DEFAULT,
				'fetch_data_modification' => [__CLASS__, 'modifyQuantityTrace'],
				'title' => Loc::getMessage('PRODUCT_ENTITY_QUANTITY_TRACE_FIELD'),
			]
		),
		'QUANTITY_TRACE_ORIG' => new MainEntityExpressionField(
			'QUANTITY_TRACE_ORIG',
			'%s',
			'QUANTITY_TRACE',
			[
				'data_type' => 'string',
			]
		),
		'WEIGHT' => new MainEntityFloatField(
			'WEIGHT',
			[
				'default_value' => 0,
				'title' => Loc::getMessage('PRODUCT_ENTITY_WEIGHT_FIELD'),
			]
		),
		'TIMESTAMP_X' => new MainEntityDatetimeField(
			'TIMESTAMP_X',
			[
				'default_value' => function()
					{
						return new MainTypeDateTime();
					},
				'title' => Loc::getMessage('PRODUCT_ENTITY_TIMESTAMP_X_FIELD'),
			]
		),
		'PRICE_TYPE' => new MainEntityEnumField(
			'PRICE_TYPE',
			[
				'values' => self::getPaymentTypes(false),
				'default_value' => self::PAYMENT_TYPE_SINGLE,
				'title' => Loc::getMessage('PRODUCT_ENTITY_PRICE_TYPE_FIELD'),
			]
		),
		'RECUR_SCHEME_LENGTH' => new MainEntityIntegerField(
			'RECUR_SCHEME_LENGTH',
			[
				'default_value' => 0,
				'title' => Loc::getMessage('PRODUCT_ENTITY_RECUR_SCHEME_LENGTH_FIELD'),
			]
		),
		'RECUR_SCHEME_TYPE' => new MainEntityEnumField(
			'RECUR_SCHEME_TYPE',
			[
				'values' => self::getPaymentPeriods(false),
				'default_value' => self::PAYMENT_PERIOD_DAY,
				'title' => Loc::getMessage('PRODUCT_ENTITY_RECUR_SCHEME_TYPE_FIELD'),
			]
		),
		'TRIAL_PRICE_ID' => new MainEntityIntegerField(
			'TRIAL_PRICE_ID',
			[
				'title' => Loc::getMessage('PRODUCT_ENTITY_TRIAL_PRICE_ID_FIELD'),
			]
		),
		'WITHOUT_ORDER' => new MainEntityBooleanField(
			'WITHOUT_ORDER',
			[
				'values' => [
					self::STATUS_NO,
					self::STATUS_YES,
				],
				'default_value' => self::STATUS_NO,
				'title' => Loc::getMessage('PRODUCT_ENTITY_WITHOUT_ORDER_FIELD'),
			]
		),
		'SELECT_BEST_PRICE' => new MainEntityBooleanField(
			'SELECT_BEST_PRICE',
			[
				'values' => [
					self::STATUS_NO,
					self::STATUS_YES,
				],
				'default_value' => self::STATUS_YES,
			]
		),
		'VAT_ID' => new MainEntityIntegerField(
			'VAT_ID',
			[
				'default_value' => 0,
				'title' => Loc::getMessage('PRODUCT_ENTITY_VAT_ID_FIELD'),
			]
		),
		'VAT_INCLUDED' => new MainEntityBooleanField(
			'VAT_INCLUDED',
			[
				'values' => [
					self::STATUS_NO,
					self::STATUS_YES,
				],
				'default_value' => self::STATUS_NO,
				'title' => Loc::getMessage('PRODUCT_ENTITY_VAT_INCLUDED_FIELD'),
			]
		),
		'CAN_BUY_ZERO' => new MainEntityEnumField(
			'CAN_BUY_ZERO',
			[
				'values' => [
					self::STATUS_DEFAULT,
					self::STATUS_NO,
					self::STATUS_YES,
				],
				'default_value' => self::STATUS_DEFAULT,
				'fetch_data_modification' => [__CLASS__, 'modifyCanBuyZero'],
				'title' => Loc::getMessage('PRODUCT_ENTITY_CAN_BUY_ZERO_FIELD'),
			]
		),
		'CAN_BUY_ZERO_ORIG' => new MainEntityExpressionField(
			'CAN_BUY_ZERO_ORIG',
			'%s',
			'CAN_BUY_ZERO',
			[
				'data_type' => 'string',
			]
		),
		'NEGATIVE_AMOUNT_TRACE' => new MainEntityEnumField(
			'NEGATIVE_AMOUNT_TRACE',
			[
				'values' => [
					self::STATUS_DEFAULT,
					self::STATUS_NO,
					self::STATUS_YES,
				],
				'default_value' => self::STATUS_DEFAULT,
				'fetch_data_modification' => [__CLASS__, 'modifyNegativeAmountTrace'],
				'title' => Loc::getMessage('PRODUCT_ENTITY_NEGATIVE_AMOUNT_TRACE_FIELD'),
			]
		),
		'NEGATIVE_AMOUNT_TRACE_ORIG' => new MainEntityExpressionField(
			'NEGATIVE_AMOUNT_TRACE_ORIG',
			'%s',
			'NEGATIVE_AMOUNT_TRACE',
			[
				'data_type' => 'string',
			]
		),
		'TMP_ID' => New MainEntityStringField(
			'TMP_ID',
			[
				'validation' => [__CLASS__, 'validateTmpId'],
				'title' => Loc::getMessage('PRODUCT_ENTITY_TMP_ID_FIELD'),
			]
		),
		'PURCHASING_PRICE' => new MainEntityFloatField(
			'PURCHASING_PRICE',
			[
				'title' => Loc::getMessage('PRODUCT_ENTITY_PURCHASING_PRICE_FIELD'),
			]
		),
		'PURCHASING_CURRENCY' => new MainEntityStringField(
			'PURCHASING_CURRENCY',
			[
				'validation' => [__CLASS__, 'validatePurchasingCurrency'],
				'title' => Loc::getMessage('PRODUCT_ENTITY_PURCHASING_CURRENCY_FIELD'),
			]
		),
		'BARCODE_MULTI' => new MainEntityBooleanField(
			'BARCODE_MULTI',
			[
				'values' => [
					self::STATUS_NO,
					self::STATUS_YES,
				],
				'default_value' => self::STATUS_NO,
				'title' => Loc::getMessage('PRODUCT_ENTITY_BARCODE_MULTI_FIELD'),
			]
		),
		'QUANTITY_RESERVED' => new MainEntityFloatField(
			'QUANTITY_RESERVED',
			[
				'title' => Loc::getMessage('PRODUCT_ENTITY_QUANTITY_RESERVED_FIELD'),
			]
		),
		'SUBSCRIBE' => new MainEntityEnumField(
			'SUBSCRIBE',
			[
				'values' => [
					self::STATUS_DEFAULT,
					self::STATUS_NO,
					self::STATUS_YES,
				],
				'default_value' => self::STATUS_DEFAULT,
				'fetch_data_modification' => [__CLASS__, 'modifySubscribe'],
				'title' => Loc::getMessage('PRODUCT_ENTITY_SUBSCRIBE_FIELD'),
			]
		),
		'SUBSCRIBE_ORIG' => new MainEntityExpressionField(
			'SUBSCRIBE_ORIG',
			'%s',
			'SUBSCRIBE',
			[
				'data_type' => 'string',
			]
		),
		'WIDTH' => new MainEntityFloatField(
			'WIDTH',
			[
				'title' => Loc::getMessage('PRODUCT_ENTITY_WIDTH_FIELD'),
			]
		),
		'LENGTH' => new MainEntityFloatField(
			'LENGTH',
			[
				'title' => Loc::getMessage('PRODUCT_ENTITY_LENGTH_FIELD'),
			]
		),
		'HEIGHT' => new MainEntityFloatField(
			'HEIGHT',
			[
				'title' => Loc::getMessage('PRODUCT_ENTITY_HEIGHT_FIELD'),
			]
		),
		'MEASURE' => new MainEntityIntegerField(
			'MEASURE',
			[
				'title' => Loc::getMessage('PRODUCT_ENTITY_MEASURE_FIELD'),
			]
		),
		'TYPE' => new MainEntityEnumField(
			'TYPE',
			[
				'values' => [
					self::TYPE_PRODUCT,
					self::TYPE_SET,
					self::TYPE_SKU,
					self::TYPE_OFFER,
					self::TYPE_FREE_OFFER,
					self::TYPE_EMPTY_SKU,
					self::TYPE_SERVICE,
				],
				'default_value' => self::TYPE_PRODUCT,
				'title' => Loc::getMessage('PRODUCT_ENTITY_TYPE_FIELD'),
			]
		),
		'AVAILABLE' => new MainEntityBooleanField(
			'AVAILABLE',
			[
				'values' => [
					self::STATUS_NO,
					self::STATUS_YES,
				],
				'title' => Loc::getMessage('PRODUCT_ENTITY_AVAILABLE_FIELD'),
			]
		),
		'BUNDLE' => new MainEntityBooleanField(
			'BUNDLE',
			[
				'values' => [
					self::STATUS_NO,
					self::STATUS_YES,
				],
				'title' => Loc::getMessage('PRODUCT_ENTITY_BUNDLE_FIELD'),
			]
		),
		'IBLOCK_ELEMENT' => new MainEntityReferenceField(
			'IBLOCK_ELEMENT',
			'BitrixIblockElement',
			[
				'=this.ID' => 'ref.ID',
			],
			[
				'join_type' => 'LEFT',
			]
		),
		'TRIAL_IBLOCK_ELEMENT' => new MainEntityReferenceField(
			'TRIAL_IBLOCK_ELEMENT',
			'BitrixIblockElement',
			[
				'=this.TRIAL_PRICE_ID' => 'ref.ID',
			],
			[
				'join_type' => 'LEFT',
			]
		),
		'TRIAL_PRODUCT' => new MainEntityReferenceField(
			'TRIAL_PRODUCT',
			'BitrixCatalogProduct',
			[
				'=this.TRIAL_PRICE_ID' => 'ref.ID',
			],
			[
				'join_type' => 'LEFT',
			]
		)
	];
}