Спасибо всем кто помог, все прекрасно работает за одним маленьким исключением. Номера партий генерятся в какой-то странной нумерации (просто присваивается номер 201, 202... и так далее). Хотелось бы чтоб генерировался в стандартной функциональности для настроек, например дата + номер лота... Исследовал класс InventUpd_Estimated и метод updateAutoDimBatchId и взял кусок из него. Заменил вызов numberSeq.num() на inventNumGroup.buildNumber. Но у меня почемуто выдает при созданнии партии ее текущий номер, а не следующий. Может у меня в коде что-то не так? Привожу пример кода
PHP код:
void run()
{
InventTrans inventTransCopy;
NumberSeq numberSeq = NumberSeq::newGetNum(InventParameters::numRefInventBatchSerialId());
InventDim masterInventDim, tmpInventDim;
InventBatch masterInventBatch, tmpInventBatch;
// -->
inventNumGroup inventNumGroup;
// <--
;
setPrefix(InventTransSplit::description());
try
{
ttsbegin;
if (!this.validate())
throw error("@SYS18447");
select forupdate inventTransCopy
index hint RecId
where inventTransCopy.recId== inventTrans.recId;
if (!inventTransCopy.checkIsChanged(inventTrans))
throw error("@SYS18447");
masterInventDim = inventTransCopy.inventDim();
masterInventBatch = InventBatch::find(masterInventDim.inventBatchId, inventTransCopy.ItemId);
tmpInventBatch.data(masterInventBatch);
//tmpInventBatch.inventBatchId = numberSeq.num();
inventNumGroup = inventNumGroup::find(inventTransCopy.inventMovement().inventTable().batchNumGroupId);
tmpInventBatch.inventBatchId = inventNumGroup.buildNumber(inventTransCopy.inventMovement(), typeId2ExtendedTypeId(typeId(InventBatchId)));
tmpInventBatch.initFromInventMovement(inventTransCopy.inventMovement());
tmpInventBatch.prodDate = inventTransCopy.purchLine().M069_prodDate;
tmpInventBatch.expDate = inventTransCopy.purchLine().M069_expDate;
tmpInventBatch.insert();
masterInventDim.inventBatchId = tmpInventBatch.inventBatchId;
tmpInventDim = InventDim::findOrCreate(masterInventDim);
inventTransCopy.updateSplit(splitQty);
inventTransCopy.inventDimId = tmpInventDim.InventDimId;
inventTransCopy.update();
updRecId = inventTransCopy.recId;
ttscommit;
}
catch (Exception::Deadlock)
{
retry;
}
}