15.02.2012, 12:02 | #1 |
Участник
|
AIF - AifDocumentField (таблица соответствия)
День добрый!
Давно ждал подходящей задачи для AIF (Ax4.0)... и дождался нужно осуществить интеграцию с внешней системой партнера через XML все настроил с помщью AIF - AifFileSystemAdapter (импорт) - большое спасибо Sergikrus... и msdn Создал в AOT query (тип документов новый), на его основе с помощью мастера сформировал классы для выгрузки. Привязал их к Конечной точке. Схема xsd - сформировалась стандартная. Кинул на форму ItemMenu, выгрузка прошла на УРА. Следующим шагом нужно заменить сформированную автоматом XSD, на схему которую нам выдал наш партнер. Открыл AifSchemaStore заменил, парсер малость поворчал на не соблюдение норм..., в итоге договорились. Снова открываю Основное \ Настройка \ AIF \ Конечные точки \ Политика действий \ Политики данных, отмечаю какие поля мне нужно выгрузить обязательно, какие желательно, какие не нужно выгружать ("/MyJournal/EmplId" - не выгружать), т.к. их нет в XSD Отправляю документ на выгрузку и получаю ошибку (Основное \ Период.операции \ AIF \ Диспетчер очередей) Значение "/MyJournal/EmplId" не найдено в карте соответствия. Т.е. Ax для всех полей моей таблицы MyJournal, пытается найти соответствующий элемент в XSD, даже если я указал (в AifDataPolicy), что это поле выгружать не нужно. Дебагером нашел Table AifDataPolicy метод generateXsd X++: // Get the document class id and construct the // schema map that will be used to create the // endpoint schema. documentId = AifAction::getDocumentClassId(actionId); map = AifDataPolicySchemaMap::construct(documentId); while select IsRequired, IsEnabled, MaxStringLength from policy where policy.EndpointId == endpointId && policy.ActionId == actionId join xpath from documentField where documentField.RecId == policy.DocumentFieldRecId { // Lookup the data policy element // associated with the xpath. element = map.lookup(documentField.xpath); Копаю дальше, ага есть поле AifEndpointActionPolicy.DataPolicySynchronized т.е. мою схему нужно синхронизировать. Но как и где, не могу разобраться... И такое ощущение, что сбился я где-то значительно раньше... |
|
15.02.2012, 14:18 | #2 |
Участник
|
А вопрос такой, немного в бок - можно этот AIF прикрутить к Ax 3 ? Или оно исключительно NET сборки юзает?
__________________
Axapta 3.0 sp - хз какой, kr2 |
|
15.02.2012, 15:09 | #3 |
Administrator
|
Цитата:
Плюс у каждого объекта появился метод xml(), возвращающий представление этого объекта в xml-строке. Т.е. я не думаю, что это невозможно, ... но вопрос - какой ценой. В 3.0 ведь был Commerce Gateway - прародитель AIF. Может вместо переноса AIF - его как-то допилить... Опять-таки - вопрос цены.
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
16.02.2012, 08:38 | #4 |
Участник
|
Говорили мне родители, ляг поспи и все получится...
Особенность в моей выгрузке, что у меня есть внешняя XSD, по которой нужно настроить выгрузку. По умолчанию Ах, на основе AOT\Query\MyJournal сформировала класс AxMyJournal, где для каждого поля есть методы: parmNum, SetNum На основе этого система и создаст элемент в XML <Num> ххх </Num> поправил название методов: parmNum => parmNumber, setNum => setNumber Основное \ Настройка \ AIF \ Действия \ sendMyJournal - "Повторная регистрация" И наступило счастье... |
|
|
За это сообщение автора поблагодарили: S.Kuskov (5). |
Теги |
aif, ax4.0, xml, xsd |
|
|