there is no way around creating multiple lines in the filter. The combination in one line always gives an different outcome you are looking for.
Tip: use one version for working in. Keep other versions for reference only.
Tip: use substitution variables in the filter. Then you do not go and change it everytime somethin changes.
p.s. close questions which were answered. Then we do not have to open them to see if we can help.
The easy option would be to use multiple lines in the security filter with desired access details.
As suggested by Philip, easy maintenance is to use substitution variables and just update them rather than editing the filters.
Or you can also use attributes to define your filters and simply change the attribute association within the dimension.
I think @IDescendants (Version) is ok but for Scenario, you should mention the those scenario dimensions members in which you want grant accces.
Let me update if this work.
Best way to do ,is create the security filters in the shared services with the write access or else using the maxl command to grant access for a particular level of intersection for that particular application.In your case you need to give muliple line write access based up on your requirement
If its a planning application ,then you can assign access for a particular planning user (accessing data forms) through import/export security utility and create a sec.txt file in planning bin directory
How do you want to accomplish this with @IDescendants (Version) for the combinations needed? They are different, some read, some write. There is no way to do this in less than 2 lines, better 4 lines of filter code.