• Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/lib/automation/engine/conditiongroup.php
  • Класс: BitrixBizprocAutomationEngineConditionGroup
  • Вызов: ConditionGroup::convertBizprocActivity
static function convertBizprocActivity(array &$activity, array $documentType, Template $template)
{
	$conditionGroup = false;

	if (
		count($activity['Children']) === 2
		&& $activity['Children'][0]['Type'] === 'IfElseBranchActivity'
		&& $activity['Children'][1]['Type'] === 'IfElseBranchActivity'
		&& (
			!empty($activity['Children'][0]['Properties']['fieldcondition'])
			||
			!empty($activity['Children'][0]['Properties']['mixedcondition'])
		)
		&& !empty($activity['Children'][1]['Properties']['truecondition'])
		&& count($activity['Children'][0]['Children']) === 1
	)
	{
		$conditionGroup = new static();
		$conditionGroup->setType(static::TYPE_MIXED);
		$conditionGroup->setActivityNames($activity);
		$conditionGroup->setActivated(CBPHelper::getBool($activity['Activated'] ?? true));

		$isMixed = isset($activity['Children'][0]['Properties']['mixedcondition']);
		$bizprocConditions = $activity['Children'][0]['Properties'][$isMixed?'mixedcondition':'fieldcondition'];

		foreach ($bizprocConditions as $index => $condition)
		{
			if (!$isMixed)
			{
				$condition = self::convertDocumentCondition($condition);
			}

			$property = $template->getProperty($condition['object'], $condition['field']);
			if ($property && $property['Type'] === 'user')
			{
				$condition['value'] = CBPHelper::UsersArrayToString(
					$condition['value'],
					null,
					$documentType
				);
			}

			$conditionItem = new Condition(array(
				'object' => $condition['object'],
				'field' => $condition['field'],
				'operator' => $condition['operator'],
				'value' => self::convertExpressions($condition['value'], $documentType),
			));

			$nextCondition = isset($bizprocConditions[$index + 1]) ? $bizprocConditions[$index + 1] : null;
			$joiner = ($nextCondition && (!empty($nextCondition[3]) || !empty($nextCondition['joiner'])))
				? static::JOINER_OR : static::JOINER_AND;

			$conditionGroup->addItem($conditionItem, $joiner);
		}

		$activity = $activity['Children'][0]['Children'][0];
	}

	return $conditionGroup;
}