Простая как дважды два задача:
Есть библиотека документов с поддержкой версионности. Есть одно обязательное поле "Путь". При создании документа в этом поле прописывается путь куда переместить документ. Первый раз проходит всё на ура. Второй раз в то же место с тем же именем удаётся положить через раз. Даже бывает что перемещается, но выдается алертик "Недопустимый адрес интернета: [путь до файла в корне библиотеки]", но опять же файл переписывается. В catch (Exception ex)//Глобальный кердык проваливается вообще редко и тоже по непонятным причинам. Привожу код правила.
private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
try
{
string columnName = "my_Path"; //столбец, в котором хранится папка, в которую копировать надо
SPListItem item = workflowProperties.Item;
//Прочитаем путь, куда переложить документ
string path = (item[columnName] != null) ? item[columnName].ToString() : "";
//Если путь не пустой и файл лежит на самом верху
if (!string.IsNullOrEmpty(path) && item.File.Url.Substring(0, item.File.Url.IndexOf("/")) == item.ParentList.RootFolder.Url)
{
//Проверим есть ли путь, если нет, то надо создать
string[] array = path.Split("/".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
string tmpPath = item.ParentList.RootFolder.Url;
for (int i = 0; i < array.Length; i++)
{
tmpPath += "/" + array.GetValue(i);
try
{
//Добавляем папку пути. Лучше конечно проверить на существование, но как??? try-catch - хня
item.ParentList.RootFolder.SubFolders.Add(tmpPath);
}
catch
{
}
}
string new_path = (path.StartsWith("/")) ? path : "/" + path;
item.File.MoveTo(item.ParentList.RootFolder.Url + new_path + "/" + item.File.Name, SPMoveOperations.Overwrite);
}
}
catch (Exception ex)//Глобальный кердык
{
string err = ex.Message;
}
}
Что тут не так? Может кто более опытным взглядом посмотрит и найдёт существенный глюк... Может дело в SPMoveOperations.Overwrite?
Так же интересует способ как проверить что папка существует без применения блока try-catch.
Спасибо, получил.
[b][q]Varg
Данное сообщение получено с сайта GotDotNet.RU
|