• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/exchange/onec/documentimport.php
  • Класс: BitrixSaleExchangeOneCDocumentImport
  • Вызов: DocumentImport::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(strlen($traitValue)>0)
                    $traits[$traitName] = $traitValue;
            }

            foreach($fieldsInfo['FIELDS'] as $name => $fieldInfo)
            {
                $fieldValue = '';
                if($name == 'PROP_BASKET')
                {
                    foreach($traits as $k=>$v)
                    {
                        $namePropertyBaslet = $message["CC_BSC1_".$name];
                        if (strpos($k, $namePropertyBaslet."#") === 0)
                        {
                            $position = strpos($k, $namePropertyBaslet."#");
                            $idBasketProperty = substr($k, $position + strlen($namePropertyBaslet."#"));

                            self::internalizeFields($v);

                            $result[$name][$idBasketProperty] = $v;
                        }
                    }
                }
                elseif($name == "ITEM_TYPE")
                {
                    if($traits[$message["CC_BSC1_".$name]] == $message["CC_BSC1_ITEM"])
                        $fieldValue = ExchangeImportBase::ITEM_ITEM;
                    elseif($traits[$message["CC_BSC1_".$name]] == $message["CC_BSC1_SERVICE"])
                        $fieldValue = ExchangeImportBase::ITEM_SERVICE;

                    self::internalizeFields($fieldValue, $fieldInfo);

                    $result[$name] = $fieldValue;
                }
                elseif(!empty($traits[$message["CC_BSC1_".$name]]))
                {
                    $fieldValue = $traits[$message["CC_BSC1_".$name]];

                    self::internalizeFields($fieldValue, $fieldInfo);

                    $result[$name] = $fieldValue;
                }
            }
        }
        return $result;
    }