• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integrity/volatile/typeinfo.php
  • Класс: Bitrix\Crm\Integrity\Volatile\TypeInfo
  • Вызов: TypeInfo::assign
public function assign(int $entityTypeId, int $volatileTypeId, string $fieldPath, string $fieldName)
{
	$state = State::getInstance();
	$fields = [
		'ENTITY_TYPE_ID' => $entityTypeId,
		'DESCRIPTION' => '',
		'FIELD_PATH' => $fieldPath,
		'FIELD_NAME' => $fieldName,
	];

	if (
		DuplicateIndexTypeSettingsTable::getList(
			[
				'select' => ['ID'],
				'filter' => ['ID' => $volatileTypeId]
			]
		)->fetch()
	)
	{
		$state->set($volatileTypeId, State::STATE_FREE);
		EventHandler::onAssignVolatileTypes([$volatileTypeId]);
		DuplicateIndexTypeSettingsTable::update($volatileTypeId, $fields);
	}
	else
	{
		$fields['ID'] = $volatileTypeId;
		DuplicateIndexTypeSettingsTable::add($fields);
		EventHandler::onAssignVolatileTypes(
			[$volatileTypeId],
			DuplicateVolatileCriterion::getSupportedEntityTypes()
		);
	}

	$state->set($volatileTypeId, State::STATE_ASSIGNED);

	IndexRebuild::getInstance($volatileTypeId)->start(['USER_ID' => $this->getCurrentUserId()]);

	Cleaner::getInstance()->start([]);
}