Имя: Пароль:
1C
1С v8
v8.2: Не работает RLS - "глюк" с запросами по правам
0 DragonCat
 
26.12.11
17:51
Уже в который раз сталкиваюсь с такой ситуацией: серверная БД, управяемое приложение, внес массовые ограничения (чтение/изменение/добавление по нескольким документам для нескольких ролей), естественно, во многих случаях - копированием.
Пример запроса:
КонвертацияВалют ИЗ Документ.КонвертацияВалют КАК КонвертацияВалют
   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МатрицаДоступаПроекты КАК МатрицаДоступаПроекты
   ПО (МатрицаДоступаПроекты.Пользователь = &ТекущийПользователь)
       И КонвертацияВалют.Проект = МатрицаДоступаПроекты.Проект
       И (КонвертацияВалют.ЦФОПлательщик = МатрицаДоступаПроекты.ЦФО
           ИЛИ КонвертацияВалют.ЦФОПолучатель = МатрицаДоступаПроекты.ЦФО)
   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МатрицаДоступаРасчетныеСчета КАК МатрицаДоступаРасчетныеСчета
   ПО (МатрицаДоступаРасчетныеСчета.Пользователь = &ТекущийПользователь)
       И (КонвертацияВалют.РасчетныйСчетСписания = МатрицаДоступаРасчетныеСчета.РасчетныйСчет
           ИЛИ КонвертацияВалют.РасчетныйСчетПоступления = МатрицаДоступаРасчетныеСчета.РасчетныйСчет)
ГДЕ (НЕ(МатрицаДоступаПроекты.Пользователь ЕСТЬ NULL
               И МатрицаДоступаРасчетныеСчета.Пользователь ЕСТЬ NULL ))
   И КонвертацияВалют.ВидДС = ЗНАЧЕНИЕ(Перечисление.ВидыДС.Наличные)

В итоге - ограничения просто нет. Но стоит снова залесть в настройки, немного переставить чтото (элементарно - местами связи), как все начинает работать. Очень похоже на глюк работы конфигуратора с этой частью метаданных (или как оно сейчас в 8ке?)
Встречался ли кто с такой ситуацией? Есть ли решение?
1 asady
 
26.12.11
18:11
(0) RLS запрос должен возвращать одно значение (Истина или ложь)
у тебя что возвращает этот запрос
2 DragonCat
 
26.12.11
18:14
RLS запрос задает правила отбора строк таблицы :)

КонвертацияВалют ИЗ Документ.КонвертацияВалют КАК КонвертацияВалют
   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МатрицаДоступаПроекты КАК МатрицаДоступа
...и т.д.
3 asady
 
26.12.11
18:30
Судя по твоему запросу ты копировал устаревшие РЛС запросы - посмотри как сделаны РЛС запросы в типовой УПП - они довольно эффективно работают
4 DragonCat
 
27.12.11
12:41
Я вообще не копировал. Это кусок полностью самописной (моей) конфы. В ней из типового - только БСП.
И ту тречь не об эффективности. Вопрос в том, что набросанные однотипные запросы не работают в части документов. При этом, при внесении через форму ввода (не напрямую в списке ограничений доступа к данным) небольших изменений (поменял местами условия связи, например) - они начинают работать. При перезагрузке из хранилища В ТОЧНОСТИ такого же запроса - тоже начинают. Но, при этом, изначально они и были установлены на рабочей базе загрузкой из хранилища.

Вопрос в том, встречался ли кто с подобного рода проблемами? Может я просто не там смотрю, а может это старый и (почти) всем известный глюк конфигуратора. Или глюк у нас в фирме в рабочей среде какой...
5 Necessitudo
 
27.12.11
12:44
Наблюдаю такое периодически - но 8.1
6 vde69
 
27.12.11
12:46
Копай в сторону:

во первых "ДеМонические обновления"
во вторых наличие ролей которые перекрывают RLS

мое мнение
1. Для одного пользователя нельзя устанавливать несколько ролей с RLD (исключение "ГДЕ ЛОЖЬ")
2. В идеале в конфигурации вообще только одна роль с RLS

зы
планирую после НГ статейку написать
7 МишельЛагранж
 
27.12.11
13:17
(6) никакая роль RLS не перекроет - это RLS перекроет роль.
И вообще, RLS - это ограничение, а не разрешение, поэтому он однозначно "поборет" любое разрешение роли.
>>мое мнение
- все верно.
Уточнение: для одного пользователя МОЖНО и нужно устанавливать несколько ролей с RLS, только обязательно следить - чтобы эти РЛС были на РАЗНЫЕ объекты конфы.
Иначе будет непредсказуемое даже самим Нуралиевым огораниячения и в конце - полная ж с правами доступа.
В идеале должно быть четкое понимание, где какие РЛС, и отслеживание неперсечений в рамках одного пользователя.
8 МишельЛагранж
 
