• Модуль: documentgenerator
  • Путь к файлу: ~/bitrix/modules/documentgenerator/lib/integration/transformermanager.php
  • Класс: BitrixDocumentGeneratorIntegrationTransformerManager
  • Вызов: TransformerManager::transform
public function transform(array $formats)
{
	if(!$this->checkFormats($formats))
	{
		$this->result->addError(new Error('Wrong format'));
		return $this->result;
	}

	if(!$this->document->FILE_ID)
	{
		$this->result->addError(new Error('Empty FILE_ID'));
		return $this->result;
	}

	foreach($formats as $extension)
	{
		if($this->document->{static::getFormats()[$extension]['KEY']})
		{
			unset($formats[$extension]);
		}
	}

	if(empty($formats))
	{
		return $this->result->setData([
			'cancelReason' => new Error(
				'All transform formats are present',
				static::ERROR_CODE_TRANSFORM_FORMATS_FILLED,
			),
		]);
	}

	if($this->isConverted($formats))
	{
		$status = $this->transformInfo['status'] ?? 0;
		if ($status === Command::STATUS_SUCCESS)
		{
			$this->result->setData([
				'cancelReason' => new Error(
					'All transform formats already processed',
					static::ERROR_CODE_TRANSFORM_FORMATS_PROCESSED,
				),
			]);
		}

		return $this->result;
	}

	if($this->result->isSuccess())
	{
		$transformer = new DocumentTransformer();
		$this->result = $transformer->transform($this->getBFileId(), $formats, Driver::MODULE_ID, static::class, ['documentId' => $this->document->ID, 'queue' => static::QUEUE_NAME]);
	}

	return $this->result;
}