PHP код:
void clicked()
{
// 3 вида сложности полуфабрикатов:
// 0 - полуфабрикат производится только из сырья
// 1 - полуфабрикат производится из сырья и самого себя
// 2 - полуфабрикат производится из сырья и/или самого себя и/или других полуфабрикатов,
// участвует в производсве других полуфабрикатов, в т.ч. из которых сделан полуфабрикат
// эта процедура расчёта полуфабрикатов сложности 0
Doc_kmp_prod dkp;
Kmp_prod kp;
Cust_Dep_Tmp cdt;
Cust_Prime_Price cpp1, cpp2;
Cust_Half_Tmp cht;
real r, s, k;
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_Production, sum(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_Production, sum(Kol) from 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
{
// вычислили полуфабрикат, перебираем и суммируем сырьё
r = 0;
s = 0;
s1 = cdt.ID;
r1 = kp.Id_Production;
k = kp.Kol;
while select Quantity, Cust_price from cpp1
where cpp1.Deport == s1
&& cpp1.Calc_Month == str2date("01/10/2004", 123)
&& cpp1.Id_Production == r1
&& cpp1.Id_stuff != 0
{
r = r + cpp1.Quantity * cpp1.Cust_price;
s = s + 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(); // после выполнения этого шага возникает ошибка
}
}