powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сложение ячеек в массиве.
2 сообщений из 2, страница 1 из 1
Сложение ячеек в массиве.
    #33763926
escap3r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть массив данных, данные туда попадают, насколько я понимаю, след образом:
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), как это сделать ума не приложу...
Если можно то подробно.. или дайте ссылочку на пример...
Спасибо
...
Рейтинг: 0 / 0
Сложение ячеек в массиве.
    #33764139
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В Фоксе гораздо удобнее и проще работать с таблицами, а не с массивами. Делай выборку в таблицы, и жизнь станет намного проще.

P.S. А как ты формируешь счет-фактуру? Фоксовский Report не работает с массивами. Неужели построчно выводишь в файл?
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сложение ячеек в массиве.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]