Тема: 4.152 Перемещение объектов

Здравствуйте!

Не подскажете, как можно перемещать объекты в данной сборке?

Пытались использовать свойство Parent, согласно примеру из хелпа:

[Set] object.Parent [= TDMSObject]

следующим образом

set thisobject.Parent = thisapplication.Root.Content.Item("Завершенные проекты")

Однако, в данном месте выдается ошибка! Говорит, что "объект не поддерживает свойство или метод".

Обошли данный момент функцией Duplicate с последующим удалением оригинала, с учетом всех нюансов, описанных в соответствующей теме. К сожалению, в силу большого количества вложенных объектов, данный метод весьма небыстр.  :blink:

Function CopyTheObject(Obj, Dest) 'obj - object to c/m, dest - destination object
   Obj.Duplicate Dest
   set newobj = Dest.Content(Dest.Content.Count-1)
   if newObj.Content.Count > 0 then
       for each objct in newObj.Content
           newObj.Content.remove objct
       next
       for each cobj in Obj.Content
           set mynewchild = CopyTheObject (cobj, newobj)
       next
   end if
   set CopyTheObject = newobj
End Function

Как можно оптимизировать данное действие? Или когда будет возможность задавать Parent у объекта?

(изменено: Edhunter, 2 февраля 2012г. 13:10:43)

Re: 4.152 Перемещение объектов

Для изменения главной связи через метод Parent необходисо после установки нового значения использовать метод  Update.
ИМХО - это не самый лучший вариант, так как Update мгновенно сериализует объект в базу и тригерит цепочку событий BeforeMoify и т.д.

Для изменения главной связи лучше воспользоваться коллекцие Links и свойством связи Primary. Тут к минусам можно отнести только некоторое неудобство в работе с коллекцией, она не позволяет обращаться к конкретной связи по ссылке на объект.

Пример:

  oParent.Objects.Add oContent
  Set oParentLinks = oParent.Links
  oParentLinks(oParentLinks.Count-1).Primary = True

Re: 4.152 Перемещение объектов

Edhunter пишет:

Пример:

  oParent.Objects.Add oContent
  Set oParentLinks = oParent.Links
  oParentLinks(oParentLinks.Count-1).Primary = True

Спасибо! Теперь самый долгий процесс при перемещении объекта - обновление дерева  :)