27.12.11
13:18
(6) >>планирую после НГ статейку написать
- пока не торопитесь, иначе подведете множество новичков под РЛС... )))
- или напишите, как можно простенькие правильца накатать и забыть про кодирование прав...
9 vde69
 
27.12.11
13:38
(7) роль без РЛС ВСЕГДА перекрывает все установленые РЛС других ролей!!!

поробуй пользователю дать полные права + роль с RLS и увидешь что у него будут ПОЛНЫЕ права
10 МишельЛагранж
 
27.12.11
13:41
(9) не будет. уже пробовал.
если в одной роли - РЛС на объект, а в другой - на него разрешено, каша получается.
каша: 80% - работает, 20% - дает "нет прав доступа или хуже ругается ))
11 vde69
 
27.12.11
13:42
(10) это от кеша зависит (или от других связаных обьектов), очисти кеш сервера и будет 100% разрешение. Проверял много раз.
12 Fish
 
27.12.11
13:46
(8), (10) Не путайте лучше ВЫ людей. В ветке v8: Чтобы понять 1С - надо стать безумным шляпником! стало понятно, что Вы ничего не понимаете в приоритетах операторов языка, теперь понятно, что еще и в приоритетах прав в 1С ничего не шарите. Повторю свой вопрос из той ветки:
может Вам не стоит заниматься тем, чего не понимаешь, т.е. программированием? :)))
13 Fish
 
27.12.11
13:54
(7) "Иначе будет непредсказуемое даже самим Нуралиевым огораниячения и в конце - полная ж с правами доступа" - В идеале, не должно быть каши в голове, и надо четко представлять, как работают задействованные тобой механизмы. И никакой ж тогда не будет. И Нуралиев тут ни при чем :)))
14 y88
 
27.12.11
13:58
(0) а здесь нет ошибки:
ГДЕ (
НЕ(
 МатрицаДоступаПроекты.Пользователь ЕСТЬ NULL
И МатрицаДоступаРасчетныеСчета.Пользователь ЕСТЬ NULL
 )
)
15 Necessitudo
 
27.12.11
14:00
(6) Да-да-да, и мы постоянно демоническое обновление используем. Очистка кеша поможет?
16 vde69
 
27.12.11
14:04
(15) с этого стоит начать! только кеш СЕРВЕРНЫЙ а не клиентский
17 golden-pack
 
27.12.11
14:08
(7) полный бред. ложь звездешь и провокация.

Что ты тут пишешь ? "Обычная" роль всегда перекрывает RLS.
Я настраивал RLS(писал свои запросы) в УПП для тучипользователей.  И я знаю как они работают на 100%.

Кстати давно заметил твои неадекватные посты.
18 golden-pack
 
27.12.11
14:10
(6) Для пользователей стараюсь тоже делать 1 с РЛС, то есть роль пользователь (который с РЛС по некоторым объектам) + 1 своя.

А за будущую статейку +.
19 golden-pack
 
27.12.11
14:14
(15) В кэше могла застрять старая роль. То есть может помочь, а если другая причина(перекрытие другими ролями пример) то не поможет.
20 y88
 
27.12.11
14:15
влезу:
1С 8.2 БП 2.0 переносим учет в одну организацию. Нужно ограничить доступ - раньше был стандартный RLS по организациям
Планирую ввести реквизит ОрганизацияДоступ в рег.бух. Хозрасчетный и некоторые документы (заполняться будет автоматом) и добавить новую роль с RLS по этому реквизиту
Я что-то упустил?
21 МишельЛагранж
 
27.12.11
14:21
(17) 1с-ники такие затейники..
РЛС - работает по другим механизмам, чем ограничения роли, и сами по себе они не пересекаются.
(12) я-то как раз не забыл про НОРМАЛЬНОЕ программирование, а не безумное чаепитие....
но ведь безумие заразно, в отличие от здравия, до которого надо принудительно лечиться...
это не лично к вам, это к 1с-у )))
22 golden-pack
 
27.12.11
14:24
(21) Епт ... у меня УПП на производтственном предприятиие, работает много пользователей с РЛС ... и ты мне говоришь что работают по другим механизмам ? Ты бредишь ? Ты это гдето вычитал ? Хватит уже позориться...
23 МишельЛагранж
 
27.12.11
14:24
(13) в идеале - это среда должна предоставлять четкие и ясные методы и возможности, а не возносить дикий гон и грязь на форуме.
Но, "я 1с-ника узнаю по площадной брани за монитором"....
24 МишельЛагранж
 
27.12.11
14:25
(22) РЛС аналог роли? поздравляю, чаепитие продолжается... даже на производственном предприятии с УПП... и много пользователей....
25 golden-pack
 
27.12.11
14:27
(24) РЛС аналог роли? - это что за бредовый вопрос ? Мишель ...
26 Fish
 
