Документация для разработчиков
Темная тема

Генератор документов в crm: создание "путевого листа" по данным сделки

Пример добавления своего шаблона документа и создания на его основе готового документа с данными, например, сделки. В примере template.docx  - шаблон документа.

Внимание! Для использования примера настройте работу класса CRest и подключите файл crest.php в файлах, где используется данный класс. Подробнее.

$filePath = __DIR__ . '/template.docx'; // path to template local file
$iDealID = 1;//deal ID
$sDocName = 'Demo Packing Sheet UK';

$resNum = CRest::call(
	'crm.documentgenerator.numerator.add',
	[
		'fields' => [
			'name' => 'Rest Numerator',
			'template' => '{NUMBER}',
		]
	]
);
if (!empty($resNum['result']['numerator']['id']))
{
	$resTemplate = CRest::call(
		'crm.documentgenerator.template.add',
		[
			'fields' => [
				'name' => $sDocName,
				'numeratorId' => $resNum['result']['numerator']['id'],// crm.documentgenerator.numerator.add
				'region' => 'uk',//eu,de,ua,by,ru
				'users' => [
					'UA'//User All
				],
				'entityTypeId' => ['2'],//2 is deal in CRest::call('crm.enum.ownertype');
				'file' => base64_encode(file_get_contents($filePath))
			]
		]
	);
	if (!empty($resTemplate['result']['template']['id']))
	{
		$resDoc = CRest::call(
			'crm.documentgenerator.document.add',
			[
				'templateId' => $resTemplate['result']['template']['id'],
				'entityTypeId' => '2',//2 is deal in CRest::call('crm.enum.ownertype');
				'entityId' => $iDealID,
			]
		);
	}
}

if (!empty($resDoc['result']))
{
	echo json_encode(['message' => 'Docx creat']);
}
elseif (!empty($resDoc['error_description']))
{
	echo json_encode(['message' => 'Docx not created: ' . $resDoc['error_description']]);
}
else
{
	echo json_encode(['message' => 'Docx not created']);
}


© «Битрикс», 2001-2024, «1С-Битрикс», 2024