СБИС Сапер - Алгоритм работы — различия между версиями
(→Алгоритм проверки прав на Сбытовую организацию) |
|||
(не показаны 44 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
− | = Алгоритм проверки прав на | + | = Алгоритм проверки прав на Сбытовую организацию = |
== Словарь данных == | == Словарь данных == | ||
− | # /SBIS/S_AUTHORITY - структура данных о правах. Содержит | + | # /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 - структура фильтра. Содержит | + | ## и т.д. |
+ | # /SBIS/S_FILTER_LIST_DOC - структура фильтра. Содержит данные: | ||
##GJAHR | ##GJAHR | ||
##BELNR | ##BELNR | ||
Строка 37: | Строка 38: | ||
− | == Проверка прав на | + | == Состав ини-файла== |
− | #При запуске конкретного реестра Сапера выполняется метод '''/SBIS/CL_TREE_ACCORDION->SET_CONTENT_FILTER'''. Читается сохраненный фильтр, проверяются права, запускается просмотр списка. | + | На уровне аккордеона для требуемого реестра опционально добавляем элемент CHECK_AUTHORITY, который содержит массив элементов - требуемых проверок. |
− | ##Сохраняем последний используемый реестр | + | |
− | + | Элемент Проверка содержит: | |
− | ##'''/SBIS/CL_CORE->GET_PARAM''' (iv_ini_name, iv_user_settings, et_settings). Получаем пользовательские настройки из БД. | + | # "Имя" - название проверки, например SALES_ORG; |
− | ##'''/SBIS/CL_TREE_ACCORDION->READ_CONTENT_FILTER''' (iv_parent_name, it_user_settings | + | # "Значение" - массив настроечных параметров: |
− | ##'''/SBIS/ | + | ## "ПолучениеДанныхМетод" - содержит название метода для получения данных об имеющихся полномочиях; |
− | ##'''/SBIS/CL_TREE_ACCORDION->VIEW_CONTENT''' | + | ### "Имя" - "ПолучениеДанныхМетод"; |
+ | ### "Значение" - например, "GET_AUTH_VKORG"; | ||
+ | ## "ПроверкаМетод" - содержит название метода проверки полномочий; | ||
+ | ### "Имя" - "ПроверкаМетод"; | ||
+ | ### "Значение" - например, "CHECK_AUTH_VKORG"; | ||
+ | ## "ПараметрыПроверки" - содержит параметры для проверки полномочий; | ||
+ | ### "Имя" - "ПараметрыПроверки"; | ||
+ | ### "Значение" - массив элементов с параметрами проверки; | ||
+ | #### ACTVT = 03 | ||
+ | #### SPART = 01 | ||
+ | #### VTWEG = Z1 | ||
+ | |||
+ | Пример файла настройки: | ||
+ | <source lang=JSON> | ||
+ | { | ||
+ | "Имя": "CHECK_AUTHORITY", | ||
+ | "Значение": [ | ||
+ | { | ||
+ | "Имя": "SALES_ORG", | ||
+ | "Значение": [ | ||
+ | { | ||
+ | "Имя": "ПолучениеДанныхМетод", | ||
+ | "Значение": "GET_AUTH_VKORG" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "ПроверкаМетод", | ||
+ | "Значение": "CHECK_AUTH_VKORG" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "ПараметрыПроверки", | ||
+ | "Значение": [ | ||
+ | { | ||
+ | "Имя": "ACTVT", | ||
+ | "Значение": "03", | ||
+ | "Формат": "Операция" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "SPART", | ||
+ | "Значение": "01", | ||
+ | "Формат": "Сектор" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "VTWEG", | ||
+ | "Значение": "Z1", | ||
+ | "Формат": "КаналСбыта" | ||
+ | } | ||
+ | ], | ||
+ | "Комментарий": "проверяем объект V_VBAK_VKO" | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | == Проверка прав на Сбытовую организацию при запуске Сапера == | ||
+ | # При запуске конкретного реестра Сапера выполняется метод '''/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/CL_TREE->HANDLE_TOOLBAR_FILTER'''. Запускается метод-обработчик при нажатии кнопки Фильтр. | ||
− | ##Получаем из настроек реестра название ФМ для окна фильтра | + | ##Получаем из настроек реестра название ФМ для окна фильтра и настройки фильтра. |
− | ##Запуск ФМ | + | ##Запуск ФМ фильтра, например '''/SBIS/FM_FILTER_SCREEN_302''' (it_settings, cs_filter, cs_authority, ev_fcode). Запуск экрана, например '''0302'''. |
###'''PBO_0302'''. Вывод данных старого фильтра на экран. | ###'''PBO_0302'''. Вывод данных старого фильтра на экран. | ||
###Ввод пользователем новых данных фильтра. | ###Ввод пользователем новых данных фильтра. | ||
− | ###'''PAI_0302'''. Проверка при нажатии ОК или Enter, введенных значений, в т.ч. прав на | + | ###'''PAI_0302'''. Проверка при нажатии ОК или Enter, введенных значений, в т.ч. прав на СбОрг в соответствии со списком разрешенных. Вывод ошибок при их возникновении. |
####'''PAI_0302_CHECK'''. | ####'''PAI_0302_CHECK'''. | ||
− | #####'''/SBIS/ | + | #####'''/SBIS/CL_AUTHORITY->CHECK_AUTHORITY''' (it_settings, is_filter, cs_authority). Проверка прав на получение данных, запрашиваемых в фильтре. |
##При нажатии ОК и отсутствии ошибок: | ##При нажатии ОК и отсутствии ошибок: | ||
###'''/SBIS/CL_TREE_ACCORDION->HANDLE_SET_CONTENT_FILTER'''. Генерируем событие для сохранения фильтра в настройках пользователя. | ###'''/SBIS/CL_TREE_ACCORDION->HANDLE_SET_CONTENT_FILTER'''. Генерируем событие для сохранения фильтра в настройках пользователя. | ||
Строка 60: | Строка 131: | ||
+ | == Алгоритм метода 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) и получаем данные полномочий. | ||
+ | ### Проверяем что значения фильтра присутствуют в списке разрешенных. Если ошибка - выводим окно сообщения. Если все хорошо - выходим из метода. | ||
− | # | + | ==Отправка== |
− | # | + | #На входе список отмеченных пакетов API2_PACKET |
+ | #CORE->SEND_LIST_PACKET(инишка раздела акордиона, T_API2_PACKET) | ||
+ | #[EXCHANGE_CLASS]->SEND_LIST_PACKET(инишка раздела акордиона, T_API2_PACKET) | ||
+ | ===Отправка SDK=== | ||
+ | #/sbis/cl_async_processing->run(инишка раздела акордиона, T_API2_PACKET, /SBIS/GET_PACKET) - асинхронно получаем данные пакетов | ||
+ | #EXCHANGE_SDK->sdk_write_documents_ex - отправляем по 100 | ||
+ | ===Отправка ExtSDK=== | ||
+ | #/sbis/cl_async_processing->RUN(инишка раздела акордиона, T_API2_PACKET, /SBIS/GET_PACKET) - асинхронно получаем данные пакетов | ||
+ | ## | ||
+ | #EXCHANGE_SDK->sdk_write_documents_ex - отправляем по 100 | ||
− | |||
[[Категория:SAPPER]] | [[Категория:SAPPER]] | ||
[[Категория:SAP]] | [[Категория:SAP]] |
Текущая версия на 12:31, 31 января 2018
Содержание
- 1 Алгоритм проверки прав на Сбытовую организацию
Алгоритм проверки прав на Сбытовую организацию
Словарь данных
- /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 параметры
Отправка
- На входе список отмеченных пакетов API2_PACKET
- CORE->SEND_LIST_PACKET(инишка раздела акордиона, T_API2_PACKET)
- [EXCHANGE_CLASS]->SEND_LIST_PACKET(инишка раздела акордиона, T_API2_PACKET)
Отправка SDK
- /sbis/cl_async_processing->run(инишка раздела акордиона, T_API2_PACKET, /SBIS/GET_PACKET) - асинхронно получаем данные пакетов
- EXCHANGE_SDK->sdk_write_documents_ex - отправляем по 100
Отправка ExtSDK
- /sbis/cl_async_processing->RUN(инишка раздела акордиона, T_API2_PACKET, /SBIS/GET_PACKET) - асинхронно получаем данные пакетов
- EXCHANGE_SDK->sdk_write_documents_ex - отправляем по 100