• Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/lib/automation/engine/template.php
  • Класс: BitrixBizprocAutomationEngineTemplate
  • Вызов: Template::saveRobotSettings
public function saveRobotSettings(array $robot, array $request)
{
	$saveResult = new Result();
	$documentType = $this->getDocumentType();

	if (isset($robot['Properties']) && is_array($robot['Properties']))
	{
		$robot['Properties'] = AutomationHelper::unConvertProperties($robot['Properties'], $documentType);
	}

	$request = AutomationHelper::unConvertProperties($request, $documentType);

	$copy = clone $this;
	$copy->setRobots([$robot]);
	$raw = $copy->template['TEMPLATE'];

	$robotErrors = $v = $p = array();
	$result = CBPActivity::callStaticMethod(
		$robot['Type'],
		"GetPropertiesDialogValues",
		[
			$documentType,
			$robot['Name'] ?? null,
			&$raw,
			&$v,
			&$p,
			$request,
			&$robotErrors,
		]
	);

	if ($result || (isset($robot['Activated']) && $robot['Activated'] === 'N'))
	{
		$templateActivity = CBPWorkflowTemplateLoader::findActivityByName($raw, $robot['Name'] ?? null);

		$robotTitle = $robot['Properties']['Title'] ?? null;
		$robot['Properties'] = $templateActivity['Properties'];
		$robot['Properties']['Title'] = $robotTitle;

		$saveResult->setData(['robot' => $robot]);
	}
	else
	{
		foreach ($robotErrors as $i => $error)
		{
			$errorMessage = $error['message'] ?? null;
			$errorCode = $error['code'] ?? null;
			$errorParameter = $error['parameter'] ?? null;
			$saveResult->addError(new Error($errorMessage, $errorCode, ['parameter' => $errorParameter]));
		}
	}

	return $saveResult;
}