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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.03.2008, 11:01   #1  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Проблема с поиском в InventTrans после changeCompany (DAX4)
Так получилось, что заказ на покупку и связанный заказ на продажу, созданный функционалом InterCompany в строке имеет одинаковый InventTransId.
В результате код в методе transfer класса InterCompanyTransferInventDim находит строку InventTrans из компании, в которой вызывается разноска заказа на продажу, а не в компании, содержащей закупку. Сам код (стандартный, мое только добавление с попыткой сбросить переменную):
X++:
    changecompany(_toDataAreaId)
    {
        setprefix(strfmt("@SYS93821",TradeInterCompany::curCompanyName()));

        // Попробуем сбросить переменную -->
        toInventTrans   = null;
        // Попробуем сбросить переменную <--

        toInventTrans  = InventTrans::findTransId(_toInventTransId);

        toEndpoint     = AifEndpoint::findInterCompany(fromValueMap.DataAreaId);
        if (toInventTrans.TransType == InventTransType::Sales)
            toValueMap = AifEndpointActionValueMap::find(toEndpoint.EndpointId, defaultSalesOrderAction);
        else
            toValueMap = AifEndpointActionValueMap::find(toEndpoint.EndpointId, defaultPurchaseRequisitionAction);
Проблема со строкой:
toInventTrans = InventTrans::findTransId(_toInventTransId);
Причем, для toValueMap находит нужную строку, хотя значение EndpointId есть и в исходной компании. Сама смена точно происходит (TradeInterCompany::curCompanyName() возвращает нужное значение).
Если в 3.0 были такие проблемы при работе прогресс-бара, то в чем проблема в моем случае? Может кто решал?
Старый 13.03.2008, 11:12   #2  
Yprit is offline
Yprit
Злыдни
Аватар для Yprit
Злыдни
 
419 / 93 (4) ++++
Регистрация: 22.02.2004
Адрес: СПб
Попробуйте сбросить табличную переменную до смены компании - так, во всяком случае, советуют делать в design pattern
Старый 13.03.2008, 11:35   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
В данном случае не имеет значение инициализирована табличная переменная toInventTrans в какой-либо компании или нет.
Смотрите в какой компании находитесь внути метода findTransId()
__________________
Axapta v.3.0 sp5 kr2
Старый 13.03.2008, 12:22   #4  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от AndyD Посмотреть сообщение
В данном случае не имеет значение инициализирована табличная переменная toInventTrans в какой-либо компании или нет.
Смотрите в какой компании находитесь внути метода findTransId()
В данном случае, действительно неважно сброшена или нет переменная, так как ей просто присваивается результат. Но пробовал и вместо findTransId писать select toInventTrans - результат тот же. Кстати, в findTransId нахожусь в нужной компании TS2.
Что интересно, профайлер MS SQL показывает, что не создается новый курсор, а используется созданный на предыдущем поиске в текущей компании, а в нем компания как раз TS1.
Может какие проблемы с настройками конкурентной модели? Включен режим оптимистичной конкуренции для таблиц.
Старый 13.03.2008, 12:28   #5  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
И еще что характерно: проблема проявляется если _fromInventTransId и _toInventTransId имеют одинаковые значения. Если они разные, то все отрабатывает как положено (включая то, что в MS SQL создаётся отдельный курсор).
Старый 13.03.2008, 12:36   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А у вас с кэшем на InventTrans никто не игрался?
Попробуйте его сбросить: toInventTrans.disableCache(true)
__________________
Axapta v.3.0 sp5 kr2
Старый 13.03.2008, 12:38   #7  
Yprit is offline
Yprit
Злыдни
Аватар для Yprit
Злыдни
 
419 / 93 (4) ++++
Регистрация: 22.02.2004
Адрес: СПб
А если ради эксперимента попробовать написать
X++:
toInventTrans.disableCache(true);
PS: уппс... опередили
Старый 13.03.2008, 13:10   #8  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Никто не успел бы поиграться. DAX4 недавно поставлена и никаких ползновений по изменению приложения пока не было. Сброс кэша не помог (попробовал и в InventTrans::findTransId и прямо в методе, заменяя findTransId на select)
Хорошо, что обнаружил в процессе придумывания схемы учета при переходе к четверке. Если не решится проблема, буду знать, что настраивать номерные серии для лотов нужно будет в разных компаниях с разными префиксами.
Старый 13.03.2008, 13:22   #9  
Yprit is offline
Yprit
Злыдни
Аватар для Yprit
Злыдни
 
419 / 93 (4) ++++
Регистрация: 22.02.2004
Адрес: СПб
А если этот кусок в джобик запихать - то что найдет?
Старый 13.03.2008, 13:35   #10  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от Yprit Посмотреть сообщение
А если этот кусок в джобик запихать - то что найдет?
Фантастика!
X++:
static void testChangeCompany(Args _args)
{
    InventTrans     inventTransTS1, inventTransTS2;
    ;

    changeCompany('ts1')
    {
        inventTransTS1 = InventTrans::findTransId('14265_059');
    }

    changeCompany('ts2')
    {
        setprefix(strfmt("@SYS93821",TradeInterCompany::curCompanyName()));
 
        inventTransTS2 = InventTrans::findTransId('14265_059');
    }

}
Находит то, что должен. А в коде класса InterCompanyTransferInventDim продолжает надо мной издеваться.
Старый 13.03.2008, 13:59   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,953 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
И еще что характерно: проблема проявляется если _fromInventTransId и _toInventTransId имеют одинаковые значения. Если они разные, то все отрабатывает как положено (включая то, что в MS SQL создаётся отдельный курсор).

А что в этом случае выдает метод InventTrans.wasCached() ?
Если он скажет что запись взята из кеша, то по идее вообще никакого запроса не должно уходить на SQL server.
Старый 13.03.2008, 14:02   #12  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,953 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Находит то, что должен. А в коде класса InterCompanyTransferInventDim продолжает надо мной издеваться.
А в ыне могли бы проверить не закеширована ли запись ?
Есть подозрение что там RecordViewCache влез.

В любом случае DisableCache(true);
спасет

смотите еще
Глюки RecordViewCache
Теги
ax3.0, ax4.0, cache, кэширование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Новый Sales Order через AxSalesTable, проблема с InventTrans Qaz Qwerty DAX: Программирование 6 22.10.2008 22:08
Проблема с Application после установки Kernel Rollup 1 polygris DAX: Программирование 18 07.02.2006 18:47
Проблема с лицензией, при загрузке, после ввода пороля появляется сообщение 3oppo DAX: Программирование 3 07.10.2005 08:01
Связь таблиц InventTrans и PurchLine Pustik DAX: Программирование 2 25.11.2004 12:23
Проблема с поиском во временной таблице JohNick DAX: Программирование 0 26.05.2004 10:56

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

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

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