Перейти к содержанию

Documentgenerator

Ссылки

Для смарт процесса в настройках выставить галку Print documents

Пример из документации

\Bitrix\Main\Loader::includeModule('documentgenerator');

$template_id = 3; //id шаблона документа
$entity_id = 147; //id сущности (лида / сделки / элемента смарт-процесса и т.п.), по которой нужно создать документ
//загрузка шаблона
$template = \Bitrix\DocumentGenerator\Template::loadById($template_id);
//далее нужно указать на конкретный класс сущности CRM, чтобы установить тип провайдера. Вместо Lead может быть Deal, Company и т.п.
//для смарт-процесса вместо Lead поставить Dynamic130 (где 130 - ENTITY_TYPE_ID смарт-процесса)
//даже если по запросу списка провайдеров выводит \Dynamic130_2 или подобное, пишется сокращенный вариант
$template->setSourceType(\Bitrix\Crm\Integration\DocumentGenerator\DataProvider\Lead::class);
//создание документа
$document = \Bitrix\DocumentGenerator\Document::createByTemplate($template, $entity_id);
//устанавливаем значения переменных в шаблоне
$fields = array(
    'MyCompanyTitle' => ['VALUE' => 'ООО Наша компания'],
    'MyCompanyRequisiteRqDirector' => ['VALUE' => 'Вася Мужичков'],
);
$document->setFields($fields);
//сохраняем файл
$result = $document->getFile();
if($result->isSuccess()){
    $diskFileID = $result->getData()['emailDiskFile'];
}
echo $diskFileID;

Список провайдеров для setSourceType

  • модуль documentgenerator
  • событие onGetDataProviderList

Связи таблиц

SELECT
    template.ID,
    file.STORAGE_WHERE,
    object.FILE_ID,
    bFile.SUBDIR,
    bFile.FILE_NAME,
    CONCAT(bFile.SUBDIR, '/', bFile.FILE_NAME) as fileName
FROM b_documentgenerator_template template
LEFT JOIN b_documentgenerator_file file    ON template.FILE_ID = file.ID
LEFT JOIN b_disk_object            object  ON file.STORAGE_WHERE = object.ID
LEFT JOIN b_file                   bFile   ON object.FILE_ID = bFile.ID
WHERE template.ID = 17;

С помощью данного запроса можно получить информацию о файле, который используется в шаблоне ID = 17.

  • STORAGE_WHERE — ID файла в таблице b_disk_object
  • FILE_ID — ID файла в таблице b_file
  • SUBDIR — путь от папки upload, в котором лежит физический файл-шаблон
  • FILE_NAME — имя файла-шаблона
  • fileName — путь до файла-шаблона от папки upload