• Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/classes/general/taskservice.php
  • Класс: CBPTaskService
  • Вызов: CBPTaskService::onTaskChange
static function onTaskChange($taskId, $taskData, $status)
{
	$workflowId = isset($taskData['WORKFLOW_ID']) ? $taskData['WORKFLOW_ID'] : null;
	if (!$workflowId)
	{
		$iterator = CBPTaskService::GetList(array('ID'=>'DESC'), array('ID' => $taskId), false, false, array('WORKFLOW_ID'));
		$row = $iterator->fetch();
		if (!$row)
			return false;
		$workflowId = $row['WORKFLOW_ID'];
		$taskData['WORKFLOW_ID'] = $workflowId;
	}

	//clean counters cache
	$users = array();
	if (!empty($taskData['USERS']))
		$users = $taskData['USERS'];
	if (!empty($taskData['USERS_REMOVED']))
		$users = array_merge($users, $taskData['USERS_REMOVED']);
	if (!empty($taskData['USERS_STATUSES']))
		$users = array_merge($users, array_keys($taskData['USERS_STATUSES']));
	self::cleanCountersCache($users);

	//ping document
	$runtime = CBPRuntime::GetRuntime();
	$runtime->StartRuntime();
	$documentId = CBPStateService::GetStateDocumentId($workflowId);
	if ($documentId)
	{
		$documentService = $runtime->GetService('DocumentService');
		try
		{
			$documentService->onTaskChange($documentId, $taskId, $taskData, $status);
		}
		catch (Exception $e)
		{

		}
	}
	return true;
}