по причине:
Ошибка выполнения запроса
по причине:
Ошибка в ограничении доступа к данным.
объект: 'РегистрСведений.СостоянияДокументовЭДО', поле: 'Комментарий'; право: 'Чтение'
{(183, 3)}: Синтаксическая ошибка "ГДЕ"
<<?>>ГДЕ
по причине:
{(183, 3)}: Синтаксическая ошибка "ГДЕ"
<<?>>ГДЕ
Показать
В этой строке выполняется запрос:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИдентификаторПакета", ИдентификаторПакета);
Запрос.Текст =
"ВЫБРАТЬ
| СоставПакетовДокументовЭДО.ЭлектронныйДокумент КАК ЭлектронныйДокумент,
| СостоянияДокументовЭДО.Состояние КАК Значение,
| СостоянияДокументовЭДО.СостояниеДополнение КАК Дополнение,
| СостоянияДокументовЭДО.Комментарий КАК Комментарий
|ИЗ
| РегистрСведений.СоставПакетовДокументовЭДО КАК СоставПакетовДокументовЭДО
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияДокументовЭДО КАК СостоянияДокументовЭДО
| ПО СоставПакетовДокументовЭДО.ЭлектронныйДокумент = СостоянияДокументовЭДО.ЭлектронныйДокумент
| И СоставПакетовДокументовЭДО.ИдентификаторПакета = &ИдентификаторПакета";
Возврат Запрос.Выполнить().Выгрузить();
Показать
У пользователя есть права на регистр.
В копии удалил все ограничения доступа на уровне записей из ролей, после запускал в режиме ОбновлениеИнформационнойБазы, но ошибка не ушла. Если выполнять этот запрос в привилегированном режиме, это решает проблему для этой строчки кода, но примерно такая же ошибка вылазит уже в другом запросе по этой подсистеме ЭДО. Походу к этим запросам прицепляется запрос проверки прав, но где он прицепляется, и как отловить ошибку и исправить, непонятно.
Включен "Производительный" вариант управления доступом, ограничение на уровне записей НЕ включено.
В нем было 2 ошибки: одна из них та, что я указывал выше, а вторая - это то, что я искал. В ней указан был текст запроса, который выполняется, полностью, с учетом добавления по шаблонам RLS.
Ошибка была в тексте шаблонов ограничений (рис. 1). Посмотрел по ИТС, эти шаблоны нужно копировать из типовой роли ИзменениеУчастниковГруппДоступа. Я так и сделал, и заработало.
(1) Искать по ТЖ с минимальными обязательными настройками.
Попробуйте таки включить явное использование ограничений доступа - допишите РАЗРЕШЕННЫЕ в запрос.
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИдентификаторПакета", ИдентификаторПакета);
Запрос.Текст =
//++ БАВ 30 марта 2022 г.
//"ВЫБРАТЬ
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
//-- БАВ
| СоставПакетовДокументовЭДО.ЭлектронныйДокумент КАК ЭлектронныйДокумент,
| СостоянияДокументовЭДО.Состояние КАК Значение,
| СостоянияДокументовЭДО.СостояниеДополнение КАК Дополнение,
| СостоянияДокументовЭДО.Комментарий КАК Комментарий
|ИЗ
| РегистрСведений.СоставПакетовДокументовЭДО КАК СоставПакетовДокументовЭДО
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияДокументовЭДО КАК СостоянияДокументовЭДО
| ПО СоставПакетовДокументовЭДО.ЭлектронныйДокумент = СостоянияДокументовЭДО.ЭлектронныйДокумент
| И СоставПакетовДокументовЭДО.ИдентификаторПакета = &ИдентификаторПакета";
Возврат Запрос.Выполнить().Выгрузить();
Показать
Абсолютно то же самое.
В журнале регистрации только эта ошибка приведена, которую я в (1) писал.
В производительном варианте ограничения добавляются в модуле менеджера объекта, процедура ПриЗаполненииОграниченияДоступа()
Кроме того, можно попробовать явно пересчитать права на регистры с помощью Администрирование - Настройки пользователей и прав - Обновление доступа на уровне записей - Еще - Ручное управление. В нижней ТЧ убрать все галки, оставить только РС СоставПакетовДокументовЭДО и СостоянияДокументовЭДО, нажать запланировать обновление. Дождаться запуска и выполнения регламентного задания
(6)Один раз, тоже на внедрении ERP(только там ERP.УХ был, который к производительному режиму нормально не адаптирован, по крайней мере на тот момент) одна из ошибок по доступу была неявной, т.е. на запрос смотрим - все ок, оказалось, что недостаточно смотреть только на те таблицы, которые в самом запросе, нужно еще и на таблицы, которые являются типами для полей запроса. Т.е. нужно еще посмотреть в модули менеджера как минимум всех типов, которые возможны для ЭлектронныйДокументооборот.
Возможно там ваш тип данных, в котором неверно прописали ограничение.
В нем было 2 ошибки: одна из них та, что я указывал выше, а вторая - это то, что я искал. В ней указан был текст запроса, который выполняется, полностью, с учетом добавления по шаблонам RLS.
Ошибка была в тексте шаблонов ограничений (рис. 1). Посмотрел по ИТС, эти шаблоны нужно копировать из типовой роли ИзменениеУчастниковГруппДоступа. Я так и сделал, и заработало.
(8) решилось благодаря данной подсказке - на корректировку записей регистров чтение которой вызывало обращение к РЛС было написано условие РЛС по организации, но в корректируемом регистре не было организации.