5 Replies Latest reply: Jun 16, 2017 3:00 AM by Vasiliy Beshentsev RSS

    Организовать SECTION APPLICATION с условием или

    Ivan Ivanov

      В правах доступа для пользователя прописано
      acc.PERIOD, acc.BRANCH и acc.CODE

      В данных поля
      dat.PERIOD, dat.SRC_BRANCH, dat.DEST_BRANCH, dat.SRC_CODE, dat.DEST_CODE

      Как организовать SECTION APPLICATION доступ, чтобы был доступ ко всем записям
      acc.PERIOD=dat.PERIOD and
      (acc.BRANCH = dat.SRC_BRANCH or acc.BRANCH = dat.DEST_BRANCH)
      and
      (acc.CODE = dat.SRC_CODE or acc.CODE = DEST_CODE)

        • Re: Организовать SECTION APPLICATION с условием или
          Stanislav Strogiy

          Не очень понятно описано. Если вопрос ещё актуален, то напишите как-то иначе. Фишка таблицы, формируемой в секции доступа SECTION ACCESS в том, что поля должны называться (заголовки полей) в верхнем регистре. В секции приложения должно быть поле, которое будет загружено в секции доступа.

          Тот есть, по этапам:

          1. Формируем секцию доступа с полями USER, ACCESS и KEYFIELD. Поле KEYFIELD формируем из загружаемых данных.

          2. Формируем массив данных в секции приложения, где так же будет поле KEYFIELD.

           

          При проектировании можете в начале без секции доступа сформировать таблицу SectionAccess и убедиться через фильтрацию по ней, что данные фильтруются как задумано. Потом эту таблицу выносим в скрипте загрузки в Section Access и всё будет работать.

            • Re: Организовать SECTION APPLICATION с условием или
              Ivan Ivanov

              Попробую перефразировать

              Есть в БД табличка с правами доступа

              USER PERIOD BRANCH CODE

              Иванов 2016.1  Подразделение3 ТовГруппа2

              Петров 2016.1  Подразделение2 ТовГруппа1

              Сидоров 2017.1  Подразделение3 ТовГруппа1

               

              Есть таблица фактов

              RMN PERIOD SRC_BRANCH SRC_CODE DEST_BRANCH DEST_CODE SUM

              1   2016.1   Подразделение3   ТовГруппа2   Подразделение1   ТовГруппа3   100

              2   2016.1   Подразделение2   ТовГруппа1   Подразделение3   ТовГруппа2   150

              3   2016.1   Подразделение2   ТовГруппа2   Подразделение1   ТовГруппа3    50

              4   2017.1   Подразделение1   ТовГруппа2   Подразделение2   ТовГруппа4   120

              5   2017.1   Подразделение2   ТовГруппа1   Подразделение3   ТовГруппа2    110

              6   2017.1   Подразделение2   ТовГруппа2   Подразделение3   ТовГруппа1    350

               

              Соответственно на факты для пользователя должна наложиться маска прав

              USER PERIOD BRANCH CODE

              Иванов увидит строки 1, 2

              Петров увидит строку 1

              Сидоров увидит строку 6

                • Re: Организовать SECTION APPLICATION с условием или
                  Vasiliy Beshentsev

                  Иван, привет.

                  Ты хочешь, чтобы у тебя пользователи получали доступ в зависимости от 2 полей.

                  Но section access, как я понимаю предоставляет доступ только по одному полю.

                  Если у тебя есть доступ к таблице фактов, и она у тебя загружается из sql-запроса, то я бы посоветовал воспользоваться оконными функциями, что позволит тебе для каждой комбинации Подразделение-ТовГруппа задать некое соответствие. Можно попробовать использовать rank() over (partition by Подразделение, ТовГруппа)  as КодДоступа (или как-то так, надо смотреть что на выходе получится). И потом по этому полю уже выдавать доступы.