[ELMA3] Добавление версии в документ с помощью сценария
В статье приведены сценарии добавления новой версии (контекстная переменная "Файл" (Fayl) имеет тип Файл) в документ (контекстная переменная Документ (Document), в качестве типа которой выбран конкретный тип документа).
Примеры сценариев с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарии, указанные ниже, актуальны для версий системы ELMA до 3.15.38 включительно.
Контекстные переменные:
- context.Document – переменная типа Документ;
- context.Fayl – переменная типа Системные – Файл;
- DocumentVersionStatus – необязательный параметр, если не указан, то для версии устанавливается статус Черновик.
Подключить пространство имен:
using EleWise.ELMA.API;Текст сценария:
PublicAPI.Docflow.DocumentVersion.AddDocumentVersion(context.Document, context.Fayl, PublicAPI.Enums.Documents.DocumentVersionStatus.Current); //Документ, файл, статус версии - текущая(необязательный параметр, если не указан, то для версии устанавливается статус ’Черновик’)
Далее приведен пример сценария для генерации файла-версии из шаблона, находящегося на физическом диске сервера.
Контекстные переменные:
- context.Document - переменная типа Документ;
- context.Fayl - переменная типа Файл.
Подключить пространство имен:
using EleWise.ELMA.Files;
context.Fayl = InterfaceActivator.Create<BinaryFile>(); context.Fayl.Name = "Name.docx"; //имя файла-версии (обязательно указывайте нужное расширение) context.Fayl.CreateDate = DateTime.Now; context.Fayl.InitializeContentFilePath(); System.IO.File.Copy(@"c:\BASA\Document.docx", context.Fayl.ContentFilePath); //1й параметр функции - путь до файла на физическом диске на сервере PublicAPI.Services.DocumentGenerator.Generate(context.Fayl, context); PublicAPI.Services.File.SaveFile(context.Fayl); //сохраняем полученный файл в контекст PublicAPI.Docflow.DocumentVersion.AddDocumentVersion(context.Document, context.Fayl, PublicAPI.Enums.Documents.DocumentVersionStatus.Current); //Добавляем версию в документ со статусом Текущая
Внимание!
Сценарий, указанный ниже, актуален для версии системы ELMA ниже 3.8.
Подключить пространство имен:
Текст сценария:
using EleWise.ELMA.Files; using EleWise.ELMA.Model.Services; using EleWise.ELMA.Services; using EleWise.ELMA.Runtime.Managers; using EleWise.ELMA.Templates;
Текст сценария:
context.Fayl = InterfaceActivator.Create<BinaryFile>(); context.Fayl.Name="Name.docx"; //имя файла-версии (обязательно указывайте нужное расширение) context.Fayl.CreateDate = DateTime.Now; context.Fayl.InitializeContentFilePath(); System.IO.File.Copy(@"c:\BASA\Document.docx", context.Fayl.ContentFilePath); //1й параметр функции - путь до файла на физическом диске на сервере var generator = Locator.GetServiceNotNull<DocumentGeneratorManager>().Create(context.Fayl.ContentFilePath); //создаем генератор generator.Generate(context); Locator.GetServiceNotNull<IFileManager>().SaveFile(context.Fayl); //сохраняем полученный файл в контекст PublicAPI.Docflow.DocumentVersion.AddDocumentVersion(context.Document, context.Fayl, PublicAPI.Enums.Documents.DocumentVersionStatus.Current); //Добавляем версию в документ со статусом Текущая
Примеры сценариев без использования PublicAPI
Для работы сценария необходимо подключить сборки:
Elewise.ELMA.Documents
Elewise.ELMA.Documents.Docflow
Пространства имен:
using EleWise.ELMA.Documents.Managers; using EleWise.ELMA.Documents.Models; using EleWise.ELMA.Services; using EleWise.ELMA.Model.Services;
Текст сценария:
var version = InterfaceActivator.Create<DocumentVersion>(); version.Document = context.Document; version.File=context.Fayl; version.Status = DocumentVersionStatus.Current;//устанавливаем статус версии Текущая context.Document.Versions.Add(version); context.Document.Save();
Далее приведен пример сценария для генерации файла-версии из шаблона, находящегося на физическом диске сервера.
Для работы сценария необходимо подключить сборки:
Elewise.ELMA.Documents
Elewise.ELMA.Documents.Docflow
Elewise.ELMA.Documents
Elewise.ELMA.Documents.Docflow
Пространства имен:
using EleWise.ELMA.Documents; using EleWise.ELMA.Documents.Docflow; using EleWise.ELMA.Documents.Models; using EleWise.ELMA.Files; using EleWise.ELMA.Model.Services; using EleWise.ELMA.Runtime.Managers; using EleWise.ELMA.Services; using EleWise.ELMA.Templates;Контекстные переменные:
- context.Dok - переменная типа Документ, в которую нужно добавить файл-версию;
- context.Fayl - переменная типа Системные-Файл.
Текст сценария:
context.Fayl = InterfaceActivator.Create<BinaryFile>(); context.Fayl.Name="Name.docx"; //имя файла-версии (обязательно указывайте нужное расширение) context.Fayl.CreateDate = DateTime.Now; context.Fayl.InitializeContentFilePath(); System.IO.File.Copy(@"c:\Шаблон1.docx", context.Fayl.ContentFilePath); //1й параметр функции - путь до файла на физическом диске на сервере var generator = Locator.GetServiceNotNull<DocumentGeneratorManager>().Create(context.Fayl.ContentFilePath); //создаем генератор generator.Generate(context); Locator.GetServiceNotNull<IFileManager>().SaveFile(context.Fayl); //сохраняем полученный файл в контекст var version = InterfaceActivator.Create<DocumentVersion>(); //создаем версию документа version.Document = context.Dok; version.File=context.Fayl; //загружаем сгенерированный файл в версию version.Status = DocumentVersionStatus.Current; //присваиваем версии статус Текущая context.Dok.Versions.Add(version); context.Dok.Save(); //сохраняем документ