• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/integration/crmmanager.php
  • Класс: BitrixSalesCenterIntegrationCrmManager
  • Вызов: CrmManager::saveTriggerByCode
private function saveTriggerByCode($triggerCode, $entityId, $entityTypeId, $stageId)
{
	$target = $this->getAutomationTarget($entityTypeId);

	if ($target === null)
	{
		return 0;
	}

	$stages = $this->getStageList($entityId, $entityTypeId);

	$triggers = $target->getTriggers(array_keys($stages));
	$trigger = $this->findTriggerByCode($triggerCode, $triggers);
	if ($trigger)
	{
		if ($trigger['DOCUMENT_STATUS'] === $stageId)
		{
			return $trigger['ID'];
		}

		$trigger['DELETED'] = 'Y';
		$target->setTriggers([$trigger]);
	}

	/** @var AutomationTriggerBaseTrigger $triggerClassName */
	$triggerClassName = BitrixCrmAutomationFactory::getTriggerByCode($triggerCode);

	if ($stageId)
	{
		$result = $target->setTriggers([
			[
				'DOCUMENT_STATUS' => $stageId,
				'CODE' => $triggerClassName::getCode(),
				'NAME' => $triggerClassName::getName()
			]
		]);

		if ($result)
		{
			return $result[0]['ID'];
		}
	}

	return 0;
}