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

Document

Document - класс служит для генерации экземпляра документа, либо работы с уже существующим. Создается на основе шаблона, который отдает файл + настройки полей + тип основного провайдера. Далее перед генерацией документу необходимо передать значения полей / плейсхолдеров. После этого документ можно сгенерировать. После генерации он будет автоматически сохранен в таблице документов.

Методы класса

МетодОписание
createByTemplate(\Bitrix\DocumentGenerator\Template $template, $value)
Метод новый экземпляр на основе шаблона. Здесь $value - это значение основного провайдера.
loadById($documentId)
Метод загружает экземпляр документа из базы данных по его ид $documentId.
setValues(array $values)
Метод задает значения полей. В массиве $values ключ - это имя поля, а значение - его значение. Метод не обнуляет уже установленные значения, но перезапишет старые.
setFields(array $fields)
Метод задает описания полей. В массиве $fields ключ - это имя поля, а значение - его описание в виде массива. Метод не обнуляет уже установленные описания, но перезапишет старые.
checkFields($requiredOnly = true)
Метод возвращает массив описаний незаполненных полей. Если $requiredOnly = true, то проверяются только обязательные поля. Иначе вернет описания всех полей, для которых не были найдены значения.
getTemplate()
Метод вернет шаблон документа, если он есть.
getFile($sendToTransformation = true, $skipTransformationError = false)
Метод генерирует новый документ, если его ещё нет. Возвращает информацию объект \Bitrix\Main\Result, где в случае успеха будет следующий массив данных:
[
	'downloadUrl' => '', // ссылка на скачивание
	'publicUrl' => '', // публичная ссылка, если есть
	'title' => '', // заголовок 
	'number' => '', //номер
	'id' => '', //ID
	'createTime' => '', //время генерации
	'updateTime' => '', //время обновления
	'stampsEnabled' => '', //true если с печатями и подписями, иначе false
	'isTransformationError' => '', //true если была ошибка конвертации, иначе false
	'value' => '', //значение, с которым был создан основной провайдер
	'values' => [], // массив дополнительных значений
	'publicUrlView' => [ // с версии documentgenerator 20.100.0, информация о просмотре публичной ссылки, если публичная ссылка есть
		'time' => ' ', // время первого просмотра публичной ссылки
		'ip' => ' ', // ip-адрес первого просмотра публичной ссылки
	],
];

Если $sendToTransformation = false - файл не будет послан на конвертацию автоматически.
Если $skipTransformationError = true, то в результат не будут добавляться ошибки конвертации (используется для подавления этой ошибки в рест-методах).
getProvider()
Метод вернет экземпляр \Bitrix\DocumentGenerator\DataProvider, который использовался для генерации документа. Этот метод может вернуть false, если экземпляр не удалось создать.
update(array $values)
Метод обновляет существующий документ с новым набором значений. Массив $values аналогичен параметру в методе setValues().
getFields(array $fieldNames = [], $isConvertValuesToString = false, $groupsAsArrays = false)
Метод возвращает список сгруппированных полей с конечными значениями $fields - массив имён полей для вывода описания
$isConvertValuesToString - если true - объекты будут преобразованы в строки (как правило, для json)


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
7
Разработчик Андрей
Сообщение не промодерировано, возможны ошибки и неточности.
Довольно долго пытался разобраться со всем этим. Если вам, как и мне, нужно просто создать документ по сущности crm по уже имеющемуся шаблону (аналогично активити бизнес-процесса), то ниже образец кода (от него уже можно отталкиваться и делать что-то дальше)
Создает документ, создает дело в таймлайне сущности

P.S. В методе createByTemplate сказано в описании "$value - это значение основного провайдера"
Чего только не пихал туда, и классы, и названия провайдеров.. Оказалось, это просто id сущности (лида / сделки и т.п.)
Код
$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' => array('VALUE' => 'ООО Наша компания'),
    'MyCompanyRequisiteRqDirector' => array('VALUE' => 'Вася Мужичков'),
);
$document->setFields($fields);
//сохраняем файл
$result = $document->getFile();
if($result->isSuccess()){
    $diskFileID = $result->getData()['emailDiskFile'];
}
echo $diskFileID;
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх