Для этого можно использовать ограничения поиска (персонализацию):
INSERT_UPDATE SearchRestriction;code[unique=true];active;generate;restrictedType(code);principal(uid);query
;Product_restriction_1; true; false; Product; usergroup1; "{category} in ({{ select {pk} from {Category} where {code}='category1' }})"
;Product_restriction_2; true; false; Product; usergroup2; "{category} in ({{ select {pk} from {Category} where {code}='category1' }})"
Здесь сотрудники, принадлежащие к группе пользователей 1, могут видеть продукты, принадлежащие к категории 1, а группа пользователей 2 могут видеть продукты, относящиеся к категории 2 (эти запросы, приведенные выше, представляют собой лишь некоторые фиктивные запросы для быстрого понимания концепции).
Тип ограничения = продукт Принципал = пользователь / группа пользователей, соответствующая входящему в систему сотруднику бэк-офиса
Более конкретный запрос, соответствующий вашим требованиям, будет выглядеть следующим образом:
select {r.target} from { CategoryProductRelation as r join Category as c on {r.source}= {c.pk} } where {c.code}='shoes'
Следовательно, используйте импекс вроде:
INSERT_UPDATE SearchRestriction;code[unique=true];active;generate;restrictedType(code);principal(uid);query
;Product_restriction_shoes; true; false; Product; shoeUser; " {pk} in ({{select {r.target} from { CategoryProductRelation as r join Category as c on {r.source}= {c.pk} } where {c.code}='shoes' }}) "
person
balias
schedule
29.09.2020