• Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/lib/Debugger/Session/Session.php
  • Класс: BitrixBizprocDebuggerSessionSession
  • Вызов: Session::fixateDocument
public function fixateDocument(string $documentId)
{
	if (!$this->canAddDocument())
	{
		$result = new BitrixMainResult();
		$error = static::getErrorByCode(self::ERROR_DOCUMENT_ID_ALREADY_FIXED);
		$result->addError($error);

		return $result;
	}

	if ($this->getMode() === Mode::EXPERIMENTAL)
	{
		$addDocumentResult = $this->addDocument($documentId);
		if ($addDocumentResult->isSuccess())
		{
			$this->setFixed(true);

			$result = $this->save();
			if ($result->isSuccess())
			{
				$documentService = CBPRuntime::GetRuntime(true)->getDocumentService();

				$documentService->onDebugSessionDocumentStatusChanged(
					$this->getFixedDocument()->getParameterDocumentId(),
					$this->getStartedBy(),
					DocumentStatus::IN_DEBUG
				);
			}

			return $result;
		}

		return $addDocumentResult;
	}

	$documents = clone($this->getDocuments());
	$documentIds = $documents ? $documents->getDocumentIdList() : [];

	if (!in_array($documentId, $documentIds, true))
	{
		$result = new BitrixMainResult();
		$error = static::getErrorByCode(self::ERROR_UNKNOWN_DOCUMENT_ID);
		$result->addError($error);
		$result->setData([
			'session' => $this,
			'documentId' => $documentId,
		]);

		return $result;
	}

	foreach ($documents as $document)
	{
		if ($document->getDocumentId() === $documentId)
		{
			$this->setFixed(true);

			continue;
		}

		$this->removeFromDocuments($document);
	}

	$result = $this->save();
	if ($result->isSuccess())
	{
		$documentService = CBPRuntime::GetRuntime(true)->getDocumentService();

		$documentService->onDebugSessionDocumentStatusChanged(
			$this->getFixedDocument()->getParameterDocumentId(),
			$this->getStartedBy(),
			DocumentStatus::IN_DEBUG
		);
	}

	return $result;
}