Прячем счета из плана счетов

12.04.12

Администрирование - Роли и права

Если некоторым пользователям нужен доступ только к определенным счетам, а видимость данных по другим счетам при этом крайне нежелательна, на помощь приходит RLS

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Редактор недоступных счетов
.erf 28,14Kb
146
146
1 SM
Скачать Купить за 1 850 руб.

Зачем это нужно.

Самый простой пример - в базе хранятся данные по зарплате (с разбивкой по сотрудникам, т.е. не сводно), и главный бухгалтер или руководитель хочет чтобы 70-й счет мог видеть только расчетчик. Еще пример - менеджер смотрит остатки на складах по "оборотке" только по 10-му счету или по 41.01, остальные счета для него можно скрыть. Да мало ли у кого какие запросы :)

 

Порядок действий.


1) Добавляем в конфигурацию независимый непериодический регистр сведений "НедоступныеСчета" с двумя измерениями (ведущее, отбор, запрет незаполненных значений):

  1. Пользователь - составной тип (СправочникСсылка.ГруппыПользователей, СправочникСсылка.Пользователи)
  2. Счет - тип (ПланСчетовСсылка.Хозрасчетный) или другой план счетов?

2) Пишем для пользовательских ролей для права "Чтение" примерно такое ограничение:

ТекущаяТаблица ГДЕ (НЕ ТекущаяТаблица.Ссылка В (ВЫБРАТЬ
НедоступныеСчета.Счет
ИЗ
РегистрСведений.НедоступныеСчета КАК НедоступныеСчета
ГДЕ
(НедоступныеСчета.Пользователь = &ТекущийПользователь
ИЛИ НедоступныеСчета.Пользователь В (&ГруппыТекущегоПользователя))))
И (НЕ ТекущаяТаблица.Ссылка В (ВЫБРАТЬ
ТекущаяТаблица.Ссылка
ИЗ
ПланСчетов.Хозрасчетный КАК ТекущаяТаблица ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НедоступныеСчета КАК НедоступныеСчета
ПО ТекущаяТаблица.Код ПОДОБНО "" + НедоступныеСчета.Счет.Код + ".%"
ГДЕ
(НедоступныеСчета.Пользователь = &ТекущийПользователь
ИЛИ НедоступныеСчета.Пользователь В (&ГруппыТекущегоПользователя))))
 
 

3) Приложенной обработкой или вручную добавляем в наш регистр ограничение по счетам для отдельных пользователей или для целых групп. Потом заходим под этими пользователями и смотрим план счетов. Счета добавленные в регистр должны исчезнуть. Кстати при большом количестве пользователей и групп обработка нехило подтормаживает, видимо запросик можно пооптимизировать, но лень :)


При данном подходе необходимо учитывать множество нюансов:

1) Права "складываются" для разных ролей, т.е. если пользователю доступно несколько ролей, каждой из которых в свою очередь доступно чтение плана счетов, то ограничение на чтение нужно прописывать для каждой роли, иначе если прописать ограничение только для одной роли, пользователь все равно будет видеть все счета, т.к. на другую роль ограничений не наклыдывается.

2) Принадлежность пользователя группе определяется при запуске приложения при инициализации параметров сеанса, поэтому если для группы есть ограничение по счетам, а пользователя только что поместили в эту группу, то ограничение начнет действовать только при следующем перезапуске пользователем 1С.

3) Если выбрать в качестве недоступного счета "корневой" счет, то все его субчета также становятся недоступными, хотя для своих нужд можно изменить текст запроса в соединении (ПО ТекущаяТаблица.Код ПОДОБНО "" + НедоступныеСчета.Счет.Код + ".%"). Также изменив немного текст запроса можно реализовать обратную логику "доступны только указанные счета", но мне нужно было именно так.

4) Ну и самое главное нужно осознавать, что без тщательного тестирования нельзя внедрять подобные решения, т.к. логика работы многих механизмов в различных конфигурациях может запросто нарушиться! Возможно придется во многих запросах добавить слово "РАЗРЕШЕННЫЕ" и т.д. В общем, я Вас предупредил :)


Удачи!

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    140371    770    391    

802

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    7238    27    4    

50

Зарплата Роли и права Системный администратор Бухгалтер Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

5700 руб.

27.05.2021    34627    228    89    

183

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

14400 руб.

06.12.2023    5569    23    1    

52

Логистика, склад и ТМЦ Роли и права Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Расширение для 1С Бухгалтерия 3.0, которое позволяет использовать отдельные роли для доступа к складским документам, для доступа к документам раздела "Производство" и для доступа к документам раздела "Покупки".

