![]() |
![]() |
![]() |
|
v8: 8.1.6.38 обращение к реквизиту через точку выдает ошибку доступа | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
26.02.07
✎
14:31
|
УПП 124
Права пользователя в запросе получаю ссылку на физ лицо и код типа: Выборка.ФизЛицо.Наименование пишет что нет прав Хотя если в запросе получить Наименование и обратится Выборка.ФизЛицоНаименование то все ок |
|||
1
AntonioS
26.02.07
✎
14:36
|
в каком контексте Выборка.ФизЛицо.Наименование делаешь?
нужен код |
|||
2
RomaH
naïve
26.02.07
✎
14:40
|
Функция ПолучитьТаблицуРегистраторов(МассивПараметров) Экспорт
Запрос = Новый Запрос; Запрос.Текст=" |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТаблицаРегистраторов.Регистратор КАК Регистратор, | ТаблицаРегистраторов.ПодразделениеОрганизации КАК Подразделение, | ТаблицаРегистраторов.Должность КАК Должность, | Совмещение.ДатаНачала КАК ДатаНач, | Совмещение.ДатаОкончания КАК ДатаКон, | Совмещение.ПричинаВременногоПеревода КАК Причина, | Совмещение.ФизЛицоЗамещаемое КАК ПричинаФизЛицо, | Совмещение.ФизЛицоЗамещаемое.Наименование КАК ПричинаФизЛицоНаименование, | ТаблицаРегистраторов.РазмерОборот КАК Результат |ИЗ | (ВЫБРАТЬ | НадбавкиЗаСовмещение.Регистратор КАК Регистратор, | НадбавкиЗаСовмещение.ПодразделениеОрганизации КАК ПодразделениеОрганизации, | НадбавкиЗаСовмещение.Должность КАК Должность, | НадбавкиЗаСовмещение.Приказ КАК Приказ, | СУММА(НадбавкиЗаСовмещение.РазмерОборот) КАК РазмерОборот | ИЗ | РегистрНакопления.ЕТС_НадбавкиЗаСовмещение.Обороты( | , | &ДатаКон, | Регистратор, | ВидРасчетаИзмерение = &Совмещение | И ФизЛицо = &ФизЛицо | И Приказ = &Приказ) КАК НадбавкиЗаСовмещение | | СГРУППИРОВАТЬ ПО | НадбавкиЗаСовмещение.Регистратор, | НадбавкиЗаСовмещение.Приказ, | НадбавкиЗаСовмещение.ПодразделениеОрганизации, | НадбавкиЗаСовмещение.Должность) КАК ТаблицаРегистраторов | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЕТС_Совмещение.РаботникиОрганизации КАК Совмещение | ПО Совмещение.ФизЛицо = &ФизЛицо | И ТаблицаРегистраторов.Приказ = Совмещение.Приказ | И ТаблицаРегистраторов.Регистратор = Совмещение.Ссылка | |ГДЕ | ТаблицаРегистраторов.РазмерОборот <> 0 | |УПОРЯДОЧИТЬ ПО | ДатаНачала |"; Запрос.УстановитьПараметр("ДатаКон" ,Новый Граница(КонецДня(Дата),ВидГраницы.Включая)); Запрос.УстановитьПараметр("Приказ" ,МассивПараметров[2]); Запрос.УстановитьПараметр("Совмещение" ,МассивПараметров[0]); Запрос.УстановитьПараметр("ФизЛицо" ,МассивПараметров[1]); Результат = Запрос.Выполнить().Выбрать(); Возврат Результат; КонецФункции Пока Выборка.Следующий() Цикл ОбластьДокумента.Параметры.Заполнить(Выборка); РегистраторПредставление = ПолучитьПредствалениеДокумента(Выборка.Регистратор); ОбластьДокумента.Параметры.РегистраторПредставление = РегистраторПредставление; ПричинаФизЛицо = Строка(Выборка.ПричинаФизЛицоНаименование); // ну вот в этом контексте ОбластьДокумента.Параметры.ПричинаФизЛицо = омЕТС.Падеж(ПричинаФизЛицо,-2); ДокументРезультат.Вывести(ОбластьДокумента); КонецЦикла; |
|||
3
RomaH
naïve
26.02.07
✎
14:42
|
Ошибка при получении значения атрибута контекста (Наименование): У пользователя недостаточно прав на исполнение операции над базой данных.
ПричинаФизЛицо = Строка(Выборка.ПричинаФизЛицо.Наименование); по причине: У пользователя недостаточно прав на исполнение операции над базой данных. |
|||
4
Rovan
гуру
26.02.07
✎
14:43
|
(2) у тебя же ФИзЛицо - это параметр запроса, а не поле выборки
|
|||
5
RomaH
naïve
26.02.07
✎
14:48
|
(4) ты меня не путай
| Совмещение.ФизЛицоЗамещаемое КАК ПричинаФизЛицо, | Совмещение.ФизЛицоЗамещаемое.Наименование КАК ПричинаФизЛицоНаименование, |
|||
6
RomaH
naïve
26.02.07
✎
15:11
|
Функция ФамилияИнициалыФизЛица(Объект = "", Фамилия = " ", Имя = " ", Отчество = " ") Экспорт
ТипОбъекта = ТипЗнч(Объект); Если ТипОбъекта = Тип("Строка") Тогда ФИО = омОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СокрЛП(Объект)," "); ИначеЕсли ТипОбъекта = Тип("СправочникСсылка.ФизическиеЛица") или ТипОбъекта = Тип("СправочникОбъект.ФизическиеЛица") Тогда ФИО = омОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СокрЛП(Объект.Наименование)," "); Иначе // используем возможно переданные отдельные строки {ОбщийМодуль.омПроцедурыУправленияПерсоналом(1124)}: Ошибка при получении значения атрибута контекста (Наименование): У пользователя недостаточно прав на исполнение операции над базой данных. ФИО = омОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СокрЛП(Объект.Наименование)," "); ... а может платформа новая глючит ? |
|||
7
Woppi
26.02.07
✎
15:19
|
А может права запрещают получение какого-либо реквизита ФизЛица? При обращении через точку происходит получение всего объекта, что и вызывает ошибку доступа. А в запросе получается только наименование, поэтому ошибки и нет. И вообще, получение полей объектов через точку от ссылки - плохо.
|
|||
8
RomaH
naïve
26.02.07
✎
15:23
|
(7) а что с типовым кодом в (6) делать?
|
|||
9
Woppi
26.02.07
✎
15:24
|
(8) переписать.
|
|||
10
RomaH
naïve
26.02.07
✎
15:29
|
угу, в УПП объектов с RLS все го лишь пара сотен
и кода с точкой - переписать пару минут, мне проще платформу назад откатить |
|||
11
RomaH
naïve
26.02.07
✎
15:29
|
вобщем - прошу подтверждения - что это глюк платформы
|
|||
12
RomaH
naïve
26.02.07
✎
15:33
|
проверить просто - создать и попробовать записать Зарпалту к выдаче под ограниченными правами
|
|||
13
tsr
26.02.07
✎
16:39
|
Проверил. Работает под правами "Расчетчик"+"Бухгалтер"
|
|||
14
tsr
26.02.07
✎
16:39
|
Поточнее напиши, в каком доке ошибка
|
|||
15
RomaH
naïve
27.02.07
✎
07:07
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
Спр = Справочники.ФизическиеЛица.НайтиПоКоду("01150"); //Выборка = Спр.Выбрать(); //Выборка.Следующий(); //вот тут опять же ругается на отсутсвие прав Выборка = Спр.Ссылка; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ФизическиеЛица.Ссылка, | ФизическиеЛица.Наименование |ИЗ | Справочник.ФизическиеЛица КАК ФизическиеЛица |ГДЕ | ФизическиеЛица.Ссылка = &Ссылка" ; Запрос.УстановитьПараметр("Ссылка",Выборка.Ссылка); Результат = Запрос.Выполнить().Выбрать(); Результат.Следующий(); Сообщить(Результат.Наименование); Сообщить(Выборка.Наименование); КонецПроцедуры выдает: Иванов Иван Иванович Ошибка при получении значения атрибута контекста (Наименование): У пользователя недостаточно прав на исполнение операции над базой данных. Сообщить(Выборка.Наименование); это нормально? |
|||
16
RomaH
naïve
27.02.07
✎
07:10
|
оработка запускается с почти типовой ролью "Пользоватль" - добвлены органичения на чтение "данных" - но наименование ограничено типовыми RLS и в запросе я его получить могу, а через точку - нет
соответсвенно весь типовой код типа Функция ФамилияИнициалыФизЛица() где получаются реквизиты объекта через точку - выдает ошибку |
|||
17
RomaH
naïve
27.02.07
✎
09:10
|
более оптимизированный код для воспроизведения ошибки:
Процедура КнопкаВыполнитьНажатие(Кнопка) //Спр = Справочники.ФизическиеЛица; //Выборка = Спр.Выбрать(); //Выборка.Следующий(); //вот тут опять же ругается на отсутсвие прав Спр = Справочники.ФизическиеЛица.НайтиПоКоду("01150"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ФизическиеЛица.Ссылка, | ФизическиеЛица.Наименование |ИЗ | Справочник.ФизическиеЛица КАК ФизическиеЛица |ГДЕ | ФизическиеЛица.Ссылка = &Ссылка" ; Запрос.УстановитьПараметр("Ссылка",Спр); Результат = Запрос.Выполнить().Выбрать(); Результат.Следующий(); Сообщить(Результат.Наименование); Попытка Сообщить(Спр.Наименование); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры . РЕЗУЛЬТАТ: Абдурахманова Равиля Гарафитдиновна {Форма.Форма(24)}: Ошибка при получении значения атрибута контекста (Наименование): У пользователя недостаточно прав на исполнение операции над базой данных. |
|||
18
tsr
27.02.07
✎
09:43
|
Вобщем понял тебя... Отключай наф..иг РЛС в справочнике Физ.лица. И будет тебе счастье. Я отключил в тот же день, как он там появился. У нас холдинг, и народ мечется из фирмы в фирму. Прописывать права просто устанешь физически и точно напутаешь, поэтому сразу убрали этот глючный РЛС. Тут подход нужен другой. По контрагентам, кстати, такая же фигня. 25000 контрагентов... Сиди прописывай права:) Вселое занятие.
|
|||
19
RomaH
naïve
27.02.07
✎
09:45
|
(18) большая просьба - проверь это чей глю мне интересно - мой, наш, или 1С?
не могу я RLS отключить - скандал уже был из-за того что кое-кто слишком много видит (образование, семейное положение) |
|||
20
tsr
27.02.07
✎
09:47
|
Не могу проверить, к сожалению. Рабочей базы с этим RLS нет. Убиваю его сразу же при обновлении. У нас больше 1000 чел. И каждый в нескольких фирмах, причем и сами фирмы меняются, добавляются, исчезают. Поэтому отключил нафиг. Права настраиваю на уровне таблиц
|
|||
21
RomaH
naïve
27.02.07
✎
09:52
|
а на типовой ?
там надо-то добавить физ лицо одно |
|||
22
tsr
27.02.07
✎
10:03
|
Проверил в типовой УПП. Работает твоя процедура из (17).
|
|||
23
tsr
27.02.07
✎
10:04
|
Права на какого-то из физлиц нет в группе. Проверь внимательнее
|
|||
24
RomaH
naïve
27.02.07
✎
10:12
|
не, а почему в запросе я получить наименование могу, а через точку из ссылки - нет?
|
|||
25
tsr
27.02.07
✎
10:16
|
Процедура твоя работает. Это пока все, что могу сказать
|
|||
26
tsr
27.02.07
✎
10:17
|
Выдает две фамилии
|
|||
27
tsr
27.02.07
✎
10:18
|
RLS на чтение из типовой
ФизическиеЛица ГДЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.ПраваДоступаПользователейКОбъектам КАК ПраваДоступаПользователейКОбъектам ГДЕ ПраваДоступаПользователейКОбъектам.ОбъектДоступа = ФизическиеЛица.Ссылка И ПраваДоступаПользователейКОбъектам.ОбластьДанных = &ОбластьДанныхФизическиеЛица И ПраваДоступаПользователейКОбъектам.Пользователь В (&ГруппыТекущегоПользователя) И ПраваДоступаПользователейКОбъектам.Чтение = ИСТИНА) |
|||
28
RomaH
naïve
27.02.07
✎
15:08
|
вобщем да ... глюк не последнего релиза - аналогичная ситуация и на 8.1.5
проблема существует - проверить можно на типовой УПП 124 - 125 проблема со справочниками где ... ограничений стоит более чем два например спр. контрагенты ограничение на чтение списка и на чтение данных тот же самый код но про контрагентов на типовой выдаст ошибку которую выдавал у меня на физ лицах (сделал ограничение на доступ к данным физ лиц) Процедура КнопкаВыполнитьНажатие(Кнопка) Спр = Справочники.Контрагенты.НайтиПоКоду("01150"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ФизическиеЛица.Ссылка, | ФизическиеЛица.Наименование |ИЗ | Справочник.Контрагенты КАК ФизическиеЛица |ГДЕ | ФизическиеЛица.Ссылка = &Ссылка" ; Запрос.УстановитьПараметр("Ссылка",Спр); Результат = Запрос.Выполнить().Выбрать(); Результат.Следующий(); Сообщить(Результат.Наименование); Попытка Сообщить(Спр.Наименование); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры |
|||
29
RomaH
naïve
27.02.07
✎
15:11
|
самое страшное что 1С за ошибку это не признает
это ж надо что-то будет думать про ограничение доступа для типовых для справочников типа физ лиц если для контрагентов в типовой возможно и нет обращений типа Ссылка.Наименование то для физ лиц навалом встает вопрос как сделать ограничение на просмотр данных по физ лицу, например запретить просмотр состава семьи, образования да и про контрагентов надо помнить что через точку низя... |
|||
30
RomaH
naïve
27.02.07
✎
15:40
|
а как такой код на типовой УПП на 8.0 отрабатывает?
|
|||
31
RomaH
naïve
27.02.07
✎
16:02
|
на 8.0 аналогично
так что это - глюк или фича? |
|||
32
RomaH
naïve
28.02.07
✎
14:48
|
так и есть - ответили что ве описано в ИТС и ничего делать не будут
как же тогда ограничивать чтение данных у справочников? напрмер теже физ лица что бы не могли кому не надо читать дату рождения, стажи, образование, семейное положение и проч? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |