Имхо, как вы описали, то вот так:
! ((@IsMember("[2]";@UserRoles) & @IsDocBeingEdited & pidrozdil = "2") | (@IsMember("[1]";@UserRoles) & @IsDocBeingEdited & pidrozdil = "1"))
или, если раскрыть:
!(@IsMember("[2]";@UserRoles) & @IsDocBeingEdited & pidrozdil = "2") & !(@IsMember("[1]";@UserRoles) & @IsDocBeingEdited & pidrozdil = "1")
(@IsNotMember("[2]";@UserRoles) | !@IsDocBeingEdited | pidrozdil != "2") & (@IsNotMember("[1]";@UserRoles) | !@IsDocBeingEdited | pidrozdil != "1")
Использовала @IsDocBeingEdited, которое дает @true, если документ в режиме редактирования. Если надо проверять права к БД, это делается по-другому, если надо проверять права редактора к документу, это делается через перебор всех авторс-полей для уровня доступа автор и перебор ридерс-авторс-полей для уровня доступа выше автора.