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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.01.2009, 11:45   #1  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Не то, но на всякий случай

Не корректно сохраняет запись в inventTable

Вдруг проблемы имеют общую или похожую причину.
__________________
С уважением,
glibs®
Старый 13.01.2009, 13:39   #2  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
К чему пришёл.
На тех записях recId в InventTableModule неправильный(две параллельных сессии запускал).
Т.е. при join-e система взяла к примеру 20 записей в InventTable, 3 по 20 InventTableModule и 20 InventItemLocation. Один recId из этих таблиц не правильный (взят не со своей записи). Такой состав из 100 вагонов только последний вагон не наш.
Как можно исправить
1) в методах validateWrite() этих датасорсов убрать
//inventItemLocation.ItemId = inventTable.ItemId;
Всё ok становиться. Только update сработает не для своей записи.
Следовательно не подходит.
У нас как раз и выходит та 20 запись recId не тот, ItemId не тот, но так как в validateWrite идёт подмена ItemId. То на момент update получается в системе две записи с одной и тойже номенклатурой, но с разными recId. Вот она на уровне индекса и ругается.
2) В методе active InventTable добавить
X++:
    purch_ds.reread();
    invent_ds.reread();
    sales_ds.reread();
    InventItemLocation_ds.reread();
Если хотя бы один из датасорсов коментируем, на этой таблице эта ошибка и возникает.
Конечно не правильно каждую раз перечитывать эти датасорсы, но лучше не нашёл.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
За это сообщение автора поблагодарили: George Nordic (1).
Старый 13.01.2009, 14:13   #3  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Не правильно написал.
На тестовом примере reread сработал, а на следующем нет.
Остановился на таком варианте в конец метода active датасорса InventTable
X++:
    if(inventTable.ItemId != purch.ItemId ||
       inventTable.ItemId != sales.ItemId ||
       inventTable.ItemId != invent.ItemId ||
       inventTable.ItemId != InventItemLocation.ItemId)
    {
        purch  = InventTableModule::find(inventTable.ItemId, ModuleInventPurchSales::Purch);
        invent = InventTableModule::find(inventTable.ItemId, ModuleInventPurchSales::Invent);
        sales  = InventTableModule::find(inventTable.ItemId, ModuleInventPurchSales::Sales);
        InventItemLocation  = InventItemLocation::find(inventTable.ItemId, InventDim::inventDimIdBlank());
    }
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 13.01.2009, 14:48   #4  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от miklenew Посмотреть сообщение
Не правильно написал.
На тестовом примере reread сработал, а на следующем нет.
Остановился на таком варианте в конец метода active датасорса InventTable
X++:
    if(inventTable.ItemId != purch.ItemId ||
       inventTable.ItemId != sales.ItemId ||
       inventTable.ItemId != invent.ItemId ||
       inventTable.ItemId != InventItemLocation.ItemId)
    {
        purch  = InventTableModule::find(inventTable.ItemId, ModuleInventPurchSales::Purch);
        invent = InventTableModule::find(inventTable.ItemId, ModuleInventPurchSales::Invent);
        sales  = InventTableModule::find(inventTable.ItemId, ModuleInventPurchSales::Sales);
        InventItemLocation  = InventItemLocation::find(inventTable.ItemId, InventDim::inventDimIdBlank());
    }
Может я конечно слишком настойчив, но теперь мне кажется ещё более очевидно, что эти 2 проблемы имеют общие корни (в какой-то момент неверно обновляется или вообще не обновляется приджойненный датасорс).
Обратите внимание именно на это сообщение, ну и предыдущие тоже.
Проблемы с отображением скл. аналитик
__________________
Zhirenkov Vitaly
За это сообщение автора поблагодарили: miklenew (4).
Старый 13.01.2009, 14:55   #5  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от ZVV Посмотреть сообщение
Может я конечно слишком настойчив, но теперь мне кажется ещё более очевидно, что эти 2 проблемы имеют общие корни
Похоже.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Поведение equal() метода в классе RunOn Server v3.0 SP4 Russland DAX: Программирование 7 15.11.2007 16:12
Поведение свойства Height в отчете KiselevSA DAX: Программирование 0 31.10.2006 15:32
Врем.табл.: поведение в 2-х и 3-х уровневой конф. Ser DAX: Программирование 12 21.12.2005 11:38
Непонятное поведение векторных полей в QueryBuildDataSource. Lemming DAX: Программирование 2 12.05.2005 17:43
Странное поведение резервирования после создания спланированной закупки. NEO DAX: Функционал 7 01.07.2004 14:03

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

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

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