首页 > 解决方案 > 将 Hybris Impex Remove 与灵活搜索相结合

问题描述

我想使用 Impex 从表中删除一些项目。以下示例不会引发任何错误,但不会删除任何内容。

REMOVE ProductReference;pk[unique=true]
"#% impex.exportItemsFlexibleSearch(""select {pk} from {ProductReference as pr} where {pr.referenceType}=( {{select {pk} from {ProductReferenceTypeEnum as prte} where {prte.code} = 'CROSSELLING'}})"");"

查询按预期产生结果。REMOVE 与灵活搜索不兼容,还是我遗漏了什么?

问题是,我正在通过 hotfolder 运行导入,并且我想事先删除所有现有项目。欢迎替代解决方案。

标签: hybrisimpexflexible-search

解决方案


导入查询 -

REMOVE ProductReference;pk[unique=true]
"#% impex.exportItemsFlexibleSearch(""select {pk} from {ProductReference as pr} where {pr.referenceType}=( {{select {pk} from {ProductReferenceTypeEnum as prte} where {prte.code} = 'CROSSELLING'}})"");"

不工作,因为您没有选中启用代码执行复选框。此外,正如@BM 所建议的那样,如果未选中该复选框启用代码执行复选框,则将脚本替换为impex.includeSQLData()and#% impex.initDatabase()不会有任何效果。但是,选中复选框并运行上述脚本会出错,因为类中没有名称方法(在运行导入时调用)。该方法可用于(在运行导出而不是导入时调用)。现在,在export中运行这个 impex 脚本将成功执行,没有任何错误,但是

exportItemsFlexibleSearchMyImpExImportReader

exportItemsFlexibleSearchDeprecatedExporter

它不会删除任何东西。相反,它将创建一个带有 impex 和脚本文件的zip文件。此脚本文件将具有 impex 标头,用于删除查询返回的项目。使用这个 zip 文件,我们可以有条件地删除这些项目。

转到 HMC -> Cronjobs -> 创建类型的新 cronjob Impex import job-> 在媒体属性中上传 zip 文件 -> 创建 -> 运行 impex。

这将删除查询返回的项目。

还有另一种删除查询选择的项目的方法。


推荐阅读