• Модуль: documentgenerator
  • Путь к файлу: ~/bitrix/modules/documentgenerator/lib/document.php
  • Класс: BitrixDocumentGeneratorDocument
  • Вызов: Document::save
protected function save(): Document
{
	if($this->result->isSuccess())
	{
		$resultData = $this->result->getData();
		$saveResult = $this->body->save([
			'fileName' => $this->getFileName(),
			'templateId' => $this->template->ID,
			'value' => $this->getValue(Template::MAIN_PROVIDER_PLACEHOLDER),
		]);
		if(!$saveResult->isSuccess())
		{
			$this->result->addErrors($saveResult->getErrors());
		}
		else
		{
			$data = [
				'TEMPLATE_ID' => $this->template->ID,
				'VALUE' => $this->getValue(Template::MAIN_PROVIDER_PLACEHOLDER),
				'FILE_ID' => $saveResult->getId(),
				'VALUES' => $this->getExternalValues(true),
				'PROVIDER' => $this->template->getSourceType(),
				'IMAGE_ID' => null,
				'PDF_ID' => null,
				'UPDATE_TIME' => new DateTime(),
				'TITLE' => $this->getTitle(),
				'NUMBER' => $this->getNumber(false),
			];
			if($this->ID > 0)
			{
				$data['UPDATED_BY'] = $this->getUserId();
				$result = DocumentTable::update($this->ID, $data);
				$eventName = 'onUpdateDocument';
			}
			else
			{
				$data['CREATED_BY'] = $this->getUserId();
				$result = DocumentTable::add($data);
				$eventName = 'onCreateDocument';
			}
			if($result->isSuccess())
			{
				$data['ID'] = $result->getId();
				$this->data = $data;
				$resultData['DOCUMENT_ID'] = $result->getId();
				if($eventName)
				{
					EventManager::getInstance()->send(new Event(Driver::MODULE_ID, $eventName, ['document' => $this]));
				}
			}
			else
			{
				$this->result->addErrors($result->getErrors());
			}
		}
		$this->result->setData($resultData);
	}

	return $this;
}