logo

[ELMA3] Генерация файла с помощью сценария

В примере рассмотрен сценарий, с помощью которого можно сгенерировать файл по шаблону. Шаблон хранится в версии документа.

Пример сценария с использованием PublicAPI

Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.12.2 включительно.
Пространства имен:
using EleWise.ELMA.Documents.Managers;
using EleWise.ELMA.Runtime.Managers;
using EleWise.ELMA.Services;
Текст сценария:
int id_doc = 26; //идентификатор документа, в котором содержится шаблон 
var versionFile = Locator.GetServiceNotNull<IDocumentFileManager>().GetFileByDocumentId(id_doc);
var file = Locator.GetServiceNotNull<ITemplateFileManager>().CreateFromTemplate(versionFile.Id);
// Создаем генератор 
PublicAPI.Services.DocumentGenerator.Generate(file, context);
// Сохраняем файл сгенерированного документа
PublicAPI.Services.File.SaveFile(file);
// Записываем результат в переменную 
context.ResultFile = file;

Пример сценария без использования PublicAPI

Для работы сценария нужно подключить сборки:

Elewise.ELMA.Documents 
Elewise.TemplateGenerator.Merged
Пространства имен:
using EleWise.ELMA.Documents.Managers; 
using EleWise.ELMA.Runtime.Managers; 
using EleWise.ELMA.Services; 
using EleWise.ELMA.Templates;
Текст сценария:
int id_doc=26; //идентификатор документа, в котором содержится шаблон 
var versionFile = Locator.GetServiceNotNull<IDocumentFileManager>().GetFileByDocumentId(id_doc); 
var file = Locator.GetServiceNotNull<ITemplateFileManager>().CreateFromTemplate(versionFile.Id); 
// Создаем генератор 
var generator = Locator.GetServiceNotNull<DocumentGeneratorManager>().Create(file.ContentFilePath); 
// Генерируем документ 
generator.Generate(context); 
// Сохраняем файл сгенерированного документа 
Locator.GetServiceNotNull<IFileManager>().SaveFile(file); 
// Записываем результат в переменную 
context.ResultFile = file;