Перемещение документов в сценарии

В статье рассмотрены различные варианты перемещения документов в сценарии.

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

Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарии, указанные ниже, актуальны для версий системы ELMA до 3.12.1 включительно.

Перемещение документа из одной папки в другую

Контекстные переменные:

context.Dokument - переменная типа Документ;
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();