/** * Метод собирает и проверяет значения параметров запуска рабочего потока, заданных в форме метода StartWorkflowParametersShow. * * @param int $templateId - код шаблона кабочего потока. * @param array $arWorkflowParameters - массив параметров запуска рабочего потока. * @param array $arErrors - массив ошибок, которые произошли при выполнении в виде array(array("code" => код_ошибки, "message" => сообщение, "parameter" => название_параметра, "file" => путь_к_файлу), ...). * @return array - массив корректных значений параметров запуска рабочего потока в виде array(код_параметра => значение, ...) */ public static function StartWorkflowParametersValidate($templateId, $arWorkflowParameters, $documentType, &$arErrors) { $arErrors = array(); $templateId = intval($templateId); if ($templateId <= 0) { $arErrors[] = array( "code" => "", "message" => GetMessage("BPCGDOC_EMPTY_WD_ID"), ); return array(); } if (!isset($arWorkflowParameters) || !is_array($arWorkflowParameters)) $arWorkflowParameters = array(); $arWorkflowParametersValues = array(); $arRequest = $_REQUEST; foreach ($_FILES as $k => $v) { if (array_key_exists("name", $v)) { if (is_array($v["name"])) { $ks = array_keys($v["name"]); for ($i = 0, $cnt = count($ks); $i < $cnt; $i++) { $ar = array(); foreach ($v as $k1 => $v1) $ar[$k1] = $v1[$ks[$i]]; $arRequest[$k][] = $ar; } } else { $arRequest[$k] = $v; } } } if (count($arWorkflowParameters) > 0) { $arErrorsTmp = array(); $ar = array(); foreach ($arWorkflowParameters as $parameterKey => $arParameter) $ar[$parameterKey] = $arRequest["bizproc".$templateId."_".$parameterKey]; $arWorkflowParametersValues = CBPWorkflowTemplateLoader::CheckWorkflowParameters( $arWorkflowParameters, $ar, $documentType, $arErrors ); } return $arWorkflowParametersValues; }
if (array_key_exists("name", $v)) { if (is_array($v["name"])) { $ks = array_keys($v["name"]); for ($i = 0, $cnt = count($ks); $i < $cnt; $i++) { $ar = array(); foreach ($v as $k1 => $v1) { $ar[$k1] = $v1[$ks[$i]]; } $arRequest[$k][] = $ar; } } else { $arRequest[$k] = $v; } } } $arWorkflowParameters = CBPWorkflowTemplateLoader::CheckWorkflowParameters($workflowTemplate["PARAMETERS"], $arRequest, $documentParameters["DOCUMENT_TYPE"], $arErrorsTmp); if (count($arErrorsTmp) > 0) { $bCanStartWorkflow = false; foreach ($arErrorsTmp as $e) { $arError[] = array("id" => "CheckWorkflowParameters", "text" => $e["message"]); } } else { $bCanStartWorkflow = true; } } if ($bCanStartWorkflow) { $arErrorsTmp = array(); $wfId = CBPDocument::StartWorkflow($arParams["TEMPLATE_ID"], $documentParameters["DOCUMENT_ID"], array_merge($arWorkflowParameters, array("TargetUser" => "user_" . intval($GLOBALS["USER"]->GetID()))), $arErrorsTmp); if (count($arErrorsTmp) > 0) { $arResult["SHOW_MODE"] = "StartWorkflowError"; foreach ($arErrorsTmp as $e) {
if (array_key_exists("name", $v)) { if (is_array($v["name"])) { $ks = array_keys($v["name"]); for ($i = 0, $cnt = count($ks); $i < $cnt; $i++) { $ar = array(); foreach ($v as $k1 => $v1) { $ar[$k1] = $v1[$ks[$i]]; } $arRequest[$k][] = $ar; } } else { $arRequest[$k] = $v; } } } $arWorkflowParameters = CBPWorkflowTemplateLoader::CheckWorkflowParameters($arWorkflowTemplate["PARAMETERS"], $arRequest, $documentType, $arErrorsTmp); if (count($arErrorsTmp) > 0) { $bCanStartWorkflow = false; foreach ($arErrorsTmp as $e) { $errorMessage .= $e["message"] . "<br />"; } } else { $bCanStartWorkflow = true; } } if ($bCanStartWorkflow) { $arErrorsTmp = array(); $wfId = CBPDocument::StartWorkflow($workflowTemplateId, $documentId, $arWorkflowParameters, $arErrorsTmp); if (count($arErrorsTmp) > 0) { $showMode = "StartWorkflowError"; foreach ($arErrorsTmp as $e) {