• Модуль: documentgenerator
  • Путь к файлу: ~/bitrix/modules/documentgenerator/lib/document.php
  • Класс: BitrixDocumentGeneratorDocument
  • Вызов: Document::getFile
public function getFile(bool $sendToTransformation = true, bool $skipTransformationError = false): Result
{
	if(!$this->result->isSuccess())
	{
		return $this->result;
	}
	if(!$this->ID)
	{
		$this->process()->save();
	}
	if($this->result->isSuccess())
	{
		$data = [];
		$provider = $this->getProvider();
		if($provider)
		{
			$data = $provider->getAdditionalDocumentInfo($this);
		}
		$publicUrl = ExternalLinkTable::loadByDocumentId($this->ID);
		$data = array_merge($data, [
			'downloadUrl' => $this->getDownloadUrl(),
			'publicUrl' => $this->getPublicUrl(),
			'title' => $this->getTitle(),
			'number' => $this->getNumber(),
			'id' => $this->ID,
			'createTime' => $this->getCreateTime(),
			'updateTime' => $this->getUpdateTime(),
			'stampsEnabled' => $this->isStampsEnabled(),
			'isTransformationError' => false,
			'value' => $this->getValue(Template::MAIN_PROVIDER_PLACEHOLDER),
			'values' => $this->getExternalValues(),
		]);
		if($publicUrl)
		{
			$data['publicUrlView'] = [
				'time' => $publicUrl['VIEWED_TIME'],
			];
		}
		$template = $this->getTemplate();
		if($template)
		{
			$data['templateId'] = $template->ID;
		}
		$provider = $this->getProvider();
		if($provider)
		{
			$data['provider'] = get_class($provider);
		}
		if($sendToTransformation)
		{
			if(!$this->PDF_ID || !$this->IMAGE_ID)
			{
				$transformResult = $this->transform();
				if($transformResult->isSuccess())
				{
					$data['isTransformationError'] = false;
					$cancelReason = $transformResult->getData()['cancelReason'] ?? null;
					if ($cancelReason)
					{
						$data['transformationCancelReason'] = $cancelReason;
					}
				}
				else
				{
					$data['isTransformationError'] = true;
					$error = $transformResult->getErrors()[0];
					$data['transformationErrorMessage'] = $error->getMessage();
					$data['transformationErrorCode'] = $error->getCode();
					if(!$skipTransformationError)
					{
						$this->result->addErrors($transformResult->getErrors());
					}
				}
			}
		}
		$pullTag = $this->getPullTag();
		if($pullTag)
		{
			$data['pullTag'] = $pullTag;
		}
		if($this->IMAGE_ID > 0)
		{
			$data['imageUrl'] = $this->getImageUrl();
		}
		if($this->PDF_ID > 0)
		{
			$data['pdfUrl'] = $this->getPdfUrl();
			$data['printUrl'] = $this->getPrintUrl();
			$data['emailDiskFile'] = $this->getEmailDiskFile();
		}
		else
		{
			$data['emailDiskFile'] = $this->getEmailDiskFile(true);
		}
		$this->result->setData($data);
	}
	else
	{
		$this->result->setData([]);
	}

	return $this->result;
}