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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.04.2011, 14:09   #1  
Sergikrus is offline
Sergikrus
Участник
 
82 / 15 (1) ++
Регистрация: 26.09.2008
Адрес: Tyumen
! AIF - AifFileSystemAdapter (импорт)
Здравствуйте!

Не могу решить проблемку. Нужно для обкатки AIF, импортировать номенклатуру из AX 2009 №1 в AX 2009 №2, соответственно с помощью AIF.

Номенклатура из AX 2009 №1 выгружается, тут проблем нет.

Теперь хочу импортировать эту номенклатуру в AX 2009 №2:
1. Создал "Локальную конечную точку"
2. Настроил "Адаптер транспортировки"
3. Создал "Канал" с направление "Входящий", указал путь к выгруженной номенклатуре из AX 2009 №1
4. Активировал "Службу AIF" InventItemService
5. Создал "Конечную точку" -> Политика действий: InventItemService.create (все поля, при выгрузке тоже все поля).
6. Выполняю Job:


X++:
static void AifInboundProcessing(Args _args)
{
    AifInboundProcessingService inbound = new AifInboundProcessingService();
    AifGatewayReceiveService send = new AifGatewayReceiveService();
    ;
    
    send.run();
    inbound.run();
}
Результат:
Файл выгруженный из AX 2009 №1 удаляется(по логике так и должно быть), но номенклатура не создаётся.
Перехожу на форму "Основное -> Периодические операции -> AIF -> Исключения", вижу ошибку: Локальная конечная точка DIT не существует.

DIT, это "Конечная точка" в AX 2009 №1. Не долго думая, я пересоздал конечную точку в AX 2009 №2 и обозвал её именно DIT , конечно же я не рассчитывал что это поможет.

Подскажите, пожалуйста, как справиться с этой ошибкой, что от меня требует система, почему ей нужна именно эта конечная точка?

За ранее спасибо.
Старый 22.04.2011, 18:10   #2  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
Цитата:
Сообщение от Sergikrus Посмотреть сообщение
Не долго думая, я пересоздал конечную точку в AX 2009 №2 и обозвал её именно DIT , конечно же я не рассчитывал что это поможет.
Результат переименования конечной точки озвучь более конкретно: импорт после этого был успешно сделан или нет...
__________________
Ален ноби, ностра алис.
Что означает - если один человек построил, другой завсегда разобрать может.
Старый 25.04.2011, 07:25   #3  
Sergikrus is offline
Sergikrus
Участник
 
82 / 15 (1) ++
Регистрация: 26.09.2008
Адрес: Tyumen
Нет!
Ошибка: Локальная конечная точка DIT не существует

Последний раз редактировалось Sergikrus; 25.04.2011 в 08:13.
Старый 25.04.2011, 09:49   #4  
Evgeniy_R is offline
Evgeniy_R
Участник
 
27 / 17 (1) ++
Регистрация: 03.11.2010
Адрес: Moscow Region
Какие у тебя настройки в форме Конечные точки?
Должно быть так:
Путь: Основное/Настройка/AIF/Конечные точки.
• Процедура - входящее перемещение
o Конечная точка является источником
o Локальная конечная точка является назначением
• Процедура - исходящее перемещение
o Конечная точка является назначением
o Локальная конечная точка является источником
Действия:
• Задать конечную точку (Код, Имя)
• Выбрать локальную конечную точку
• Определить политику действий для выбранной конечной точки
Старый 25.04.2011, 10:47   #5  
Sergikrus is offline
Sergikrus
Участник
 
82 / 15 (1) ++
Регистрация: 26.09.2008
Адрес: Tyumen
Цитата:
Сообщение от Evgeniy_R Посмотреть сообщение
Какие у тебя настройки в форме Конечные точки?
Помоему всё так как вы сказали, но наверно опишу подробнее как есть у меня.

Настройки AIF в AX 2009 №1 (Выгрузка номенклатуры):

1. Локальные конечные точки:
Название: localendpoint.JPG
Просмотров: 2488

Размер: 16.7 Кб

2. Адаптеры транспортировки:
Название: adapter.JPG
Просмотров: 2076

Размер: 29.0 Кб

3. Каналы:
Нажмите на изображение для увеличения
Название: channel.JPG
Просмотров: 481
Размер:	47.1 Кб
ID:	6793

4. Конечные точки:
Название: endpoint.JPG
Просмотров: 2120

Размер: 43.9 Кб
Политика действий конечной точки:
Нажмите на изображение для увеличения
Название: politicalaction.JPG
Просмотров: 476
Размер:	46.3 Кб
ID:	6795
Ну и отметил галками какие поля выгрузать, отметил все.

Выгрузка:
1. На форме "Номенклатура", жму "Отправка по эл.почте"
2. Выбираю 1 номенклатуру, жму "Ок"
Нажмите на изображение для увеличения
Название: exportinventtable.JPG
Просмотров: 474
Размер:	107.7 Кб
ID:	6796
3. выполняю Job:
X++:
static void AifOutboundProcessing(Args _args)
{
    AifOutboundProcessingService outbound = new AifOutboundProcessingService();
    AifGatewaySendService send = new AifGatewaySendService();
    ;
    outbound.run();
    send.run();
}
Экспорт успешен:
Нажмите на изображение для увеличения
Название: file.JPG
Просмотров: 458
Размер:	31.1 Кб
ID:	6797

Настройки AIF в AX 2009 №2 (Импорт номенклатуры):

1. Локальные конечные точки:
Название: localendpoint.JPG
Просмотров: 2488

Размер: 16.7 Кб

2. Адаптеры транспортировки:
Название: adapter.JPG
Просмотров: 2076

Размер: 29.0 Кб

3. Каналы:
Нажмите на изображение для увеличения
Название: channel2.JPG
Просмотров: 461
Размер:	47.8 Кб
ID:	6798

4. Конечные точки:
Нажмите на изображение для увеличения
Название: endpoint2.JPG
Просмотров: 354
Размер:	42.4 Кб
ID:	6799
Политика действий конечной точки:
Нажмите на изображение для увеличения
Название: politicalaction2.JPG
Просмотров: 494
Размер:	47.3 Кб
ID:	6800
Отметил галками все поля, так как выгружал тоже все.

Импорт:
1. Выполнил Job:
X++:
static void AifInboundProcessing(Args _args)
{
    AifInboundProcessingService inbound = new AifInboundProcessingService();
    AifGatewayReceiveService send = new AifGatewayReceiveService();
    ;
    send.run();
    inbound.run();
}
Исключение:
Локальная конечная точка DIT не существует.
За это сообщение автора поблагодарили: mazzy (2).
Старый 25.04.2011, 11:17   #6  
Evgeniy_R is offline
Evgeniy_R
Участник
 
27 / 17 (1) ++
Регистрация: 03.11.2010
Адрес: Moscow Region
Хм...В политике действий вы используете только InventItemService.create?

Попробуйте еще использовать InventItemService.read при экспорте. а также задать "перекрытие внешенего кода": http://schemas.microsoft.com/InventItemService.create
Здесь играет роль только постфикс create. Выглядит странновато, но мне помогало.
Миниатюры
Нажмите на изображение для увеличения
Название: политика действий DIT.jpeg
Просмотров: 487
Размер:	169.9 Кб
ID:	6801  
Старый 25.04.2011, 11:17   #7  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
В каждой установке вам нужно создать по две конечные точки - одна ссылается на локальную точку (т.е. сама система), а вторая - это конечная точка, соответствующая другой установке AX. Например так:
1. AX1:
1.1. Локальная точка DAT.
1.2. Конечная точка AX1 со ссылкой на DAT.
1.3. Конечная точка AX2.

2. AX2:
2.1. Локальная точка DAT.
2.2. Конечная точка AX2 со ссылкой на DAT.
2.3. Конечная точка AX1.

В итоге при экспорте вы делается отправку в AX2. А при импорте вы делаете приемку от AX1.
__________________
Ivanhoe as is..
Старый 25.04.2011, 12:09   #8  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Я свое сообщение по ошибке удалил
__________________
Ivanhoe as is..
Старый 25.04.2011, 13:41   #9  
Sergikrus is offline
Sergikrus
Участник
 
82 / 15 (1) ++
Регистрация: 26.09.2008
Адрес: Tyumen
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Я свое сообщение по ошибке удалил
Повтори пожалуйста, я его не успел прочитать

Последний раз редактировалось Sergikrus; 25.04.2011 в 14:17.
Старый 25.04.2011, 17:05   #10  
Evgeniy_R is offline
Evgeniy_R
Участник
 
27 / 17 (1) ++
Регистрация: 03.11.2010
Адрес: Moscow Region
Примерный ответ Ivanhoe звучал так:
Для каждой Инсталляции AX нужно создать по 2 локальные конечные точки:
Out, In соответственно при экспорте из 1 инсталляции форма конечных точек
Будет как на Рис.Out

При импорте в инсталляции 2 форма конечных точек будет как на Рис. In.
Миниатюры
Нажмите на изображение для увеличения
Название: out.jpeg
Просмотров: 565
Размер:	94.3 Кб
ID:	6802   Нажмите на изображение для увеличения
Название: In.jpeg
Просмотров: 504
Размер:	93.3 Кб
ID:	6803  

За это сообщение автора поблагодарили: Sergikrus (1).
Старый 25.04.2011, 17:45   #11  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1255 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Я свое сообщение по ошибке удалил
Восстановил.

С Уважением,
Георгий
Старый 26.04.2011, 08:28   #12  
Sergikrus is offline
Sergikrus
Участник
 
82 / 15 (1) ++
Регистрация: 26.09.2008
Адрес: Tyumen
Предыдущие советы вроде бы помогли, но сейчас возникает новое исключение :

Сервиса с пространством имен = "http://schemas.microsoft.com/dynamics/2008/01/services" и внешним именем = "InventItemService не существует.

Служба такая включена.
Нажмите на изображение для увеличения
Название: services.JPG
Просмотров: 506
Размер:	43.2 Кб
ID:	6804

Что ещё мне нужно проверить, как найти причину данной ошибки?

Последний раз редактировалось Sergikrus; 26.04.2011 в 08:53.
Старый 26.04.2011, 10:03   #13  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
А вы привели текст ошибки полностью? Дело в том, что, допустим, кто-то настроил AIF правильно - он и не будет знать что такие ошибки бывают А по тексту ошибки хотя бы можно попробовать найти место в системе, где она выдается, и понять по контексту, чего же не хватает.
__________________
Ivanhoe as is..
Старый 26.04.2011, 10:40   #14  
Evgeniy_R is offline
Evgeniy_R
Участник
 
27 / 17 (1) ++
Регистрация: 03.11.2010
Адрес: Moscow Region
Дело в том, что AIF файл то сжирает,а в Диспетчере очередей помещает запись об ошибке ("пространство имен...") со ссылкой на журнал исключений.

Как вариант - попробуйте создать свои классы с помощью мастера.
Старый 27.04.2011, 13:29   #15  
Sergikrus is offline
Sergikrus
Участник
 
82 / 15 (1) ++
Регистрация: 26.09.2008
Адрес: Tyumen
Значит так :

1) Ошибка:
Сервиса с пространством имен = "http://schemas.microsoft.com/dynamics/2008/01/services" и внешним именем = "InventItemService не существует.

Причина:
в таблице AifService по критерию:

X++:
    select firstonly *
            from aifService
            where aifService.ExternalName == 'InventItemService'
            && aifService.Namespace == 'http://schemas.microsoft.com/dynamics/2008/01/services';
возвращает NULL

Решение: Значение атрибута ExternalName в таблице AifService привёл к значению InventItemService вместо ItemService

2) Ошибка:
Пользователь не авторизован для этой конечной точки.

Причина: так надо

Класс: AifRequestProcessor
X++:
 // Verifies that the current user has access to the service operation
static private void verifyRequestIsAllowed(AifMessage message)
{
    // #48319 - the sourceEndpointUser should always be equal to the currently logged in user.
    if(!isValidUser || ( message.sourceEndpointAxUserId() != curuserid()))
        //User is not authorized for this Endpoint.
        throw error(strfmt('SYS89826'));
}
Решение: Авторизовался в Windows, а затем и в AX 2009 под пользователем axservice

Добавил пользователя к конечной точке:
Нажмите на изображение для увеличения
Название: acess.JPG
Просмотров: 410
Размер:	50.6 Кб
ID:	6814

3) Ошибка:
Политика действий конечной точки не существует.

Причина:
Из 1 Ошибки видно, что имя запрашиваемого сервиса было ItemService вместо InventItemService, то соответственно и Действия называются ItemService.find вместо InventItemService.find

Решение:
Привел значения атрибута Name таблицы AifAction в соответствие к требуемым, тоесть вместо ItemService.find написал InventItemService.find и так далее.
Старый 27.04.2011, 13:39   #16  
Sergikrus is offline
Sergikrus
Участник
 
82 / 15 (1) ++
Регистрация: 26.09.2008
Адрес: Tyumen
Теперь мне не понятно как в выгружаемом xml документе:
X++:
<?xml version="1.0" encoding="UTF-8" ?> 
<Envelope xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/Message">
<Header> 
<MessageId>{03BC7142-4A2F-47BA-B9C5-0A748C3A97FA}</MessageId> 
<SourceEndpoint>In</SourceEndpoint> 
<DestinationEndpoint>Out</DestinationEndpoint> 
<Action>http://schemas.microsoft.com/dynamics/2008/01/services/InventItemService/find</Action> 
</Header>
<Action>http://schemas.microsoft.com/dynamics/2008/01/services/InventItemService/find</Action>

выгружать, со значением:

<Action>http://schemas.microsoft.com/dynamics/2008/01/services/InventItemService/create</Action>

так как, в AX 2009 №2 требуется импортировать выгруженую номенклатуру и требуется имено InventItemService/create

И соответственно получаю следущую ошибку:
Элемент "QueryCriteria" с пространством имен "http://schemas.microsoft.com/dynamic.../QueryCriteria" не найден. Строка 1, позиция 2.

Причина:
InventItemService/find требует в загаловке первый элемент QueryCriteria

Решение:
Подскажите пожалуйста решение
Старый 28.04.2011, 07:43   #17  
Sergikrus is offline
Sergikrus
Участник
 
82 / 15 (1) ++
Регистрация: 26.09.2008
Адрес: Tyumen
Решение найдено:
Прекрыл find в AX 2009 №1 (где выгружаем номенклатуру)
Нажмите на изображение для увеличения
Название: endpointover.JPG
Просмотров: 366
Размер:	53.7 Кб
ID:	6818

вот этой строкой:
<Action>http://schemas.microsoft.com/dynamics/2008/01/services/InventItemService/create</Action>
Старый 21.03.2012, 05:42   #18  
kaw is offline
kaw
Участник
 
122 / 35 (2) +++
Регистрация: 23.03.2004
Адрес: Новосибирск
Скорее всего на форме "Действие", Вы создали запись вручную (без указания класса).
Регистрация желательно осуществлять по кнопке "Сканирование и регистрация",
система сканирует все классы, которые соответствуют стандарту AIf и автоматически добавляет в список доступных действий.

P.S. Если Вам нужно реализовать новый класс Aif, то можно
создать в AOT query (тип документов CustInvoiceJour и CustInvoiceLine), на его основе с помощью мастера сформировать классы для выгрузки Axd*. (Малость доработать напильником).
http://daxdave.blogspot.com/2006/10/...ion-entry.html
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.PNG
Просмотров: 582
Размер:	168.7 Кб
ID:	7649  

Последний раз редактировалось kaw; 21.03.2012 в 05:46.
Теги
aif, ax2009, как правильно, настройка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
daxdilip: How to: Configure Dynamics AX AIF Services to listen for SSL Requests (https) Blog bot DAX Blogs 0 23.01.2011 10:12
Dave: AIF Configuration and Additional Findings Blog bot DAX Blogs 1 04.11.2009 17:29
Dianne Siebold: AIF Top Ten Blog bot DAX Blogs 1 22.04.2008 11:19
Dave: Followup to AIF Configuration Entry Blog bot DAX Blogs 0 28.10.2006 19:01
Pokluda: Outbound web service (AIF) Blog bot DAX Blogs 0 28.10.2006 17:43

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

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

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