• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/order/matcher/fieldsynchronizer.php
  • Класс: Bitrix\Crm\Order\Matcher\FieldSynchronizer
  • Вызов: FieldSynchronizer::saveRelations
static function saveRelations($propertyId, $relations)
{
	$existedRelation = OrderPropsRelationTable::getList([
		'select' => ['ENTITY_ID', 'ENTITY_TYPE'],
		'filter' => [
			'=PROPERTY_ID' => $propertyId,
			'@ENTITY_TYPE' => ['P', 'D']
		]
	]);
	foreach ($existedRelation as $item)
	{
		$index = array_search($item['ENTITY_ID'], $relations[$item['ENTITY_TYPE']]);
		if ($index === false)
		{
			OrderPropsRelationTable::delete([
				'PROPERTY_ID' => $propertyId,
				'ENTITY_ID' => $item['ENTITY_ID'],
				'ENTITY_TYPE' => $item['ENTITY_TYPE'],
			]);
		}
		else
		{
			unset($relations[$item['ENTITY_TYPE']][$index]);
		}
	}

	foreach ($relations as $entityType => $relation)
	{
		foreach ($relation as $entityId)
		{
			OrderPropsRelationTable::add([
				'PROPERTY_ID' => $propertyId,
				'ENTITY_ID' => $entityId,
				'ENTITY_TYPE' => $entityType,
			]);
		}
	}
}