|
![]() |
#1 |
Member
|
Не то, но на всякий случай
Не корректно сохраняет запись в inventTable Вдруг проблемы имеют общую или похожую причину.
__________________
С уважением, glibs® |
|
![]() |
#2 |
Участник
|
К чему пришёл.
На тех записях 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). |
![]() |
#3 |
Участник
|
Не правильно написал.
На тестовом примере 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());
}
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
![]() |
#4 |
MCITP
|
![]() Цитата:
Сообщение от 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());
} Обратите внимание именно на это сообщение, ну и предыдущие тоже. Проблемы с отображением скл. аналитик
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: miklenew (4). |
![]() |
#5 |
Участник
|
Похоже.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
|
|