Сам метод работает таким образом:
X++:
public void ALA_InitSerialNum()
{
// <Talgat 22.02.2016 9:44>
PurchParmLine _purchParmLine;
PurchLine _purchLine;
InventDim _inventDim, _inventDimNew;
InventSerialId _inventSerialId;
InventLocationId _inventLocationId;
InventDimGroupId _dimGroupId;
//ConfigId _configId;
// </Talgat>
;
// <Talgat 22.02.2016 9:31>
ttsBegin;
while select forUpdate _purchParmLine
where _purchParmLine.ParmId == PurchParmTable.ParmId
{
_dimGroupId = InventTable::find(_purchParmLine.ItemId).DimGroupId;
if (ALA_DimGroupId::find(_dimGroupId).DimGroupId)
{
_inventDim = InventDim::find(_purchParmLine.InventDimId);
if (_inventDim)
{
if (!_inventDim.inventSerialId)
{
_inventLocationId = _inventDim.InventLocationId;
if (ALA_InventLocationId::find(_inventLocationId).InventLocationId)
{
_inventSerialId = InventSerial::findOrCreate(_purchParmLine.ItemId, _inventLocationId, PurchParmTable.TransDate).InventSerialId;
_inventDimNew = InventDim::find(_purchParmLine.InventDimId, true);
_inventDimNew.inventSerialId = _inventSerialId;
// if (!_inventDimNew.configId)
// {
// _configId = PurchLine::findRecId(_purchParmLine.PurchLineRecId).Dimension[5];
// _inventDimNew.configId = ConfigTable::findOrCreate(_purchParmLine.ItemId, _configId, PurchLine::findRecId(_purchParmLine.PurchLineRecId).PurchUnit).ConfigId;
// }
_purchParmLine.InventDimId = InventDim::findOrCreate(_inventDimNew).inventDimId;
_purchParmLine.update();
while select forUpdate _purchLine
where _purchLine.RecId == _purchParmLine.PurchLineRecId
{
_purchLine.InventDimId = _purchParmLine.InventDimId;
_purchLine.update();
}
}
}
}
}
}
ttsCommit;
// </Talgat>
}