...

Скрипт копирование параметров

Тема в разделе "Разработчикам", создана пользователем Курило Елена, 20 сен 2018.

Метки:
  1. Подскажите, пожалуйста.
    Вот код, который производит перенос данных из одного текстового поля документа в другое текстовое поле этого же документа

    Код:
    public virtual void CopyValueOfParametr (Context context)
      {
       for(int i = 0; i < 244; i++)
       {
       var myAttach = PublicAPI.Docflow.Document.LoadOrNull(i);
       if (myAttach != null)
       {
       myAttach.StadiyaZhC = myAttach.IspolniteljPisjma;
       PublicAPI.Docflow.Document.Save (myAttach);
       }
       
       }
       
      }
    при выполнении этого кода происходит ошибка на 17-м документе, т.к. он был удалён.

    "System.InvalidOperationException: Не удалось возобновить или запустить экземпляр процесса ---> EleWise.ELMA.Exceptions.ScriptExecuteException: Ошибка исполнения сценария в процессе "Тест Мухоид" (ID экземпляра: 220): Документ " тест док отд №11" с идентификатором 17 удален из системы ---> System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> EleWise.ELMA.Exceptions.ObjectIsDeletedException: Документ " тест док отд №11" с идентификатором 17 удален из системы"

    Как сделать, чтобы скрипт пропускал удалённые документы? какое условие добавить?
     
  2. alexfuse

    alexfuse Member

    А не проще ли будет загрузить все документы в list, а потом уже делать цикл через foreach или for? Так он сразу загрузит все доступные документы и не будет проблем с удаленными
    Код:
    var doc = PublicAPI.Docflow.Document.Find (FetchOptions.All).ToList ();
    foreach(var document in doc)
    { 
     document.StadiyaZhC = document.IspolniteljPisjma;
     PublicAPI.Docflow.Document.Save (document );
    }
    или
    
    for (int i = 0; i < doc.Count; i++)
    {
     doc[i].StadiyaZhC = doc[i].IspolniteljPisjma;
     PublicAPI.Docflow.Document.Save (doc[i]);
    }
    
     
    Последнее редактирование: 21 сен 2018

Поделиться: