Артем Пищулин,
Точно надо напрямую изменить контент файла?
Если надо изменить значения полей, то есть событие onBeforeProcessDocument. В обработчике можно вызвать \Bitrix\DocumentGenerator\Document::setValues(). Пример есть в документации
Если всё-таки нужен именно контент, то алгоритм будет такой:
В обработчик события приходит объект \Bitrix\DocumentGenerator\Document.
Из него можно достать FILE_ID
По этому ид дергаем \Bitrix\DocumentGenerator\Model\FileTable::getContent()
Меняем контент, а потом обновляем его методом \Bitrix\DocumentGenerator\Model\FileTable::updateContent()
Точно надо напрямую изменить контент файла?
Если надо изменить значения полей, то есть событие onBeforeProcessDocument. В обработчике можно вызвать \Bitrix\DocumentGenerator\Document::setValues(). Пример есть в документации
Если всё-таки нужен именно контент, то алгоритм будет такой:
В обработчик события приходит объект \Bitrix\DocumentGenerator\Document.
Из него можно достать FILE_ID
По этому ид дергаем \Bitrix\DocumentGenerator\Model\FileTable::getContent()
Меняем контент, а потом обновляем его методом \Bitrix\DocumentGenerator\Model\FileTable::updateContent()
| Код |
|---|
\Bitrix\Main\EventManager::getInstance()->addEventHandler('documentgenerator', 'onCreateDocument', function($event)
{
$document = $event->getParameter('document');
$fileId = $document->FILE_ID;
$content = \Bitrix\DocumentGenerator\Model\FileTable::getContent();
$content = $content; // some modification
\Bitrix\DocumentGenerator\Model\FileTable::updateContent($fileId, $content);
}); |