- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/exchange/onec/documentbase.php
- Класс: BitrixSaleExchangeOneCDocumentBase
- Вызов: DocumentBase::resolveTraitsParams
static function resolveTraitsParams(array $value, array $fieldsInfo)
{
$result = null;
$message = self::getMessage();
if (is_array($value["#"][$message["CC_BSC1_REK_VALUES"]][0]["#"][$message["CC_BSC1_REK_VALUE"]])
&& !empty($value["#"][$message["CC_BSC1_REK_VALUES"]][0]["#"][$message["CC_BSC1_REK_VALUE"]]))
{
$traits = array();
foreach($value["#"][$message["CC_BSC1_REK_VALUES"]][0]["#"][$message["CC_BSC1_REK_VALUE"]] as $val)
{
$traitName = $val["#"][$message["CC_BSC1_NAME"]][0]["#"];
$traitValue = $val["#"][$message["CC_BSC1_VALUE"]][0]["#"];
if($traitValue <> '')
$traits[$traitName] = $traitValue;
}
foreach($fieldsInfo['FIELDS'] as $name => $fieldInfo)
{
$fieldValue = '';
if($name == 'PROPERTY_VALUE_BASKET')
{
foreach($traits as $k=>$v)
{
$namePropertyBaslet = $message["CC_BSC1_PROP_BASKET"];
if (mb_strpos($k, $namePropertyBaslet."#") === 0)
{
$position = mb_strpos($k, $namePropertyBaslet."#");
$idBasketProperty = mb_substr($k, $position + mb_strlen($namePropertyBaslet."#"));
self::internalizeFields($v);
$result['PROP_BASKET'][$idBasketProperty] = $v; //TODO: check && fix
}
}
}
elseif($name == 'TYPE_OF_NOMENKLATURA')
{
if($traits[$message["CC_BSC1_ITEM_TYPE"]] == $message["CC_BSC1_ITEM"])
$fieldValue = ExchangeImportBase::ITEM_ITEM;
elseif($traits[$message["CC_BSC1_ITEM_TYPE"]] == $message["CC_BSC1_SERVICE"])
$fieldValue = ExchangeImportBase::ITEM_SERVICE;
self::internalizeFields($fieldValue, $fieldInfo['FIELDS']['VALUE']);
$result['ITEM_TYPE'] = $fieldValue; //TODO: check && fix
}
elseif(!empty($traits[$message["CC_BSC1_".$name]]))
{
$fieldValue = $traits[$message["CC_BSC1_".$name]];
self::internalizeFields($fieldValue, $fieldInfo['FIELDS']['VALUE']);
$result[$name] = $fieldValue; //TODO: check && fix
}
}
}
return $result;
}