- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/businessvalue.php
- Класс: BitrixSaleBusinessValueConsumer1C
- Вызов: BusinessValueConsumer1C::setMapping
static function setMapping($codeKey, $personTypeId, array $mapping)
{
$systemCode = true;
if (! ($code = & self::$codes[$codeKey]) || isset($code['CODE_INDEX']))
{
$systemCode = false;
if ($code)
{
if ($mapping && $mapping['NAME'])
{
if ($mapping['NAME'] != $code['NAME'])
{
$result = InternalsBusinessValueCode1CTable::update(
array(
'PERSON_TYPE_ID' => $code['PERSON_TYPE_ID'],
'CODE_INDEX' => $code['CODE_INDEX'],
),
array(
'NAME' => $mapping['NAME']
)
);
if ($result->isSuccess())
$code['NAME'] = $mapping['NAME'];
}
}
else
{
$result = InternalsBusinessValueCode1CTable::delete(array(
'PERSON_TYPE_ID' => $code['PERSON_TYPE_ID'],
'CODE_INDEX' => $code['CODE_INDEX'],
));
if ($result->isSuccess())
{
unset(self::$codes[$codeKey]);
$mapping = array(); // delete
}
}
}
else
{
$codeIndex = isset(self::$personMaxIndex[$personTypeId]) ? self::$personMaxIndex[$personTypeId] + 1 : 0;
if ($mapping && $mapping['NAME'] && $codeKey == self::getRekvCodeKey($personTypeId, $codeIndex))
{
$result = InternalsBusinessValueCode1CTable::add(array(
'PERSON_TYPE_ID' => $personTypeId,
'CODE_INDEX' => $codeIndex,
'NAME' => $mapping['NAME'],
));
if ($result->isSuccess())
{
self::$personMaxIndex[$personTypeId] = $codeIndex;
$code = self::getRekvCode($personTypeId, $codeIndex, $mapping['NAME']);
// move adding button to the end
$addCode = self::$codes['1C_REKV_##PERSON_TYPE_ID##_##CODE_INDEX##'];
unset(self::$codes['1C_REKV_##PERSON_TYPE_ID##_##CODE_INDEX##']);
self::$codes['1C_REKV_##PERSON_TYPE_ID##_##CODE_INDEX##'] = $addCode;
}
}
else
{
return new BitrixMainResult();
}
}
}
$mapping = $mapping['PROVIDER_KEY']
? array(
'PROVIDER_KEY' => $mapping['PROVIDER_KEY' ],
'PROVIDER_VALUE' => $mapping['PROVIDER_VALUE'],
)
: array();
return isset($result) && ! $result->isSuccess()
? $result
: BusinessValue::setMapping($codeKey, self::CONSUMER_KEY, $personTypeId, $mapping, $systemCode);
}