Вопрос

Сервис SelectQuery

В скрипте scr_BaseDBEditUtils есть функция:

function OpenDatasetWithRecordID(Dataset, ID) {

    Dataset.Close();

    ApplyDatasetIDFilter(Dataset, ID, true);

    Dataset.Open();

}

на одной из деталей вместо фильтра по ID в запросе появляется "where (1 = 0)" (смотрел в профайлере), естественно запрос ничего не возвращает и пользователь получает сообщение о том, что у него нет прав на эту запись.

Что это и как устранить?

Прикрепленные файлы

Нравится

14 комментариев

Без конкретики сказать сложно. Может, в самом SelectQuery этой детали есть такой фильтр и он включается при включении фильтра с кодом «ID».

Какая именно конкретика может помочь? Могу сам сервис показать. Прикрепил к первому сообщению.

Тут было такое же 1=0 и дело было в отсутствии прав на таблицу.

Присмотрелся, оказывается в запросе еще и таблицы подменяются на просмотры - tbl_SWTwo на vw_SwTwo и tbl_Contact на vw_Contact. Это что значит?

При этом под администратором никаких подмен не происходит.

 

Если это как-то связано с правами, то как их правильно раздать? Получается пользователь добавить запись может, а редактировать нет.

То, что таблицы подменяются на view, это нормально. Так реализовано ограничение прав на записи для неадминистраторов.

По изначальному вопросу, правильно раздать так, чтобы были права на этот объект. См. раздел прав доступа на группы таблиц.

Так в том то и дело, что пользователь находится в той группе, у которой права есть.

Если бы права были, не было бы 1=0. Возможно, права не на основную таблицу запроса, а другую, в нём упомянутую. Можно записать профайлером один и тот же запрос под администратором и пользователем, а затем сравнить, что именно в нём заменилось.

Я так и сделал. Дал права на всё, что там используется, таблицы на просмотры у пользователя теперь не заменяются, а where (1 = 0) так и осталось.

Значит, нужно искать, что заменено на 1=0 и дать права на него.

На 1=0 заменен фильтр ID = '{GUID}'. На что давать права?

Права на нужные таблицы и/или поля. Вы можете подключиться в Management Studio под этим пользователем и сами увидеть, что ему доступно, а что нет. Можете запустить запрос, записанный в профайлере и увидеть, чего не хватает.

А если выяснить не получится, нужно сравнивать эту деталь и её права с остальными в этом разделе. Поскольку деталь самодельная, при её создании что-то могло быть настроено неверно.

Показать все комментарии