- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/automation/engine/templatestunnel.php
- Класс: Bitrix\Crm\Automation\Engine\TemplatesTunnel
- Вызов: TemplatesTunnel::copyTriggers
public function copyTriggers(array $triggerNames): Result
{
$documentService = \CBPRuntime::getRuntime()->getDocumentService();
$target = $documentService->createAutomationTarget($this->srcTemplate->getDocumentType());
/** @var \Bitrix\Crm\Automation\Trigger\Entity\TriggerObject[] $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 = new TriggerObject();
$entityTypeId = \CCrmOwnerType::ResolveID($this->dstTemplate->getDocumentType()[2]);
$newTrigger->setName($trigger->getName());
$newTrigger->setCode($trigger->getCode());
$newTrigger->setEntityTypeId($entityTypeId);
$newTrigger->setEntityStatus($this->dstTemplate->getDocumentStatus());
$newTrigger->setApplyRules($trigger->getApplyRules());
$newTrigger->save();
$copiedTriggers[] = $newTrigger;
}
$result = new Result();
$result->setData([
'copied' => $copiedTriggers,
'denied' => $deniedTriggers,
'original' => $triggersToCopy,
]);
return $result;
}