Имя: Пароль:
1C
1С v8
Ограничение доступа к данным
0 karpos
 
28.03.14
09:22
Всем привет! Есть необходимость сделать ограничения доступа к некоторым полям справочника сотрудники я не хочу менять код в процедуре при открытий, а хочется это сделать через (Ограничение доступа к данным) причем когда открываешь этот справочник в конфигураторе на вкладке права  
наводишь на роль пользователи там уже есть какой то стандартный код.
Может кто то уже реализовывал что то подобное.
У меня 1с 8.2 УПП 1.3

вот код

#Если &ИспользоватьОграничениеПоОрганизации ИЛИ &ИспользоватьОграничениеПоФизическиеЛица #Тогда

ТекущаяТаблица ИЗ Справочник.СотрудникиОрганизаций КАК ТекущаяТаблица
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
        СоставГруппы.Ссылка КАК ГруппаПользователей
    ИЗ
        Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
    ГДЕ
        СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
    ПО (ИСТИНА)
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК ОбособленныеПодразделения
    ПО (ОбособленныеПодразделения.ГоловнаяОрганизация = ТекущаяТаблица.Организация
                И (НЕ ОбособленныеПодразделения.ГоловнаяОрганизация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))
            ИЛИ ОбособленныеПодразделения.Ссылка = ТекущаяТаблица.Организация)
ГДЕ (ТекущаяТаблица.ЭтоГруппа
            ИЛИ (НЕ 1 В
                        (ВЫБРАТЬ ПЕРВЫЕ 1
                            1 КАК ПолеОтбора
                        ИЗ
                            РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
                        ГДЕ
                            НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
                            И ВЫБОР
                                
                                #Если &ИспользоватьОграничениеПоОрганизации #Тогда
                                КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                    ТОГДА ВЫБОР
                                            КОГДА 1 В
                                                    (ВЫБРАТЬ ПЕРВЫЕ 1
                                                        1
                                                    ИЗ
                                                        (ВЫБРАТЬ
                                                            1 КАК ПолеОтбора
                                                        ) КАК Оптмизация ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                            ПО
                                                                НастройкиПравДоступаПользователей.ОбъектДоступа = ОбособленныеПодразделения.Ссылка
                                                                    И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                                                    И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                                        ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи)))
                                                ТОГДА ИСТИНА
                                            ИНАЧЕ ЛОЖЬ
                                        КОНЕЦ
                                #КонецЕсли
                                
                                #Если &ИспользоватьОграничениеПоФизическиеЛица #Тогда
                                КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ФизическиеЛица)
                                    ТОГДА ВЫБОР
                                            КОГДА 1 В
                                                    (ВЫБРАТЬ ПЕРВЫЕ 1
                                                        1
                                                    ИЗ
                                                        Справочник.ФизическиеЛица КАК ФизическиеЛица ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                            ПО
                                                                НастройкиПравДоступаПользователей.ОбъектДоступа = ФизическиеЛица.ГруппаДоступаФизическогоЛица
                                                                    И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ФизическиеЛица)
                                                                    И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
                                                                    И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                                        ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
                                                    ГДЕ
                                                        ФизическиеЛица.Ссылка = ТекущаяТаблица.Физлицо)
                                                ТОГДА ИСТИНА
                                            ИНАЧЕ ЛОЖЬ
                                        КОНЕЦ
                                #КонецЕсли
                                        
                                ИНАЧЕ ИСТИНА
                            КОНЕЦ = ЛОЖЬ))
                И (НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL ))
#КонецЕсли
1 karpos
 
28.03.14
09:23
получилось не очень красиво(
2 Мимохожий Однако
 
28.03.14
09:25
Сделай отдельную форму для "ограниченных" пользователей и при открытии через обработку события подсовывай эту форму
3 Maxus43
 
28.03.14
09:28
что значит "к некоторым полям"? РЛС не даст тебе возможность отдельные реквизиты или редактирвоать, или нет
4 AlexITGround
 
28.03.14
09:31
(0) уточни задачу, что хочешь сделать
5 Dmumaju
 
28.03.14
09:45
(0) через РЛС не получится, даже и не мечтай ))
6 rozer76
 
28.03.14
09:49
на чтение можно установить отдельные права для полей (обычно дают разрешение на код, родитель,владелец) но там где "прочие" - проверка на все сразу
7 AlexITGround
 
28.03.14
09:51
(0) ты можешь дать/не дать доступ к элементам справочников посредством к-л условий по реквизитам, но никак не убрать их с поля зрения в форме элемента.
8 Maxus43
 
28.03.14
09:51
(6) це чтоб в запросах читало и не валилось, а поглядеть их воочию - или весь справочник, или ничего
9 karpos
 
28.03.14
09:53
Вообще нужно сделать что сведения о сотрудниках компаний могли  
просматривать только в отделе кадров, а у других справочник сотрудники должен открываться но персональные данные они должны видеть.
10 rozer76
 
28.03.14
09:53
(8) это да и вроде только до 8.2
11 karpos
 
28.03.14
09:53
такие как серия номер паспорта и тд
12 Maxus43
 
28.03.14
09:54
(9) нельзя. Или есть доступ, или нет. Форму рисуй другую...
З.ы. в конфах на УФ может и сделано, в ЗУП что-то видел, в УПП насколько помню - нет
13 rozer76
 
28.03.14
09:56
+(10) хотя например если криво rls настроен на документ (т.е. и он не должен быть виден) а в нем есть реквизит у которого нет чтения ссылки то <объект не найден> а так хоть представление будет
14 Maxus43
 
28.03.14
09:57
(13) угу, чтоб увидеть в списке - можно РЛС-ом настроить, а вот чтоб отдельные реквизиты - нет
15 karpos
 
28.03.14
09:58
Тоесть предлагаете ограничительным подсовывать другую форму при открытий?
16 karpos
 
28.03.14
09:59
Мдя УПП то сыроватая. Такая и система такой простой вещи не предусмотрели.
17 Maxus43
 
28.03.14
10:08
(16) там предусмотрено, но так: или могут сомотреть физ лиц, или нет. Частичного нет
18 rozer76
 
28.03.14
10:18
гы, есть выход но только если сделать на УФ и в роли поставить "Независимые права подчиненных объектов"  и отключить доступ для конкретных реквизитов. Тогда просто не УФ их не будет видно для этой роли. Изврат конечно но вроде в УПП 1.3 уже есть несколько документов с УФ.

>>Если флажок "Независимые права подчиненных объектов" >>установлен, то при определении права на объект, >>учитывается только настройка права у этого подчиненного >>объекта.

>>Проверка права родительского объекта производится до >>сложения с правами остальных ролей. После сложения ролей, >>дополнительная проверка прав родительских объектов не >>производится.
19 Dmumaju
 
28.03.14
10:19
(16) точно! 5 баллов! ))
20 Dmumaju
 
28.03.14
10:20
+(19) тока не УПП, а 1С платформа
21 karpos
 
28.03.14
12:11
Dmumaju, 5 баллов то кому?
22 karpos
 
28.03.14
12:11
Значит предлагаете сделать управляемую форму для справочника ?
23 rozer76
 
28.03.14
12:30
(22) но только и режим всей сессии тоже должен быть "управляемый" только не забудь поставить "Использовать управляемые формы в толстом клиенте в обычном режиме" иначе обычные не будут открываться (конечно в толстом клиенте это только можно)
24 mrDSide
 
28.03.14
12:34
(0) я это делаю перед записью элемента, т.е. значение по ссылке <> этотобъект/объект значение И Не РольДоступна("...")
25 mrDSide
 
28.03.14
12:34
на сервере, само собой