Приложения Azure Logic EDIFACT ДЕКОДИРУЮТ, разрешая символ подчеркивания (_) в

#azure-logic-apps #edifact

#azure-logic-apps #edifact

Вопрос:

Я использую приложения Azure Logic и учетные записи интеграции для получения сообщений EDIFACT.

Во входящем сообщении EDIFACT присутствует символ подчеркивания, и проверка декодирования EDIFACT завершается ошибкой с сообщением:

Ошибка, возникшая во время синтаксического анализа. Набор транзакций Edifact с идентификатором ‘1’, содержащийся в interchange (без группы) с идентификатором ‘1’, с идентификатором отправителя ‘XXX’, идентификатором получателя ‘XXXXX’, приостанавливается со следующими ошибками:

Ошибка: 1 (ошибка на уровне поля)

Идентификатор сегмента: BGM

Позиция в TS: 2

Идентификатор элемента данных: XXXX

Позиция в сегменте: 3

Позиция в поле: 1

Значение данных: 1_2017-09-2206:24:42

21: Найден недопустимый символ

Я хочу разрешить рассматривать символ подчеркивания как допустимый символ, ценю любые указания по решению проблемы.

Ответ №1:

Все зависит от стандартного набора символов, смотрите здесь, я не помню ни одного, который поддерживал бы подчеркивание, поэтому в конечном итоге транзакция неверна в соответствии со стандартом EDIFACT, как указано в сообщении об ошибке.

Комментарии:

1. Спасибо, Дон, я знаю, что подчеркивание недопустимо ни в одном из наборов символов EDIFACT. Хотел посмотреть, есть ли простой способ разрешить это.

Ответ №2:

Есть проблемы 1.5. 🙂

Но первое, что вам нужно сделать, это сообщить своему руководству, что ваш торговый партнер отправляет недопустимый EDIFACT. Если торговый партнер не в состоянии решить свою проблему, вам придется потратить дополнительное время на устранение их проблемы.

Это не проблема для вас, вашего приложения или сервера BizTalk.

EDIFACT поддерживает очень ограниченное количество наборов символов, и «_» отсутствует ни в одном из них.

Либо они устраняют свою проблему, либо вам придется создать пользовательскую функцию, которая удаляет / изменяет недопустимые символы.

Наконец, проблема .5 заключается в том, что они даже не отправляют полезное значение. Этот формат не является стандартным форматом даты, поэтому для его использования в любом случае потребуются манипуляции.

Комментарии:

1. Спасибо за подробный ответ, я согласен, если нет встроенного способа разрешить символ «_», потребуется создать функцию для обработки этого.

2. Я думаю, что поле, выдающее эту ошибку, было BGM_02, которое является «Идентификатором документа» — строкой длиной до 70 символов, назначенной отправителем. Нет никаких ожиданий, что его можно будет проанализировать как дату.

Ответ №3:

UNOC (ISO-8859-1 / Набор символов Latin1) включает символ подчеркивания.

Я бы не ожидал большой поддержки символов, кодировка которых отличается между ISO-8859-1, Windows-1252 или первыми 255 кодовыми точками UTF-8 (что означает символы 0x80 до 0x9F ), из-за возможности использования реализациями либо Windows-1252.

Я бы также не стал полагаться на то, что какие-либо непечатаемые символы или пробелы (кроме пробела) обрабатываются стабильно хорошо.