• Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/lib/automation/engine/templatestunnel.php
  • Класс: BitrixBizprocAutomationEngineTemplatesTunnel
  • Вызов: TemplatesTunnel::copyTriggers
public function copyTriggers(array $triggerNames): Result
{
	$documentService = CBPRuntime::getRuntime()->getDocumentService();
	$target = $documentService->createAutomationTarget($this->srcTemplate->getDocumentType());

	/** @var EO_Trigger[] $triggersToCopy */
	$triggersToCopy = array_filter(
		$target->getTriggerObjects([$this->srcTemplate->getDocumentStatus()]),
		fn ($trigger) => in_array($trigger->getId(), $triggerNames, true),
	);

	$copiedTriggers = [];
	$deniedTriggers = [];
	foreach ($triggersToCopy as $trigger)
	{
		if (!array_key_exists($trigger->getCode(), $this->availableTriggers))
		{
			$deniedTriggers[] = $trigger;
			continue;
		}

		$newTrigger = TriggerTable::createObject();

		$complexDocumentType = $this->dstTemplate->getDocumentType();

		$newTrigger->setName($trigger->getName());
		$newTrigger->setCode($trigger->getCode());
		$newTrigger->setModuleId($complexDocumentType[0]);
		$newTrigger->setEntity($complexDocumentType[1]);
		$newTrigger->setDocumentType($complexDocumentType[2]);
		$newTrigger->setDocumentStatus($this->dstTemplate->getDocumentStatus());
		$newTrigger->setApplyRules($trigger->getApplyRules());

		$newTrigger->save();
		$copiedTriggers[] = $newTrigger;
	}

	$result = new Result();
	$result->setData([
		'copied' => $copiedTriggers,
		'denied' => $deniedTriggers,
		'original' => $triggersToCopy,
	]);

	return $result;
}