• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/requisite/link.php
  • Класс: Bitrix\Crm\Requisite\LinkTable
  • Вызов: LinkTable::updateDependencies
static function updateDependencies(array $newFields, array $oldFields)
{
	$setFields = array();
	$filterFields = array();
	if (isset($newFields['REQUISITE_ID']) && isset($oldFields['REQUISITE_ID']))
	{
		$newRequisiteId = $newFields['REQUISITE_ID'];
		$oldRequisiteId = $oldFields['REQUISITE_ID'];
		if ($newRequisiteId > 0 && $oldRequisiteId > 0)
		{
			$setFields['REQUISITE_ID'] = $newRequisiteId;
			$filterFields['REQUISITE_ID'] = $oldRequisiteId;
			if (isset($newFields['BANK_DETAIL_ID']) && isset($oldFields['BANK_DETAIL_ID']))
			{
				$newBankDetailId = $newFields['BANK_DETAIL_ID'];
				$oldBankDetailId = $oldFields['BANK_DETAIL_ID'];
				if ($newBankDetailId > 0 && $oldBankDetailId > 0)
				{
					$setFields['BANK_DETAIL_ID'] = $newBankDetailId;
					$filterFields['BANK_DETAIL_ID'] = $oldBankDetailId;
				}
			}
		}
	}
	else if (isset($newFields['MC_REQUISITE_ID']) && isset($oldFields['MC_REQUISITE_ID']))
	{
		$newMcRequisiteId = $newFields['MC_REQUISITE_ID'];
		$oldMcRequisiteId = $oldFields['MC_REQUISITE_ID'];
		if ($newMcRequisiteId > 0 && $oldMcRequisiteId > 0)
		{
			$setFields['MC_REQUISITE_ID'] = $newMcRequisiteId;
			$filterFields['MC_REQUISITE_ID'] = $oldMcRequisiteId;
			if (isset($newFields['MC_BANK_DETAIL_ID']) && isset($oldFields['MC_BANK_DETAIL_ID']))
			{
				$newMcBankDetailId = $newFields['MC_BANK_DETAIL_ID'];
				$oldMcBankDetailId = $oldFields['MC_BANK_DETAIL_ID'];
				if ($newMcBankDetailId > 0 && $oldMcBankDetailId > 0)
				{
					$setFields['MC_BANK_DETAIL_ID'] = $newMcBankDetailId;
					$filterFields['MC_BANK_DETAIL_ID'] = $oldMcBankDetailId;
				}
			}
		}
	}

	if (!empty($setFields) && !empty($filterFields))
	{
		$setSql = '';
		foreach ($setFields as $fieldName => $value)
		{
			if (!empty($setSql))
				$setSql .= ', ';
			$setSql .= "{$fieldName} = {$value}";
		}
		$whereSql = '';
		foreach ($filterFields as $fieldName => $value)
		{
			if (!empty($whereSql))
				$whereSql .= ' AND ';
			$whereSql .= "{$fieldName} = {$value}";
		}
		$connection = Main\Application::getConnection();
		if($connection instanceof Main\DB\MysqlCommonConnection)
		{
			$connection->queryExecute(
				"UPDATE b_crm_requisite_link SET {$setSql} WHERE {$whereSql}"
			);
		}
		else
		{
			$dbType = $connection->getType();
			throw new Main\NotSupportedException("The '{$dbType}' is not supported in current context");
		}
	}
}