2520 руб.

21.05.2019    1693711    560    194    

137

Ценообразование, анализ цен Роли и права Системный администратор Платформа 1С v8.3 Управление правами 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Расширение возможностей программы 1С УНФ. Функционал расширения - разграничение всевозможных прав пользователей и контроль при совершении различных действий.

3000 руб.

23.02.2018    56999    152    261    

145

Роли и права Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Бухгалтерия автономного учреждения 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Мучаетесь со списком типовых ролей? Не хотите иметь дело с конфигуратором? Не знаете что делают имеющиеся права в базе? Хотите просто и удобно добавлять и настраивать, по одному клику, доступы и поведение при записи/удалении/проведении/открытии списка/фильтрацию данных в списках или формах выбора для пользователя или группы пользователей и для любого объекта? Не хотите переживать, что при обновлении конфигурации все права и роли слетят? (Обновление от 27.03.2023, версия 1.9)

12000 руб.

21.03.2022    15268    22    53    

43
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
0. sound 536 13.04.12 07:22 Сейчас в теме
Если некоторым пользователям нужен доступ только к определенным счетам, а видимость данных по другим счетам при этом крайне нежелательна, на помощь приходит RLS

Перейти к публикации

1. charushkin 108 13.04.12 07:22 Сейчас в теме
Блиииин, вот я идиот ... Почему я раньше не догадался накладывать ограничения не на регистр бухгалтерии, а на план счетов???
Автору плюс за идею ))))
user1216897; корум; +2 1 Ответить
3. sound 536 13.04.12 14:14 Сейчас в теме
Вот еще немного повторюсь про RLS, смежная так сказать тема, все собирался оформить как статью, но все руки не доходили, хотя в комментариях на форуме уже 2 раза писал. Идея не новая, просто также как вариант решения для динамического изменения прав на справочники для пользователей и групп:

1) Сделал регистр сведений "ДоступКОбъектам", с двумя измерениями
ОбъектМетаданных (тип Строка)
Пользователь (составной тип СправочникСсылка.ГруппыПользователей, СправочникСсылка.Пользователи)
и 4 ресурса булевского типа: Чтение, Добавление, Изменение, Удаление

2) Сделал 4 шаблона в основной роли (ДоступКОбъектам_Чтение, ДоступКОбъектам_Изменение и т.д.), которая есть у всех, вот текст одного, остальные по аналогии:
ДоступКОбъектам_Чтение:

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


3) Потом ограничиваю у основной рабочей роли пользователей доступ, например, к справочнику "СтатьиЗатрат" (это где RLS):

#ДоступКОбъектам_Чтение("""СтатьиЗатрат""")


4) Захожу в режиме предприятия, открываю регистр "ДоступКОбъектам" и в режиме реального времени и добавляю туда

ОбъектМетаданных = "СтатьиЗатрат" (строка пишется либо вручную, либо лучше сделать обработку по редактированию прав)
Пользователь = "Все пользователи" (выбираю предопределенную группу и разрешаю всем только читать)
потом кому-то можно писать, кому то удалять и т.д. Причем можно ограничивать и группам и пользователям, удобно однако :)

Ограничивать ко всем справочникам нету смысла, а для некоторых вполне не обломно прописать 1 раз ограничение РЛС в роли и потом рулить этим из режима предприятия. Вот как-то так.


Ссылки на форум где это уже писал: тут и тут

Буду рад если кому-то поможет.

Всем удачи!
Ларисочка; +1 Ответить
2. Raminus 13.04.12 09:03 Сейчас в теме
Очень интересное решение, автору плюс, однозначно!
4. Модератор раздела 14.04.12 10:28 Сейчас в теме
Плохо:
1. Запрос очень медленный - 3 (ТРИ) вложенных запроса ! да еще юзается Подобно :(
2. сама идея слабовата - ограничить счета в плане счетов недостаточно.
пользователь все равно сможет видеть данные в регистре бухгалтерии, пусть там и не будет видно счета.
например, чаще всего применяется ограничения по ЗП (70) или доходам/выручке/прибыли (90-91), субконто все равно будут видны.
Где-то на партнерском форуме 1С признавала, что ограничения по бух.счетам/бух.регистру сделать очень сложно (ссылку не дам, т.к. не помню)
8. sound 536 16.04.12 09:53 Сейчас в теме
(4) artbear, сам осознаю что реализация не самая изящная, обычно в публикациях стараюсь указывать на косяки, а на этот раз что-то забыл, в общем по пункту 1 критику принимаю. По пункту 2, если кроме типовых обороток юзаются другие отчеты то да, все спрятать при таком подходе не удастся. Возможно придется еще делать механизм для физлиц как в ЗУПЕ. Кстати в ЗУПе реализация шаблонов ограничений уж совсем, ну если и не сложная, то во всяком случае нечитабельная, взять хотя бы шаблон "ОбщееУправлениеДоступом", кто разбирался с ним, надеюсь, меня поймет :)

