Параметр «BasedOnSchemas» в Tridion 2011 CoreService

Я пытаюсь понять назначение параметра BasedOnSchemas в фильтре OrganizationalItemItemsFilterData.

В документации четко указано: «Получает или устанавливает условие BasedOnSchemas для возврата только тех элементов, которые используют заданные схемы». Таким образом, должна быть возможность извлекать только компоненты определенной схемы, верно?

вот мой код:

LinkToSchemaData[] schemaLinks = new[] { 
        new LinkToSchemaData { IdRef = "tcm:113-362325-8" } 
    };

OrganizationalItemItemsFilterData filter = 
    new OrganizationalItemItemsFilterData();

filter.BaseColumns = ListBaseColumns.Extended;
filter.ItemTypes = new ItemType[] { ItemType.Component };
filter.Recursive = true;
filter.BasedOnSchemas = schemaLinks;

XElement items = client.GetListXml("tcm:113-14192-2", filter);

Однако XElement items будет содержать несколько типов компонентов, а не только компоненты схемы tcm:113-362325-8.

Как получить только те компоненты, которые основаны на моей схеме?


person Reinder Wit    schedule 28.08.2012    source источник


Ответы (1)


Использование одновременно BasedOnSchemas и Recursive = true не поддерживается. Удалите рекурсивность, и вы обнаружите, что фильтр схемы работает.

Если вы хотите получить «рекурсивный» список всех компонентов для определенной схемы, подумайте о том, чтобы выполнить WhereUsed для схемы.

GetListXml("tcm:5-59-8", new UsingItemsFilterData())
person Frank van Puffelen    schedule 28.08.2012
comment
tnx Франк, после удаления рекурсивной опции мой список содержит только эти конкретные элементы. Упоминается ли это где-нибудь в документации? Я посмотрю на WhereUsedFilterData... - person Reinder Wit; 28.08.2012
comment
Почему этого нет в Справочнике по API основной службы Content Manager CHM?! - person JJS; 07.05.2013