25.03.2005, 08:29 | #1 |
Участник
|
Обезличивание аналитики "Партия"
Приветствую всех!
Создано большое количество складских переносов с головного склада на региональные склады и магазины. По готовой продукции ведется аналитика "Партия". Теперь есть потребность обезличить партии на магазинах, т.е. предпологается обойти все строки InventDim по данному магазину и реальную партию заменить на обезличенную, а потом еще совпадающие аналитики объединить. Не могу понять, как можно этого добиться. Просто inventDim.InventBatchId вроде переделать нельзя. То что ниже написано вроде тоже не то, последнюу строку кода написал, но так и не понял. InventDim inventDim; InventDim inventDimShadow; InventBatch inventBatch; InventBatch inventBatchShadow; ; WHILE SELECT FORUPDATE inventDim WHERE inventDim.InventLocationId == _InventLocationId { // Если этот ИнвентДим уже с объединенной партией, то пропустить if(substr(inventDim.inventBatchId, 1, strlen(_AggregateMask)) == _AggregateMask) continue; // Найти партию к данному ИнвентДим SELECT FIRSTONLY inventBatch WHERE inventBatch.inventBatchId == inventDim.inventBatchId; if(!inventBatch) continue; // Найти объединенную партию, если не нашли то создать SELECT FIRSTONLY inventBatchShadow WHERE inventBatchShadow.inventBatchId == "Мг-" + inventBatch.itemId; if(!inventBatchShadow) { if(!_SilenceMode) info("Создание партии " + _AggregateMask + inventBatch.itemId); TTSBegin; inventBatchShadow.clear(); inventBatchShadow.initValue(); inventBatchShadow.itemId = inventBatch.itemId; inventBatchShadow.inventBatchId = _AggregateMask + inventBatch.itemId; inventBatchShadow.write(); TTSCommit; } // Найти объединенный ИнвентДим, если не нашли то создать inventDimShadow = InventDim::findDim(inventDim); inventDimShadow.InventBatchId = inventBatchShadow.inventBatchId; inventDimShadow = InventDim::findOrCreate(inventDimShadow); // Перенести ИнвентДим в объединенный if(!_SilenceMode) info(strfmt("Перенос данных из партии %1 в %2", inventDim.inventDimId, inventDimShadow.inventDimId)); inventDimShadow.merge(inventDim); } |
|