Тема: Edit метод
Показать сообщение отдельно
Старый 16.06.2005, 12:02   #8  
Red Stranger is offline
Red Stranger
Участник
 
102 / 19 (1) ++
Регистрация: 01.04.2005
Все разобрался я с двойным вызовом метода.

Теперь встала другая проблема.
Метод отрабатвает на форме(PurchTable) и после его завершения становиться невозможным переход по строкам закупки.

PHP код:
edit FreeText GetFactorySerial(boolean setFreeText 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 != )
            {
               
setprefix(funcname());
                throw 
error(strfmt("Çàâîäñêîé íîìåð %1 óæå åñòü â ñèñòåìå",Txt));
            }


            
ret Txt;
             if( 
PurchLine.RecId != )
            {
                 
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;
    }