AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.02.2012, 12:02   #1  
kaw is offline
kaw
Участник
 
122 / 35 (2) +++
Регистрация: 23.03.2004
Адрес: Новосибирск
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  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
А вопрос такой, немного в бок - можно этот AIF прикрутить к Ax 3 ? Или оно исключительно NET сборки юзает?
__________________
Axapta 3.0 sp - хз какой, kr2
Старый 15.02.2012, 15:09   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от egorych Посмотреть сообщение
А вопрос такой, немного в бок - можно этот AIF прикрутить к Ax 3 ? Или оно исключительно NET сборки юзает?
В AIF очень много завязок на классы Xml*, которые добавили только в 4.0 в раздел \System Documentation\Classes.
Плюс у каждого объекта появился метод xml(), возвращающий представление этого объекта в xml-строке.
Т.е. я не думаю, что это невозможно, ... но вопрос - какой ценой. В 3.0 ведь был Commerce Gateway - прародитель AIF. Может вместо переноса AIF - его как-то допилить... Опять-таки - вопрос цены.
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: S.Kuskov (1).
Старый 16.02.2012, 08:38   #4  
kaw is offline
kaw
Участник
 
122 / 35 (2) +++
Регистрация: 23.03.2004
Адрес: Новосибирск
Говорили мне родители, ляг поспи и все получится...

Особенность в моей выгрузке, что у меня есть внешняя XSD, по которой нужно настроить выгрузку.
По умолчанию Ах, на основе AOT\Query\MyJournal сформировала класс AxMyJournal, где для каждого поля есть методы: parmNum, SetNum
На основе этого система и создаст элемент в XML <Num> ххх </Num>
поправил название методов: parmNum => parmNumber, setNum => setNumber
Основное \ Настройка \ AIF \ Действия \ sendMyJournal - "Повторная регистрация"

И наступило счастье...
За это сообщение автора поблагодарили: S.Kuskov (5).
Теги
aif, ax4.0, xml, xsd

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axinthefield: The AIF processing services used by each of the AIF adapters in AX 2009 Blog bot DAX Blogs 0 27.05.2011 05:12
Aku: Assistent für AIF-Dokumentendienste und Tabellen mit InventDimId Blog bot DAX Blogs 0 22.04.2011 17:11
daxdilip: How to: Configure Dynamics AX AIF Services to listen for SSL Requests (https) Blog bot DAX Blogs 0 23.01.2011 10:12
emeadaxsupport: Error when trying to register the AIF services - "Cannot create a record in Data Policy Schema Information (AifDocumentField)" Blog bot DAX Blogs 0 29.03.2010 21:05
Dianne Siebold: AIF Top Ten Blog bot DAX Blogs 1 22.04.2008 11:19

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:18.