|
|
|
Сложение ячеек в массиве.
|
|||
|---|---|---|---|
|
#18+
Есть массив данных, данные туда попадают, насколько я понимаю, след образом: PARAMETERS _t1, _s1, _t2, _s2, _t3, _s3, _t4, _s4, _t5, _s5, _n1, _n2, _n3, _n4, _n5 Local is_ok, j _s1= round (_s1, 2) _s2= round (_s2, 2) _s3= round (_s3, 2) _s4= round (_s4, 2) _s5= round (_s5, 2) _apay_sum= iif (r_request.vip_date<>0, round(pay.sum_all,2), round (_s1 + _s2 + _s3 + _s4 + _s5, 2) _cash=.T. if used("max_n_account") select max_n_account use endif use max_n_account in 0 _max_n_account=IIF( isnull(max_n_account.max_num), 0, max_n_account.max_num) select r_payment insert into r_payment (reg_num, date_deliv, n_account, sum_all, ; t1, s1, t2, s2, t3, s3, t4, s4, t5, s5,; n1, n2, n3, n4, n5); values (r_request.reg_num, date(), _max_n_account+1, _apay_sum,; _t1, _s1, _t2, _s2, _t3, _s3, _t4, _s4, _t5, _s5,; _n1, _n2, _n3, _n4, _n5 ) _is_ok = tableupdate() j=1 потом на основе этого массва формируется счет-фактура с данными... ____________________________________________________________ dimension _apay(30,9) local _kn, _sq public _n_act, vip_date local _s for i=1 to 30 _apay(i,1)="" _apay(i,2)=0 _apay(i,3)=0 _apay(i,4)=0 _apay(i,5)="" _apay(i,6)=0 _apay(i,7)=0 _apay(i,8)="" _apay(i,9)=0 endfor * 1- наименование * 2- тип * 3- сумма * 4- сумма с 5% * 5- код операции (строка) * 6- сумма без НДС * 7- Сумма НДС * 8- единица измерений * 9- количество _kn=1+NP/100 _sq=alltr(str(r_request.quickly)) if r_payment.t1<=MaxNumAction ********************************************************* if r_payment.n1>0 SELECT alltrim(Tarif.prn_pay)+is_prepayment(p.t1), p.t1, p.s1, p.s1*_kn, _sq+IIF(p.t1<10,'0','')+allt(str(p.t1)), 0, 0, tarif.ed_izm, p.n1; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t1; WHERE p.key_account = _key_account; UNION ALL; SELECT alltrim(Tarif.prn_pay)+is_prepayment(p.t2), p.t2, p.s2, p.s2*_kn, _sq+IIF(p.t2<10,'0','')+allt(str(p.t2)), 0, 0, tarif.ed_izm, p.n2; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t2; WHERE p.key_account = _key_account; UNION ALL; SELECT alltrim(Tarif.prn_pay)+is_prepayment(p.t3), p.t3, p.s3, p.s3*_kn, _sq+IIF(p.t3<10,'0','')+allt(str(p.t3)), 0, 0, tarif.ed_izm, p.n3; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t3; WHERE p.key_account = _key_account; UNION ALL; SELECT alltrim(Tarif.prn_pay)+is_prepayment(p.t4), p.t4, p.s4, p.s4*_kn, _sq+IIF(p.t4<10,'0','')+allt(str(p.t4)), 0, 0, tarif.ed_izm, p.n4; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t4; WHERE p.key_account = _key_account; UNION ALL; SELECT alltrim(Tarif.prn_pay)+is_prepayment(p.t5), p.t5, p.s5, p.s5*_kn, _sq+IIF(p.t5<10,'0','')+allt(str(p.t5)), 0, 0, tarif.ed_izm, p.n5; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t5; WHERE p.key_account = _key_account; INTO ARRAY _apay else ************************************************************************* _s='Доплата за срочность ' SELECT _s+Tarif.prn_pay, p.t1, p.s1, p.s1*_kn, _sq+IIF(p.t1<10,'0','')+allt(str(p.t1)), 0, 0, tarif.ed_izm, p.n1; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t1; WHERE p.key_account = _key_account; UNION ALL; SELECT _s+Tarif.prn_pay, p.t2, p.s2, p.s2*_kn, _sq+IIF(p.t2<10,'0','')+allt(str(p.t2)), 0, 0, tarif.ed_izm, p.n2; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t2; WHERE p.key_account = _key_account; UNION ALL; SELECT _s+Tarif.prn_pay, p.t3, p.s3, p.s3*_kn, _sq+IIF(p.t3<10,'0','')+allt(str(p.t3)), 0, 0, tarif.ed_izm, p.n3; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t3; WHERE p.key_account = _key_account; UNION ALL; SELECT _s+Tarif.prn_pay, p.t4, p.s4, p.s4*_kn, _sq+IIF(p.t4<10,'0','')+allt(str(p.t4)), 0, 0, tarif.ed_izm, p.n4; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t4; WHERE p.key_account = _key_account; UNION ALL; SELECT _s+Tarif.prn_pay, p.t5, p.s5, p.s5*_kn, _sq+IIF(p.t5<10,'0','')+allt(str(p.t5)), 0, 0, tarif.ed_izm, p.n5; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t5; WHERE p.key_account = _key_account; INTO ARRAY _apay endif ********************************************************* else ********************************************************* _s='Доплата' SELECT _s+Tarif.prn_pay, p.t1-MaxNumAction, p.s1, p.s1*_kn, _sq+IIF((p.t1-MaxNumAction)<10,'0','')+allt(str(p.t1-MaxNumAction)), 0, 0, "", 0; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t1-MaxNumAction; WHERE p.key_account = _key_account; UNION ALL; SELECT _s+Tarif.prn_pay, p.t2-MaxNumAction, p.s2, p.s2*_kn, _sq+IIF((p.t2-MaxNumAction)<10,'0','')+allt(str(p.t2-MaxNumAction)), 0, 0, "", 0; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t2-MaxNumAction; WHERE p.key_account = _key_account; UNION ALL; SELECT _s+Tarif.prn_pay, p.t3-MaxNumAction, p.s3, p.s3*_kn, _sq+IIF((p.t3-MaxNumAction)<10,'0','')+allt(str(p.t3-MaxNumAction)), 0, 0, "", 0; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t3-MaxNumAction; WHERE p.key_account = _key_account; UNION ALL; SELECT _s+Tarif.prn_pay, p.t4-MaxNumAction, p.s4, p.s4*_kn, _sq+IIF((p.t4-MaxNumAction)<10,'0','')+allt(str(p.t4-MaxNumAction)), 0, 0, "", 0; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t4-MaxNumAction; WHERE p.key_account = _key_account; UNION ALL; SELECT _s+Tarif.prn_pay, p.t5-MaxNumAction, p.s5, p.s5*_kn, _sq+IIF((p.t5-MaxNumAction)<10,'0','')+allt(str(p.t5-MaxNumAction)), 0, 0, "", 0; FROM Tarif INNER JOIN r_payment p; ON Tarif.kodop = p.t5-MaxNumAction; WHERE p.key_account = _key_account; INTO ARRAY _apay ********************************************************* endif local _nnn _len=alen(_apay,1) _nnn=IIF(_TALLY=0, 0, _len) _n_act=_len dimension _apay(15,9) if _len<15 for i=_len+1 to 15 _apay(i,1)="" _apay(i,2)=0 _apay(i,3)=0 _apay(i,4)=0 _apay(i,5)="" _apay(i,6)=0 _apay(i,7)=0 _apay(i,8)="" _apay(i,9)=0 endfor endif for i=1 to 15 _apay(i,3)=round(_apay(i,3),2) _apay(i,4)=round(_apay(i,4),2) _apay(i,6)=round(_apay(i,3)/(100+NDS)*100, 2) _apay(i,7)=_apay(i,3)-round(_apay(i,6), 2) if alltrim(_apay(i,8))="кв.м." _apay(i,8)="шт." endif if _apay(i,9)>1 _apay(i,6)=round(round(_apay(i,3)/_apay(i,9),2)/(100+NDS)*100,2)*_apay(i,9) _apay(i,7)=_apay(i,3)-round(_apay(i,6), 2) endif endfor *----------------------------------------------------------------------------- function is_prepayment parameters t local s s=IIF((t<13 and t<>10) or inlist(t,34,35,36,38,39)," (аванс)","") return s endfunc Необходимо сделать следующее чтобы при печати счета -факутуры выводились суммированные значения ячейки _apay (i,3), как это сделать ума не приложу... Если можно то подробно.. или дайте ссылочку на пример... Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2006, 16:28 |
|
||
|
Сложение ячеек в массиве.
|
|||
|---|---|---|---|
|
#18+
В Фоксе гораздо удобнее и проще работать с таблицами, а не с массивами. Делай выборку в таблицы, и жизнь станет намного проще. P.S. А как ты формируешь счет-фактуру? Фоксовский Report не работает с массивами. Неужели построчно выводишь в файл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2006, 17:25 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=254&tid=1591536]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 323ms |

| 0 / 0 |
