• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/address.php
  • Класс: Bitrix\Crm\AddressTable
  • Вызов: AddressTable::upsert
static function upsert(array $data)
{
	$typeID = isset($data['TYPE_ID']) ? (int)$data['TYPE_ID'] : 0;
	$entityTypeID = isset($data['ENTITY_TYPE_ID']) ? (int)$data['ENTITY_TYPE_ID'] : 0;
	$entityID = isset($data['ENTITY_ID']) ? (int)$data['ENTITY_ID'] : 0;

	$fields = [
		'ANCHOR_TYPE_ID' => isset($data['ANCHOR_TYPE_ID']) ? (int)$data['ANCHOR_TYPE_ID'] : $entityTypeID,
		'ANCHOR_ID' => isset($data['ANCHOR_ID']) ? (int)$data['ANCHOR_ID'] : $entityID,
		'ADDRESS_1' => isset($data['ADDRESS_1']) && $data['ADDRESS_1'] !== '' ? $data['ADDRESS_1'] : null,
		'ADDRESS_2' => isset($data['ADDRESS_2']) && $data['ADDRESS_2'] !== '' ? $data['ADDRESS_2'] : null,
		'CITY' => isset($data['CITY']) && $data['CITY'] !== '' ? $data['CITY'] : null,
		'POSTAL_CODE' => isset($data['POSTAL_CODE']) && $data['POSTAL_CODE'] !== '' ? $data['POSTAL_CODE'] : null,
		'REGION' => isset($data['REGION']) && $data['REGION'] !== '' ? $data['REGION'] : null,
		'PROVINCE' => isset($data['PROVINCE']) && $data['PROVINCE'] !== '' ? $data['PROVINCE'] : null,
		'COUNTRY' => isset($data['COUNTRY']) && $data['COUNTRY'] !== '' ? $data['COUNTRY'] : null,
		'COUNTRY_CODE' => isset($data['COUNTRY_CODE']) && $data['COUNTRY_CODE'] !== '' ?
			$data['COUNTRY_CODE'] : null,
		'LOC_ADDR_ID' => isset($data['LOC_ADDR_ID']) ? (int)$data['LOC_ADDR_ID'] : 0,
		'IS_DEF' => (isset($data['IS_DEF']) && $data['IS_DEF'] === true) ? 1 : 0
	];

	$connection = Application::getConnection();
	$queries = $connection->getSqlHelper()->prepareMerge(
		'b_crm_addr',
		['TYPE_ID', 'ENTITY_TYPE_ID', 'ENTITY_ID'],
		array_merge(
			$fields,
			['TYPE_ID' => $typeID, 'ENTITY_TYPE_ID' => $entityTypeID, 'ENTITY_ID' => $entityID]
		),
		$fields
	);

	foreach($queries as $query)
	{
		$connection->queryExecute($query);
	}
}