Объединить Hybris Impex Удалить с гибким поиском - PullRequest
0 голосов
/ 22 февраля 2019

Я хотел бы удалить некоторые элементы из таблицы, используя 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 несовместимым с гибким поиском или я что-то упустил?

Проблема в том, что я выполняю импорт поверх горячей папки и хочу заранее удалить все существующие элементы.Альтернативные решения приветствуются.

1 Ответ

0 голосов
/ 24 февраля 2019

Импорт запроса -

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'}})"");"

не работает, так как вы не установили флажок Включить выполнение кода . Enable code execution checkbox Также, как предложено@BM замена сценария на impex.includeSQLData() и #% impex.initDatabase() не будет иметь никакого эффекта, если не установлен флажок .

Однако, если установить флажок и запустить приведенный выше сценарий, возникнет ошибка, потому что нет метода по имени exportItemsFlexibleSearch в классе MyImpExImportReader (который вызывается при выполнении импорта).

Метод exportItemsFlexibleSearch доступен в DeprecatedExporter (который вызывается привыполняется экспорт не импорт).

Теперь выполняется этот сценарий impex в экспорт выполнится успешно без ошибок, , но ничего не удалит.Вместо этого он создаст zip-файл с импексом и файлом сценария.Этот файл сценария будет иметь заголовок impex для удаления элементов, возвращаемых запросом.Используя этот zip-файл, мы можем условно удалить элементы.

Перейдите в HMC -> Cronjobs -> Создать новый cronjob типа Impex import job -> Загрузить zip-файл в атрибут мультимедиа -> Создать -> Запустить impex.

Это приведет к удалению элементов, возвращаемых запросом.

Существует еще один способ удаления элементов, выбранных запросом.

...