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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.06.2010, 18:51   #1  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,160 / 1289 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от propeller Посмотреть сообщение
Нет, флаг не стоит
Цитата:
Сообщение от propeller
Запись эта находится в консолидирующей компании.
В Аксе есть четкое определение консолидирующей компании, если флаг не стоит, то это с точки зрения Аксы не является консолидирующей компанией, поэтому расскажи ,что значит консолидирующая компания с вашей точки зрения - стандарт, судя по всему, к вам не относится.
Ну и "код в студию". Подробности опусти, начни с места changeCompany, заполение полей, за исключением ключевых опусти, приведи только ключевые поля и места, где заполняются ключевые поля. При этом покажи как обнуляются переменные при смене компании (то есть, есть ли конструкции типа custVend = null и т.п.)
Старый 06.06.2010, 19:10   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,160 / 1289 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Кстати. Для Ax30 была рекомендация при смене компании обнулять переменную, то есть, делать что-то подобное:
X++:
changeCompany('XXX') {
{
    custTable = null;
}
В DAX4 часто этого недостаточно. Если только что искали запись по коду и после этого переключились в другую компанию и ищем по тому же коду, то обнуление переменной может не сработать!!! Как-то странно работает кэш. Не знаю как в 2009, но в DAX4 кроме обнуления переменной нужно еще запретить кеширование, то есть делать что-то подобное:
X++:
changeCompany('XXX') {
{
    custTable = null;
    custTable.disabeCash(true);
}
Причем, обнаружил эту особенность на таблице InventTrans, которая вообще не кэшируется! Получилось так, что в результате работы механизма Интеркомпани - получлось так, что лот в одной компании (по которому только что был произведен поиск, совпал с лотом в другой компании, для которой ищем лот). Если в одной компании нашли лот, то после переключения на другую компанию этот лот не ищется, а возвращается запись из первой компании!!!
После этого взял в привычку после переключения компаний запрещать кеширование. В нашем коде нет проблем, а в стандартном делам это по мере обнаружения проблем. Так что, залезь в код импорта и вставиь в нужные места для переменной записи перед её заполнением .disableCash(true).
Старый 06.06.2010, 19:25   #3  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,160 / 1289 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Для примера, работал примерно такой код:
X++:
InventTrans inventTrans;
InvenTrans inventTransNew;
InventTransId transId = 'Скл000001';
// Работеем в компании AAA
X++:
select firstOnly inventTrans where inventTrans.InventTransId == transId;
if (inventTrans )
{
    changeCompany('BBB')
    {
        inventTransNew = null; 
        select firstOnly inventTransNew where inventTransNew.InventTransId == transId;
    }
}
Лот с номером ''Скл000001' есть как в компании AAA, так и в компании BBB. В вышеприведеном коде в inventTransNew попадала та же запись, что и в inventTrans!!!
Если же запретить кэш:
X++:
select firstOnly inventTrans where inventTrans.InventTransId == transId;
if (inventTrans )
{
    changeCompany('BBB')
    {
        inventTransNew = null; 
        inventTransNew .disableCach(true);
        select firstOnly inventTransNew where inventTransNew rans.InventTransId == transId;
    }
}
то в компании BBB находилась запись именно этой компании, а не AAA.
Так что начиная с DAX4.0 затим нужно следить не только в своем коде, но и в стандартнм.

Последний раз редактировалось Raven Melancholic; 06.06.2010 в 19:28.
Старый 07.06.2010, 09:36   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,889 / 3165 (113) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Причем, обнаружил эту особенность на таблице InventTrans, которая вообще не кэшируется! Получилось так, что в результате работы механизма Интеркомпани - получлось так, что лот в одной компании (по которому только что был произведен поиск, совпал с лотом в другой компании, для которой ищем лот). Если в одной компании нашли лот, то после переключения на другую компанию этот лот не ищется, а возвращается запись из первой компании!!!
После этого взял в привычку после переключения компаний запрещать кеширование. В нашем коде нет проблем, а в стандартном делам это по мере обнаружения проблем. Так что, залезь в код импорта и вставиь в нужные места для переменной записи перед её заполнением .disableCash(true).

Судя по описанным симптомам, могло повлиять вот это :
Глюки RecordViewCache

Правда у меня все это воспроизводилось в Ax 3.0
Для 4-ки не проверял.
Теги
changecompany, импорт данных, кэш

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Курсор перешел к следующей записи на клиенте, на сервере этого сделать уже нельзя PavelSR DAX: Программирование 22 01.11.2012 07:33
Частичный возврат по позиции отгруженой в уже закрытый период... Dronas DAX: Программирование 0 02.08.2007 11:10
Уже существует проводка за более позднюю дату rus_stas DAX: Функционал 2 09.11.2004 20:17
Переход на правильную запись при Переходе к основной таблице. - 2 Anais DAX: Программирование 2 01.11.2004 17:14
Product Builder: "Модель продукции не существует" Hamster DAX: Функционал 4 17.03.2004 17:46

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:23.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.