Объекты, созданные для работы с полуформализованными документами
=========================================================================

.. _nonf_ty_tab:

Таблица для настройки полуформализованных документов
----------------------------------------------------

Таблица ``/TRL/XDE_NONF_TY`` создана в системе SAP и включает в себя следующий список полей.

.. list-table:: **Описание полей таблицы /TRL/XDE_NONF_TY**
   :widths: auto
   :header-rows: 1

   * - Имя Поля
     - Ключ
     - Элемент данных/Тип
     - Описание
   * - MANDT
     - X
     - MANDT
     - Мандант
   * - SETTING_SET
     - X
     - /TRL/XDE_ED_SETTING_SET
     - Набор настроек
   * - SAP_NONF_TYP
     - X
     - /TRL/XDE_ED_NONF_TYP
     - Полуформализованный документ в SAP
   * - ID_OED
     - X
     - /TRL/XDE_ED_ID_OED
     - Код оператора ЭД
   * - OED_NONF_TYPE
     - 
     - TEXT60
     - Тип полуформализованного операторского документа
   * - OED_NONF_NAME
     - 
     - TEXT50
     - Имя полуформализованного операторского документа
   * - DDIC_STR_NAME
     - 
     - TYPENAME
     - Имя типа ABAP словаря
   * - METH_NAME
     - 
     - SEOCPDNAME
     - Имя метода класса

Данная таблица является настроечной, для нее создан ракурс ведения с таким же именем (транзакция ``SM30``), 
который позволяет добавлять новые записи или изменять старые. Также ведение можно производить 
с помощью транзакции ``/TRL/XDE_NONF_TY``.

Таблица для хранения атрибутов полуформализованных документов
-------------------------------------------------------------

Таблица ``/TRL/XDE_NONF_AT`` создана в системе SAP и включает в себя следующий 
список полей.

.. list-table:: **Описание полей таблицы /TRL/XDE_NONF_AT**
   :widths: auto
   :header-rows: 1

   * - Имя Поля
     - Ключ
     - Элемент данных/Тип
     - Описание
   * - MANDT
     - X
     - MANDT
     - Мандант
   * - RECORD_ID
     - X
     - /TRL/XDE_ED_GUID
     - GUID отправки
   * - ATTR_NAME
     - X
     - CHAR30
     - Имя атрибута
   * - ATTR_VALUE
     - 
     - TEXT255
     - Значение атрибута

Данная таблица хранит данные атрибутов полученных и отправленных полуформализованных 
документов в разрезе их номера GUID. 

Класс для работы с полуформализованными документами
---------------------------------------------------
Создан глобальный класс ``/TRL/XDE_CL_HALFNONF_PROC`` для работы с полуформализованными
документами. Данный класс имеет следующие методы.

**CHECK_HALFNONF**

Данный метод позволяет определить по типу документа SAP, является ли он одним из типов 
полуформализованных документов. Вызов метода не требует инстанции класса (Static) и 
является общим методом (Public). Параметры данного метода представлены в таблице ниже.

.. list-table:: **Описание параметров метода CHECK_HALFNONF**
   :widths: auto
   :header-rows: 1

   * - Имя параметра
     - Р’РёРґ
     - РўРёРї
     - Описание
   * - IV_SAP_DOC_TYPE
     - Importing
     - /TRL/XDE_ED_OBJECT_ART
     - Вид документа SAP
   * - RV_TRUE
     - Returning
     - ABAP_BOOL
     - Логический ответ


**PREPARE_NONF_ATTR**

Данный метод позволяет подготовить таблицу атрибутов на основе любых данных, 
подаваемых на вход и настроенной структуры в таблице ``/TRL/XDE_NONF_TY``.
Вызов метода не требует инстанции класса (Static) и является общим методом 
(Public). Параметры данного метода представлены в таблице ниже.

.. list-table:: **Описание параметров метода PREPARE_NONF_ATTR**
   :widths: auto
   :header-rows: 1

   * - Имя параметра
     - Р’РёРґ
     - РўРёРї
     - Описание
   * - IR_DATA
     - Importing
     - DATA
     - Данные в любом виде
   * - IV_RECORD_ID
     - Importing
     - /TRL/XDE_ED_GUID
     - GUID отправки
   * - IV_SAP_DOC_TYPE
     - Importing
     - /TRL/XDE_ED_OBJECT_ART
     - Тип документа SAP
   * - IV_ID_OED
     - Importing
     - /TRL/XDE_ED_ID_OED
     - Идентификатор оператора
   * - ET_ATTR
     - Exporting
     - /TRL/XDE_T_NONF_AT
     - Таблица атрибутов


**GET_NONF_TY**

Данный метод позволяет выбрать данные из таблицы ``/TRL/XDE_NONF_TY`` с учетом текущей 
настройки ``SETTINGS_SET``. Вызов метода не требует инстанции класса (Static) и является 
общим методом (Public). Параметры данного метода представлены в таблице ниже.

.. list-table:: **Описание параметров метода GET_NONF_TY**
   :widths: auto
   :header-rows: 1

   * - Имя параметра
     - Р’РёРґ
     - РўРёРї
     - Описание
   * - IV_SAP_DOC_TYPE
     - Importing
     - /TRL/XDE_ED_OBJECT_ART
     - Тип документа SAP     
   * - IV_ID_OED
     - Importing
     - /TRL/XDE_ED_ID_OED
     - Идентификатор оператора
   * - RS_NONF_TY
     - Returning
     - /TRL/XDE_NONF_TY
     - Строка с настройками полуформализованного документа


**GET_HALFNONF_CLASS**

Данный метод позволяет получить настройку из ``/TRL/XDE_CUST`` по имени ``HALFNONF_CLASS`` 
с учетом текущей настройки ``SETTINGS_SET``. Вызов метода не требует инстанции класса 
(Static) и является общим методом (Public). Параметры данного метода представлены в таблице ниже.

.. list-table:: **Описание параметров метода GET_HALFNONF_CLASS**
   :widths: auto
   :header-rows: 1

   * - Имя параметра
     - Р’РёРґ
     - РўРёРї
     - Описание
   * - RV_CLASS
     - Returning
     - SEOCLSNAME
     - Имя класса


**GET_SAP_TYPE_BY_CUSTOMTYPE**

Данный метод позволяет получить имя типа SAP документа по имени операторского 
типа полуформализованного документа. Вызов метода не требует инстанции класса 
(Static) и является общим методом (Public). Параметры данного метода представлены в таблице ниже.

.. list-table:: **Описание параметров метода GET_SAP_TYPE_BY_CUSTOMTYPE**
   :widths: auto
   :header-rows: 1

   * - Имя параметра
     - Р’РёРґ
     - РўРёРї
     - Описание
   * - IV_CUSTOM_TYPE
     - Importing
     - TEXT50
     - Имя операторского типа полуформализованного документа
   * - IV_ID_OED
     - Importing
     - /TRL/XDE_ED_ID_OED
     - Идентификатор оператора     
   * - RV_SAP_TYPE
     - Returning
     - /TRL/XDE_ED_OBJECT_ART
     - Вид документа SAP


**CONVERSATE**

Данный метод позволяет перевести имя атрибута из словарного словаря ABAP в формат, 
необходимый в JSON. Например, имя поля в созданной структуре «_CONTRACT_DATE», 
имя, которое необходимо получить - «ContractDate». Метод переводит все буквы в нижний регистр, 
а затем переводит в верхний регистр те буквы, перед которыми стоит знак нижнего 
подчеркивания. Вызов метода не требует инстанции класса (Static) и является личным 
методом (Private), используется только внутри класса. Параметры данного метода 
представлены в таблице ниже.

.. list-table:: **Описание параметров метода CONVERSATE**
   :widths: auto
   :header-rows: 1

   * - Имя параметра
     - Р’РёРґ
     - РўРёРї
     - Описание
   * - IV_FIELDNAME
     - Importing
     - FIELDNAME
     - Имя поля
   * - RV_ATR_NAME
     - Returning
     - CHAR30
     - Имя атрибута

.. _nonf_class:

Класс для получения и обработки данных полуформализованных документов
---------------------------------------------------------------------
В системе SAP создан класс ``/TRL/XDE_CL_HALFNONF_DOCS``, который используется по 
умолчанию для сбора данных по атрибутам полуформализованных документов. Данный 
класс можно наследовать и переопределить уже имеющиеся в нем методы, а также 
создать новые, необходимые для работы с различными видами полуформализованных 
документов, методы. 
Данный класс по умолчанию настроен в таблице ``/TRL/XDE_CUST`` в настройке ``HALFNONF_CLASS``.
Класс, помимо конструктора, который обязателен, содержит еще несколько методов, 
реализованных по умолчанию. Описание методов приводится ниже.

**AKT_2BM_DATA**

Данный метод позволяет заполнить атрибуты для полуформализованного документа «Акт» 
оператора Диадок. Является динамически вызываемым методом, вызывается через инстанцию 
класса (Instance) и является общим (Public). Параметры метода представлены в таблице ниже.

.. list-table:: **Описание параметров метода AKT_2BM_DATA**
   :widths: auto
   :header-rows: 1

   * - Имя параметра
     - Р’РёРґ
     - РўРёРї
     - Описание
   * - IS_HEADER
     - Importing
     - /TRL/XDE_HEADER
     - Заголовок элемента ЭДО
   * - IT_DOCUMENTS
     - Importing
     - /TRL/XDE_T_DOCUMENTS
     - Список документов
   * - IS_CERT
     - Importing
     - /TRL/XDE_S_SAP_DOC_TYPE_CERT
     - Набор сертификатов
   * - IS_NONF_TY
     - Importing
     - /TRL/XDE_NONF_TY
     - Данные полуформализ. документа
   * - ES_RETURN
     - Exporting
     - /TRL/XDE_RETURN
     - Код и текст сообщения
   * - CR_DATA
     - Changing
     - DATA
     - Данные в любом виде
         

**DOG_2BM_DATA**

Данный метод позволяет заполнить атрибуты для полуформализованного документа 
«Договор» оператора Диадок. Является динамически вызываемым методом, вызывается 
через инстанцию класса (Instance) и является общим (Public). Параметры метода представлены в 
таблице ниже.

.. list-table:: **Описание параметров метода DOG_2BM_DATA**
   :widths: auto
   :header-rows: 1

   * - Имя параметра
     - Р’РёРґ
     - РўРёРї
     - Описание
   * - IS_HEADER
     - Importing
     - /TRL/XDE_HEADER
     - Заголовок элемента ЭДО
   * - IT_DOCUMENTS
     - Importing
     - /TRL/XDE_T_DOCUMENTS
     - Список документов
   * - IS_CERT
     - Importing
     - /TRL/XDE_S_SAP_DOC_TYPE_CERT
     - Набор сертификатов
   * - IS_NONF_TY
     - Importing
     - /TRL/XDE_NONF_TY
     - Данные полуформализ. документа
   * - ES_RETURN
     - Exporting
     - /TRL/XDE_RETURN
     - Код и текст сообщения
   * - CR_DATA
     - Changing
     - DATA
     - Данные в любом виде

**DOPDOG_2BM_DATA**

Данный метод позволяет заполнить атрибуты для полуформализованного документа 
«Дополнительное соглашение к договору» оператора Диадок. Является динамически 
вызываемым методом, вызывается через инстанцию класса (Instance) и является 
общим (Public). Параметры метода представлены в таблице ниже.

.. list-table:: **Описание параметров метода DOPDOG_2BM_DATA**
   :widths: auto
   :header-rows: 1

   * - Имя параметра
     - Р’РёРґ
     - РўРёРї
     - Описание
   * - IS_HEADER
     - Importing
     - /TRL/XDE_HEADER
     - Заголовок элемента ЭДО
   * - IT_DOCUMENTS
     - Importing
     - /TRL/XDE_T_DOCUMENTS
     - Список документов
   * - IS_CERT
     - Importing
     - /TRL/XDE_S_SAP_DOC_TYPE_CERT
     - Набор сертификатов
   * - IS_NONF_TY
     - Importing
     - /TRL/XDE_NONF_TY
     - Данные полуформализ. документа
   * - ES_RETURN
     - Exporting
     - /TRL/XDE_RETURN
     - Код и текст сообщения
   * - CR_DATA
     - Changing
     - DATA
     - Данные в любом виде

**TN_2BM_DATA**

Данный метод позволяет заполнить атрибуты для полуформализованного документа 
«Накладная» оператора Диадок. Является динамически вызываемым методом, вызывается 
через инстанцию класса (Instance) и является общим (Public). Параметры метода представлены в 
таблице ниже.

.. list-table:: **Описание параметров метода TN_2BM_DATA**
   :widths: auto
   :header-rows: 1

   * - Имя параметра
     - Р’РёРґ
     - РўРёРї
     - Описание
   * - IS_HEADER
     - Importing
     - /TRL/XDE_HEADER
     - Заголовок элемента ЭДО
   * - IT_DOCUMENTS
     - Importing
     - /TRL/XDE_T_DOCUMENTS
     - Список документов
   * - IS_CERT
     - Importing
     - /TRL/XDE_S_SAP_DOC_TYPE_CERT
     - Набор сертификатов
   * - IS_NONF_TY
     - Importing
     - /TRL/XDE_NONF_TY
     - Данные полуформализ. документа
   * - ES_RETURN
     - Exporting
     - /TRL/XDE_RETURN
     - Код и текст сообщения
   * - CR_DATA
     - Changing
     - DATA
     - Данные в любом виде

**SCH_2BM_DATA**

Данный метод позволяет заполнить атрибуты для полуформализованного документа «Счет» 
оператора Диадок. Является динамически вызываемым методом, вызывается через 
инстанцию класса (Instance) и является общим (Public). Параметры метода представлены в таблице ниже.

.. list-table:: **Описание параметров метода SCH_2BM_DATA**
   :widths: auto
   :header-rows: 1

   * - Имя параметра
     - Р’РёРґ
     - РўРёРї
     - Описание
   * - IS_HEADER
     - Importing
     - /TRL/XDE_HEADER
     - Заголовок элемента ЭДО
   * - IT_DOCUMENTS
     - Importing
     - /TRL/XDE_T_DOCUMENTS
     - Список документов
   * - IS_CERT
     - Importing
     - /TRL/XDE_S_SAP_DOC_TYPE_CERT
     - Набор сертификатов
   * - IS_NONF_TY
     - Importing
     - /TRL/XDE_NONF_TY
     - Данные полуформализ. документа
   * - ES_RETURN
     - Exporting
     - /TRL/XDE_RETURN
     - Код и текст сообщения
   * - CR_DATA
     - Changing
     - DATA
     - Данные в любом виде

**PRLIST_2BM_DATA**

Данный метод позволяет заполнить атрибуты для полуформализованного документа 
«Ценовой лист» оператора Диадок. Является динамически вызываемым методом, вызывается 
через инстанцию класса (Instance) и является общим (Public). Параметры метода представлены в таблице 
ниже.

.. list-table:: **Описание параметров метода PRLIST_2BM_DATA**
   :widths: auto
   :header-rows: 1

   * - Имя параметра
     - Р’РёРґ
     - РўРёРї
     - Описание
   * - IS_HEADER
     - Importing
     - /TRL/XDE_HEADER
     - Заголовок элемента ЭДО
   * - IT_DOCUMENTS
     - Importing
     - /TRL/XDE_T_DOCUMENTS
     - Список документов
   * - IS_CERT
     - Importing
     - /TRL/XDE_S_SAP_DOC_TYPE_CERT
     - Набор сертификатов
   * - IS_NONF_TY
     - Importing
     - /TRL/XDE_NONF_TY
     - Данные полуформализ. документа
   * - ES_RETURN
     - Exporting
     - /TRL/XDE_RETURN
     - Код и текст сообщения
   * - CR_DATA
     - Changing
     - DATA
     - Данные в любом виде

Функциональный модуль для обработки исходящих полуформализованных документов
----------------------------------------------------------------------------

В системе SAP создан ФМ ``/TRL/XDE_OUT_HALF_GET_DATA``, который является 
функциональным модулем для сбора данных для исходящих полуформализованных документов 
и имеет следующие параметры.

.. list-table:: **Описание параметров ФМ /TRL/XDE_OUT_HALF_GET_DATA**
   :widths: auto
   :header-rows: 1

   * - Имя параметра
     - Р’РёРґ
     - РўРёРї
     - Описание
   * - IS_HEADER
     - Importing
     - /TRL/XDE_HEADER
     - Заголовок элемента ЭДО
   * - IV_BIN_DATA_SIZE
     - Importing
     - /TRL/XDE_ED_FILE_SIZE
     - Размер бинарных данных
   * - IV_FILE_NAME
     - Importing
     - /TRL/XDE_ED_ARC_FILE_NAME
     - Имя файла
   * - IT_BIN_DATA
     - Importing
     - /TRL/XDE_T_SOLIX_TAB
     - Бинарные данные    
   * - IT_DOCUMENTS
     - Importing
     - /TRL/XDE_T_DOCUMENTS
     - Список документов
   * - ES_RETURN
     - Exporting
     - /TRL/XDE_RETURN
     - Код и текст сообщения     
   * - CR_DATA
     - Changing
     - DATA
     - Данные в любом виде
   * - CS_HDR_ATTR
     - Changing
     - DATA
     - Доп. данные к заголовку  
   * - CT_METADATA
     - Changing
     - /TRL/XDE_T_METADATA
     - Метаданные 
   * - CS_CERT
     - Changing
     - /TRL/XDE_S_SAP_DOC_TYPE_CERT
     - Набор сертификатов

Данный модуль делает динамический вызов метода, настраиваемого в таблице ``/TRL/XDE_NONF_TY`` в поле ``METH_NAME``.