- Модуль: bizproc
- Путь к файлу: ~/bitrix/modules/bizproc/lib/automation/engine/conditiongroup.php
- Класс: BitrixBizprocAutomationEngineConditionGroup
- Вызов: ConditionGroup::createBizprocActivity
public function createBizprocActivity(array $childActivity, array $documentType, Template $template)
{
$mixedCondition = [];
$bizprocJoiner = 0;
$documentService = CBPRuntime::GetRuntime()->getDocumentService();
/** @var Condition $condition */
foreach ($this->getItems() as [$condition, $joiner])
{
$object = $condition->getObject();
$field = $condition->getField();
$value = $condition->getValue();
$property = $template->getProperty($object, $field);
$operator = $condition->getOperator();
$isOperatorWithValue = !in_array(
$operator,
[BizprocActivityOperatorEmptyOperator::getCode(), BizprocActivityOperatorNotEmptyOperator::getCode()],
true
);
if ($property && $isOperatorWithValue)
{
$currentValues = ['field' => $value];
$errors = [];
$isBetweenOperator = $operator === BitrixBizprocActivityOperatorBetweenOperator::getCode();
$valueInternal =
$isBetweenOperator
? []
: $documentService->getFieldInputValue(
$documentType,
$property,
'field',
$currentValues,
$errors
)
;
if ($isBetweenOperator)
{
$currentValues['field_greater_then'] = is_array($value) && isset($value[0]) ? $value[0] : $value;
$currentValues['field_less_then'] = is_array($value) && isset($value[1]) ? $value[1] : '';
$property['Multiple'] = false;
$valueInternal1 = $documentService->getFieldInputValue(
$documentType,
$property,
'field_greater_then',
$currentValues,
$errors
);
$valueInternal2 = $documentService->getFieldInputValue(
$documentType,
$property,
'field_less_then',
$currentValues,
$errors
);
$valueInternal = [$valueInternal1 ?? '', $valueInternal2 ?? ''];
}
if (!$errors)
{
$value = $valueInternal;
}
}
$mixedCondition[] = [
'object' => $object,
'field' => $field,
'operator' => $condition->getOperator(),
'value' => self::unConvertExpressions($value, $documentType),
'joiner' => $bizprocJoiner,
];
$bizprocJoiner = ($joiner === static::JOINER_OR) ? 1 : 0;
}
$title = Loc::getMessage('BIZPROC_AUTOMATION_CONDITION_TITLE');
$activated = $childActivity['Activated'] === 'N' ? 'N' : 'Y';
$activity = [
'Type' => 'IfElseActivity',
'Name' => Robot::generateName(),
'Activated' => $activated,
'Properties' => ['Title' => $title],
'Children' => [
[
'Type' => 'IfElseBranchActivity',
'Name' => Robot::generateName(),
'Properties' => [
'Title' => $title,
'mixedcondition' => $mixedCondition
],
'Children' => [$childActivity],
'Activated' => $activated,
],
[
'Type' => 'IfElseBranchActivity',
'Name' => Robot::generateName(),
'Properties' => [
'Title' => $title,
'truecondition' => '1',
],
'Children' => [],
'Activated' => $activated,
]
]
];
return $activity;
}