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