СБИС Сапер - Алгоритм работы — различия между версиями
(→Состав ини-файла) |
(→Состав ини-файла) |
||
Строка 60: | Строка 60: | ||
<source lang=JSON> | <source lang=JSON> | ||
{ | { | ||
− | "Имя": " | + | "Имя": "CHECK_AUTHORITY", |
"Значение": [ | "Значение": [ | ||
{ | { |
Версия 11:21, 13 декабря 2017
Алгоритм проверки прав на Сбытовую организацию
Словарь данных
- /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
- "ПолучениеДанныхМетод" - содержит название метода для получения данных об имеющихся полномочиях;
Пример файла настройки:
{
"Имя": "CHECK_AUTHORITY",
"Значение": [
{
"Имя": "SALES_ORG",
"Значение": [
{
"Имя": "ПолучениеДанныхМетод",
"Значение": "GET_AUTH_VKORG"
},
{
"Имя": "ПроверкаМетод",
"Значение": "CHECK_AUTH_VKORG"
},
{
"Имя": "ПараметрыПроверки",
"Значение": [
{
"Имя": "ACTVT",
"Значение": "03",
"Формат": "Операция"
},
{
"Имя": "SPART",
"Значение": "01",
"Формат": "Сектор"
},
{
"Имя": "VTWEG",
"Значение": "Z1",
"Формат": "КаналСбыта"
}
],
"Формат": "V_VBAK_VKO - комментарий"
}
]
}
]
}
Проверка прав на Сбытовую организацию при запуске Сапера
- При запуске конкретного реестра Сапера выполняется метод /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, es_filter). Чтение фильтра из сохраненных настроек.
- /SBIS/CL_AUTHORITY->CHECK_AUTHORITY (it_settings, is_filter, cs_authority). Проверка прав на получение данных, запрашиваемых в фильтре.
- Если права корректные - устанавливаем индикатор вывода списка.
- Если права некорректные
- Получаем из настроек реестра название ФМ для окна фильтра и настройки фильтра.
- Вызываем ФМ фильтра, например /SBIS/FM_FILTER_SCREEN_302 (it_settings, сs_filter, cs_authority, ev_fcode).
- Заполняем фильтр, при нажатии ОК или Enter происходит проверка прав, метод /SBIS/CL_AUTHORITY->CHECK_AUTHORITY(it_settings, is_filter, cs_authority).
- Если отменили фильтр, то индикатор вывода списка очищаем.
- Проверка индикатора вывода списка.
- Если установлен, запуск метода /SBIS/CL_TREE_ACCORDION->VIEW_CONTENT - вывод списка на экран в соответствии с заданным фильтром.
- Если не установлен, выходим из метода.
Проверка прав на Сбытовую организацию при запуске фильтра
- /SBIS/CL_TREE->HANDLE_TOOLBAR_FILTER. Запускается метод-обработчик при нажатии кнопки Фильтр.
- Получаем из настроек реестра название ФМ для окна фильтра и настройки фильтра.
- Запуск ФМ фильтра, например /SBIS/FM_FILTER_SCREEN_302 (it_settings, cs_filter, cs_authority, ev_fcode). Запуск экрана, например 0302.
- PBO_0302. Вывод данных старого фильтра на экран.
- Ввод пользователем новых данных фильтра.
- PAI_0302. Проверка при нажатии ОК или Enter, введенных значений, в т.ч. прав на СбОрг в соответствии со списком разрешенных. Вывод ошибок при их возникновении.
- PAI_0302_CHECK.
- /SBIS/CL_AUTHORITY->CHECK_AUTHORITY (it_settings, is_filter, cs_authority). Проверка прав на получение данных, запрашиваемых в фильтре.
- 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.
На входе - название метода проверки IV_METHOD_NAME, которую выполняем, например CHECK_AUTH_VKORG; список параметров проверки полномочий IT_CHECK_PARAM.
На изменение - разрешенные объекты в виде структуры CS_AUTHORITY.
Алгоритм:
- Запуск метода из IV_METHOD_NAME, например GET_AUTH_VKORG(it_check_param, cs_authority).
- Получаем полный список сбытовых организаций в системе во внутр. таблицу. Цикл по внутр. таблице.
- Для каждой сбытовой организации выполняем проверку полномочий, например V_VBAK_VKO, с заданными параметрами IT_CHECK_PARAM, например ACTVT=03, SPART=01, VKORG=ZUCH, VTWEG=Z1.
- Если проверка прошла, то добавляем запись в таблицу разрешенных объектов структуры /SBIS/S_AUTHORITY, например в VKORG_RE.
- Если проверка не прошла - не добавляем.
- Устанавливаем индикатор что данные получены, например в поле VKORG_RE_X структуры /SBIS/S_AUTHORITY.
Алгоритм метода CHECK_AUTHORITY класса /SBIS/CL_AUTHORITY
Осуществляет проверку полномочий на объекты из фильтра. Например на БЕ, Сбытовую организацию.
На входе - настройки аккордеона в таблице IT_SETTINGS; данные фильтра в виде структуры IS_FILTER;
На выходе - исключительная ситуация с текстом ошибки, либо ее отсутствие;
На изменение - список разрешенных объектов в виде структуры CS_AUTHORITY;
Алгоритм
- По настройкам из IT_SETTINGS получаем список проверок полномочий.
- Идем по списку проверок.
- Получаем из настроек IT_SETTINGS параметры
- название метода получения данных полномочий, например GET_AUTH_VKORG;
- название метода проверки, например CHECK_AUTH_VKORG;
- список параметров проверки полномочий, например (ACTVT=03, SPART=01, VTWEG=Z1);
- Выполняем метод проверки, например /SBIS/CL_AUTHORITY=>CHECK_AUTH_VKORG(is_filter, iv_method_name, it_check_param, cs_authority).
- Проверяем индикатор, означающий что данные полномочий CS_AUTHORITY уже получены, например VKORG_RE_X. В случае если данные СS_AUTHORITY еще не получены, запускаем метод /SBIS/CL_AUTHORITY=>GET_AUTHORITY(iv_method_name, it_check_param, cs_authority) и получаем данные полномочий.
- Проверяем что значения фильтра присутствуют в списке разрешенных. Если ошибка - выводим окно сообщения. Если все хорошо - выходим из метода.
- Получаем из настроек IT_SETTINGS параметры