СБИС Сапер - Алгоритм работы
Содержание
Алгоритм проверки прав на балансовую единицу
Словарь данных
- /SBIS/S_AUTHORITY - структура данных о правах. Содержит таблицы:
- BUKRS_RE_01 - range по БЕ, для которых есть права на объект полномочий 'F_BKPF_BUK' ACTVT 01 (бухгалтерский документ: полномочия на балансовые единицы, создать).
- BUKRS_RE_03 - range по БЕ, для которых есть права на объект полномочий 'F_BKPF_BUK' ACTVT 03 (бухгалтерский документ: полномочия на балансовые единицы, просмотреть).
- VKORG_RE_01
- и другие
- /SBIS/S_FILTER_LIST_DOC - структура фильтра. Содержит поля и таблицы:
- GJAHR
- BELNR
- DATE_FROM
- DATE_TO
- TIME_FROM
- TIME_TO
- PAGE
- PAGE_SIZE
- RET_LIST_SIZE
- PARTNER_ID
- PARTNER_INN
- PARTNER_KPP
- ORG_ID
- ORG_INN
- ORG_KPP
- STATUS_NAME
- IS_RANGE - индикатор range/параметр
- BLDAT_RE
- KUNNR_RE
- BUKRS_RE
- STATU_RE
- BELNR_RE
- OPBEL_RE
- PARTN_RE
- VKORG_RE
- VTWEG_RE
- FKART_RE
Проверка прав на БЕ при запуске Сапера
- При запуске конкретного реестра Сапера выполняется метод /SBIS/CL_TREE_ACCORDION->SET_CONTENT_FILTER. Читается сохраненный фильтр, проверяются права, запускается просмотр списка.
- Сохраняем последний используемый реестр.
- /SBIS/CL_CORE->GET_AUTHORITY (es_authority). Получаем список БЕ на которые есть права.
- /SBIS/CL_CORE->GET_PARAM (iv_ini_name, iv_user_settings, et_settings). Получаем пользовательские настройки из БД.
- /SBIS/CL_TREE_ACCORDION->READ_CONTENT_FILTER (iv_parent_name, it_user_settings, is_authority, es_filter). Чтение фильтра из сохраненных настроек. Изменение фильтра, если он не заполнен, или изменились права.
- /SBIS/CL_CORE->CHECK_AUTHORITY (is_authority, is_filter). Проверка прав на получение данных, запрашиваемых в фильтре.
- /SBIS/CL_TREE_ACCORDION->VIEW_CONTENT. Вывод списка на экран в соответствии с заданным фильтром.
Проверка прав на БЕ при запуске фильтра
- /SBIS/CL_TREE->HANDLE_TOOLBAR_FILTER. Запускается метод-обработчик при нажатии кнопки Фильтр.
- Получаем из настроек реестра название ФМ для окна фильтра в переменную LV_FILTER_FM_NAME и настройки фильтра.
- Запуск ФМ из переменной LV_FILTER_FM_NAME для вывода окна фильтра, например /SBIS/FM_FILTER_SCREEN_302 (is_authority, ev_fcode, cs_filter). Запуск экрана, например 0302.
- PBO_0302. Вывод данных старого фильтра на экран.
- Ввод пользователем новых данных фильтра.
- PAI_0302. Проверка при нажатии ОК или Enter, введенных значений, в т.ч. прав на БЕ в соответствии со списком разрешенных. Вывод ошибок при их возникновении.
- PAI_0302_CHECK.
- /SBIS/CL_CORE->CHECK_AUTHORITY (is_authority, is_filter). Проверка прав на получение данных, запрашиваемых в фильтре.
- PAI_0302_CHECK.
- При нажатии ОК и отсутствии ошибок:
- /SBIS/CL_TREE_ACCORDION->HANDLE_SET_CONTENT_FILTER. Генерируем событие для сохранения фильтра в настройках пользователя.
- /SBIS/CL_TREE_ACCORDION->HANDLE_UPDATE_CONTENT. Генерируем событие для получения списка и обновления экрана в соответствии с новыми данными фильтра.
Алгоритм проверки прав на Сбытовую организацию
Словарь данных
- /SBIS/S_AUTHORITY - структура данных о правах. Содержит данные:
- BUKRS_RE - range по Балансовым единицам, для которых есть права на объект полномочий 'F_BKPF_BUK' (бухгалтерский документ: полномочия на балансовые единицы) с заданными значениями параметров;
- BUKRS_RE_X - индикатор, что данные в BUKRS_RE получены;
- VKORG_RE - range по Сбытовым организациям, для которых есть права на объект полномочий 'F_VBAK_VKO' (Торговый документ: полномочия на сбытовые организации) с заданными значениями параметров;
- VKORG_RE_X - индикатор, что данные в VKORG_RE получены;
- и т.д.
- /SBIS/S_FILTER_LIST_DOC - структура фильтра. Содержит данные:
- GJAHR
- BELNR
- DATE_FROM
- DATE_TO
- TIME_FROM
- TIME_TO
- PAGE
- PAGE_SIZE
- RET_LIST_SIZE
- PARTNER_ID
- PARTNER_INN
- PARTNER_KPP
- ORG_ID
- ORG_INN
- ORG_KPP
- STATUS_NAME
- IS_RANGE - индикатор range/параметр
- BLDAT_RE
- KUNNR_RE
- BUKRS_RE
- STATU_RE
- BELNR_RE
- OPBEL_RE
- PARTN_RE
- VKORG_RE
- VTWEG_RE
- FKART_RE
Состав ини-файла
На уровне аккордеона для требуемого реестра опционально добавляем элемент CHECK_AUTHORITY, который содержит массив элементов - требуемых проверок.
Элемент Проверка содержит:
- "Имя" - название проверки, например SALES_ORG;
- "Значение" - массив настроечных параметров:
- "ПолучениеДанныхМетод" - содержит название метода для получения данных об имеющихся полномочиях;
- "Имя" - "ПолучениеДанныхМетод";
- "Значение" - например, "GET_AUTH_VKORG";
- "ПроверкаМетод" - содержит название метода проверки полномочий;
- "Имя" - "ПроверкаМетод";
- "Значение" - например, "CHECK_AUTH_VKORG";
- "ПараметрыПроверки" - содержит параметры для проверки полномочий;
- "Имя" - "ПараметрыПроверки";
- "Значение" - массив элементов с параметрами проверки;
- ACTVT = 03
- SPART = 01
- VTWEG = Z1
- "ПолучениеДанныхМетод" - содержит название метода для получения данных об имеющихся полномочиях;
Проверка прав на Сбытовую организацию при запуске Сапера
- При запуске конкретного реестра Сапера выполняется метод /SBIS/CL_TREE_ACCORDION->SET_CONTENT_FILTER. Читается сохраненный фильтр, проверяются права, запускается просмотр списка.
- Сохраняем последний используемый реестр.
- /SBIS/CL_CORE->GET_PARAM (iv_ini_name, iv_user_settings, et_settings). Получаем пользовательские настройки из БД.
- /SBIS/CL_TREE_ACCORDION->READ_CONTENT_FILTER (iv_parent_name, it_user_settings, is_authority, es_filter). Чтение фильтра из сохраненных настроек.
- /SBIS/CL_AUTHORITY->CHECK_AUTHORITY (is_authority, is_filter, iv_ini_name). Проверка прав на получение данных, запрашиваемых в фильтре.
- Если права некорректные - вызываем окно фильтра.
- Заполняем фильтр, при нажатии ОК или Enter происходит проверка прав CHECK_AUTHORITY класса CL_AUTHORITY.
- Если отменили фильтр, то выводим пустой список документов.
- Если права некорректные - вызываем окно фильтра.
- /SBIS/CL_TREE_ACCORDION->VIEW_CONTENT. Вывод списка на экран в соответствии с заданным фильтром.
Проверка прав на Сбытовую организацию при запуске фильтра
- /SBIS/CL_TREE->HANDLE_TOOLBAR_FILTER. Запускается метод-обработчик при нажатии кнопки Фильтр.
- Получаем из настроек реестра название ФМ для окна фильтра в переменную LV_FILTER_FM_NAME и настройки фильтра.
- Запуск ФМ из переменной LV_FILTER_FM_NAME для вывода окна фильтра, например /SBIS/FM_FILTER_SCREEN_302 (is_authority, ev_fcode, cs_filter). Запуск экрана, например 0302.
- PBO_0302. Вывод данных старого фильтра на экран.
- Ввод пользователем новых данных фильтра.
- PAI_0302. Проверка при нажатии ОК или Enter, введенных значений, в т.ч. прав на СбОрг в соответствии со списком разрешенных. Вывод ошибок при их возникновении.
- PAI_0302_CHECK.
- /SBIS/CL_AUTHORITY->CHECK_AUTHORITY (is_authority, is_filter, iv_ini_name). Проверка прав на получение данных, запрашиваемых в фильтре.
- PAI_0302_CHECK.
- При нажатии ОК и отсутствии ошибок:
- /SBIS/CL_TREE_ACCORDION->HANDLE_SET_CONTENT_FILTER. Генерируем событие для сохранения фильтра в настройках пользователя.
- /SBIS/CL_TREE_ACCORDION->HANDLE_UPDATE_CONTENT. Генерируем событие для получения списка и обновления экрана в соответствии с новыми данными фильтра.
Алгоритм метода GET_AUTHORITY класса /SBIS/CL_AUTHORITY
Осуществляет получение списка объектов, на которые есть права у пользователя, в структуру /SBIS/S_AUTHORITY.
На входе - название проверки, которую выполняем, например VKORG.
На выходе - заполненный range с разрешенными объектами, например VKORG_RE, и заполненный индикатор, например VKORG_RE_X.
Алгоритм:
- Осуществляем чтение настроек по имени проверки. Получаем внутр. таблицу с параметрами для запуска проверки полномочий.
- Цикл по внутр. таблице параметров, заполнение временных переменных для выполнения проверки.
- Получаем полный список сбытовых организаций в системе во внутр. таблицу. Цикл по внутр. таблице.
- Для каждой сбытовой организации выполняем проверку полномочий с заданными в настройках параметрами, например V_VBAK_VKO с параметрами ACTVT=03, SPART=01, VKORG=ZUCH, VTWEG=Z1.
- Если проверка прошла, то добавляем запись в таблицу разрешенных объектов структуры /SBIS/S_AUTHORITY, например в VKORG_RE.
- Если проверка не прошла - не добавляем.
- Устанавливаем индикатор что данные получены, например в поле VKORG_RE_X структуры /SBIS/S_AUTHORITY.
Алгоритм метода CHECK_AUTHORITY класса /SBIS/CL_AUTHORITY
Осуществляет проверку прав на объекты из фильтра. Например на БЕ, Сбытовую организацию.
На входе - данные фильтра в виде структуры /SBIS/S_FILTER_LIST_DOC; список разрешенных объектов в виде структуры /SBIS/S_AUTHORITY; название узла настроек реестра iv_ini_name.
На выходе - исключительная ситуация с текстом ошибки, либо ее отсутствие.
Алгоритм
- Для заданного реестра читаем настройки по iv_ini_name и получаем внутр. таблицу LT_SETTINGS со списком активных проверок, которые необходимо выполнить, а также параметров проверки.
- Идем по списку проверок. Если активна конкретная проверка - выполняем метод проверки из класса /SBIS/CL_AUTHORITY, например CHECK_AUTH_VKORG. Имя запускаемого метода формируется динамически и ему передается список параметров.
- В случае если данные S_AUTHORITY еще не получены, запускаем метод GET_AUTHORITY и получаем данные.
- Выполняем проверку для конкретного объекта полномочий, например V_VBAK_VKO. Параметры проверки берем из внутр. таблицы настроек LT_SETTINGS.