ACP RECALC — различия между версиями

Материал из Фабиус wiki
Перейти к: навигация, поиск
м (Текст)
м
 
Строка 2: Строка 2:
 
  Пересчет счета-фактуры по RGNUM-y
 
  Пересчет счета-фактуры по RGNUM-y
 
[[ACP_RECALC]](Массив RGNUM-ов)
 
[[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)
 
 
 
= Смотрите также =
 
= Смотрите также =
 
[[Полезные функции]]
 
[[Полезные функции]]
  
 
[[Функции Delphi]]
 
[[Функции Delphi]]

Текущая версия на 09:11, 26 декабря 2018

ACP_RECALC - это программа из справочника R266

Пересчет счета-фактуры по RGNUM-y

ACP_RECALC(Массив RGNUM-ов)

Смотрите также

Полезные функции

Функции Delphi