УТ 2.3, платформа 8.3.16
Шаблон доступа на чтение типов цен номенклатуры для роли Пользователь. Смысл ограничения - для групп пользователей с выбранными типами цен в настройках дать доступ только к выбранным типам цен. После курения интернета разобрался, что доступ будет дан при условии, что выборка не пустая, иначе запрет. На данный момент запрос выглядит так.
Запрос
ТекущаяТаблица ИЗ Справочник.ТипыЦенНоменклатуры КАК ТекущаяТаблица
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
СоставГруппы.Ссылка КАК ГруппаПользователей
ИЗ
Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
ГДЕ
СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
ПО (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей)
ГДЕ (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = ЛОЖЬ
ИЛИ НЕ 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
1 КАК ПолеОтбора
ИЗ
РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
ГДЕ
НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
И ВЫБОР
КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ТипыЦен)
ТОГДА ВЫБОР
КОГДА 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
1
ИЗ
РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
ГДЕ
НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.Ссылка
И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ТипыЦен)
И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи)))
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
ИНАЧЕ ИСТИНА
КОНЕЦ = ЛОЖЬ)
И НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL)
Вложенный запрос выдает единицу. Условие
ГДЕ (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = ЛОЖЬ ИЛИ НЕ 1 В ...
должно выдать ложь, чтобы доступа не было(?). По факту доступ есть. Код не мой, пробую разобраться. Подскажите что означают параметр
&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей
и как по такому параметру можно делать левое соединение . Скорее всего это обращение к одноименной константе, только тогда условие будет Истина, значение константы Истина. Меня смущает тот факт, что говорят, что раньше все работало, а сейчас перестало... Этот код должен работать?
Talkman @ Сегодня, 21:15
,
Уточнение. Условие будет не Истина, а наоборот Ложь, так как Константа не Ложь и Не 1 в 1 тоже Ложь. Остались вопрос как можно связывать таблицы по Истине, что будет в результате и почему может не работать ограничение...
Сообщение отредактировал Vofka - 24.08.22, 11:21