#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.
Я бы также не стал полагаться на то, что какие-либо непечатаемые символы или пробелы (кроме пробела) обрабатываются стабильно хорошо.