// подключение системных библиотек
using System;
using System.Xml;
// подключение библиотек СУБП
using DocsVision.Workflow.Objects;
using DocsVision.Workflow.Runtime;
using DocsVision.Workflow.Gates;
using DocsVision.Platform.ObjectManager;
namespace DVScriptHost
{
class DVScript
{
public void Execute(DocsVision.Workflow.Runtime.ProcessInfo process, PassState passInfo)
{
try
{
// переменная процесса - карточка файла (тип - файл DV)
ProcessVariable oFile = process.GetVariableByName("Файл");
// переменная процесса - новое имя файла (строка)
ProcessVariable oFileName = process.GetVariableByName("Новое имя");
process.LogMessage("Получили переменные");
// приводим тип
DVFileCard dvFile = (DVFileCard)oFile.Value;
process.LogMessage("Получили файл");
// получаем шлюз
DVGate oGate = (DVGate)process.Gates[DVGate.GateID];
process.LogMessage("Получили шлюз");
// получаем сессию
UserSession oSession = oGate.Session;
process.LogMessage("Получили сессию");
// получаем данные карточки
CardData oData = oSession.CardManager.get_CardData(dvFile.ID);
process.LogMessage("Получили данные карточки файла");
oData.Description = oFileName.Value.ToString();
// получаем основную секцию
SectionData oSection = oData.Sections["B4562DF8-AF19-4D0F-85CA-53A311354D39"];
process.LogMessage("Получили секцию");
// строка (в этой секции она всегда одна)
RowData oRow = oSection.FirstRow;
process.LogMessage("Получили строку");
oRow.set_Value("FileName", oFileName.Value.ToString());
// получаем идентификатор карточки файла с версиями (VersionedFileCard)
string sVFCardID = oRow.get_Value("FileID").ToString();
process.LogMessage("Идентификатор карточки файла с версиями: " + sVFCardID);
// получаем системный объект - карточку файла с версиями
VersionedFileCard oVFCard = (VersionedFileCard)oSession.CardManager.get_Card(sVFCardID);
process.LogMessage("Получили системный объект - карточку файла с версиями");
// у карточки файла с версиями, получаем текущую версию
FileVersion oCurVer = oVFCard.CurrentVersion;
process.LogMessage("Получили текущую версию");
// переименовываем
string sCurrent = oCurVer.Name;
string sExt = Ext(sCurrent);
string sNew = oFileName.Value.ToString() + "." + sExt;
process.LogMessage(sExt);
oCurVer.Name = sNew;
oVFCard.Name = sNew;
process.LogMessage("Файл переименован");
IFile oRawFile = (IFile)oCurVer;
oRawFile.Name = sNew;
}
catch (Exception ex)
{
// запись в журнал ошибки исполнения
process.LogMessage("Ошибка выполнения скрипта: " + ex.Message);
}
return;
}
private string Ext(string sFileName)
{
string sExt = "";
int i;
for (i = sFileName.Length-1; i>-1 ; i--)
{
if (sFileName[i] != "."[0])
{
sExt = sFileName[i] + sExt;
}else{
i = -1;
}
}
return sExt;
}
}
}
|