• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/address.php
  • Класс: Bitrix\Crm\AddressTable
  • Вызов: AddressTable::setDef
static function setDef(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;

	if ($entityTypeID > 0 && $entityID > 0)
	{
		Application::getConnection()->queryExecute(
		/** @lang MySQL */
			"UPDATE b_crm_addr A ".PHP_EOL.
			"  INNER JOIN (".PHP_EOL.
			"    SELECT R2.ID FROM b_crm_requisite R2 ".PHP_EOL.
			"      INNER JOIN (".PHP_EOL.
			"        SELECT R1.ENTITY_TYPE_ID, R1.ENTITY_ID ".PHP_EOL.
			"        FROM b_crm_requisite R1 ".PHP_EOL.
			"        WHERE R1.ID = {$entityID}".PHP_EOL.
			"      ) AN ON R2.ENTITY_TYPE_ID = AN.ENTITY_TYPE_ID AND R2.ENTITY_ID = AN.ENTITY_ID ".PHP_EOL.
			"	) R ON A.ENTITY_TYPE_ID = {$entityTypeID} AND A.ENTITY_ID = R.ID ".PHP_EOL.
			"SET A.IS_DEF = IF(A.ENTITY_ID = {$entityID}, 1, 0) ".PHP_EOL.
			"WHERE ".($typeID > 0 ? "A.TYPE_ID = {$typeID}" : "(1=1)")
		);
	}
}