СБИС Сапер - Алгоритм работы — различия между версиями

Материал из razgovorov.ru
Перейти к: навигация, поиск
(Состав ини-файла)
 
(не показано 25 промежуточных версий этого же участника)
Строка 1: Строка 1:
= Алгоритм проверки прав на балансовую единицу =
 
 
== Словарь данных ==
 
# /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). Проверка прав на получение данных, запрашиваемых в фильтре.
 
##При нажатии ОК и отсутствии ошибок:
 
###'''/SBIS/CL_TREE_ACCORDION->HANDLE_SET_CONTENT_FILTER'''. Генерируем событие для сохранения фильтра в настройках пользователя.
 
###'''/SBIS/CL_TREE_ACCORDION->HANDLE_UPDATE_CONTENT'''. Генерируем событие для получения списка и обновления экрана в соответствии с новыми данными фильтра.
 
 
 
 
 
= Алгоритм проверки прав на Сбытовую организацию =
 
= Алгоритм проверки прав на Сбытовую организацию =
  
Строка 104: Строка 42:
  
 
Элемент Проверка содержит:
 
Элемент Проверка содержит:
# Название проверки, например SALES_ORG;
+
# "Имя" - название проверки, например SALES_ORG;
# Тип, содержит название проверки, например VKORG;  
+
# "Значение" - массив настроечных параметров:
# Массив параметров для запуска проверки полномочий SAP. Каждый параметр имеет структуру:
+
## "ПолучениеДанныхМетод" - содержит название метода для получения данных об имеющихся полномочиях;
## Название параметра, например ACTVT;
+
### "Имя" - "ПолучениеДанныхМетод";
## Значение параметра, например 03;
+
### "Значение" - например, "GET_AUTH_VKORG";
## Комментарий, например "Операция";
+
## "ПроверкаМетод" - содержит название метода проверки полномочий;
# Комментарий, например "Сбытовая организация";
+
### "Имя" - "ПроверкаМетод";
 +
### "Значение" - например, "CHECK_AUTH_VKORG";
 +
## "ПараметрыПроверки" - содержит параметры для проверки полномочий;
 +
### "Имя" - "ПараметрыПроверки";
 +
### "Значение" - массив элементов с параметрами проверки;
 +
#### ACTVT = 03
 +
#### SPART = 01
 +
#### VTWEG = Z1
  
== Проверка прав на СбОрг при запуске Сапера ==
+
Пример файла настройки:
#При запуске конкретного реестра Сапера выполняется метод '''/SBIS/CL_TREE_ACCORDION->SET_CONTENT_FILTER'''. Читается сохраненный фильтр, проверяются права, запускается просмотр списка.
+
<source lang=JSON>
##Сохраняем последний используемый реестр.
+
  {
##'''/SBIS/CL_CORE->GET_PARAM''' (iv_ini_name, iv_user_settings, et_settings). Получаем пользовательские настройки из БД.
+
    "Имя": "CHECK_AUTHORITY",
##'''/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). Проверка прав на получение данных, запрашиваемых в фильтре.
+
      {
### Если права некорректные - вызываем окно фильтра.
+
        "Имя": "SALES_ORG",
####Заполняем фильтр, при нажатии ОК или Enter происходит проверка прав CHECK_AUTHORITY класса CL_AUTHORITY.
+
        "Значение": [
####Если отменили фильтр, то выводим пустой список документов.
+
          {
##'''/SBIS/CL_TREE_ACCORDION->VIEW_CONTENT'''. Вывод списка на экран в соответствии с заданным фильтром.
+
            "Имя": "ПолучениеДанныхМетод",
 +
            "Значение": "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'''. Запускается метод-обработчик при нажатии кнопки Фильтр.
##Получаем из настроек реестра название ФМ для окна фильтра в переменную '''LV_FILTER_FM_NAME''' и настройки фильтра.
+
##Получаем из настроек реестра название ФМ для окна фильтра и настройки фильтра.
##Запуск ФМ из переменной '''LV_FILTER_FM_NAME''' для вывода окна фильтра, например '''/SBIS/FM_FILTER_SCREEN_302''' (is_authority, ev_fcode, cs_filter). Запуск экрана, например '''0302'''.
+
##Запуск ФМ фильтра, например '''/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/CL_AUTHORITY->CHECK_AUTHORITY''' (is_authority, is_filter, iv_ini_name). Проверка прав на получение данных, запрашиваемых в фильтре.
+
#####'''/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'''. Генерируем событие для сохранения фильтра в настройках пользователя.
 
###'''/SBIS/CL_TREE_ACCORDION->HANDLE_UPDATE_CONTENT'''. Генерируем событие для получения списка и обновления экрана в соответствии с новыми данными фильтра.
 
###'''/SBIS/CL_TREE_ACCORDION->HANDLE_UPDATE_CONTENT'''. Генерируем событие для получения списка и обновления экрана в соответствии с новыми данными фильтра.
 +
  
 
== Алгоритм метода GET_AUTHORITY класса /SBIS/CL_AUTHORITY ==
 
== Алгоритм метода GET_AUTHORITY класса /SBIS/CL_AUTHORITY ==
Осуществляет получение списка объектов, на которые есть права у пользователя, в структуру /SBIS/S_AUTHORITY.
+
Осуществляет получение списка объектов, на которые есть полномочия у пользователя, в структуру /SBIS/S_AUTHORITY.
  
На входе - название проверки, которую выполняем, например VKORG.
+
На входе - название метода проверки IV_METHOD_NAME, которую выполняем, например '''CHECK_AUTH_VKORG'''; список параметров проверки полномочий IT_CHECK_PARAM.
  
На выходе - заполненный range с разрешенными объектами, например VKORG_RE, и заполненный индикатор, например VKORG_RE_X.
+
На изменение - разрешенные объекты в виде структуры 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.
#Для каждой сбытовой организации выполняем проверку полномочий с заданными в настройках параметрами, например V_VBAK_VKO с параметрами ACTVT=03, SPART=01, VKORG=ZUCH, VTWEG=Z1.
 
 
##Если проверка прошла, то добавляем запись в таблицу разрешенных объектов структуры /SBIS/S_AUTHORITY, например в VKORG_RE.
 
##Если проверка прошла, то добавляем запись в таблицу разрешенных объектов структуры /SBIS/S_AUTHORITY, например в VKORG_RE.
 
##Если проверка не прошла - не добавляем.
 
##Если проверка не прошла - не добавляем.
#Устанавливаем индикатор что данные получены, например в поле VKORG_RE_X структуры /SBIS/S_AUTHORITY.
+
##Устанавливаем индикатор что данные получены, например в поле VKORG_RE_X структуры /SBIS/S_AUTHORITY.
  
 
== Алгоритм метода CHECK_AUTHORITY класса /SBIS/CL_AUTHORITY ==
 
== Алгоритм метода CHECK_AUTHORITY класса /SBIS/CL_AUTHORITY ==
Осуществляет проверку прав на объекты из фильтра. Например на БЕ, Сбытовую организацию.
+
Осуществляет проверку полномочий на объекты из фильтра. Например на БЕ, Сбытовую организацию.
  
На входе - данные фильтра в виде структуры /SBIS/S_FILTER_LIST_DOC; список разрешенных объектов в виде структуры /SBIS/S_AUTHORITY; название узла настроек реестра iv_ini_name.
+
На входе - настройки аккордеона в таблице IT_SETTINGS; данные фильтра в виде структуры IS_FILTER;
  
На выходе - исключительная ситуация с текстом ошибки, либо ее отсутствие.
+
На выходе - исключительная ситуация с текстом ошибки, либо ее отсутствие;
 +
 
 +
На изменение - список разрешенных объектов в виде структуры CS_AUTHORITY;
  
 
Алгоритм
 
Алгоритм
# Для заданного реестра читаем настройки по iv_ini_name и получаем внутр. таблицу LT_SETTINGS со списком активных проверок, которые необходимо выполнить, а также параметров проверки.
+
# По настройкам из IT_SETTINGS получаем список проверок полномочий.
# Идем по списку проверок. Если активна конкретная проверка - выполняем метод проверки из класса /SBIS/CL_AUTHORITY, например CHECK_AUTH_VKORG. Имя запускаемого метода формируется динамически и ему передается список параметров.
+
# Идем по списку проверок.  
## В случае если данные S_AUTHORITY еще не получены, запускаем метод GET_AUTHORITY и получаем данные.
+
## Получаем из настроек IT_SETTINGS параметры
## Выполняем проверку для конкретного объекта полномочий, например V_VBAK_VKO. Параметры проверки берем из внутр. таблицы настроек LT_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 - структура данных о правах. Содержит данные:
    1. BUKRS_RE - range по Балансовым единицам, для которых есть права на объект полномочий 'F_BKPF_BUK' (бухгалтерский документ: полномочия на балансовые единицы) с заданными значениями параметров;
    2. BUKRS_RE_X - индикатор, что данные в BUKRS_RE получены;
    3. VKORG_RE - range по Сбытовым организациям, для которых есть права на объект полномочий 'F_VBAK_VKO' (Торговый документ: полномочия на сбытовые организации) с заданными значениями параметров;
    4. VKORG_RE_X - индикатор, что данные в VKORG_RE получены;
    5. и т.д.
  2. /SBIS/S_FILTER_LIST_DOC - структура фильтра. Содержит данные:
    1. GJAHR
    2. BELNR
    3. DATE_FROM
    4. DATE_TO
    5. TIME_FROM
    6. TIME_TO
    7. PAGE
    8. PAGE_SIZE
    9. RET_LIST_SIZE
    10. PARTNER_ID
    11. PARTNER_INN
    12. PARTNER_KPP
    13. ORG_ID
    14. ORG_INN
    15. ORG_KPP
    16. STATUS_NAME
    17. IS_RANGE - индикатор range/параметр
    18. BLDAT_RE
    19. KUNNR_RE
    20. BUKRS_RE
    21. STATU_RE
    22. BELNR_RE
    23. OPBEL_RE
    24. PARTN_RE
    25. VKORG_RE
    26. VTWEG_RE
    27. FKART_RE


Состав ини-файла

На уровне аккордеона для требуемого реестра опционально добавляем элемент CHECK_AUTHORITY, который содержит массив элементов - требуемых проверок.

Элемент Проверка содержит:

  1. "Имя" - название проверки, например SALES_ORG;
  2. "Значение" - массив настроечных параметров:
    1. "ПолучениеДанныхМетод" - содержит название метода для получения данных об имеющихся полномочиях;
      1. "Имя" - "ПолучениеДанныхМетод";
      2. "Значение" - например, "GET_AUTH_VKORG";
    2. "ПроверкаМетод" - содержит название метода проверки полномочий;
      1. "Имя" - "ПроверкаМетод";
      2. "Значение" - например, "CHECK_AUTH_VKORG";
    3. "ПараметрыПроверки" - содержит параметры для проверки полномочий;
      1. "Имя" - "ПараметрыПроверки";
      2. "Значение" - массив элементов с параметрами проверки;
        1. ACTVT = 03
        2. SPART = 01
        3. VTWEG = Z1

Пример файла настройки:

  {
    "Имя": "CHECK_AUTHORITY",
    "Значение": [
      {
        "Имя": "SALES_ORG",
        "Значение": [
          {
            "Имя": "ПолучениеДанныхМетод",
            "Значение": "GET_AUTH_VKORG"
          },
          {
            "Имя": "ПроверкаМетод",
            "Значение": "CHECK_AUTH_VKORG"
          },
          {
            "Имя": "ПараметрыПроверки",
            "Значение": [
              {
                "Имя": "ACTVT",
                "Значение": "03",
                "Формат": "Операция"
              },
              {
                "Имя": "SPART",
                "Значение": "01",
                "Формат": "Сектор"
              },
              {
                "Имя": "VTWEG",
                "Значение": "Z1",
                "Формат": "КаналСбыта"
              }
            ],
            "Комментарий": "проверяем объект V_VBAK_VKO"
          }
        ]
      }
    ]
  }

Проверка прав на Сбытовую организацию при запуске Сапера

  1. При запуске конкретного реестра Сапера выполняется метод /SBIS/CL_TREE_ACCORDION->SET_CONTENT_FILTER. Читается сохраненный фильтр, проверяются права, запускается просмотр списка.
    1. Сохраняем последний используемый реестр.
    2. /SBIS/CL_CORE->GET_PARAM (iv_ini_name, iv_user_settings, et_settings). Получаем пользовательские настройки из БД.
    3. /SBIS/CL_TREE_ACCORDION->READ_CONTENT_FILTER (iv_parent_name, it_user_settings, es_filter). Чтение фильтра из сохраненных настроек.
    4. /SBIS/CL_AUTHORITY->CHECK_AUTHORITY (it_settings, is_filter, cs_authority). Проверка прав на получение данных, запрашиваемых в фильтре.
      1. Если права корректные - устанавливаем индикатор вывода списка.
      2. Если права некорректные
        1. Получаем из настроек реестра название ФМ для окна фильтра и настройки фильтра.
        2. Вызываем ФМ фильтра, например /SBIS/FM_FILTER_SCREEN_302 (it_settings, сs_filter, cs_authority, ev_fcode).
        3. Заполняем фильтр, при нажатии ОК или Enter происходит проверка прав, метод /SBIS/CL_AUTHORITY->CHECK_AUTHORITY(it_settings, is_filter, cs_authority).
        4. Если отменили фильтр, то индикатор вывода списка очищаем.
    5. Проверка индикатора вывода списка.
      1. Если установлен, запуск метода /SBIS/CL_TREE_ACCORDION->VIEW_CONTENT - вывод списка на экран в соответствии с заданным фильтром.
      2. Если не установлен, выходим из метода.


Проверка прав на Сбытовую организацию при запуске фильтра

  1. /SBIS/CL_TREE->HANDLE_TOOLBAR_FILTER. Запускается метод-обработчик при нажатии кнопки Фильтр.
    1. Получаем из настроек реестра название ФМ для окна фильтра и настройки фильтра.
    2. Запуск ФМ фильтра, например /SBIS/FM_FILTER_SCREEN_302 (it_settings, cs_filter, cs_authority, ev_fcode). Запуск экрана, например 0302.
      1. PBO_0302. Вывод данных старого фильтра на экран.
      2. Ввод пользователем новых данных фильтра.
      3. PAI_0302. Проверка при нажатии ОК или Enter, введенных значений, в т.ч. прав на СбОрг в соответствии со списком разрешенных. Вывод ошибок при их возникновении.
        1. PAI_0302_CHECK.
          1. /SBIS/CL_AUTHORITY->CHECK_AUTHORITY (it_settings, is_filter, cs_authority). Проверка прав на получение данных, запрашиваемых в фильтре.
    3. При нажатии ОК и отсутствии ошибок:
      1. /SBIS/CL_TREE_ACCORDION->HANDLE_SET_CONTENT_FILTER. Генерируем событие для сохранения фильтра в настройках пользователя.
      2. /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.

Алгоритм:

  1. Запуск метода из IV_METHOD_NAME, например GET_AUTH_VKORG(it_check_param, cs_authority).
    1. Получаем полный список сбытовых организаций в системе во внутр. таблицу. Цикл по внутр. таблице.
    2. Для каждой сбытовой организации выполняем проверку полномочий, например V_VBAK_VKO, с заданными параметрами IT_CHECK_PARAM, например ACTVT=03, SPART=01, VKORG=ZUCH, VTWEG=Z1.
    3. Если проверка прошла, то добавляем запись в таблицу разрешенных объектов структуры /SBIS/S_AUTHORITY, например в VKORG_RE.
    4. Если проверка не прошла - не добавляем.
    5. Устанавливаем индикатор что данные получены, например в поле VKORG_RE_X структуры /SBIS/S_AUTHORITY.

Алгоритм метода CHECK_AUTHORITY класса /SBIS/CL_AUTHORITY

Осуществляет проверку полномочий на объекты из фильтра. Например на БЕ, Сбытовую организацию.

На входе - настройки аккордеона в таблице IT_SETTINGS; данные фильтра в виде структуры IS_FILTER;

На выходе - исключительная ситуация с текстом ошибки, либо ее отсутствие;

На изменение - список разрешенных объектов в виде структуры CS_AUTHORITY;

Алгоритм

  1. По настройкам из IT_SETTINGS получаем список проверок полномочий.
  2. Идем по списку проверок.
    1. Получаем из настроек IT_SETTINGS параметры
      1. название метода получения данных полномочий, например GET_AUTH_VKORG;
      2. название метода проверки, например CHECK_AUTH_VKORG;
      3. список параметров проверки полномочий, например (ACTVT=03, SPART=01, VTWEG=Z1);
    2. Выполняем метод проверки, например /SBIS/CL_AUTHORITY=>CHECK_AUTH_VKORG(is_filter, iv_method_name, it_check_param, cs_authority).
      1. Проверяем индикатор, означающий что данные полномочий CS_AUTHORITY уже получены, например VKORG_RE_X. В случае если данные СS_AUTHORITY еще не получены, запускаем метод /SBIS/CL_AUTHORITY=>GET_AUTHORITY(iv_method_name, it_check_param, cs_authority) и получаем данные полномочий.
      2. Проверяем что значения фильтра присутствуют в списке разрешенных. Если ошибка - выводим окно сообщения. Если все хорошо - выходим из метода.

Отправка

  1. На входе список отмеченных пакетов API2_PACKET
  2. CORE->SEND_LIST_PACKET(инишка раздела акордиона, T_API2_PACKET)
  3. [EXCHANGE_CLASS]->SEND_LIST_PACKET(инишка раздела акордиона, T_API2_PACKET)

Отправка SDK

  1. /sbis/cl_async_processing->run(инишка раздела акордиона, T_API2_PACKET, /SBIS/GET_PACKET) - асинхронно получаем данные пакетов
  2. EXCHANGE_SDK->sdk_write_documents_ex - отправляем по 100

Отправка ExtSDK

  1. /sbis/cl_async_processing->RUN(инишка раздела акордиона, T_API2_PACKET, /SBIS/GET_PACKET) - асинхронно получаем данные пакетов
  2. EXCHANGE_SDK->sdk_write_documents_ex - отправляем по 100