Пример #1
0
	/**
	* Метод удаляет все связанные с документом записи.
	*
	* @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);
	}
Пример #2
0
 /**
  * Метод удаляет все связанные с документом записи.
  *
  * @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);
 }