Документация для разработчиков
Темная тема

GetDocumentStates

Описание и параметры

array
public static function CBPDocument::GetDocumentStates(
	array documentType,
	array documentId = null
);

Метод возвращает массив всех рабочих потоков и их состояний для данного документа. Если задан код документа, то метод возвращает массив всех запущенных для данного документа рабочих потоков (в том числе и завершенные), а так же шаблонов рабочих потоков, настроенных на автозапуск при изменении документа. Если код документа не задан, то метод возвращает массив шаблонов рабочих потоков, настроенных на автозапуск при создании документа.

Примечание: Метод принимает массив конфигурационных параметров и генерирует скрипты, необходимые для показа файлового диалога. Метод статический.

Параметры метода

ПараметрОписание
documentTypeТип документа в виде массива array(модуль, класс_документа, тип_документа_в_модуле)
documentIdКод документа в виде массива array(модуль, класс_документа, код_документа_в_модуле). Если новый документ, то null

Возвращаемое значение

Массив имеет вид:

array(
	код_рабочего_потока_или_шаблона => array(
		"ID" => код_рабочего_потока,
		"TEMPLATE_ID" => код_шаблона_рабочего_потока,
		"TEMPLATE_NAME" => название_шаблона_рабочего_потока,
		"TEMPLATE_DESCRIPTION" => описание_шаблона_рабочего_потока,
		"TEMPLATE_PARAMETERS" => массив_параметров_запуска_рабочего_потока_из_шаблона,
		"STATE_NAME" => текущее_состояние_рабочего_потока,
		"STATE_TITLE" => название_текущего_состояния_рабочего_потока,
		"STATE_MODIFIED" => дата_изменения_статуса_рабочего_потока,
		"STATE_PARAMETERS" => массив_событий_принимаемых_потоком_в_данном_состоянии,
		"STATE_PERMISSIONS" => права_на_операции_над_документом_в_данном_состоянии,
		"WORKFLOW_STATUS" => статус_рабочего_потока,
	),
	. . .
)
В зависимости от того, рабочий поток это или шаблон, часть полей может быть не установлена. Для шаблона рабочего потока типа конечных автоматов состоянием является его начальное состояние.
Массив параметров запуска рабочего потока из шаблона (TEMPLATE_PARAMETERS) имеет вид:
array(
	"param1" => array(
		"Name" => "Параметр 1",
		"Description" => "",
		"Type" => "int",
		"Required" => true,
		"Multiple" => false,
		"Default" => 8,
		"Options" => null,
	),
	"param2" => array(
		"Name" => "Параметр 2",
		"Description" => "",
		"Type" => "select",
		"Required" => false,
		"Multiple" => true,
		"Default" => "v2",
		"Options" => array(
			"v1" => "V 1",
			"v2" => "V 2",
			"v3" => "V 3",
			. . .
		),
	),
	. . .
)
Допустимые типы параметров: int, double, string, text, select, bool, date, datetime, user.
Массив событий, принимаемых потоком в данном состоянии (STATE_PARAMETERS) имеет вид:
array(
	array(
		"NAME" => принимаемое_событие,
		"TITLE" => название_принимаемого_события,
		"PERMISSION" => массив_групп_пользователей_могущих_отправить_событие
	),
	. . .
)
Права на операции над документом в данном состоянии (STATE_PERMISSIONS) имеют вид:
array(
	операция => массив_групп_пользователей_могущих_осуществлять_операцию,
	. . .
)

Примеры использования

<?
$documentType = array("bizproc", "CBPVirtualDocument", "type_".$blockId);
$documentId = array("bizproc", "CBPVirtualDocument", $id);
$arDocumentStates = CBPDocument::GetDocumentStates($documentType, $documentId);
foreach ($arDocumentStates as $arDocumentState)
{
	$arDocumentStateTasks = CBPDocument::GetUserTasksForWorkflow($GLOBALS["USER"]->GetID(), $arDocumentState["ID"]);
	print_r($arDocumentStateTasks);
}
?>


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
konstantin.sal
Сообщение не промодерировано, возможны ошибки и неточности.
Цитата
пишет:
Для смарт-процессов
[CODE]      CModule :: IncludeModule ( 'bizproc' );
   $documentType  =  array ( "crm" ,  "Bitrix\Crm\Integration\BizProc\Document\Dynamic" ,  "DYNAMIC_159" );
   $documentId  =  array ( "crm" ,  "Bitrix\Crm\Integration\BizProc\Document\Dynamic" ,  "DYNAMIC_159_2" );
   $arDocumentStates  =  CBPDocument :: GetDocumentStates ( $documentType ,  $documentId );  Копировать  [/CODE] где 159 - ID смарт-процесса, 2 - ID элемента
Чуть проще:
```
$documentId = $rootActivity->GetDocumentId();
````
2
ivan_salt
Для смарт-процессов
Код
   CModule::IncludeModule('bizproc');


   $documentType = array("crm", "Bitrix\Crm\Integration\BizProc\Document\Dynamic", "DYNAMIC_159");
   $documentId = array("crm", "Bitrix\Crm\Integration\BizProc\Document\Dynamic", "DYNAMIC_159_2");

   $arDocumentStates = CBPDocument::GetDocumentStates($documentType, $documentId);
где 159 - ID смарт-процесса, 2 - ID элемента
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх