|
Настройка РЛС | ☑ | ||
---|---|---|---|---|
0
Садовник
03.08.17
✎
12:19
|
Подскажите как правильно настраивать РЛС по табличным частям. В типовых конфигурациях и описаниях на ИТС указано, что делается это через связь по ссылке ТЧ и ТекущейТаблицей, но объясню свой вопрос:
Я настраиваю запрет доступа по выбранным подразделениям. Т.е. если у пользователя стоит запрет на определенное подразделение (именно в использовании в конкретном документе, а не вообще), то он не должен ни ввести новый, ни исправить старый документ, если в нем было (будет) хоть в одной строке указано запретное подразделение. При указанном способе происходит проверка не ТекущейТаблицы, а именно ССЫЛКИ на табличную часть. Если происходит ввод нового документа, то временная ссылка уже существует и РЛС отработает правильно. А вот при изменении существующего документа ограничения РЛС встраиваются в запрос на изменение (Update) к субд (мониторю профайлером). Т.е. изменения ссылки не происходит. Получается, что пользователю запрещено отредактировать существующий документ с запрещенным подразделением (это хорошо). НО! Разрешается в существующем документе с разрешенными подразделениями поменять подразделение на запрещенное и провести. И в этом случае РЛС будет молчать. |
|||
1
Садовник
03.08.17
✎
16:02
|
есть предложения?
|
|||
2
Михаил Козлов
03.08.17
✎
16:20
|
" НО! Разрешается в существующем документе с разрешенными подразделениями поменять подразделение на запрещенное" - дает выбрать запрещенное? РЛС на справочник подразделений стоит?
|
|||
3
_Batoo
03.08.17
✎
16:48
|
(2)
"(именно в использовании в конкретном документе, а не вообще)" (0) Добавь РЛС на Добавление, Изменение. |
|||
4
Садовник
04.08.17
✎
07:24
|
(2) Вам правильно ответили в (3). На справочник полный доступ, т.к. эти подразделения пользователь может использовать в других документах.
(3) Так у меня и стоит РЛС на добавление и изменение, причем одинаковое. С добавлением все отлично, а вот с изменением нет. На чтение доступ полный. P.S. Если вдруг это поможет делу, то могу привести код ограничения доступа. |
|||
5
DmitrO
04.08.17
✎
09:13
|
>>Получается, что пользователю запрещено отредактировать существующий документ с запрещенным подразделением (это хорошо). НО! Разрешается в существующем документе с разрешенными подразделениями поменять подразделение на запрещенное и провести. И в этом случае РЛС будет молчать.
Что за домыслы? При изменении проверка по РЛС делается дважды, до записи и после записи. Так что все будет будет работать правильно. |
|||
6
Садовник
04.08.17
✎
09:30
|
(5) это не домыслы
В профайлере смотрел. При изменении объекта к субд отправляется только один запрос на update, в котором присутствует проверка ссылки и текущего объекта (#ТекущаяТаблица). Если настраивать подобное ограничение, но на реквизит шапки, там можно поставить условие ТекущаяТаблица.Подразделение - это как раз и будет проверка "Объекта", т.е. тех данных, которые будут "после записи". Т.е. с реквизитом шапки все отлично работает: действует запрет и на изменение запрещенного документа и на установку в разрешенном документе запрещенного подразделения. |
|||
7
Dotoshin
04.08.17
✎
09:43
|
(6) Ну а если не в профайлере смотреть, а в 1с? Ну то есть зайли под пользователем, у которого есть ограничение по подразделениям и попробовать выбрать в существующем документе "запрещенное" подразделение. Что при этом получится?
|
|||
8
Dotoshin
04.08.17
✎
09:43
|
зайли=зайти
|
|||
9
Садовник
04.08.17
✎
10:02
|
(7) так я и тестировал до того как полез в профайлер)) На выбор запрета нет, должно сработать при проведении (изменении). Но оно не работает.
На всякий случай приведу тексты запросов. Ограничение по ТЧ (не работает как надо) ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица ГДЕ НЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ Документ.ПлатежноеПоручениеИсходящее.РасшифровкаПлатежа КАК ТабличнаяЧастьДокумента ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователейКОбъектам КАК ПраваДоступаПользователейКОбъектам ПО ПраваДоступаПользователейКОбъектам.ОбъектДоступа = ТабличнаяЧастьДокумента.ЦентрЗатрат И ПраваДоступаПользователейКОбъектам.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОграниченияПравДоступа.ПодразделенияПлатежныеДокументыЗапрет) И ПраваДоступаПользователейКОбъектам.Пользователь В (&ГруппыТекущегоПользователя) И ПраваДоступаПользователейКОбъектам.Чтение ГДЕ ТекущаяТаблица.Ссылка = ТабличнаяЧастьДокумента.Ссылка) Ограничение по шапке (все отлично работает). ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователейКОбъектам КАК ПраваДоступаПользователейКОбъектам ПО ПраваДоступаПользователейКОбъектам.ОбъектДоступа = ТекущаяТаблица.Подразделение И ПраваДоступаПользователейКОбъектам.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОграниченияПравДоступа.ПодразделенияПлатежныеДокументыЗапрет) И ПраваДоступаПользователейКОбъектам.Пользователь В (&ГруппыТекущегоПользователя) И ПраваДоступаПользователейКОбъектам.Чтение ГДЕ ПраваДоступаПользователейКОбъектам.ОбъектДоступа Есть Null |
|||
10
Садовник
04.08.17
✎
10:05
|
(9) "Центр затрат" имеет составной тип, среди которых есть тип Справочник.Подразделения как и реквизит "Подразделение". Это на всякий случай сообщаю.
|
|||
11
DmitrO
04.08.17
✎
10:40
|
(6)если хотите сказать, что в момент записи шапки и проверки по РЛС ТЧ еще не записана и содержит старые данные, то это действительно так. Однако кроме запроса update, далее, после записи ТЧ еще идет запрос select, который и проверяет, только что записанный объект вцелом.
У меня в базе подобные ограничения работают как надо. |
|||
12
Садовник
04.08.17
✎
10:43
|
(11) Можете прислать текст вашего ограничения?
Мне именно и хочется понять где у меня затык. |
|||
13
DmitrO
04.08.17
✎
10:45
|
(9)>>И ПраваДоступаПользователейКОбъектам.Чтение
мы ведь вроде изменения проверяем? |
|||
14
Садовник
04.08.17
✎
10:50
|
(13) Да, всё правильно. Просто для теста я решил привязаться именно к этому полю регистра сведений, т.к. ранее подобное же ограничение настраивал для чтения, чтобы убедиться, что оно работает. Суть же от этого не меняется.
|
|||
15
DmitrO
04.08.17
✎
11:22
|
(9)предлагаю поменять условие на такое:
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица ГДЕ 1 НЕ В ... |
|||
16
Садовник
04.08.17
✎
12:35
|
(15) Не помогло(
Можете всё таки показать часть своего кода по ограничениям на ТЧ? |
|||
17
Mkamha
04.08.17
✎
12:56
|
(16), на ограничение ТЧ в документах не получится сделать ограничение прав доступа красиво, чтобы пользователь не видел закрытые записи, а при записи объекта не было исключения на возможность изменения.
Как вариант: вместо табличной части документов - использовать регистр сведений, при открытии, считывать записи (считаются уже те, которые разрешены), при записи записывать измененные. Этот вариант не для типовых конф. |
|||
18
Садовник
04.08.17
✎
13:25
|
(17) а мне и не надо, чтобы еще и записи скрывались. Пусть смотрит всё.
Просто у нас один отдел не хочет, чтобы другой отдел исправлял документы так, что это может повлиять на подчиненные подразделения первого отдела. А смотреть пожалуйста)) (11) Вы меня натолкнули на мысль по поводу select'a. Решил для простоты просто проверять запись документа (без проведения). Зашел в разрешенный документ и поменял подразделение. Update отработал. Дальше пошло DELETE FROM _Document402_VT9343 FROM _Document402_VT9343 WITH(REPEATABLEREAD) WHERE _Document402_VT9343._Document402_IDRRef = 0x8aca441ea161d8bf11e777862b109596 INSERT INTO _Document402_VT9343 WITH(REPEATABLEREAD) VALUES(_Идентификаторы_) INSERT INTO _Document402_VT9343 WITH(REPEATABLEREAD) VALUES(_Идентификаторы_) Видимо замена значения (с разрешенного на запрещенное). А потом несколько запросов по Select'у , но там нет упоминания о нужной мне ТЧ, т.е. как будто не проверяет больше. |
|||
19
Садовник
04.08.17
✎
14:34
|
DmitrO, а вы уверены что в запросах select (после update), идет проверки только что записанного объекта?
Я там увидел только выборку полей шапки, где для ссылочных типов устанавливается связь с их таблицами (например с таблицей Справочник.Организации). И вот на эти таблицы в свою очередь накладываются ограничения, действующую именно на эту таблицу (РЛС к справочнику организации). По анализу профайла накладывания ограничения на реквизит шапки документа, проверка и ссылки, и новых данных происходит в одном запросе - update. Мне подсказали цитату из руководства разработчика : ? Для операции изменения ограничению доступа к данным должен соответствовать объект как до изменения (чтобы объект был прочитан), так и после изменения (чтобы объект был записан). Думаю это относится именно к проверке во время Update. Знающие люди пусть поправят. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |