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
Просмотров: 2487

Размер: 16.7 Кб

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

Размер: 29.0 Кб

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

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

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

Выгрузка:
1. На форме "Номенклатура", жму "Отправка по эл.почте"
2. Выбираю 1 номенклатуру, жму "Ок"
Нажмите на изображение для увеличения
Название: exportinventtable.JPG
Просмотров: 472
Размер:	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
Просмотров: 456
Размер:	31.1 Кб
ID:	6797

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

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

Размер: 16.7 Кб

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

Размер: 29.0 Кб

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

4. Конечные точки:
Нажмите на изображение для увеличения
Название: endpoint2.JPG
Просмотров: 352
Размер:	42.4 Кб
ID:	6799
Политика действий конечной точки:
Нажмите на изображение для увеличения
Название: politicalaction2.JPG
Просмотров: 492
Размер:	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  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 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, 11:17   #7  
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
Просмотров: 481
Размер:	169.9 Кб
ID:	6801  
Старый 25.04.2011, 11:20   #8  
Evgeniy_R is offline
Evgeniy_R
Участник
 
27 / 17 (1) ++
Регистрация: 03.11.2010
Адрес: Moscow Region
"Не долго думая, я пересоздал конечную точку в AX 2009 №2 и обозвал её именно DIT , конечно же я не рассчитывал что это поможет."

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

Последний раз редактировалось Sergikrus; 25.04.2011 в 14:17.
Старый 25.04.2011, 17:05   #11  
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
Просмотров: 557
Размер:	94.3 Кб
ID:	6802   Нажмите на изображение для увеличения
Название: In.jpeg
Просмотров: 498
Размер:	93.3 Кб
ID:	6803  

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

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

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

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

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

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

Как вариант - попробуйте создать свои классы с помощью мастера.
Старый 27.04.2011, 13:29   #16  
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
Просмотров: 408
Размер:	50.6 Кб
ID:	6814

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

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

Решение:
Привел значения атрибута Name таблицы AifAction в соответствие к требуемым, тоесть вместо ItemService.find написал InventItemService.find и так далее.
Старый 27.04.2011, 13:39   #17  
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   #18  
Sergikrus is offline
Sergikrus
Участник
 
82 / 15 (1) ++
Регистрация: 26.09.2008
Адрес: Tyumen
Решение найдено:
Прекрыл find в AX 2009 №1 (где выгружаем номенклатуру)
Нажмите на изображение для увеличения
Название: endpointover.JPG
Просмотров: 364
Размер:	53.7 Кб
ID:	6818

вот этой строкой:
<Action>http://schemas.microsoft.com/dynamics/2008/01/services/InventItemService/create</Action>
Старый 28.04.2011, 09:42   #19  
Sergikrus is offline
Sergikrus
Участник
 
82 / 15 (1) ++
Регистрация: 26.09.2008
Адрес: Tyumen
Всё вроде как работает, документ перемещается между двумя системами, но я наткнулся на удивительное по моему мнению исключение:
Нажмите на изображение для увеличения
Название: exept_NumSeq.JPG
Просмотров: 469
Размер:	44.4 Кб
ID:	6819

Получается, что я должен настроеть Номерную серию, но при этом смысл импорта теряется напрочь, какой смысл импортированой номенклатуры, если они будет иметь отличные значения от выгружаемых номенклатур.

Помогите разобраться с этим исключением, существуют ли способы обхода?

P.S. Конечно можно переписать проверку на номерную серию, но хочеться всё настроить с минимальной правкой кода.

Последний раз редактировалось Sergikrus; 28.04.2011 в 10:04.
Старый 28.04.2011, 10:17   #20  
Evgeniy_R is offline
Evgeniy_R
Участник
 
27 / 17 (1) ++
Регистрация: 03.11.2010
Адрес: Moscow Region
По поводу перекрытия внешнего кода писал раньше.

Ругается на номерную серию именно из-за несоответствия форматов - они-то как раз должны быть одинаковыми. Единственное что меня смущает - это поле Следующий (NumberSequenceTable.Next) оно не обновится при импорте номенклатуры.

Т.е. возможна ситуация, когда при импорте номенклатуры с ItemId = 000005 при текущем значении NumberSequenceTable.Next == ItemId, при создании номенклатуры в импортирующей базе будет вылезать ошибка = "...запись уже существует".
Это будет продолжаться до тех пор, пока NumberSequenceTable.Next не станет больше ItemId - что, однако, произойдет при следующей попытке создания номенклатуры.

Впринципе это не критично, но об этом не стоит забывать.
Теги
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, время: 11:45.