RSS Подписка на статьи RSS Подписка на комментарии Панель инструментов

Блог профессионалов стал частью сайта технической поддержки DocsVision http://support.docsvision.com. Новые материалы будут появляться уже на этом сайте.

Поиск

Ярлыки

авто генерация кода (1) Администрирование DocsVision (60) Атрибутивный поиск (3) База данных (24) Базы знаний (1) Безопасность (1) Бизнес-процессы (20) Блог (2) Вы увидите это первыми (1) Групповые политики (1) Диаграммы (2) Задания (2) Интеграция (2) Карточки DocsVision (14) Конструктор Решений (11) Маркетинг и продажи (4) Навигатор (3) Новое (3) Новости (32) Опрос (4) Опросы DocsVision (4) Оптимизация (3) Отчеты (2) Ошибки (1) Поддержка (14) Полезные ссылки (1) Представления (4) Производительность (5) Разбор полетов (18) Разработка для Workflow (7) разработка карточек (2) Разработка на платформе DocsVision (41) Разработка решений (43) Расширение платформы (1) Расширенные отчеты (9) Решения на платформе DocsVision (6) Сервисы DocsVision (3) Сканеры (3) Справочник сотрудников (1) Справочник типов (1) Установка (1) Утилиты (13) Шлюз в SharePoint (8) Штрихкод (2) Cкрипты карточек (7) DocsVision внутри (1) DocsVision Live (1) FileStream (1) FireFox (2) Opera (1) Powershell (5) Safari (1) SharePoint2007 (1) SharePoint2010 (2) Silverlight (1) UltraViews (1) Vista (1)

Переименование файла

Переименовать файл в DocsVision нужно в несколько этапов.
В карточке файла, в карточке файла с версиями и в каждой версии файла.

Пример бизнес-процесса, который заменяет в названии файла одну последовательность знаков на другую. Немного модифицировав его можно использовать и просто для переименования.

Ссылка на xml процесса и проект в VS2008

Задача переименования файлов в процессе часто встречается в проектах?
Как решаете? Читать дальше

3 коммент.:

Ice комментирует...

Встречалась один раз. Но было очень надо :)
Помог ваш сценарий на C#, который нам был выслан очень давно, большое спасибо!
Если можно, приведу его тут:

// подключение системных библиотек
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("Получили текущую версию");
// переименовываем
oCurVer.Name = oFileName.Value.ToString();
oVFCard.Name = oFileName.Value.ToString();
process.LogMessage("Файл переименован");
IFile oRawFile = (IFile)oCurVer;
oRawFile.Name = oFileName.Value.ToString();
}
catch (Exception ex)
{
// запись в журнал ошибки исполнения
process.LogMessage("Ошибка выполнения скрипта: " + ex.Message);
}
return;
}
}
}

Михаил Захаров комментирует...

Да, алгоритм тот же, что и в нашем примере.
В примере переименовываются все версии файла, а в этом коде только текущая, - видимо для решения задачи этого было достаточно...

Unknown комментирует...

У нас задача переименования файлов встает в тот момент, когда создается очередной цикл согласования, а загружаемый документ имеет расширение, отличное от предыдущего (например, на 1 цикле был документ "Договор.doc", а на второй исполнитель прислал "Договор.pdf").
Решили проблему, прикрутив свою софтину непосредственно к БД (правим dvsys_files).
Dv 4.1.1640

Отправить комментарий