Ошибка в подсистеме Управление доступом

1. rule_2 51 30.03.22 06:19 Сейчас в теме
Кто-нибудь может объяснить, как работает подсистема Управление доступом?

Поясняю.
У пользователя возникает ошибка:


{(183, 3)}: Синтаксическая ошибка "ГДЕ"
<<?>>ГДЕ
{ОбщийМодуль.ЭлектронныеДокументыЭДО.Модуль(29)}:Возврат Запрос.Выполнить().Выгрузить();
{Документ.ЭлектронныйДокументИсходящийЭДО.Форма.ФормаПросмотра.Форма(1504)}:СостоянияДокументовЭДО = ЭлектронныеДокументыЭДО.СостоянияДокументовПакета(ИдентификаторПакета);
{Документ.ЭлектронныйДокументИсходящийЭДО.Форма.ФормаПросмотра.Форма(1408)}:ПолучитьДанныеПакета();
{Документ.ЭлектронныйДокументИсходящийЭДО.Форма.ФормаПросмотра.Форма(14)}:ПриСозданииЧтенииНаСервере();
{ОбщийМодуль.ИнтерфейсДокументовЭДОКлиент.Модуль(2474)}:ОткрытьФорму(ИмяФормы, ПараметрыФормы,, ПараметрыФормы.ОбъектУчета);
{ОбщийМодуль.ИнтерфейсДокументовЭДОКлиент.Модуль(2436)}:ОткрытьФормуЭлектронногоДокумента(ПараметрыФормы);
{ОбщийМодуль.ИнтерфейсДокументовЭДОКлиент.Модуль(2420)}:ОткрытьНовыйЭлектронныйДокументОбъектаУчета(ОбъектУчета, НастройкиФормирования, РезультатПодготовкиДанных);
{ОбщийМодуль.ИнтерфейсДокументовЭДОКлиент.Модуль(2371)}:ОбработатьРезультатПодготовкиДанныхДляПросмотра(РезультатПодготовкиДанных, Параметры.ОбъектУчета, НастройкиФормирования);
{Гигабайт Обработка.ИнтерфейсДокументовЭДО.Форма.СтатусыЭлектронныхДокументов.Форма(15)}:ИнтерфейсДокументовЭДОКлиент.ОткрытьЭлектронныйДокументПослеСозданияНастроек(

по причине:
Ошибка выполнения запроса
по причине:
Ошибка в ограничении доступа к данным.
объект: 'РегистрСведений.СостоянияДокументовЭДО', поле: 'Комментарий'; право: 'Чтение'
{(183, 3)}: Синтаксическая ошибка "ГДЕ"
<<?>>ГДЕ
по причине:
{(183, 3)}: Синтаксическая ошибка "ГДЕ"
<<?>>ГДЕ
Показать


В этой строке выполняется запрос:
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ИдентификаторПакета", ИдентификаторПакета);
	Запрос.Текст =
		"ВЫБРАТЬ
		|	СоставПакетовДокументовЭДО.ЭлектронныйДокумент КАК ЭлектронныйДокумент,
		|	СостоянияДокументовЭДО.Состояние КАК Значение,
		|	СостоянияДокументовЭДО.СостояниеДополнение КАК Дополнение,
		|	СостоянияДокументовЭДО.Комментарий КАК Комментарий
		|ИЗ
		|	РегистрСведений.СоставПакетовДокументовЭДО КАК СоставПакетовДокументовЭДО
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияДокументовЭДО КАК СостоянияДокументовЭДО
		|		ПО СоставПакетовДокументовЭДО.ЭлектронныйДокумент = СостоянияДокументовЭДО.ЭлектронныйДокумент
		|		И СоставПакетовДокументовЭДО.ИдентификаторПакета = &ИдентификаторПакета";
	
	Возврат Запрос.Выполнить().Выгрузить();
Показать


У пользователя есть права на регистр.
В копии удалил все ограничения доступа на уровне записей из ролей, после запускал в режиме ОбновлениеИнформационнойБазы, но ошибка не ушла. Если выполнять этот запрос в привилегированном режиме, это решает проблему для этой строчки кода, но примерно такая же ошибка вылазит уже в другом запросе по этой подсистеме ЭДО. Походу к этим запросам прицепляется запрос проверки прав, но где он прицепляется, и как отловить ошибку и исправить, непонятно.

Включен "Производительный" вариант управления доступом, ограничение на уровне записей НЕ включено.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
8. rule_2 51 30.03.22 08:50 Сейчас в теме +1 $m
В общем, вопрос закрыт.

По подсказке, посмотрел технический журнал. Для работы с ним есть статья https://infostart.ru/1c/articles/1195695/

В нем было 2 ошибки: одна из них та, что я указывал выше, а вторая - это то, что я искал. В ней указан был текст запроса, который выполняется, полностью, с учетом добавления по шаблонам RLS.

Ошибка была в тексте шаблонов ограничений (рис. 1). Посмотрел по ИТС, эти шаблоны нужно копировать из типовой роли ИзменениеУчастниковГруппДоступа. Я так и сделал, и заработало.
Прикрепленные файлы:
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ImHunter 327 30.03.22 06:50 Сейчас в теме
(1) Искать по ТЖ с минимальными обязательными настройками.
Попробуйте таки включить явное использование ограничений доступа - допишите РАЗРЕШЕННЫЕ в запрос.
3. rule_2 51 30.03.22 07:12 Сейчас в теме
(2)
Заменил код на
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ИдентификаторПакета", ИдентификаторПакета);
	Запрос.Текст =
		//++ БАВ 30 марта 2022 г.
		//"ВЫБРАТЬ
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		//-- БАВ
		|	СоставПакетовДокументовЭДО.ЭлектронныйДокумент КАК ЭлектронныйДокумент,
		|	СостоянияДокументовЭДО.Состояние КАК Значение,
		|	СостоянияДокументовЭДО.СостояниеДополнение КАК Дополнение,
		|	СостоянияДокументовЭДО.Комментарий КАК Комментарий
		|ИЗ
		|	РегистрСведений.СоставПакетовДокументовЭДО КАК СоставПакетовДокументовЭДО
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияДокументовЭДО КАК СостоянияДокументовЭДО
		|		ПО СоставПакетовДокументовЭДО.ЭлектронныйДокумент = СостоянияДокументовЭДО.ЭлектронныйДокумент
		|		И СоставПакетовДокументовЭДО.ИдентификаторПакета = &ИдентификаторПакета";
	
	Возврат Запрос.Выполнить().Выгрузить();
Показать


Абсолютно то же самое.
В журнале регистрации только эта ошибка приведена, которую я в (1) писал.
4. ImHunter 327 30.03.22 07:16 Сейчас в теме +1 $m
(3) Настраивайте и смотрите в ТЖ, там должно быть подробнее, чем в ЖР.
Читать ТЖ можно инструментом из состава пакета Инструменты разработчика.
5. laperuz 47 30.03.22 07:54 Сейчас в теме
В производительном варианте ограничения добавляются в модуле менеджера объекта, процедура ПриЗаполненииОграниченияДоступа()

Кроме того, можно попробовать явно пересчитать права на регистры с помощью Администрирование - Настройки пользователей и прав - Обновление доступа на уровне записей - Еще - Ручное управление. В нижней ТЧ убрать все галки, оставить только РС СоставПакетовДокументовЭДО и СостоянияДокументовЭДО, нажать запланировать обновление. Дождаться запуска и выполнения регламентного задания
6. rule_2 51 30.03.22 07:57 Сейчас в теме
(5)
Вот код из этой процедуры

	Ограничение.Текст =
	"РазрешитьЧтение
	|ГДЕ
	|	ЧтениеОбъектаРазрешено(ЭлектронныйДокумент)
	|;
	|РазрешитьИзменениеЕслиРазрешеноЧтение
	|ГДЕ
	|	ИзменениеОбъектаРазрешено(ЭлектронныйДокумент)";
Показать


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

можно попробовать явно пересчитать права на регистры
- пробовал, и не раз, и не только на этот регистр. Не помогает
7. laperuz 47 30.03.22 08:09 Сейчас в теме
(6)Один раз, тоже на внедрении ERP(только там ERP.УХ был, который к производительному режиму нормально не адаптирован, по крайней мере на тот момент) одна из ошибок по доступу была неявной, т.е. на запрос смотрим - все ок, оказалось, что недостаточно смотреть только на те таблицы, которые в самом запросе, нужно еще и на таблицы, которые являются типами для полей запроса. Т.е. нужно еще посмотреть в модули менеджера как минимум всех типов, которые возможны для ЭлектронныйДокументооборот.
Возможно там ваш тип данных, в котором неверно прописали ограничение.

Да, а какая версия конфигурации? Доработки есть?
8. rule_2 51 30.03.22 08:50 Сейчас в теме +1 $m
В общем, вопрос закрыт.

По подсказке, посмотрел технический журнал. Для работы с ним есть статья https://infostart.ru/1c/articles/1195695/

В нем было 2 ошибки: одна из них та, что я указывал выше, а вторая - это то, что я искал. В ней указан был текст запроса, который выполняется, полностью, с учетом добавления по шаблонам RLS.

Ошибка была в тексте шаблонов ограничений (рис. 1). Посмотрел по ИТС, эти шаблоны нужно копировать из типовой роли ИзменениеУчастниковГруппДоступа. Я так и сделал, и заработало.
Прикрепленные файлы:
9. ksnik 593 17.05.23 14:45 Сейчас в теме
(8) решилось благодаря данной подсказке - на корректировку записей регистров чтение которой вызывало обращение к РЛС было написано условие РЛС по организации, но в корректируемом регистре не было организации.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот