Имя: Пароль:
1C
1С v8
УПП 1.3.14.2 Разделение доступа по подразделениям
0 golden-pack
 
29.07.11
09:37
Создана группа пользователей - заполнен список + вид доступа = подразделениеЦех1.
Галка - использовать RLS = ИСТИНА
Галка - RLS по подразделениям организации = ИСТИНА
=====================================================


Пользователь Кадровик + роль кадрового учета = разграничение НЕ работает.

В самой роли на праве "чтение" - в шаблоне увидел только разделение по организациям и физ. лицам:

#Если &ИспользоватьОграничениеПоОрганизации ИЛИ &ИспользоватьОграничениеПоФизическиеЛица #Тогда
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
   ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
       СоставГруппы.Ссылка КАК ГруппаПользователей
   ИЗ
       Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
   ГДЕ
       СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
   ПО (ИСТИНА)
ГДЕ (НЕ 1 В
                   (ВЫБРАТЬ ПЕРВЫЕ 1
                       1 КАК ПолеОтбора
                   ИЗ
                       РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
                   ГДЕ
                       НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
                       И ВЫБОР
                           #Если &ИспользоватьОграничениеПоОрганизации #Тогда
                           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                               ТОГДА ВЫБОР
                                       КОГДА 1 В
                                               (ВЫБРАТЬ ПЕРВЫЕ 1
                                                   1
                                               ИЗ
                                                   (ВЫБРАТЬ
                                                       1 КАК Поле
                                                   ) КАК Оптимизация ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                       ПО
                                                           НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(1)
                                                               И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                                               И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
                                                               И НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей)
                                           ТОГДА ИСТИНА
                                       ИНАЧЕ ЛОЖЬ
                                   КОНЕЦ
                           #КонецЕсли
                                   
                           #Если &ИспользоватьОграничениеПоФизическиеЛица #Тогда                                          
                           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ФизическиеЛица)
                               ТОГДА ВЫБОР
                                       КОГДА (НЕ 1 В
                                                   (ВЫБРАТЬ ПЕРВЫЕ 1
                                                       1
                                                   ИЗ
                                                       Документ.#Параметр(2) КАК ТабличнаяЧастьДокумента ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
                                                           ПО
                                                               ФизическиеЛица.Ссылка = ТабличнаяЧастьДокумента.#Параметр(3) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                           ПО
                                                               НастройкиПравДоступаПользователей.ОбъектДоступа = ФизическиеЛица.ГруппаДоступаФизическогоЛица
                                                                   И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ФизическиеЛица)
                                                                   И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
                                                                   И НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                   ГДЕ
                                                       ТабличнаяЧастьДокумента.Ссылка = ТекущаяТаблица.Ссылка
                                                       И НастройкиПравДоступаПользователей.ОбластьДанных ЕСТЬ NULL ))
                                           ТОГДА ИСТИНА
                                       ИНАЧЕ ЛОЖЬ
                                   КОНЕЦ
                           #КонецЕсли
                           
                           ИНАЧЕ ИСТИНА
                       КОНЕЦ = ЛОЖЬ))
                       И НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL
                       
#КонецЕсли

==========================================

Вопрос: WTF ? Я не правильно интерпретировал текст запроса или придется самому кодить ?
1 golden-pack
 
29.07.11
09:43
Формат текста отличный получился
2 golden-pack
 
29.07.11
09:43
ШАБЛОН
#Если &ИспользоватьОграничениеПоОрганизации ИЛИ &ИспользоватьОграничениеПоФизическиеЛица #Тогда
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
   ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
       СоставГруппы.Ссылка КАК ГруппаПользователей
   ИЗ
       Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
   ГДЕ
       СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
   ПО (ИСТИНА)
ГДЕ (НЕ 1 В
                   (ВЫБРАТЬ ПЕРВЫЕ 1
                       1 КАК ПолеОтбора
                   ИЗ
                       РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
                   ГДЕ
                       НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
                       И ВЫБОР
                           #Если &ИспользоватьОграничениеПоОрганизации #Тогда
                           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                               ТОГДА ВЫБОР
                                       КОГДА 1 В
                                               (ВЫБРАТЬ ПЕРВЫЕ 1
                                                   1
                                               ИЗ
                                                   (ВЫБРАТЬ
                                                       1 КАК Поле
                                                   ) КАК Оптимизация ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                       ПО
                                                           НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(1)
                                                               И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                                               И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
                                                               И НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей)
                                           ТОГДА ИСТИНА
                                       ИНАЧЕ ЛОЖЬ
                                   КОНЕЦ
                           #КонецЕсли
                                   
                           #Если &ИспользоватьОграничениеПоФизическиеЛица #Тогда                                          
                           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ФизическиеЛица)
                               ТОГДА ВЫБОР
                                       КОГДА (НЕ 1 В
                                                   (ВЫБРАТЬ ПЕРВЫЕ 1
                                                       1
                                                   ИЗ
                                                       Документ.#Параметр(2) КАК ТабличнаяЧастьДокумента ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
                                                           ПО
                                                               ФизическиеЛица.Ссылка = ТабличнаяЧастьДокумента.#Параметр(3) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                           ПО
                                                               НастройкиПравДоступаПользователей.ОбъектДоступа = ФизическиеЛица.ГруппаДоступаФизическогоЛица
                                                                   И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ФизическиеЛица)
                                                                   И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
                                                                   И НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                   ГДЕ
                                                       ТабличнаяЧастьДокумента.Ссылка = ТекущаяТаблица.Ссылка
                                                       И НастройкиПравДоступаПользователей.ОбластьДанных ЕСТЬ NULL ))
                                           ТОГДА ИСТИНА
                                       ИНАЧЕ ЛОЖЬ
                                   КОНЕЦ
                           #КонецЕсли
                           
                           ИНАЧЕ ИСТИНА
                       КОНЕЦ = ЛОЖЬ))
                       И НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL
                       
#КонецЕсли
3 golden-pack
 
29.07.11
09:53
Создана группа пользователей - заполнен список + вид доступа = подразделениеЦех1.
Галка - использовать RLS = ИСТИНА
Галка - RLS по подразделениям организации = ИСТИНА

=====================================================

Пользователь Кадровик + роль кадрового учета = разграничение НЕ работает.

В самой роли на праве "чтение" - в шаблоне увидел только разделение по организациям и физ. лицам

Вопрос: WTF ? Я не правильно интерпретировал текст запроса или придется самому кодить ?
4 vmv
 
29.07.11
09:55
разграничения по подразделениям в УПП нету фактически, т.е. пользовтель одного подразделения может видеть списки, документы другого подразделения без проблем.

Все что делает РЛС с установленными штатными средствами УПП ограничениями на подразделения - это запрещает проводить "чужие" документы, пичаль
5 golden-pack
 
29.07.11
10:02
Мда ... могли бы в 1С и сделать, там 1 день работы
6 golden-pack
 
29.07.11
10:25
Скажите еще кто нибудь что нельзя ....
7 ДемонМаксвелла
 
29.07.11
10:37
Ограничения &ИспользоватьОграничениеПоОрганизации ИЛИ &ИспользоватьОграничениеПоФизическиеЛица означаю ровно то, что написано. По подразделениям будет &ИспользоватьОграничениеПоОрганизации. Тут этого нет. В ролях кладовщиков и многих других всё работает.
8 ДемонМаксвелла
 
29.07.11
10:38
По подразделениям будет &ИспользоватьОграничениеПоПодразделениям (ю?)
9 golden-pack
 
29.07.11
10:43
(8) Суть не в булевом значении а в сравнении подразделения документа с подразделением в РС "НастройкиПравДоступаПользователей "
10 ДемонМаксвелла
 
29.07.11
10:46
Ну и что я неправильно сказал? Не проверяется значение и после этого ничего ни с чем не сравнивается.
11 vmv
 
29.07.11
10:47
(9) нужно писать свои шаблоны под подразделения так как это сделано для контрагентов.

ломит самому, вдруг сделают ...эээ когда-нибудь.

правда в 8.2.14 можно использовать общие реквизиты для этой цели, мож их потом задействуют
12 golden-pack
 
29.07.11
10:47
(7) В роли кладовщик - нет никаких ограничений на подразделение - вы про какую роль говорите ?
13 golden-pack
 
29.07.11
10:48
(11) Самое обидное что много ролей править придется. 1С лентяи.
14 golden-pack
 
29.07.11
10:49
(11) Общие конечно интересно ... но както тестировать их на рабочей базе не хочется.
15 ДемонМаксвелла
 
29.07.11
10:49
Лучше свои роли добавлять. Изменённую роль обновить практически невозможно. Только переписывать заново после обновления.
16 ДемонМаксвелла
 
29.07.11
10:52
Насчет Кладовщика может и неправильно сказал, у меня все роли свои.
17 ДемонМаксвелла
 
29.07.11
11:00
Всё я правильно сказал. Типовая роль Кладовщик, документ ВнутреннийЗаказ, ограничение доступа на чтение, запрос: "Если &ИспользоватьОграничениеПоОрганизации ИЛИ &ИспользоватьОграничениеПоПодразделения ИЛИ &ИспользоватьОграничениеПоСклады #Тогда ..."
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.