27.12.11
14:36
(23) Извини, конечно, но среда тебе ничего не должна :))) А "четкие и ясные методы и возможности" описаны во многочисленных документациях и руководствах, надо только не лениться это изучать и не обвинять разработчиков в том, что они не подстроились под твоё несколько извращённое понимание, каким должен быть язык программирования. :)))
З.Ы. А "дикий гон" пока встречается только в твоих постах :)))
27 sereban
 
27.12.11
14:40
(0) Сталкивался с подобными проблемами при настройке RLS. Зачастую когда меняешь поля или текст ограничения доступа они в конфигурации сохраняются, а к базе не применяются, а иногда вообще после перезапуска конфигуратора остаются старые значения. После изменения текста ограничения вручную или копированием или полей, когда закроешь форму редактирования(если менял в форме), жми Enter. У меня прокатывало.
28 Fish
 
27.12.11
14:45
(21) Я тоже не забыл еще про нормальное программирование (хотя подозреваю, что у нас эти понятия несколько расходятся). Просто для меня, например, нет особой разницы, на каком языке программировать, и я никогда не буду пенять на якобы "тупость" разработчиков языка. Я просто изучаю язык, необходимую документацию по нему, и никакой "каши" и "полной ж" в моих программах почему-то не происходит :)) ЧЯДНТ?
З.Ы. А по поводу 1С - да, конечно, как язык программирования, 1С оставляет желать лучшего, но не надо забывать, что 1С - это узкоспециализированная среда и предназначена и заточена для создания прежде всего учетных систем. А если ты чего-то не догоняешь, так не лучше ли попробовать сначала разобраться, а не обвинять всех в повальном безумии только потому, что не осиливаешь логику 1с?
29 МишельЛагранж
 
27.12.11
14:48
(12) >>что Вы ничего не понимаете в приоритетах операторов языка
- вообще в той теме было выяснено, что 1с-ники очень далеки от програмирования как отрасли.
И пересаживаются так, как скажет Шляпник.
У 1с-ников никогда не виновата 1с - или "это наследие SQL так!", или "в Си тоже самое!", или еще что...
а 1с - настолько могучая система, что вот-вот... но мелкие всякие Си с SQL пакости делают...
30 МишельЛагранж
 
27.12.11
14:49
(28) я считаю саму логику 1с-а безумной )))
31 МишельЛагранж
 
27.12.11
14:53
(26) дикий гон - это безумное клепание безумных версий среды разработки с последующим их принудительным уничтожением и объявлением всех остальных придурками и непонимающими великого замысла )))
32 Fish
 
27.12.11
14:53
(30) Тут я даже с Вами в чём-то соглашусь :))) Но это никак не мешает мне зарабатывать копеечку при помощи 1С :))) Просто надо эту безумную логику понять, что, в принципе не так уж и сложно, т.к. в любом безумии есть система :)))
33 golden-pack
 
27.12.11
14:54
(29-31) троль
34 Reset
 
27.12.11
14:59
(33) (имхо)Он не тролль в чистом виде, я подозреваю, что все, что он пишет, он думает _На_Самом_деле. Ну, точнее, что у него заменяет процесс, называемый "думать".
То есть, он совершенно искреннен в своих постах.
35 Fish
 
27.12.11
15:02
+(32) Тут ведь бесполезно спорить об уровне квалификации, я просто веду разговор к тому, что для того, чтобы быть настоящим профессионалом в программировании, ИМХО надо уметь хорошо разбираться в разных языках и средах разработки. Независимо от того, насколько безумными ты их считаешь :)) Есть и более безумные языки, чем 1с, например Brainfuck :)))
36 Fish
 
27.12.11
15:05
(31) Есть хорошее выражение: "Если ты такой умный, то где твои деньги?". Я немного перефразирую: Если ты такой умный, то где же твоя система, которая круче 1С?
37 DragonCat
 
28.12.11
12:24
(27) Спасибо большое. Попробую. Факт того, что не я один на такое напоролся - весьма радует (подтверждая собственную адекватность :) )
38 DragonCat
 
28.12.11
12:27
(28),(29) Ребят. В теме изучался конкретный вопрос, к программированию почти не имеющий отношения. Зачем тут трололо-разборки устраивать? Спорьте гденить еще.

По поводу RLS - связь с ролью без ограничений - даст снятие ограничений (запросы ограничений не будут налагаться на запросы к данным). Две роли к одним данным с разными ограничениями - дадут кашу, не работоспособную. ВУсе так, но какое отношение это имеет к теме?
39 МишельЛагранж
 
31.12.11
01:11
(38) ну раз не понимаете, зачем мы тут про программирование - то вот вам по теме:
раз не рабоатет РЛС-запрос - переписывайте его по-другому.
Почему так?
а это уже тот самый вопрос, где 1с, а где - программирование.... )))
40 DragonCat
 
10.01.12
10:52
(39) Да я уже все понял - это просто очередной выплеск вашего холивара. Теперь - в теме про RLS :)

Про запрос - снова не в тему. Не работает механизм его применения. В (27) толковый парень все разъяснил. Если интересно - почитайте.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн