Повторное выполнение последней операции¶
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" VALUE(IV_RECORD_ID) TYPE /TRL/XDE_HEADER-RECORD_ID
*" VALUE(IV_ONLY_CHECK) TYPE XFELD OPTIONAL
*" EXPORTING
*" VALUE(ES_RETURN) TYPE /TRL/XDE_RETURN
*"----------------------------------------------------------------------
Функциональный модуль /TRL/XDE_API_SHIPM_SEND_AGAIN
выполняет повторно последнюю операцию, завершившуюся с ошибкой. Отправка должна быть в статусе E. Список возможных операций для повторного выполнения:
подписание/отклонение входящей отправки;
подтверждение/отклонение запроса на аннулирование;
исходящая отправка документов;
создание запроса на аннулирование.
Параметр |
Описание |
---|---|
|
|
|
Уникальный идентификатор отправки. |
|
Если равен «X», то выполняется проверка возможности повторного выполнения операции, завершившейся с ошибкой. При этом повторного выполнения операции не выполняется. |
|
|
|
Код и описание ошибки в случае, если операцию выполнить не удалось. |
Если ФМ запущен не в режиме проверки – ставим блокировку по номеру отправления.
Если блокировка не удалась, то
es_return-code
присваивается «1011» (ошибка блокирования записи). Также вes_return-text
записывается текущее системное сообщение, после этого происходит выход из ФМ.
Получаем данные по номеру отправления с помощью ФМ /TRL/XDE_GET_SHIPMENTS
.
Проверка результата работы ФМ
/TRL/XDE_GET_SHIPMENTS
. Если результат не успешен –es_return-code
заполняется значением «1106» (Не удалось найти отправление). Полеes_return-text
заполняется текстом «Внутренняя ошибка. Не удалось найти объект «Отправление»». Снимаем блокировки и выходим из ФМ/TRL/XDE_API_SHIPM_SEND_AGAIN
.
Проверяем полномочия на действие «18» (Отправить документ повторно).
Если результат проверки не успешен – поле
es_return-code
заполняется значением «1013» (Проверка не пройдена). Полеes_return-text
заполняется сообщением «Нет полномочий на выполнение операции». Снимаем блокировки и выходим из ФМ/TRL/XDE_API_SHIPM_SEND_AGAIN
.
Вызов метода для определения типа доступа для операции с помощью настроек, сделанных в таблице условий /TRL/XDE_CONDIT
.
Если в результате работы метода получим, что тип доступа 03 (Операция запрещена) или 04 (Операция невозможна) – запишем в
es_return-code
«9999» (Критическая ошибка). Вes_return-text
попадет «Операция невозможна». Снимаем блокировки и выходим из ФМ/TRL/XDE_API_SHIPM_SEND_AGAIN
.
С помощью множественного вызова метода для получения имени статуса по имени настройки – получаем данные о технических названиях статусов. Проверяем, что в списке статусов первым стоит подходящий статус (Ожидает отправки контрагенту(подписан), ожидает отправки контрагенту(отклонен), готов к отправке контрагенту(исходящие). Либо вторая запись должна быть статусом «готов к отправке контрагенту(исходящие)».
Во всех остальных случаях заполняем поле
es_return-code
значением «9999» (Критическая ошибка). Полеes_return-text
заполняется текстом «В текущем статусе операция невозможна». Снимаем блокировки и выходим из ФМ/TRL/XDE_API_SHIPM_SEND_AGAIN
.
Если для данного статус стоит флаг «Содержит комментарий» - считываем текст у бизнес-объекта по ключу и идентификатору текста.
Далее, если для данного оператора стоит настройка «обработать весь пакет» - ищем все отправления, ставим на них блокировку и выполняем проверку полномочий.
Далее, в зависимости от кода статуса отправки выполняем разные действия.
Если код статуса отправки «Аннулирование подтверждено» или «Ожидает отправки контрагенту(подписан)» и ФМ запущен не в режиме проверки – вызывается ФМ /TRL/XDE_API_SIGN_IN
.
Этот ФМ подписывает входящую отправку. Внутри ФМ выполняет проверки возможности выполнить необходимую операцию, находит настраиваемые ФМ для отклонения/подтверждения запроса аннулирования,
для согласования входящего документа, для отложенной отправки (только подписание) и в зависимости от условий – вызывает нужный ФМ.
Если код статуса отправки «Ожидает отправки контрагенту(отклонен)» или «Аннулирование отклонено» и ФМ запущен не в режиме проверки – вызывается ФМ /TRL/XDE_API_SIGN_IN
с той разницей,
что в этот раз флаг согласования/отклонения не заполнен. Этот ФМ подписывает входящую отправку. Внутри ФМ выполняет проверки возможности выполнить необходимую операцию, находит настраиваемые
ФМ для отклонения/подтверждения запроса аннулирования, для согласования входящего документа, для отложенной отправки (только подписание) и в зависимости от условий – вызывает нужный ФМ.
Если код статуса отправки «Ожидает отправки контрагенту (исходящие)», «Готов к отправке контрагенту (исходящие)», «Ожидание ответа от ИМ» и если ФМ запущен не в режиме проверки –
запускается цикл по отправлениям и для каждого запускается ФМ /TRL/XDE_SET_STATUS_FOR_SHIPM
, который добавляет статус для отправки. Внутри выполняются проверки,
что для данной отправки можно установить такой статус, проверяются уровни статусов, сохраняется комментарий и обновляются таблицы /TRL/XDE_HEADER
, /TRL/XDE_HDR_ATR
, /TRL/XDE_STATUS
, /TRL/XDE_SIGN
.
Если в ходе выполнения ФМ
/TRL/XDE_SET_STATUS_FOR_SHIPM
возникли какие-либо особые ситуации – заполняем полеes_return-code
значением «9999» (критическая ошибка). Если текущее системное сообщение имеется – выводим его в полеes_return-text
, иначе выводим сообщение «Не удалось обновить статус отправления. Обратитесь в службу поддержки.».
Если код статуса отправки «Ожидает отправки контрагенту(подписан)» или «Ожидает отправки контрагенту(отклонен)» – получаем отпечаток сертификата, получаем данные по отправлению и
данные документов для взаимодействия с ИМ. Затем вызывается ФМ /TRL/XDE_IM_SEND_IN
, который подписывает/отклоняет входящий документ (в зависимости от настроек работы с ИМ).
Затем, в случае серверного подписания – выбираются данные по отправлению и выполняется поиск настроенного ФМ
для подписания/отклонения и происходит, собственно, вызов ФМ. В случае локального подписания – вызываются ФМ /TRL/XDE_AcceptPacLocalSign
или /TRL/XDE_RejectPacLocalSign
.
Если же настроена интеграция через WebAPI – ищем в настройках класс, реализующий интеграцию через WS. Если класс найден – вызываем метод SIGN_IN для серверного подписания или
SIGN_IN_DOCUMENT_LOC_ACC
для локального согласования, SIGN_IN_DOCUMENT_LOC_REJ
для локального отклонения.
Затем вызывается ФМ /TRL/XDE_SET_STATUS_FOR_SHIPM
, который меняет статус документа.
Если код статуса отправки «Отправлен запрос на аннулирование» и ФМ запущен не в режиме проверки – вызывается ФМ /TRL/XDE_API_SHIPM_REVOKE_REQ
. Описание ФМ можно найти в предыдущем пункте.
В конце работы ФМ снимаются блокировки. На этом работа ФМ заканчивается.
Данная API функция предусматривает точки расширения для заказчика.
Важно
При использовании явных или неявных операторов COMMIT WORK
и ROLLBACK WORK
в расширениях корректная работа API-функций не гарантируется!
Функциональный модуль сортировки статусов¶
Имя функционального модуля сортировки статусов находится в таблице /TRL/XDE_CUST
по имени настройки FM_SORT_STATUS_NEW
.

Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже.
Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
||
|
Тип |
|
|
Тип |
|
Функциональный модуль может иметь и другие параметры, но они должны быть необязательными.
Функциональный модуль, используемый по умолчанию, содержит внедрение BAdI /TRL/XDE_CHECK_BADI
для выполнения кастомных проверок после проверок,
выполняемых в Продукте, выполняемых в методах CHECK_IN_REVOKE_ACCEPT
и CHECK_IN_REVOKE_REJECT
. Кроме того, функциональный модуль,
используемый по умолчанию, содержит внедрение BAdI /TRL/XDE_SHIPMENT_BADI
для работы с отправлениями, а именно для возможности создания
комментария перед выводом диалогового окна пользователю. Создания комментария выполняется в методе SET_COMMENT
.
Функциональный модуль подписания входящих сообщений¶
Имя ФМ подписания входящих сообщений хранится в таблице /TRL/XDE_CUST
по имени настройки FM_SHIP_IN_SIGN
.

Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже.
Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
||
|
Тип |
|
|
Тип |
|
Функциональный модуль может иметь и другие параметры, но они должны быть необязательными.
Функциональный модуль отложенной отправки¶
Имя ФМ определения отложенной отправки находится в таблице /TRL/XDE_CUST
по имени настройки FM_SHIP_SIGN_ONLY
.

Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже.
Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
||
|
Тип |
|
Функциональный модуль может иметь и другие параметры, но они должны быть необязательными.
Функциональный модуль обработки события смены статуса отправления¶
Имя ФМ обработки события смены статуса отправления находится в таблице /TRL/XDE_CUST
по имени настройки FM_SET_EVENT
.

Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже.
Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
Тип |
|
|
||
|
Тип |
|
Функциональный модуль может иметь и другие параметры, но они должны быть необязательными.
Функциональный модуль для обработки после выставления статуса¶
Имя функционального модуля для обработки после выставления статуса содержится в таблице /TRL/XDE_STATE
, поле FMAST
.

Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже.
Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
Тип |
|
Функциональный модуль может иметь и другие параметры, но они должны быть необязательными.
Функциональный модуль интеграционного модуля по подписанию/отклонению входящей отправки¶
Имя ФМ интеграционного модуля по подписанию/отклонению входящей отправки хранится в таблице /TRL/XDE_CUST
по имени настройки IM.FM_I_SIGN
.

Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже.
Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
||
|
Тип |
|
Функциональный модуль может иметь и другие параметры, но они должны быть необязательными.
Функциональный модуль для реализации интеграции через Web Service¶
Имя класса для реализации интеграции через Web Service находится в таблице TRL/XDE_CUST
по имени настройки IM.WS.FRM_CLASS
.

У этого класса вызывается несколько методов.
Метод SIGN_IN_DOCUMENT
для подписания/отклонения¶
Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
||
|
Тип |
|
Метод SIGN_IN_DOCUMENT_LOC_ACC
для локального подписания (принять)¶
Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
Тип |
|
|
||
|
Тип |
|
Метод SIGN_IN_DOCUMENT_LOC_REJ
для локального подписания (отклонить)¶
Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
Тип |
|
|
||
|
Тип |
|