• Модуль: 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);
}