Добавление версии в документ с помощью сценария

В статье приведены сценарии добавления новой версии (контекстная переменная "Файл" (Fayl) имеет тип Файл) в документ (контекстная переменная Документ (Document), в качестве типа которой выбран конкретный тип документа).

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

Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарии, указанные ниже, актуальны для версий системы ELMA до 3.12.1 включительно.
Контекстные переменные:
  • 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
 
Пространства имен:
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(); //сохраняем документ