Чтение сегмента GS06 из файла X12 с использованием С#

!введите здесь описание изображения

Привет всем. Я новичок в EDI X12. У меня есть задача прочитать 6-е поле сегмента GS (GS06), подчеркнутое красным на изображении выше. Пожалуйста, помогите мне, как написать код на С#, чтобы получить это значение GS06.


person user1410658    schedule 20.10.2014    source источник
comment
Зачем нужно найти контрольный номер группы? Вы также можете получить это же значение из сегмента GE. В вашем примере контрольный номер ISA такой же (хотя и дополненный нулями). Проблема в том, что это не всегда может быть правдой, но мне нужно знать ваш вариант использования здесь.   -  person Andrew    schedule 20.10.2014


Ответы (3)


Во-первых, вам нужен полный документ в памяти. Затем, прочитав символ 106, вы получите разделитель сегментов. Также возьмите символ 4 для разделителя полей. Вызовите Splitstring на основе разделителя сегментов, и вы получите массив сегментов.

Как правило, GS должен быть вторым сегментом, поэтому array[1] (или, как указывает Эндрю, вы можете специально проверить сегмент, который начинается с «GS» и fieldDelim и «OG»). Снова разделите строку на основе вашего разделителя полей, а secondArray[5] — это ваш GS06.

person FinrodFelagund    schedule 24.10.2014

Для начала вам нужно найти разделитель элементов. В вашем примере это звездочка. Ограничитель вашего сегмента — тильда.

Сегмент ISA имеет фиксированную длину. Остальные сегменты имеют переменную длину. Чтобы ваш синтаксический анализатор нашел определенный элемент, вы должны прочитать текстовый файл и проанализировать сегменты на основе признака конца сегмента. После этого вы можете найти искомый сегмент, вычислить количество разделителей элементов и получить найденное значение.

В вашем примере строка GSOG будет постоянной. Таким образом, вы можете читать текстовый файл, и когда вы сталкиваетесь с ~GSOG, вы знаете, что находитесь в правильном месте. Используйте свои знания о разделителях, чтобы добраться туда, где вам нужно быть в строке.

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

person Andrew    schedule 20.10.2014

Сначала поместите каждую строку в массив (вы можете разделить знак «~»), чтобы вторая строка была сегментом GS. Затем снова разделите сегмент GS на массив (вы можете разделить с помощью «*»). Массив сегментов GS будет GS06. Попробуйте это. Точно так же вы можете получить любое значение.

person Sumi    schedule 30.10.2014