[ELMA3] Добавление версии в документ с помощью сценария
В статье приведены сценарии добавления новой версии (контекстная переменная "Файл" (Fayl) имеет тип Файл) в документ (контекстная переменная Документ (Document), в качестве типа которой выбран конкретный тип документа).
Примеры сценариев с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарии, указанные ниже, актуальны для версий системы ELMA до 3.15.38 включительно.
Контекстные переменные:
- context.Document – переменная типа Документ;
- context.Fayl – переменная типа Системные – Файл;
- DocumentVersionStatus – необязательный параметр, если не указан, то для версии устанавливается статус Черновик.
Подключить пространство имен:
1 | using EleWise.ELMA.API; |
1 | PublicAPI.Docflow.DocumentVersion.AddDocumentVersion(context.Document, context.Fayl, PublicAPI.Enums.Documents.DocumentVersionStatus.Current); //Документ, файл, статус версии - текущая(необязательный параметр, если не указан, то для версии устанавливается статус ’Черновик’) |
Далее приведен пример сценария для генерации файла-версии из шаблона, находящегося на физическом диске сервера.
Контекстные переменные:
- context.Document - переменная типа Документ;
- context.Fayl - переменная типа Файл.
Подключить пространство имен:
1 | using EleWise.ELMA.Files; |
1 2 3 4 5 6 7 8 | 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.
Подключить пространство имен:
Текст сценария:
1 2 3 4 5 | using EleWise.ELMA.Files; using EleWise.ELMA.Model.Services; using EleWise.ELMA.Services; using EleWise.ELMA.Runtime.Managers; using EleWise.ELMA.Templates; |
Текст сценария:
1 2 3 4 5 6 7 8 9 | 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
Пространства имен:
1 2 3 4 | using EleWise.ELMA.Documents.Managers; using EleWise.ELMA.Documents.Models; using EleWise.ELMA.Services; using EleWise.ELMA.Model.Services; |
Текст сценария:
1 2 3 4 5 6 | 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
Пространства имен:
Контекстные переменные:
1 2 3 4 5 6 7 8 | 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 - переменная типа Системные-Файл.
Текст сценария:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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(); //сохраняем документ |