- Модуль: documentgenerator
- Путь к файлу: ~/bitrix/modules/documentgenerator/lib/controller/document.php
- Класс: BitrixDocumentGeneratorControllerDocument
- Вызов: Document::addAction
public function addAction(BitrixDocumentGeneratorTemplate $template, $providerClassName = null, $value = null, array $values = [], $stampsEnabled = null, array $fields = [], CRestServer $restServer = null)
{
if($restServer)
{
$providerClassName = Rest::class;
}
elseif(!$providerClassName)
{
$this->errorCollection[] = new Error('Empty required parameter "providerClassName"');
return null;
}
if(!$value)
{
$this->errorCollection[] = new Error('Empty required parameter "value"');
return null;
}
if($template->isDeleted())
{
$this->errorCollection[] = new Error('Cannot create document on deleted template');
return null;
}
$template->setSourceType($providerClassName);
$document = BitrixDocumentGeneratorDocument::createByTemplate($template, $value);
if(!$document->hasAccess())
{
$this->errorCollection[] = new Error('Access denied', static::ERROR_ACCESS_DENIED);
return null;
}
if(Bitrix24Manager::isEnabled() && Bitrix24Manager::isDocumentsLimitReached())
{
$this->errorCollection[] = new Error('Maximum count of documents has been reached', Bitrix24Manager::LIMIT_ERROR_CODE);
return null;
}
if($restServer || $this->getScope() === static::SCOPE_REST)
{
CreationMethod::markDocumentAsCreatedByRest($document);
}
else
{
CreationMethod::markDocumentAsCreatedByPublic($document);
}
if($stampsEnabled === null)
{
$stampsEnabled = ($template->WITH_STAMPS === 'Y' ? 1 : 0);
}
else
{
$stampsEnabled = (int) $stampsEnabled;
}
$result = $document->enableStamps($stampsEnabled === 1)->setValues($values)->setFields($fields)->getFile(true, $this->getScope() === static::SCOPE_REST);
if(!$result->isSuccess())
{
$this->errorCollection = $result->getErrorCollection();
return null;
}
return ['document' => $result->getData()];
}