Tridion - Переместить компонент в другую папку

Я хочу переместить один компонент из одной папки в другую уже созданную папку.

while (textReader.Read())
{
    textReader.MoveToElement();
    Component comp = tdse.GetComponent(textReader.GetAttribute("ID"), constant_Publication, true, -1);
}

Я пытаюсь найти comp.Move, но он не выходит. Кроме того, я видел, что в comp.Info.Path есть путь, но если я попытаюсь его изменить, у меня будет следующая ошибка:

Ошибка 7 Свойство или индексатор Tridion.ContentManager.Interop.TDS._Info.Path не может быть назначено — оно доступно только для чтения.

Что я могу сделать, чтобы переместить компонент?


person abapero    schedule 14.03.2013    source источник
comment
Пожалуйста, рассмотрите возможность публикации этого вопроса на tridion.stackexchange.com.   -  person Nuno Linhares    schedule 14.03.2013


Ответы (2)


Похоже, вы используете TOM, а не TOM.NET

Вам нужно выполнить действие вставки с папкой, в которую вы хотите поместить новый элемент.

Что-то типа

objFolder.PasteItem(comp, 1, false)

Первый параметр — это элемент, который вы хотите вставить, второй — перечислитель (EnumTDSCutCopyAction — 1 — вырезание (перемещение), 0 — копирование), чтобы сказать, хотите ли вы копировать и вставить или Вырезать и вставить, и последнее — хотите ли вы утвердить уникальное имя.

В TOM.NET есть метод RepositoryLocalObject.Move().

person Chris Summers    schedule 14.03.2013

Похоже, что в вашем вызове метода GetObject() отсутствуют некоторые аргументы. В руководстве по шаблону указано следующее:

Public Function GetObject( ByVal URI As String, ByVal mode As TDSDefines.EnumOpenMode, Optional ByVal contextPublication As Variant = TDSDefines.URINULL, Optional ByVal filter As TDSDefines.XMLReadFilter = XMLReadNull ) As Object

Однако похоже, что вторым аргументом, который вы передаете, является идентификатор публикации, а не EnumOpenMode. Передайте «OpenModeEditWithFallback» в качестве второго аргумента функции, чтобы перевести компонент в режим записи, после чего вы сможете использовать для него функцию Move.

Кроме того, рассмотрите возможность размещения дополнительных вопросов по Tridion на нашей новой странице Tridion http://tridion.stackexchange.com.

person Nickoli Roussakov    schedule 14.03.2013