Показать сообщение отдельно
Старый 01.03.2005, 12:38   #5  
bagyr is offline
bagyr
Участник
 
74 / 10 (1) +
Регистрация: 15.02.2005
Адрес: Томск
PHP код:
void clicked()
{
    
// 3 вида сложности полуфабрикатов:
    // 0 - полуфабрикат производится только из сырья
    // 1 - полуфабрикат производится из сырья и самого себя
    // 2 - полуфабрикат производится из сырья и/или самого себя и/или других полуфабрикатов,
    //      участвует в производсве других полуфабрикатов, в т.ч. из которых сделан полуфабрикат

    // эта процедура расчёта полуфабрикатов сложности 0

    
Doc_kmp_prod dkp;
    
Kmp_prod kp;
    
Cust_Dep_Tmp cdt;
    
Cust_Prime_Price cpp1cpp2;
    
Cust_Half_Tmp cht;
    
real rsk;
    
str 10 s1;
    
RGUID r1;
    
int b;
    ;
    
super();

    
// расчёт себестоимости полуфабрикатов

    // создание расходной части
    
while select ID from cdt
        group by ID
    join Id_Type_Document from dkp
        group by Id_Type_Document
        where dkp
.Id_Org == cdt.RGUID
            
&& dkp.Id_Type_Document == 8
            
&& dkp.Date_Doc >= str2date("01/10/2004"123)
            && 
dkp.Date_Doc <= str2date("31/10/2004"123)
    
join Id_Productionsum(Kol), Id_Prod_Part from kp
        group by Id_Production
Id_Prod_Part
        where kp
.Id_Doc == dkp.Id_Doc
    join Cust_Price from cpp1
        group by Cust_Price
        where cpp1
.Deport == cdt.ID
            
&& cpp1.Id_stuff == kp.Id_Production
    join Half from cht
        group by Half
        where cht
.Half == kp.Id_Prod_Part
    
{
        
cpp2.Deport cdt.ID;
        
cpp2.Calc_Month str2date("01/10/2004"123);
        
cpp2.Id_Production kp.Id_Prod_Part;
        
cpp2.Id_stuff kp.Id_Production;
        
cpp2.Quantity kp.Kol;
        
cpp2.Prime_price cpp1.Cust_price;
        
cpp2.Cust_price cpp1.Cust_price;
        
cpp2.insert();
    }

    
// создание приходной части
    
while
        
select ID from cdt
            group by ID
        join Id_Type_Document from dkp
            group by Id_Type_document
            where dkp
.Org_Id_Org == cdt.RGUID
                
&& dkp.Id_Type_Document == 7
                
&& dkp.Date_Doc >= str2date("01/10/2004"123)
                && 
dkp.Date_Doc <= str2date("31/10/2004"123)
        
join Id_Productionsum(Kolfrom kp
            group by Id_Production
            where kp
.Id_Doc == dkp.Id_Doc
        join Half from cht
            group by Half
            where cht
.Half == kp.Id_Production
    
{
        
// вычислили полуфабрикат, перебираем и суммируем сырьё
        
0;
        
0;
        
s1 cdt.ID;
        
r1 kp.Id_Production;
        
kp.Kol;
        while 
select QuantityCust_price from cpp1
            where cpp1
.Deport == s1
                
&& cpp1.Calc_Month == str2date("01/10/2004"123)
                && 
cpp1.Id_Production == r1
                
&& cpp1.Id_stuff != 0
        
{
            
cpp1.Quantity cpp1.Cust_price;
            
cpp1.Quantity;
        }
        
cpp2.clear();
        
cpp2.initValue();
        
cpp2.Deport s1;
        
cpp2.Calc_Month str2date("01/10/2004"123);
        
cpp2.Id_Production r1;
        
cpp2.Id_stuff 0;
        
cpp2.Quantity k;
        if (
s==0)
        {
            
cpp2.Prime_price 0;
            
cpp2.Cust_price 0;
        }
        else
        {
            
cpp2.Prime_price r/s;
            
cpp2.Cust_price r/s;
        }
        
cpp2.insert();

        
cpp2.clear();
        
cpp2.initValue();
        
cpp2.Deport s1;
        
cpp2.Calc_Month str2date("01/10/2004"123);
        
cpp2.Id_Production 0;
        
cpp2.Id_stuff r1;
        
cpp2.Quantity k;
        if (
s==0)
        {
            
cpp2.Prime_price 0;
            
cpp2.Cust_price 0;
        }
        else
        {
            
cpp2.Prime_price r/s;
            
cpp2.Cust_price r/s;
        }
        
cpp2.insert(); // после выполнения этого шага возникает ошибка
    
}