Это файл X12, заказ на покупку 850. Как предлагает eppye в комментариях, вам нужно точно выяснить, какому стандарту соответствует файл, который вы получаете. Для начала есть версия 850 здесь. «Черновик MEMA 4010 850» поможет вам разобраться в формате. «GCommerce 4010 850V1.4.doc» — это словарь данных, который сообщает вам, что содержится в каждом элементе. Пожалуйста, поймите, однако, что если вы не продаете автозапчасти, это, вероятно, не точная спецификация файла, с которым вы работаете. Люди, отправляющие вам файл, должны предоставить его вам.
Я бы создал пользовательский объект для каждого сегмента и цикла, а также объект для представления самого заказа на покупку. Заказ на поставку UO нуждается в переменных, которые являются типом данных сегментов и циклов. Не включайте сегменты, которые находятся внутри петель, поместите их в UO для петли. UO для сегмента будет иметь переменные, которые являются стандартными типами данных, такими как строка, целое число, дата и т. д. для элементов данных в сегменте. Обратитесь к Словарю данных для типов данных.
Обратите внимание, что если сегмент повторяется, переменная, содержащая сегмент, является массивом. Переменными для циклов будут массивы.
Ваши объекты, которые обрабатывают сегменты, будут иметь метод, например. of_importLine
, который разбивает строку по звездочке и сохраняет значения.
Ваши объекты, которые обрабатывают циклы, будут иметь метод, например. of_readLoop
, который читает строки (сегменты), пока не прочитает последний сегмент цикла. Для каждого сегмента он создаст UO для этого типа сегмента, назначит его переменной экземпляра или следующему слоту массива, если сегмент может повторяться, и вызовет of_importLine
нового объекта.
Ваш объект, который обрабатывает заказ на покупку, подобен объекту для цикла, за исключением того, что, когда он видит первый сегмент цикла, он создает UO для этого типа цикла, назначает его следующему слоту массива для цикла и вызывает новый объект of_readLoop. Обратите внимание, что пока ваш объект заказа на покупку считывается внутри цикла, он создает новый объект для чтения и сохранения каждого повторения цикла.
Ваши объекты, которые читают циклы, должны регистрировать ошибку и останавливаться, если требуемый сегмент отсутствует или найден сегмент, не принадлежащий циклу. Ошибка должна включать номер строки и ее содержимое. Я не могу дать вам подробное описание того, как проверить сам заказ на поставку, потому что многие сегменты являются необязательными в спецификации, но, вероятно, они не являются необязательными в вашем приложении. Для каждого сегмента и цикла у объекта есть переменная, ему нужна последовательность, в которой появляется элемент, а также минимальное и максимальное количество вхождений. Затем объект PO может проверять сегменты и циклы по мере продвижения.
Это позволит получить данные из документа в объекты, представляющие части документа, чтобы вы могли работать с данными.
person
Hugh Brackett
schedule
15.04.2013