Имя: Пароль:
1C
 
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
так и есть - ответили что ве описано в ИТС и ничего делать не будут

как же тогда ограничивать чтение данных у справочников?
напрмер теже физ лица что бы не могли кому не надо читать дату рождения, стажи, образование, семейное положение и проч?