(7) neal, у меня как раз 2-й подход, то есть расчеты ведутся в ЗУПе и выгружаются в бухгалтерию "колхозом", а данным подходом я просто по просьбе гл. бухгалтера закрыл доступ к некоторым счетам отдельным категориям пользователей (кладовщикам), но решил что и для 70-го счета подойдет, извиняюсь если ввел кого-то в заблуждение. Запросом реально можно вытащить информацию, но о существовании таких отчетов многие пользователи просто не догадываются :)

Получается что данный подход можно/нужно рассматривать в комбинации с какими-то другими ограничениями.
38. WKBAPKA 215 12.06.12 10:43 Сейчас в теме
(8)

artbear, сам осознаю что реализация не самая изящная, обычно в публикациях стараюсь указывать на косяки, а на этот раз что-то забыл, в общем по пункту 1 критику принимаю. По пункту 2, если кроме типовых обороток юзаются другие отчеты то да, все спрятать при таком подходе не удастся. Возможно придется еще делать механизм для физлиц как в ЗУПЕ. Кстати в ЗУПе реализация шаблонов ограничений уж совсем, ну если и не сложная, то во всяком случае нечитабельная, взять хотя бы шаблон "ОбщееУправлениеДоступом", кто разбирался с ним, надеюсь, меня поймет :)

а бывает, что в одной базе учет ведется от имени нескольких организаций, например, холдинг, с общим справочником сотрудников и двумя главными бухгалтерами... и надо скрыть данные друг от друга, т.е. еще накладывать ограничение по организации и тогда предложенный подход полностью становиться неработоспособным!
9. sound 536 16.04.12 09:57 Сейчас в теме
(4) А кстати ПОДОБНО юзать не обязательно, можно ограничиться конкретным счетом:

ПО ТекущаяТаблица.Ссылка = НедоступныеСчета.Счет
48. dmitry1c1991 19.07.16 14:00 Сейчас в теме
(4) artbear, А для чего там вообще юзается Подобно , если в регистре НедоступныеСчета есть ссылка на сам счет . Не понимаю для чего автор сделал в соединении условие "Подобно" , а не прямой ссылкой "по Хозрасчетный.Ссылка = НедоступныеСчета.Счет"
49. sound 536 19.07.16 17:30 Сейчас в теме
(48) dmitry1c1991, ПОДОБНО там видимо было для того чтобы можно было в регистре прописать, скажем 76 счет (одна запись) и на все субсчета бы это тоже распространилось, хотя конечно потеря скорости налицо. Я уже столько критики тут "выслушал" и со многим согласился в своей неправоте, и уже это просто наверно тут висит как материал для рассуждений. И вообще публикации то уж 5-й год пошел. Я когда смотрю то что я в институте писал, мне вообще плакать охота, дак что теперь застрелиться чтоли :)))
5. neal 26 14.04.12 10:53 Сейчас в теме
Автор, а что показывают отчеты типовые отчеты "Оборотно-сальдовая ведомость" и "Анализ субконто"!? Интересно посмотреть картинки, особенно Анализ субконто по Субконто "Физлица". Такую идею в голове рассматривал, но не стал реализовывать, так как считаю что это не будет работать должным образом. Ограничения должны накладываться в первую очередь на регистры, а не на аналитику. Может такой подход кому то и подойдет, у кого это используется - напишите отзывы.
6. HameleonA 104 14.04.12 14:50 Сейчас в теме
(5)Установите недоступные счета и в осв не будут эти счет для пользователя отображаться. Автор выложил достаточно полную информацию.


Плюс от меня Автору. Идея понравилась.
7. neal 26 16.04.12 07:19 Сейчас в теме
(6) HameleonA, проверил, сделал ограничение на плане счетов "Хозрасчетный ГДЕ Хозрасчетный.Ссылка <> ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда)" в типовой БП 2.0, и действительно типовые отчеты вроде корректно работают, видимо из-за того что все отчеты построены на виртуальных таблицах.
Но возможность просмотреть по человеку сколько ему было начислено все же остается, написав запрос с использованием двух таблиц "РегистрБухгалтерии.Хозрасчетный" и "РегистрБухгалтерии.Хозрасчетный.Субконто" (это не виртуальные таблицы), в результате в поле счет будет "<Объект не найден> 14:ba6a0df1e75b44914a846a2bfe80b623)", а в поле значение субконто будет указан сотрудник.
Рассматривая задачу закрытия ЗП от пользователей, все же есть отличия между данным подходом, и подходом где отсутствует аналитика на 70 счете, а учет ведется к примеру в ЗУП - при втором подходе, данные в отчетах выглядят более логично, так как отсутствие оборотов по какому то счету, для тех кто анализирует деятельность предприятия в целом, может вызывать много вопросов.
Автору плюс за то что эту идею оформил в статью. И как пожелание - дополнительные скриншоты типовых отчетов (с примером ограничения по какому либо счету) оказались бы полезными.
37. WKBAPKA 215 12.06.12 10:39 Сейчас в теме
(6) HameleonA,
да вы шо? а если внимательно присмотреться к итогам ОСВ вот засада получиться!
10. AlexO 135 16.04.12 10:57 Сейчас в теме
Подход слишком сложен и ненадежен. Не в плане "автор не разобрался", а в плване самой реализации RLS - что-то где-то забыли, что-то где-то криво работает, кому-то разрешили в другой роли - столько всего, что вся "плюсовость" такого подхода при постоянном юзании сводится к нулю.
Проще, и вернее, в данной реализации 1с, сделать ограничения в самих отчетах, и запретить пользователям запускать внешние обработки.
А для разовой реализации "у меня работает, и завтра я увольняюсь" - вполне ))
11. sound 536 16.04.12 11:03 Сейчас в теме
12. AlexO 135 16.04.12 11:07 Сейчас в теме
+ (11) сам RLS может такого начудить, что все будет закрыто даже тем, кому "разрешено" (роли там перехлестнулись или просто тонкости работы RLS, которые при сложных запросах не отлавливаемы, кроме как переписывать сам запрос), да и если накидать такие ограничения, как в статье, на многие объекты - тормоза будут очень и очень приличные, причем даже там, где, вроде бы, автор и не планировал что-либо ограничивать (а просто логика обращается в каком-то "левом" запросе к "ограниченному" регистру - а RLS без разницы, оно отрабатывать будет по каждой записи и по каждому обращению к регистру).
Для новичков и просто не знакомых с RLS даже на уровне типовых RLS-ных запросов - НЕ ПРИМЕНЯТЬ НИ В КОЕМ СЛУЧАЕ!
Иначе потом концов не найдете, и, в лучшем случае, вернете все взад после нервотрепки.
Так что, автор - красными крупными буквами должен написать, что такой подход крайне противопоказан новичкам.
А не просто "я вас предупредил" )).
13. sound 536 16.04.12 11:14 Сейчас в теме
(12) Ок, уговорили:

Новички и просто не знакомые с RLS даже на уровне типовых RLS-ных запросов - НЕ ПРИМЕНЯТЬ НИ В КОЕМ СЛУЧАЕ!
15. AlexO 135 16.04.12 11:27 Сейчас в теме
(11)
не в обиду пишу, сам намучился однажды исправлять RLS после того, как один программист прослушал курсы про RLS и наделал, как ему показалось, "типовых" ограничений на справочники и документы - вся база встала колом, 2/3 документов перестали открываться вовсе, остальные - открывались через раз по непонятной схеме (RLS "рулит").
И сам пока с такой дикой ституацией не столкнулся - был более лоялен к применению и развертыванию "все на RLS".
И запросы, на первый взгляд, были "как типовые" и вроде "правильные" - но когда там соединяется таблица одного регистра с таблицей другого регистра, а там - с третьим, все это в одном запросе, и проконтролировать, какое решение в результате для объекта будет - пока не начнешь работать практически невозможно, да и смысла нет, т.к. причину - где в какой таблице неправильно - не найдешь при таком раскладе.
А потом еще и тормоза выскочили такие, что отчеты, раньше формировавшиеся за 1 минуту, теперь - 15-20 минут.
Решение применил кардинальное - все удалил в топку.
16. sound 536 16.04.12 11:44 Сейчас в теме
(15) AlexO, никаких обид, я сам понимаю к чему все это может привести, поэтому и оформил это все как чисто теоретический материал, возможно кого-то это натолкнет на более глубокое осмысление RLS и необходимость его применения в своих разработках.

