Все разобрался я с двойным вызовом метода.
Теперь встала другая проблема.
Метод отрабатвает на форме(PurchTable) и после его завершения становиться невозможным переход по строкам закупки.
PHP код:
edit FreeText GetFactorySerial(boolean set, FreeText Txt = FactorySerial.text() )
{
InventSerial inventSerial;
Dialog dialog = new Dialog("×òî íåîáõîäèìî ñäåëàòü");
FreeText ret = "";
;
if (set)
{
dialog.addText("Ñîçäàòü âíóòðåííèé íîìåð?");
if( dialog.run() )
{
select firstfast inventSerial
where inventSerial.FactorySerial == Txt;
if( inventSerial.RecId != 0 )
{
setprefix(funcname());
throw error(strfmt("Çàâîäñêîé íîìåð %1 óæå åñòü â ñèñòåìå",Txt));
}
ret = Txt;
if( PurchLine.RecId != 0 )
{
ttsbegin;
select forupdate firstonly inventDim
where inventDim.inventDimId == purchLine.InventDimId;
select firstonly inventSerial
where (inventSerial.InventSerialId == inventDim.inventSerialId)&&(inventSerial.ItemId == PurchLine.ItemId);
if (InventSerial)
{
select forupdate firstonly inventSerial
where (inventSerial.InventSerialId == inventDim.inventSerialId)&&(inventSerial.ItemId == PurchLine.ItemId);
inventSerial.InventSerialId = inventSerial.InventSerialNum(PurchLine.ItemId);
inventSerial.FactorySerial = Txt;
inventDim.inventSerialId = inventSerial.InventSerialId;
inventDim.update();
inventSerial.update();
}
else
{
inventSerial.InventSerialId = inventSerial.InventSerialNum(PurchLine.ItemId);
inventSerial.FactorySerial = Txt;
inventSerial.ItemId = PurchLine.ItemId;
inventDim.inventSerialId = inventSerial.InventSerialId;
inventSerial.insert();
inventDim.update();
}
ttscommit;
}
else
{
ttsbegin;
select forupdate firstonly inventDim
where inventDim.inventDimId == purchLine.InventDimId;
inventSerial.ItemId = PurchLine.ItemId;
inventSerial.InventSerialId = inventSerial.InventSerialNum(PurchLine.ItemId);
inventSerial.FactorySerial = Txt;
inventDim.inventSerialId = inventSerial.InventSerialId;
inventSerial.insert();
inventDim.update();
ttscommit;
}
}
else
{
ret = "";
}
return ret;
}
else
{
select firstonly inventSerial
where (inventSerial.InventSerialId == inventDim.inventSerialId)&&(inventSerial.ItemId == PurchLine.ItemId);
return inventSerial.FactorySerial;
}
}