СБИС Сапер - Алгоритм работы — различия между версиями
(не показано 5 промежуточных версий этого же участника) | |||
Строка 57: | Строка 57: | ||
#### VTWEG = Z1 | #### 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> | ||
== Проверка прав на Сбытовую организацию при запуске Сапера == | == Проверка прав на Сбытовую организацию при запуске Сапера == | ||
Строка 124: | Строка 166: | ||
### Проверяем что значения фильтра присутствуют в списке разрешенных. Если ошибка - выводим окно сообщения. Если все хорошо - выходим из метода. | ### Проверяем что значения фильтра присутствуют в списке разрешенных. Если ошибка - выводим окно сообщения. Если все хорошо - выходим из метода. | ||
− | + | ==Отправка== | |
+ | #На входе список отмеченных пакетов 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