P.S. Кстати 1-й раз решился на статью, пусть и маленькую :)
14. sound 536 16.04.12 11:16 Сейчас в теме
Теперь остается ждать плаксивые комментарии новичков, которые уже внедрили подобное решение и наколотили себе шишек :)
17. AlexO 135 16.04.12 11:53 Сейчас в теме
(14)
единоразово и в узких рамках, если все делать по статье - заработает с высокой долей вероятности ))
Вот если будут расширять дальше на более чем один отчет/документ/объект копированием/вставкой в другие запросы без понимания принципов работы RLS и последствий - вот тут беда, вот тут и начинается свистопляска.
В чем и проблема с RLS - оно не работает по принципу "сложения прав", а либо да, либо - нет (а как у ней там наложатся условия, кто проследит?), либо есть разрешение, либо - нет, и самое трудное - понять, где и в какой роли/праве/условии отрабатывает запрет. И все это при отсутствии вменяемых инструментов отладки RLS-запросов.
18. sound 536 16.04.12 12:06 Сейчас в теме
(17) AlexO, вижу, что мое мнение с Вашим совпадает, полностью согласен со всем вышеперечисленным.
Я в ЗУПе постоянно борюсь с этими ограничениями, сотрудники (одно физлицо) из одной организации переходят в другую, а там другие расчетчики, они хотят "только свои данные", а экономисты головной организации хотят соответственно видеть консолидированные данные, и если ограничения по сотрудникам еще работают более менее так как мне нужно, то когда дело доходит до налогов, то тут порой возникают очень трудноотыскиваемые запарки, особенно "нравится" копаться в ЗУПовских километровых запросах и понимать кому там какого доступа не хватает или наоборот "лишка".
21. AlexO 135 16.04.12 12:38 Сейчас в теме
(18)
да-да, и все это еще при том, что, отчасти - из-за отсутствия суммирования настроек RLS (для новичков ремарка: в RLS нет доступного для проверки суммирования прав подобно тому, что есть в ролях - "если одна роль запрещает, а другая разрешает - то разрешено", RLS применяется к записи БД сразу и целиком все, что есть, без "логической" последовательности запросов RLS, и в этом её непредсказуемость), отчасти (собственно, это следствие первого ограничения) - что применить можно только один запрос, и, следовательно, чтобы поставить еще одно условие на событие (чтение-запись), нужно менять старый запрос.
Так что самое первейшее и наиважнейшее правило RLS - делать ограничение/запрос "один объект - одна роль", не больше.
Ну, а "нулевое" правило пользования RLS - не пользовать его глубоко без опыта и набитых шишек ))
39. WKBAPKA 215 12.06.12 10:45 Сейчас в теме
(21) AlexO,
если у пользователя две роли, у одной наложено ограничение на некоторый объект, у другой роли нет и не написано ГДЕ Ложь, тогда ограничения работать не будут... читаем желтую книжечку
33. WKBAPKA 215 12.06.12 09:53 Сейчас в теме
(17) AlexO,
о чем вы? если накладывать ограничение, нужно просто подходить к этому грамотно... приоритетнее всегда права у которых прав больше...
19. neal 26 16.04.12 12:19 Сейчас в теме
Кстати в тему RLS в последней версии 1С:Документооборот подход изменился в корне, и нацелен на повышение производительности, да и помоему разбираться проще, теперь в роли запрос совсем краткий, а все разрешения прописаны в регистрах. Правда думаю объем базы может вырасти значительно.
20. sound 536 16.04.12 12:36 Сейчас в теме
(19) neal, у меня Документооборот внедрен, но все его функции сводятся примерно к такому "все письма в одном месте", то есть можно сказать заюзан по минимуму и реализацию ограничений, честно скажу, даже не смотрел, надо будет поразбираться. Вот за ЗУП могу сказать, что для одного только определения принадлежности пользователя группе в запросе используются отдельные подзапросы, не очень кстати читабельные, хотя для той же цели в Бухгалтерии КОРП есть параметр сеанса ГруппыТекущегоПользователя, и запросы на порядок короче и понятней, не понятно почему также не сделать и в ЗУПе, наверно потому что "если солнышко всходит на востоке и заходит на западе, то ничего трогать не нужно" :).
Вот то, что я описал в (3) у меня юзается на 4-х справочниках, хотя тоже понимаю, что не самая красивая реализация.
23. AlexO 135 16.04.12 12:43 Сейчас в теме
(20)
есть можно сказать заюзан по минимуму и реализацию ограничений

- это как раз второе правило пользования RLS - "всегда использовать ограничения прав по-минимуму и только самое необходимое" )
запросы на порядок короче и понятней, не понятно почему также не сделать и в ЗУПе

хотя вот в УПП при переходе от 1.2 к 1.3 запросы RLS были кардинально переписаны - причем не в сторону улучшения читабельности...
Так что, если сделают что-то с RLS и в ЗУП - то не в сторону упрощения, увы...
22. AlexO 135 16.04.12 12:39 Сейчас в теме
(19) neal,
"прописаны в регистрах" - это в коде? Потому как RLS без роли назначить нельзя в принципе ))
24. AlexO 135 16.04.12 12:49 Сейчас в теме
Т.е. что изменилось в запросах УПП: если раньше там были "кошмарные трех-четырехэтажные", но все-таки разбираемые запросы на уровне "ЛОЖЬ-ИСТИНА-ЛОЖЬ-ЛОЖЬ-ИСТИНА-ЛОЖЬ" и можно было "выплыть" наверх из подзапросов и проследить, как "эхо наше отзовется", т.е. если начальное значение будет таким, то что будет на выходе у RLS, то теперь - все усложнилось в разы: запросы все такие же многоэтажные, но уже сравниваются не "истина" или "ложь" в явном виде, а значения кучи таблиц (а какие там эти значения подцепляет - поди разберись) разных регистров настроек, да еще некоторые вообще закрыты для явного просмотра содержимого. И вот сидишь и смотришь, гадаешь, запускаешь, и ждешь, а что получится...
25. AlexO 135 16.04.12 13:08 Сейчас в теме
Вот нашел на мисте пример дурости и непонимания основ и нюансов 1с:
МойДокумент ИЗ Документ.МойДокумент КАК МойДокумент
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        МойДокумент.Ссылка КАК Ссылка,
        МойДокумент.Ответственный КАК Ответственный
    ИЗ
        Документ.МойДокумент КАК МойДокумент) КАК ВложенныйЗапрос
    ПО МойДокумент.Ссылка = ВложенныйЗапрос.Ссылка
ГДЕ ВложенныйЗапрос.Ответственный = &ТекущийПользователь

- товарищ утверждает, что якобы получает для RLS данные с текущей формы, данные "до изменения", и сравнивает их с целью разрешить текущий ввод на форме документа или отменить.
Это при том, что в платформе 1с в принципе нет разделения на "старые" и "новые" данные (а только на "данные на форме, не записано" (и это не "фича" платформы, а следствие промежуточного хранения в оперативной памяти, к самой платформе и её функциональности не имеющее вообще никакого отношения, ну да, кроме как сделали чтение текущих данных объекта; т.е. даже можно сказать - в 1с подобного разделения на уровне БД (чтобы, как положено, с контролем, проверками, откатами, сравнением и т.д.) и нет - есть только "данные в базе", и эти данные единственно верны и легитимны (конечно, опять же в рамках платформы 1с - со всеми её непроверками "судьбы" записи в БД: удачно записана, неудачно, куда и как, полностью, неполностью, записана... Т.е. все просто: запись отослана "на запись" в БД? - да. - тогда она априори записана верно и в полном объеме, и можно её пользовать для дальнейших целей)) и "данные в базе", к первым RLS не имеет вообще никакого доступа - потому как он в принципе ограничивает записи БД, а не данные в памяти (текущие на форме); далее, запрос сделан к ТАБЛИЦАМ ДОКУМЕНТОВ (он-то думает, что к текущей, которая в памяти в этот момент, но это необязательно - кто знает, при каких отборах и манипуляциях с документами уже в базе у него данное событие - и данный RLS, - сработают, и что при солидной выборке документов вообще вгонит в ступор 1с), так еще ко всему перечисленному в запросе к записям таблицы документа в БД через <дурость и> вложенный запрос добавляются соседние записи ЭТОЙ ЖЕ ТАБЛИЦЫ того же самого документа.
Но товарищ утверждает, что познал истину (как многие и многие на мисте, причем с солидным стажем "узкого" программиирования), и у него все здорово работает. Без вложенного запроса не работает, а со вложенным - работает. Хотел расписать свою теорию "почему работает", но что-то не расписал...
Т.е. он, конечно, что-то такое получает в RLS из
МойДокумент ИЗ Документ.МойДокумент

но что это за данные, откуда они (с какого момента времени редактирования документа сняты), и насколько соответствуют желаемым "данные, которые ввел пользователь, и видит их перед собой на экране" - неизвестно никому, кроме платформы, и то, станут ей известны при выполнении ))
26. tim_taler 69 18.04.12 13:26 Сейчас в теме
Без обид, но в очередной раз изобретен неустойчивый велосипед с одним колесом, едущий до первой кочки.
очевидно, что неидимость элемента плана счетов не есть невидимость движений по нему - расшифровка, какой-нить
анализ от коррсчета или субконто, почти уверен, отобразит подробности движений скрываемого счета, только
вместо внятного "70" будет светиться "объект не найден". Хотя спасает, конечно, от половины пользователей -
с нулевой квалификацией, которые ни шага лево-право от заученной мантры.

ЗЫ-ОФФ: в честной компании нечего оклады скрывать! :)
27. sound 536 18.04.12 13:47 Сейчас в теме
(26)
Хотя спасает, конечно, от половины пользователей
- будем считать, что так и есть.

в честной компании
- а что и такие существуют? :)
28. cpo-it 27 07.06.12 10:40 Сейчас в теме
29. sound 536 07.06.12 11:07 Сейчас в теме
(28) cpo-it, если пользователю доступна лишь одна роль "Бухгалтер", то для этой роли на чтение плана счетов нужно установить ограничение доступа к данным (как на картинке в описании). Попробуйте сделать все сначала по инструкции, по идее там дана исчерпывающая рекомендация.

P.S. Если честно я бы не советовал Вам использовать данную технологию, т.к. у нее очень уж много нюансов.
30. glek 120 12.06.12 09:44 Сейчас в теме
Идея, конечно, интересная. Но. Информация по складам/товарам/контрагентам нормально фильтруется типовыми механизмами. Ограничение по ЗП мы накладывали удалением субконто со счета ЗП (разумеется это касается сугубо УПП): изменений меньше, работает быстрее, чем с РЛС, и настраивать проще ))). Плюс за идею
32. WKBAPKA 215 12.06.12 09:50 Сейчас в теме
(30) glek,
есть более простой и изящный способ скрыть данные, не удаляя субконто...
34. glek 120 12.06.12 10:14 Сейчас в теме
(32) WKBAPKA, Поделитесь, если не жалко ))
31. WKBAPKA 215 12.06.12 09:49 Сейчас в теме
идея бредовая... если просто наложить RLS на план счетов, ничего не получиться... нормального результата не будет
первое: итоги в ОСВ будут с учетом скрытых счетов ох, как это будет сбивать с толку
второе: расшифровки, например, карточка счета, анализ счета и т.п. лихо покажет корреспонденции по скрытым счетам
третье: если нужно что то скрыть надежно, RLS нужно накладывать на сам регистр бухгалтерии... т.к. для регистра бухгалтерии RLS будет работать только для измерений, достаточно добавить одно измерение, например, ПроводкаПоЗП с типом булево, внести небольшое изменение в набор движений регистра и написать на RLS простое ограничение... и будет счастье... а можно пойти еще дальше, сделать справочник или перечисление с разделами учета, типа, ЗП, Дебиторы, Кредиторы, соответственно добавить измерение и накладывать на него ограничение, и тогда уже можно играться правами как хочешь...
40. sound 536 13.06.12 09:33 Сейчас в теме
Вот уж не думал, что многих так цепанет :)

(31) WKBAPKA, мне уже если честно слегка поднадоело оправдываться в комментариях, прочитав которые, кстати, можно для себя сделать вывод о целесообразности применения данного подхода в том или ином виде.
Повторяю: так не спрятать по нормальному ничего!
Публикация написана как статья, а не как обработка и уж тем более не как рекомендация, воспринимайте ее просто как тему для размышления или как то, чего делать не надо :)
Ваш голос я увидел, позиция ясна.
41. WKBAPKA 215 13.06.12 10:01 Сейчас в теме
(40)
я бы не писал бы просто так, если бы самому не приходилось решать такие задачи... если назначение статьи RLS, это одно, но тогда пример выбран не удачный, если показать как решить конкретную задачу, в вашем случае, скрыть данные по определенным счетам, это в корне меняет дело, т.к. реализация в корне не правильная, и, возможно, подойдет в конкретно вашей ситуации, т.е. на вашем предприятии, где, возможно и получилось все так разнести по ролям, в чем я сомневаюсь!
Основная опасность данного подхода, это мнимая безопасность и обычный бухгалтер, с набором обычных стандартных бух. отчетов, со всеми ограничениями, легко получит необходимую ему информацию. Т.е. тем самым не решается главная цель - скрыть данные от посторонних глаз!
35. WKBAPKA 215 12.06.12 10:24 Сейчас в теме

