Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: RLS(поиски образца среди типовых под свои задачи для больших таблиц)  (Прочитано 4686 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« : 29-01-2016 11:52 » 

Возвращаясь к мысли об RLS и их оптимизации(это у меня периодически) снова задумалась как всё разрушить и построить новый мир в своей очередной подопечной базе.
Итак, немного об организации. Наша организация является комиссионером. Соответственно мы получаем заказ от комитента(а иногда мы уже третье лицо и к нам обращается агентство, в которое пришёл комитент), ищем подрядчиков, те выполняют заказ.
База 1С - оперативный учет состояния заказов и цепочек их движения между подрядчиком, а также формирование документов первички и закрытия по заказам.

Особенность иерархии созданной предыдущими программистами этой компании подразумевает то что у нас есть вот такие вот таблицы:
1) Справочник "Заказ", в справочнике хранится айдишник заказа.
1.2) справочник тип заказа
2) Справочник "Организация". Это наша организация.
3) Справочник "Подразделения". Это наши подразделения.
4) Справочник "Контрагентов". Контрагент может быть Агентством, Комитентом или Подрядчиком(исполнитель заказа).
5) Регистр сведений "Данные заказа". Содержит одно измерение, собственно ссылку на справочник "Заказ". В регистре сведений хранится куча строковых, числовых и ссылочных реквизитов(что-то порядка 30). В том числе есть реквизиты Организация, Комитент, Подрядчик,Кампания
4) Документы "Кампания". Именно через букву А, потому что это собственно рекламные кампании, которые включают в себя выполнение некоторого конечного набора
заказов. Документ имеет в качестве реквизитов кучу полей, в том числе Организация, Подразделение, Комитент, Агентство. В форме этого документа пользователи создают заказы большой красной кнопкой.
5) Регистр сведений "Подзаказы".  У нас заказ может выполняться через каких то подрядчиков, иметь маржу, выполняться поэтапно и ещё всяко разно. В качестве измерения имеет ссылку на заказ, свой айдишник и подрядчика, в качестве ресурса - Организацию(не бейте! не я это сделала!!).
6) Задача от руководителя, объект метаданных задача. Иногда руководитель отсылает кому то задачу о работе с какой нибудь Кампанией независимо от того работает менеджер с этими заказчиками или нет, но менеджер должен эту кампанию срочно обработать.

Теперь о желабельной организации прав:

разделить пользователей на тех кто ограничен
1) только своей организацией(организация может включать в себя несколько подразделений)
2) только своим подразделением(подразделение может работать с несколькими нашими организациями)
3) только Брендами и видит всех комитентов в рамках этого бренда
4) только Агентствами
5) только отдельными Комитентами,  у них даже бренда может не быть
6) Пересечением каких то из выше стоящих ограничений
7) Доступ к кампании на сновании задачи.
8) только по определённому типу заказа

Какой вариант организации РЛС я сейчас рассматриваю:
1) Создать перечисление "Тип ограничения". Значения: Организация, подразделение, агентство, комитент, подрядчик, тип заказа
2) создать регистр сведений. Измерения пользователь и тип ограничения
3) создать регистр сведений содержащий все разрешения пользователям. Измерения: Пользователь, тип ограничения, разрешённый объект справочника. Ресурс: запись или чтение
4) создать несколько ролей(на кампании, заказы, подзаказы, справочники - итого 4 штуки + одна роль на доступ по задаче!)
5) на справочники Организация, Контрагент, Подразделение навесить РЛС по группе пользователей и разрешённым объектам
6) Вот тут надо придумать как навесить рлс на роль документов Кампания, справочник Заказы и соответствующие регистры сведений, чтобы они выводились только если пользователю доступны все реквизиты, чтобы не пострадала производительность, не увязнуть в блокировках и т.д. Есть варианты случаев когда пользователь видит Кампанию в целом но не может видеть часть заказов или некоторые подзаказы - это у нас норма Улыбаюсь
Есть случаи когда пользователь ничего не видит, но если у него задача появляется то в рамках этой конкретной кампании, которая указана в задаче, он видит и организацию и подрядчиков и заказы и вообще всё.. вплоть до первички. Вероятно на эту роль надо сделать свои рлс на все справочники, регистры и документы?

Меня на данный момент смущает что при обращении через точку к реквизитам таблицы база очень страдает по скорости реакции, элементарно открыть список документов - удавиться можно на ожидании. Когда то года 4 назад на конфигурации документооборота я видела подобную реализацию и в целом там всё работало ок. Но там были управляемые формы, небольшая файловая база. У нас надо исходить из того что придётся экспериментировать с индексированием и таблицы регистров сведений и справочников могут быть гораздо более 800 тысяч строк. Если есть примеры реализации подобного на современных конфигурациях 1С, сориенируйте где глянуть?

UPD важный момент! организация структуры метаданных должна быть такой, чтобы можно было реализовать максимально простой интерфейс для пользователей по типу "взял пользователя и накидал ему комитентов/подразделений/чего то ещё с которыми он будет работать" так как основной задачей является передать процесс выдачи прав доступа ответственным руководителям.

небольшой оффтоп:
Kivals, ты уже 13 лет отвечаешь тут временами на совершенно обескураживающе тупые вопросы - откуда терпение берётся? на пользователях тренируешься? или ты уже отошёл от прямых контактов с смертными и общением с заказчиками не занимаешься?
« Последнее редактирование: 29-01-2016 11:54 от Radistka » Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 28-05-2016 08:21 » 

Приветствую! Как видишь - последнее время я тут не часто появляюсь Ага

Если вопрос еще актуален - рекомендую посмотреть как все сделано в БСП (Библиотеке стандартных подсистем) версии не ниже 2.3. Не обращай внимания, что она на управляемых формах - РЛС это нижний уровень, и от интерфейса не зависит. До конца еще сам не разобрался, но там по каждому объекту с включенным РЛС записываются данные в регистр очень похоже на твою структуру, кроме первого пункта: там это сделано через определяемый тип, т.е. если тебе нужно добавить новое измерение ограничения - в принципе достаточно добавить его в этот тип и добавлять записи по нему в нужном объекте.
Ну и общие ограничения - завязываются на группы пользователей, а не на пользователей (это вроде стандарт для РЛС в типовых)
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #2 : 30-05-2016 14:31 » 

Приветствую! Как видишь - последнее время я тут не часто появляюсь Ага

Если вопрос еще актуален - рекомендую посмотреть как все сделано в БСП (Библиотеке стандартных подсистем) версии не ниже 2.3. Не обращай внимания, что она на управляемых формах - РЛС это нижний уровень, и от интерфейса не зависит. До конца еще сам не разобрался, но там по каждому объекту с включенным РЛС записываются данные в регистр очень похоже на твою структуру, кроме первого пункта: там это сделано через определяемый тип, т.е. если тебе нужно добавить новое измерение ограничения - в принципе достаточно добавить его в этот тип и добавлять записи по нему в нужном объекте.
Ну и общие ограничения - завязываются на группы пользователей, а не на пользователей (это вроде стандарт для РЛС в типовых)

Да уж, сложно было не заметить частоту твоих появлений)
БСП смотрю, да, но основная цель как раз отказаться от групп пользователей. Да и в целом БСП замутная штука, юзерам не отдашь, чтобы сами себе права раскидывали в пределах подчинения. Но курю её по выхам, есть такое.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines