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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.04.2011, 10:03   #1  
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   #2  
Evgeniy_R is offline
Evgeniy_R
Участник
 
27 / 17 (1) ++
Регистрация: 03.11.2010
Адрес: Moscow Region
Дело в том, что AIF файл то сжирает,а в Диспетчере очередей помещает запись об ошибке ("пространство имен...") со ссылкой на журнал исключений.

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

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

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

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

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

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

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

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

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

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

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

Впринципе это не критично, но об этом не стоит забывать.
Старый 29.04.2011, 13:47   #8  
in.dc is offline
in.dc
Участник
 
29 / 53 (2) ++++
Регистрация: 09.04.2009
Цитата:
Сообщение от Sergikrus Посмотреть сообщение
...
Получается, что я должен настроеть Номерную серию, но при этом смысл импорта теряется напрочь, какой смысл импортированой номенклатуры, если они будет иметь отличные значения от выгружаемых номенклатур.

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

P.S. Конечно можно переписать проверку на номерную серию, но хочеться всё настроить с минимальной правкой кода.
А если в параметрах номерной серии номенклатуры принимающей Axapt'ы выставить настройку "Вручную"?
__________________
Dynamics AX 4.0 SP2
Теги
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, время: 21:37.