Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Сообщение

ShurikEv


Известный Болтун

Зарегистрирован:
14 March 2005
Сообщения: 706
Примеры кода: 0
 

MOSS + Workflow + Библиотека документов

12 February 2008 16:22  


Простая как дважды два задача:
Есть библиотека документов с поддержкой версионности. Есть одно обязательное поле "Путь". При создании документа в этом поле прописывается путь куда переместить документ. Первый раз проходит всё на ура. Второй раз в то же место с тем же именем удаётся положить через раз. Даже бывает что перемещается, но выдается алертик "Недопустимый адрес интернета: [путь до файла в корне библиотеки]", но опять же файл переписывается. В 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
Наверх
  



Общие вопросы программирования на ASP.NET

 MOSS +  Workflow + Библиотека документовShurikEv  12 February 2008 16:22
 MOSS +  Workflow + Библиотека документовShurikEv  13 February 2008 13:17
 MOSS +  Workflow + Библиотека документовGrossmeister  13 February 2008 16:33
 MOSS +  Workflow + Библиотека документовShurikEv  13 February 2008 18:05
 MOSS +  Workflow + Библиотека документовShurikEv  14 February 2008 07:06
 MOSS +  Workflow + Библиотека документовprokhorovserge  14 February 2008 11:13
 MOSS +  Workflow + Библиотека документовShurikEv  14 February 2008 12:42
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта