Как экспортировать данные с условием
Мне нужно экспортировать некоторые экземпляры модели, но я не хочу их всех. Мне нужен только тот, который имеет определенный атрибут.
Я могу сделать это с помощью кода, интересно, как это сделать с Impex?
2 ответа
Я могу сгенерировать модель экспорта из Backoffice -> Инструменты -> Сгенерированный скрипт.
Затем я могу добавить гибкий поисковый запрос для фильтрации экспортированных результатов:
# ---- Extension: core ---- Type: Customer ----
"#% impex.setTargetFile( ""Customer.csv"" );"
insert_update Customer;&Item;Europe1PriceFactory_UDG(code,itemtype(code));Europe1PriceFactory_UPG(code,itemtype(code));Europe1PriceFactory_UTG(code,itemtype(code));allowSubstitution[allownull=true];...
"#% impex.exportItemsFlexibleSearch(""select {PK} from {Customer} where {uid}='anonymous'"", Collections.EMPTY_MAP, Collections.singletonList( Item.class ), true, true, -1, -1 );"
Cf: Impex API для документации о impex.exportItems[FlexibleSearch]
и эта страница для большего примера
Вы можете экспортировать свои экземпляры другим способом:
Шаг 1:
Зайдите в интерфейс HMC, выберите генератор скриптов tool System->Tools->Script Generator
, затем сгенерируйте модели сценариев ImpEx и выберите свой сценарий типа экземпляра для экспорта, например:
"#% impex.setTargetFile( ""Customer.csv"" );" // 1. where to export
insert_update Customer;&Item;@password[translator=de.hybris.platform.impex.jalo.translators.UserPasswordTranslator];CN;CodeNaf(code);DN;Europe1PriceFactory_UDG(code,itemtype(code));Europe1PriceFactory_UPG(code,itemtype(code));Europe1PriceFactory_UTG(code,itemtype(code));accountOrigine(&Item);accountVerificationType;addresses(&Item);authentificationDate[dateformat=dd.MM.yyyy hh:mm:ss];authorizedToUnlockPages[allownull=true];birthDate[dateformat=dd.MM.yyyy hh:mm:ss];carts(code);codeAPE;codeRCS;codeSiret;company;companyType(code,itemtype(code));creationtime[forceWrite=true,dateformat=dd.MM.yyyy hh:mm:ss];customerID;dateOfBirth[dateformat=dd.MM.yyyy hh:mm:ss];defaultPaymentAddress(&Item);defaultPaymentInfo(&Item);defaultShipmentAddress(&Item);description;domain;emailAlias;encodedPassword;enseigne(code)[allownull=true];erosId;europe1Discounts(&Item);firstname;fraudStatus(code,itemtype(code));hmcLoginDisabled;interestAreaList(code,itemtype(code));isprofessionnel;lastLogin[dateformat=dd.MM.yyyy hh:mm:ss];lastname;ldapaccount[allownull=true];ldaplogin;ldapsearchbase;locationType(code,itemtype(code));loginDisabled[allownull=true];modifiedtime[dateformat=dd.MM.yyyy hh:mm:ss];name;nbChild;nbGodSon;orders(code,versionID);origin;originalUid;owner(&Item)[allownull=true];password;passwordAnswer;passwordEncoding;passwordQuestion;paymentInfos(&Item);previewCatalogVersions(catalog(id),version);profilePicture(catalogVersion(catalog(id),version),code);recevedDocs;sessionCurrency(isocode);sessionLanguage(isocode);subscriptionTelContact(&Item);title(code);token;type(code,itemtype(code));uid[unique=true,allownull=true];userprofile(&Item);verificationDate[dateformat=dd.MM.yyyy hh:mm:ss];verificationflag // 2. how to export
"#% impex.exportItems( ""Customer"" , false );" // 3. what to export
Чтобы добавить больше света на то, что вы ищете, я сосредоточусь на 3-й строке
#% impex.exportItems( ""Customer"" , false );" // 3. what to export
Таким образом, вы можете использовать метод exportItems по-разному:
exportItems по набору элементов:
public void exportItems( Collection<Item> items ) public void exportItems( String[] pklist )
Эти методы экспортируют заданные элементы, где элементы могут быть переданы либо в виде списка PK (String), либо непосредственно с использованием в качестве коллекции элементов.
exportItems по коду типа:
public void exportItems( String typecode ) public void exportItems( String typecode, int count ) public void exportItems( String typecode, boolean inclSubTypes ) public void exportItems( String typecode, int count, boolean inclSubTypes )
exportItems от FlexibleSearch:
public void exportItemsFlexibleSearch( String query ) public void exportItemsFlexibleSearch( String query, Map values, List resultClasses, final boolean failOnUnknownFields, final boolean dontNeedTotal, int start, int count )
public void exportItemsFlexibleSearch( String query, int count )
Примечание. По умолчанию Exporter API использует разбиение на страницы результатов поиска. Поэтому для получения точных результатов ваши запросы FlexibleSearch должны содержать ORDER BY
пример предложения:
impex.exportItemsFlexibleSearch(""select {PK} from {Customer} where {uid}='anonymous' ORDER BY {pk}"")
Если у вас есть доступ к help.hybris, проверьте:
Если вы можете получить доступ только к вики:
- https://wiki.hybris.com/display/release4/ImpEx+API
- https://wiki.hybris.com/display/release4/How+To+Export+the+Content+of+a+Catalog+Version+-+Tutorial
Шаг 2:
Перейти к интерфейсу HAC, ImpEx Export
, затем поставьте свой сценарий и экспортируйте свои элементы.