- Модуль: 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;
}