т.к. для регистра бухгалтерии RLS будет работать только для измерений, достаточно добавить одно измерение, например, ПроводкаПоЗП с типом булево, внести небольшое изменение в набор движений регистра и написать на RLS простое ограничение...


причем работать будет железно, для любых корреспонденций, во всех отчетах...

ПЫ СЫ: я слабо представляю, что оно там будет хранить на уровне итогов, если булево, но итоги накапливаться не будут, т.к. по любому корреспонденция будет закрываться
36. WKBAPKA 215 12.06.12 10:35 Сейчас в теме
			Счет661 = ПланыСчетов.Хозрасчетный.РасчетыПоОплатеТруда;
			Если (Проводка.СчетДт.Родитель = Счет661) ИЛИ (Проводка.СчетКт.Родитель = Счет661) Тогда
				Проводка.ПроводкаПоЗП = Истина;
			Иначе
				Проводка.ПроводкаПоЗП = Ложь;
			КонецЕсли;			

Показать
42. WKBAPKA 215 13.06.12 10:04 Сейчас в теме

Публикация написана как статья, а не как обработка и уж тем более не как рекомендация, воспринимайте ее просто как тему для размышления или как то, чего делать не надо :)

в том то и дело, что написано вот как:\

Если некоторым пользователям нужен доступ только к определенным счетам, а видимость данных по другим счетам при этом крайне нежелательна, на помощь приходит RLS

Самый простой пример - в базе хранятся данные по зарплате (с разбивкой по сотрудникам, т.е. не сводно), и главный бухгалтер или руководитель хочет чтобы 70-й счет мог видеть только расчетчик. Еще пример - менеджер смотрит остатки на складах по "оборотке" только по 10-му счету или по 41.01, остальные счета для него можно скрыть. Да мало ли у кого какие запросы :)


так что, писали статью с примерами, как надо делать ;)
43. sound 536 13.06.12 10:12 Сейчас в теме
(42) WKBAPKA, мне тупо переписывать лень :)
44. WKBAPKA 215 13.06.12 13:10 Сейчас в теме
45. imagoman 83 13.06.13 07:31 Сейчас в теме
простое, элегантное решение. автор спасибо. плюс)
46. b-dm 171 07.12.15 16:15 Сейчас в теме
ВЕЩЬ! Воспользуюсь при необходимости...прятать "зарплатные" счета - главная русская забава директоров!
47. dmitry1c1991 19.07.16 13:55 Сейчас в теме
А не проще на чтение в ролях по прочим полям плана счетов просто прописать Хозрасчетный ГДЕ (Хозрасчетный.Код <> "ИсключаемыйКодСчета") ?
У меня так работает без проблем уже 5 лет .

50. roofless 23 01.11.17 11:21 Сейчас в теме
(47) какая конфа? в БП 3.0 не взлетело так, в журнале проводок "объект не найден" а в осв и карточке счета всё показывается
51. roofless 23 02.11.17 07:57 Сейчас в теме
(50) вроде нашел решение для этих типовых отчетов https://infostart.ru/public/556330/
52. script 128 01.03.18 17:27 Сейчас в теме
Если РегистрСведений.НедоступныеСчета для измерения Пользователь оставить один тип значения пользователь и
в запросе сделать сравнение с счетом через вид сравнения "=" (равно) и такое же вид сравнения для пользователя, то запрос можно упростить до:

Хозрасчетный ИЗ ПланСчетов.Хозрасчетный КАК Хозрасчетный
	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НедоступныеСчета КАК ЗапрещенныеБухСчета
	ПО Хозрасчетный.Ссылка = ЗапрещенныеБухСчета.Счет
		И (ЗапрещенныеБухСчета.Пользователь = &ТекущийПользователь)
ГДЕ ЗапрещенныеБухСчета.Пользователь ЕСТЬ NULL 


То все начинает нормально работать.
maxchaos; +1 Ответить
53. user640247 03.06.19 16:17 Сейчас в теме
создала новые права и в правах "Пользователь"
наложила ограничения доступа к данным в самом плане счетов:
ОсновнойПланСчетов ГДЕ НЕ ОсновнойПланСчетов.Код ПОДОБНО "%70%"

В итоге в плане счетов не видно и в отчетах тоже.. вроде всё как надо...
Оставьте свое сообщение