[ELMA3] Перемещение документов в сценарии
В статье рассмотрены различные варианты перемещения документов в сценарии.
Примеры сценариев с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарии, указанные ниже, актуальны для версий системы ELMA до 3.15.38 включительно.
Перемещение документа из одной папки в другую
Контекстные переменные:
context.Dokument - переменная типа Документ;
context.Papka - переменная типа Папка.
Пространство имен:
context.Papka - переменная типа Папка.
Пространство имен:
using EleWise.ELMA.API;Текст сценария:
PublicAPI.Docflow.Document.Move(context.Dokument, context.Papka, true);
Перемещение всех документов из выбранной папки
Подключить пространство имен:
using EleWise.ELMA.API;
Текст сценария:
var docs = PublicAPI.Docflow.Document.Filter().Folder(context.old_folder).Find().ToList(); docs.ForEach(d => { d.Folder = context.new_folder; //заменяем папку });
Перемещение документа в папку с определенным названием
Подключить пространство имен:
using EleWise.ELMA.API;
Текст сценария:
var folder = PublicAPI.Docflow.Folder.FindFolders(context.Dokument.RegistrationCard.FirstOrDefault().Depository.ToString()).FirstOrDefault(); PublicAPI.Docflow.Document.Move(context.Dokument, folder, true);
Примеры сценариев без использования PublicAPI
Перемещение документа из одной папки в другую
Для того, чтобы переместить документ из одной папки в другую, необходимо изменить его атрибут Folder, записать в него новое значение, которое должно иметь так же тип Folder.
В приведенном ниже сценарии в контекстной переменной context.Dokument хранится документ, а в переменной context.NovayaPapka выбрана новая папка для документа (эта переменная имеет тип Папка).
Для корректной работы сценария необходимо подключить сборки:
EleWise.ELMA.Documents;
EleWise.ELMA.Documents.Docflow;
Пространства имен:
using EleWise.ELMA.Documents.Managers; using EleWise.ELMA.Documents.Models;Текст сценария:
context.Dokument.Folder = context.NovayaPapka; context.Dokument.Save();
Перемещение всех документов из выбранной папки
В приведенном примере в контекстной переменной context.old_folder содержится папка, из которой необходимо переместить документы, а в переменной context.new_folder папка, в которую их нужно поместить.
Текст сценария:
var filter = new DocumentFilter(); //создаем фильтр для выбора документов из определенной папки filter.Folder = context.old_folder; //задаем параметр фильтрации var docs = EntityManager<Document>.Instance.Find(filter, null).ToList(); docs.ForEach(d =>{ d.Folder = context.new_folder; //заменяем папку });
Перемещение документа в папку с определенным названием
В приведенном примере документ переносится в папку, название которой соответствует названию дела из регистрационной карточки документа. Для выполнения сценария документ должен быть зарегистрирован и папка с искомым названием должна существовать в системе.
var regkard = RegistrationCardManager.Instance.Get(d => d.Document == context.Dokument);//находим регистрационную карточку документа var folder = FolderManager.Instance.Get(f => f.Name == regkard.Depository.ToString());//находим папку с названием дела из регистрационной карточки. Название папки должно быть уникально в системе context.Dokument.Folder = (Folder)folder;//перемещаем документ в найденную папку context.Dokument.Save();