ACP RECALC — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) (Новая страница: «ACP_RECALC - это программа из справочника R266 Пересчет счета-фактуры по RGNUM-y ACP_RECALC(Масси…») |
Hisava (обсуждение | вклад) м (→Текст) |
||
| Строка 3: | Строка 3: | ||
[[ACP_RECALC]](Массив RGNUM-ов) | [[ACP_RECALC]](Массив RGNUM-ов) | ||
= Текст = | = Текст = | ||
| − | Parameters rarr | + | '''Parameters''' rarr |
local ACP,i,kd,docs,arr_sum,ttl_sum,j,arr_names,sdb | local ACP,i,kd,docs,arr_sum,ttl_sum,j,arr_names,sdb | ||
sdb:=SaveStateDB() | sdb:=SaveStateDB() | ||
| Строка 40: | Строка 40: | ||
Next | Next | ||
RestStateDB(sdb) | RestStateDB(sdb) | ||
| + | |||
= Смотрите также = | = Смотрите также = | ||
[[Полезные функции]] | [[Полезные функции]] | ||
[[Функции Delphi]] | [[Функции Delphi]] | ||
Версия 09:11, 25 июля 2017
ACP_RECALC - это программа из справочника R266
Пересчет счета-фактуры по RGNUM-y
ACP_RECALC(Массив RGNUM-ов)
Текст
Parameters rarr
local ACP,i,kd,docs,arr_sum,ttl_sum,j,arr_names,sdb
sdb:=SaveStateDB()
ACP:=OpenChildDoc('ACP','1',)
For i:=1 to Len(rarr)
if Empty(rarr[i]); loop; end
(ACP)->(SetFilter('KINDDOC="ACP" .and. LVLNUM="1" .and. RGNUM="'+rarr[i]+'"'))
if Empty(acp) or (acp)->Eof() or Empty(kd:=(ACP)->CATTR1); loop; end
arr_names:=RET_NAKL_NAMES(kd) // Ради имени реквизита, в котором RGNUM счета фактуры
if Len(kd)>=4 //Есть ссылка на документ
ttl_sum:={0,0,0,0,0,0,0,0,0}
docs:=OpenChildDoc(SubStr(kd,1,3),SubStr(kd,4,1),)
if Empty(docs) or (docs)->Eof(); loop; end
(docs)->(SetFilter('KINDDOC="'+SubStr(kd,1,3)+'" .and. LVLNUM="'+SubStr(kd,4,1)+'" .and. '+arr_names[8]+'="'+(ACP)->RGNUM+'"'))
(docs)->(DBGoTop())
While (docs)->(!EoF)
arr_sum:=(docs)->(ACP_FROM_DOCS())
if (arr_sum[6]+arr_sum[8]+arr_sum[9])>0 or kd<>'MTR2'
For j:=1 to 9
ttl_sum[j]:=ttl_sum[j]+arr_sum[j]
Next
endif
(docs)->(DBSkip())
EndDo
(ACP)->(Add_Replace({||Field->ExtSum:=ttl_sum[1],;
Field->NDSSum:=ttl_sum[2],;
Field->Sum:=ttl_sum[3],;
Field->NSPSUM:=ttl_sum[4],;
Field->NATTR1:=ttl_sum[5],;
Field->NATTR2:=ttl_sum[6],;
Field->NATTR3:=ttl_sum[7],;
Field->NATTR4:=ttl_sum[8],;
Field->NATTR7:=ttl_sum[9]}))
MakePrvs(acp,,1)
endif
Next
RestStateDB(sdb)