- Модуль: 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;
}