// подключение системных библиотек 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; } } }