[ELMA3] Перемещение документов в сценарии
В статье рассмотрены различные варианты перемещения документов в сценарии.
Примеры сценариев с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарии, указанные ниже, актуальны для версий системы ELMA до 3.15.38 включительно.
Перемещение документа из одной папки в другую
Контекстные переменные:
context.Dokument - переменная типа Документ;
context.Papka - переменная типа Папка.
Пространство имен:
Текст сценария:
context.Papka - переменная типа Папка.
Пространство имен:
1 | using EleWise.ELMA.API; |
1 | PublicAPI.Docflow.Document.Move(context.Dokument, context.Papka, true ); |
Перемещение всех документов из выбранной папки
Подключить пространство имен:
1 | using EleWise.ELMA.API; |
Текст сценария:
1 2 3 4 5 | var docs = PublicAPI.Docflow.Document.Filter().Folder(context.old_folder).Find().ToList(); docs.ForEach(d => { d.Folder = context.new_folder; //заменяем папку }); |
Перемещение документа в папку с определенным названием
Подключить пространство имен:
1 | using EleWise.ELMA.API; |
Текст сценария:
1 2 | 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;
Пространства имен:
1 2 | using EleWise.ELMA.Documents.Managers; using EleWise.ELMA.Documents.Models; |
1 2 | context.Dokument.Folder = context.NovayaPapka; context.Dokument.Save(); |
Перемещение всех документов из выбранной папки
В приведенном примере в контекстной переменной context.old_folder содержится папка, из которой необходимо переместить документы, а в переменной context.new_folder папка, в которую их нужно поместить.
Текст сценария:
1 2 3 4 5 6 | 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; //заменяем папку }); |
Перемещение документа в папку с определенным названием
В приведенном примере документ переносится в папку, название которой соответствует названию дела из регистрационной карточки документа. Для выполнения сценария документ должен быть зарегистрирован и папка с искомым названием должна существовать в системе.
1 2 3 4 | 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(); |