|
![]() |
#1 |
Участник
|
А вы привели текст ошибки полностью? Дело в том, что, допустим, кто-то настроил AIF правильно - он и не будет знать что такие ошибки бывают
![]()
__________________
Ivanhoe as is.. |
|
![]() |
#2 |
Участник
|
Дело в том, что AIF файл то сжирает,а в Диспетчере очередей помещает запись об ошибке ("пространство имен...") со ссылкой на журнал исключений.
Как вариант - попробуйте создать свои классы с помощью мастера. |
|
![]() |
#3 |
Участник
|
Значит так
![]() 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'; Решение: Значение атрибута 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')); } Добавил пользователя к конечной точке: 3) Ошибка: Политика действий конечной точки не существует. Причина: Из 1 Ошибки видно, что имя запрашиваемого сервиса было ItemService вместо InventItemService, то соответственно и Действия называются ItemService.find вместо InventItemService.find Решение: Привел значения атрибута Name таблицы AifAction в соответствие к требуемым, тоесть вместо ItemService.find написал InventItemService.find и так далее. |
|
![]() |
#4 |
Участник
|
Теперь мне не понятно как в выгружаемом 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/create</Action> так как, в AX 2009 №2 требуется импортировать выгруженую номенклатуру и требуется имено InventItemService/create И соответственно получаю следущую ошибку: Элемент "QueryCriteria" с пространством имен "http://schemas.microsoft.com/dynamic.../QueryCriteria" не найден. Строка 1, позиция 2. Причина: InventItemService/find требует в загаловке первый элемент QueryCriteria Решение: Подскажите пожалуйста решение ![]() |
|
![]() |
#5 |
Участник
|
Решение найдено:
Прекрыл find в AX 2009 №1 (где выгружаем номенклатуру) вот этой строкой: <Action>http://schemas.microsoft.com/dynamics/2008/01/services/InventItemService/create</Action> |
|
![]() |
#6 |
Участник
|
Всё вроде как работает, документ перемещается между двумя системами, но я наткнулся на удивительное по моему мнению исключение:
Получается, что я должен настроеть Номерную серию, но при этом смысл импорта теряется напрочь, какой смысл импортированой номенклатуры, если они будет иметь отличные значения от выгружаемых номенклатур. Помогите разобраться с этим исключением, существуют ли способы обхода? P.S. Конечно можно переписать проверку на номерную серию, но хочеться всё настроить с минимальной правкой кода. Последний раз редактировалось Sergikrus; 28.04.2011 в 10:04. |
|
![]() |
#7 |
Участник
|
По поводу перекрытия внешнего кода писал раньше.
Ругается на номерную серию именно из-за несоответствия форматов - они-то как раз должны быть одинаковыми. Единственное что меня смущает - это поле Следующий (NumberSequenceTable.Next) оно не обновится при импорте номенклатуры. Т.е. возможна ситуация, когда при импорте номенклатуры с ItemId = 000005 при текущем значении NumberSequenceTable.Next == ItemId, при создании номенклатуры в импортирующей базе будет вылезать ошибка = "...запись уже существует". Это будет продолжаться до тех пор, пока NumberSequenceTable.Next не станет больше ItemId - что, однако, произойдет при следующей попытке создания номенклатуры. Впринципе это не критично, но об этом не стоит забывать. |
|
![]() |
#8 |
Участник
|
Цитата:
Сообщение от Sergikrus
![]() ...
Получается, что я должен настроеть Номерную серию, но при этом смысл импорта теряется напрочь, какой смысл импортированой номенклатуры, если они будет иметь отличные значения от выгружаемых номенклатур. Помогите разобраться с этим исключением, существуют ли способы обхода? P.S. Конечно можно переписать проверку на номерную серию, но хочеться всё настроить с минимальной правкой кода.
__________________
Dynamics AX 4.0 SP2 |
|
Теги |
aif, ax2009, как правильно, настройка |
|
|