Ограничение прав на уровне записей начиная с определенной даты

1. 20tanush 04.08.15 09:01 Сейчас в теме
Добрый день!
Возникла необходимость ограничить доступ пользователей к одной из организаций в БД Управление Торговлей 10.3. причем старые документы, созданные до определенной даты, должны быть по-прежнему всем доступны. Есть ли возможность сделать такое ограничение, применяя RLS?
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Kom-off 04.08.15 09:05 Сейчас в теме
(1) Если иметь ввиду сам механизм RLS и допустить возможность изменения конфигурации для этих целей, а также, провести разработку, то можно. Если иметь ввиду типовой функционал УТ, то точно сказать не могу, но думаю, что нет.
4. amaksimov 04.08.15 10:59 Сейчас в теме
(1) 20tanush, я думаю дорабатывать не очень много. В типовом наверняка нельзя.
10. 20tanush 05.08.15 18:55 Сейчас в теме
Вот что получилось.
Хотела выделить цветом или шрифтом, но что-то не хочет выделяется. 10-ая строка кода добавлена (пока дату указываю в явном виде, на этапе тестирования):
##Если &ИспользоватьОграниченияПравДоступаНаУровнеЗаписей ##Тогда
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
        СоставГруппы.Ссылка КАК ГруппаПользователей
    ИЗ
        Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
    ГДЕ
        СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
    ПО (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей)
И (ТекущаяТаблица.Дата < ДАТАВРЕМЯ(2015, 8, 1))
ГДЕ (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = ЛОЖЬ
            ИЛИ (НЕ 1 В
                    (ВЫБРАТЬ ПЕРВЫЕ 1
                        1 КАК ПолеОтбора
                    ИЗ
                        РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
                    ГДЕ
                        НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
                        И ВЫБОР
                            КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                            	И ТекущаяТаблица.#Параметр(1) ССЫЛКА Справочник.Организации
                            	И НЕ ТекущаяТаблица.#Параметр(1) = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
                                ТОГДА ВЫБОР
                                        КОГДА 1 В
                                                (ВЫБРАТЬ ПЕРВЫЕ 1
                                                    1
                                                ИЗ
                                                    (ВЫБРАТЬ
                                                        1 КАК ПолеОтбора
                                                    ) КАК Оптмизация ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                        ПО
                                                            НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(1)
                                                                И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                                                И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                                    ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
                                                                И НастройкиПравДоступаПользователей.Запись = ИСТИНА)
                                            ТОГДА ИСТИНА
                                        ИНАЧЕ ЛОЖЬ
                                    КОНЕЦ
                            КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                            	И ТекущаяТаблица.#Параметр(2) ССЫЛКА Справочник.Контрагенты
                            	И НЕ ТекущаяТаблица.#Параметр(2) = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                                ТОГДА ВЫБОР
                                        КОГДА 1 В
                                                (ВЫБРАТЬ ПЕРВЫЕ 1
                                                    1
                                                ИЗ
                                                    Справочник.Контрагенты КАК Контрагенты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                        ПО
                                                            НастройкиПравДоступаПользователей.ОбъектДоступа = Контрагенты.ГруппаДоступаККонтрагенту
                                                                И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                                                И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                                    ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
                                                                И НастройкиПравДоступаПользователей.Запись = ИСТИНА
                                                ГДЕ
                                                    Контрагенты.Ссылка = ТекущаяТаблица.#Параметр(2))
                                            ТОГДА ИСТИНА
                                        ИНАЧЕ ЛОЖЬ
                                    КОНЕЦ
                            ИНАЧЕ ИСТИНА
                        КОНЕЦ = ЛОЖЬ))
                        И НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL)
##КонецЕсли
Показать
13. EvilDoc 176 21.08.15 16:10 Сейчас в теме
(10) 20tanush, По твоему примеру если Дата документа меньше твоей даты то не произойдет соядинения с группами - в таком случае данные старого периода будут недоступны. Удали свое условие по дате и добавь как в (12)
20tanush; +1 Ответить
3. reazek 04.08.15 09:26 Сейчас в теме
В типовой конфигурации нет, такого сделать не возможно без существенных доработок.
5. 20tanush 04.08.15 13:11 Сейчас в теме
Да, я спрашиваю именно если дорабатывать, то можно ли это сделать через RLS?
6. amaksimov 04.08.15 13:43 Сейчас в теме
(5) 20tanush, можно там немного
там есть константа, включен ли вообще RLS (в самих RLS участвует эта константа, если не ошибаюсь)
Вот её можно заменить на обращение к дате (дату можно в параметры сеанса в модуле сеанса переносить из константы или где там она задана, из регистра)
8. reazek 05.08.15 09:13 Сейчас в теме
(6) полностью согласен, оч хороший вариант.Наверное самый "красивый" и с наименьшим количеством геммороя.
7. progr-2008 118 04.08.15 23:28 Сейчас в теме
(5) 20tanush, если RLS доработать, можно, конечно.
Лучше бы индивидуально по объектам посмотреть.
9. 20tanush 05.08.15 14:11 Сейчас в теме
Уточню, может я сначала неполно объяснила задачу. Группе менеджеров надо установить запрет на создание новых документов, начиная с даты XXX, причем редактирование документов, созданных до даты XXX должно остаться им доступным.

Не поняла пока, как это написать в ограничениях прав. Например, документ реализация, права на запись ограничиваются шаблоном ОрганизацияВШапкеКонтрагентВШапке_Запись. Получается надо редактировать этот шаблон?
11. EvilDoc 176 21.08.15 16:06 Сейчас в теме
в типовом РЛС перед условиями "Т ГДЕ..." добавь просто "Т ГДЕ ДАТА < &ТвояДата ИЛИ..."
И параметр сеанса "ТвояДата" создай.
12. EvilDoc 176 21.08.15 16:07 Сейчас в теме
"...ГДЕ ДАТА < &ТвояДата ИЛИ (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = ЛОЖЬ..."
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)