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