public static function GetDocumentNames($ownerTypeID, $ownerID) { if (!(IsModuleInstalled('bizproc') && CModule::IncludeModule('bizproc'))) { return false; } $ownerTypeID = intval($ownerTypeID); $ownerID = intval($ownerID); $docName = self::ResolveDocumentName($ownerTypeID); if ($docName === '') { return array(); } $ownerTypeName = CCrmOwnerType::ResolveName($ownerTypeID); if ($ownerTypeName === '') { return array(); } /*$arDocumentStates = CBPDocument::GetDocumentStates( array('crm', $docName, $ownerTypeName), array('crm', $docName, $ownerTypeName.'_'.$ownerID) );*/ $arDocumentStates = CBPStateService::GetDocumentStates(array('crm', $docName, $ownerTypeName . '_' . $ownerID)); $result = array(); foreach ($arDocumentStates as $arDocumentState) { if ($arDocumentState['ID'] !== '' && $arDocumentState['TEMPLATE_NAME'] !== '') { $result[] = $arDocumentState['TEMPLATE_NAME']; } } return $result; }
/** * Метод удаляет все связанные с документом записи. * * @param array $documentId - код документа в виде массива array(модуль, сущность, код_документа_в_модуле). * @param array $arErrors - массив ошибок, которые произошли при удалении в виде array(array("code" => код_ошибки, "message" => сообщение, "file" => путь_к_файлу), ...). */ public static function OnDocumentDelete($documentId, &$arErrors) { $arErrors = array(); $arStates = CBPStateService::GetDocumentStates($documentId); foreach ($arStates as $workflowId => $arState) { if (strlen($arState["ID"]) > 0 && strlen($arState["WORKFLOW_STATUS"]) > 0) self::TerminateWorkflow($workflowId, $documentId, $arErrors); CBPTrackingService::DeleteByWorkflow($workflowId); CBPTaskService::DeleteByWorkflow($workflowId); } CBPStateService::DeleteByDocument($documentId); CBPHistoryService::DeleteByDocument($documentId); }
/** * Метод удаляет все связанные с документом записи. * * @param array $documentId - код документа в виде массива array(модуль, сущность, код_документа_в_модуле). * @param array $arErrors - массив ошибок, которые произошли при удалении в виде array(array("code" => код_ошибки, "message" => сообщение, "file" => путь_к_файлу), ...). */ public static function OnDocumentDelete($documentId, &$arErrors) { $arErrors = array(); $arStates = CBPStateService::GetDocumentStates($documentId); foreach ($arStates as $workflowId => $arState) { $terminate = strlen($arState["ID"]) > 0 && strlen($arState["WORKFLOW_STATUS"]) > 0; $errors = static::killWorkflow($workflowId, $terminate, $documentId); if ($errors) { foreach ($errors as $e) { $arErrors[] = $e; } } } CBPStateService::DeleteByDocument($documentId); CBPHistoryService::DeleteByDocument($documentId); }