В скрипте scr_BaseDBEditUtils есть функция:
function OpenDatasetWithRecordID(Dataset, ID) {
Dataset.Close();
ApplyDatasetIDFilter(Dataset, ID, true);
Dataset.Open();
}
на одной из деталей вместо фильтра по ID в запросе появляется "where (1 = 0)" (смотрел в профайлере), естественно запрос ничего не возвращает и пользователь получает сообщение о том, что у него нет прав на эту запись.
Что это и как устранить?
Нравится
Без конкретики сказать сложно. Может, в самом SelectQuery этой детали есть такой фильтр и он включается при включении фильтра с кодом «ID».
Тут было такое же 1=0 и дело было в отсутствии прав на таблицу.
То, что таблицы подменяются на view, это нормально. Так реализовано ограничение прав на записи для неадминистраторов.
По изначальному вопросу, правильно раздать так, чтобы были права на этот объект. См. раздел прав доступа на группы таблиц.
Если бы права были, не было бы 1=0. Возможно, права не на основную таблицу запроса, а другую, в нём упомянутую. Можно записать профайлером один и тот же запрос под администратором и пользователем, а затем сравнить, что именно в нём заменилось.
Значит, нужно искать, что заменено на 1=0 и дать права на него.
Права на нужные таблицы и/или поля. Вы можете подключиться в Management Studio под этим пользователем и сами увидеть, что ему доступно, а что нет. Можете запустить запрос, записанный в профайлере и увидеть, чего не хватает.
А если выяснить не получится, нужно сравнивать эту деталь и её права с остальными в этом разделе. Поскольку деталь самодельная, при её создании что-то могло быть настроено неверно.