15 private const PRICE_PRECISION = 2;
31 'SKU_NAME' =>
'IBLOCK_ELEMENT.NAME',
32 'SKU_DESCRIPTION' =>
'IBLOCK_ELEMENT.DETAIL_TEXT',
34 'PURCHASING_CURRENCY',
40 'filter' => [
'=ID' => $skuId],
43 $properties[
'SKU_ID'] = $skuId;
45 if ($product !==
null)
47 $properties[
'PURCHASING_PRICE'] = round((
float)$product[
'PURCHASING_PRICE'], self::PRICE_PRECISION);
48 if (Loader::includeModule(
'crm'))
50 $properties[
'PURCHASING_PRICE_FORMATTED'] = \CCrmCurrency::MoneyToString(
51 $product[
'PURCHASING_PRICE'],
52 $product[
'PURCHASING_CURRENCY']
55 elseif (Loader::includeModule(
'currency'))
57 $properties[
'PURCHASING_PRICE_FORMATTED'] = \CCurrencyLang::CurrencyFormat(
58 $product[
'PURCHASING_PRICE'],
59 $product[
'PURCHASING_CURRENCY']
65 $product[
'PURCHASING_PRICE'] .
' ' . $product[
'PURCHASING_CURRENCY']
68 $properties[
'LENGTH'] = $product[
'LENGTH'];
69 $properties[
'WEIGHT'] = $product[
'WEIGHT'];
70 $properties[
'WIDTH'] = $product[
'WIDTH'];
71 $properties[
'HEIGHT'] = $product[
'HEIGHT'];
73 $properties[
'SKU_DESCRIPTION'] = (new \CBXSanitizer())->SanitizeHtml($product[
'SKU_DESCRIPTION']);
77 $properties[
'PURCHASING_PRICE'] = 0;
78 $properties[
'PURCHASING_PRICE_FORMATTED'] =
'';
79 $properties[
'LENGTH'] =
null;
80 $properties[
'WEIGHT'] =
null;
81 $properties[
'WIDTH'] =
null;
82 $properties[
'HEIGHT'] =
null;
83 $properties[
'SKU_NAME'] =
'';
84 $properties[
'SKU_DESCRIPTION'] =
'';
106 while ($prop =
$props->GetNext())
108 if (empty($prop[
'VALUE'])
109 && !($prop[
'PROPERTY_TYPE'] ===
'L' && $prop[
'LIST_TYPE'] ===
'C')
115 $code =
'PROPERTY_' . $prop[
'ID'];
117 switch ($prop[
'PROPERTY_TYPE'])
122 && isset($prop[
'USER_TYPE_SETTINGS'][
'TABLE_NAME'])
123 && Loader::includeModule(
'highloadblock')
126 $value = self::getDirectoryValue($prop);
130 $value = (new \CBXSanitizer())->SanitizeHtml($prop[
'~VALUE'][
'TEXT']);
134 $value = $prop[
'VALUE'];
150 switch ($prop[
'VALUE_ENUM'])
153 $value = Loc::getMessage(
'CRM_ENTITY_PRODUCT_LIST_COLUMN_CHECKBOX_YES');
157 $value = Loc::getMessage(
'CRM_ENTITY_PRODUCT_LIST_COLUMN_CHECKBOX_NO');
167 if ($prop[
'MULTIPLE'] !==
'Y')
185 Loader::includeModule(
'fileman');
186 $listImageSize = (int)Option::get(
'iblock',
'list_image_size');
192 'W' => $listImageSize,
193 'H' => $listImageSize,
197 'NO_FIELDS[' . $productId .
']',
204 'IMAGE_POPUP' =>
'N',
205 'MAX_SIZE' => $maxImageSize,
206 'MIN_SIZE' => $minImageSize,
211 'file_dialog' =>
false,
214 'description' =>
false,
234 private static function getDirectoryValue(
array $prop): ?string
236 $hlblock = HighloadBlockTable::getRow([
238 '=TABLE_NAME' => $prop[
'USER_TYPE_SETTINGS'][
'TABLE_NAME'],
244 $entity = HighloadBlockTable::compileEntity($hlblock);
245 $entityClass =
$entity->getDataClass();
246 $row = $entityClass::getRow([
248 '=UF_XML_ID' => $prop[
'VALUE'],
252 if (isset($row[
'UF_NAME']))
279 '=IBLOCK_ID' => self::getIblockIds(),
283 '==USER_TYPE' =>
null,
285 '@USER_TYPE' => self::getAllowedPropertyUserTypes(),
287 '!@PROPERTY_TYPE' => self::getRestrictedPropertyTypes(),
288 '!@CODE' => self::getRestrictedProperties(),
291 'IBLOCK_ID' =>
'ASC',
299 $result[] =
'PROPERTY_' . $prop[
'ID'];
313 return array_merge(
$result, $skuFields);
364 private static function getIblockIds():
array
366 if (Loader::includeModule(
'crm'))
369 Crm\Product\Catalog::getDefaultId(),
370 Crm\Product\Catalog::getDefaultOfferId(),
static getRow(array $parameters)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)