Приём платежей через Почта Банк

Закрыто
Ternia
Администратор
Сообщения: 166
Зарегистрирован: 14 дек 2017, 16:24

Приём платежей через Почта Банк

Сообщение Ternia » 25 июл 2018, 13:44

Скопируйте нижеприведённый код и вставьте его в формулярный раздел с заменой как показано на скрине.
Раскладку клавиатуры следует включить в режиме РУС.

Изображение

Код: Выделить всё

*** ИМПОРТ *** ПОЧТА БАНК                       

УЧАСТОК="все участки"
СПИСОК=0
ЛицСчёт(0)
sele ЛицСчёт
inde on lic to tmp_lic

DirImp=ALLTRIM(s_org.dir_imp)

dat=1
do whil dat=1
	do datimp1
endd
=MESSAGEBOX("Приём платежей окончен!","",64,1500)

*** процедуры ***
proc datimp1
filb=sys(2000,DirImp+"*.csv")
IF LEN(ALLT(FILB))>0
	FILC=DirImp+ALLT(filb)
	do eee
	DELE FILE "&FILC"
ELSE 
	dat=0	
ENDI

proc eee

CREATE TABLE tmp_xls (txt c(250) NULL, lic c(10), summ n(12,2))
sele tmp_xls

#Define xlCenter          -4108            
#Define xlSolid               1  
#Define xlEdgeLeft            7  
#Define xlEdgeTop             8  
#Define xlEdgeBottom          9  
#Define xlEdgeRight          10  
#Define xlInsideVertical     11  
#Define xlInsideHorizontal   12  
#Define xlThin                2  
#Define xlThick               4  
#Define xlMedium          -4138  
#Define xlDouble          -4119  
Local lcPath, loExcel, lnRow  
loExcel = Createobject("Excel.Application")  

With loExcel  
    .Visible = .t.  
    .WorkBooks.open("&FILC") 
	.sheets(1).select
	REESTR=str(.cells(1,2).Value,12)
	REESTR=allt(REESTR)
	DATE_R=.cells(2,2).Value

	for i=5 to 999
		ttt=.cells(i,1).Value
		ttt=allt(ttt)
		if left(ttt,3)="Общ"
			i=1000
		else
			sele tmp_xls
			appe blank
			repl tmp_xls.txt with ttt
		endi
	endf
    .WorkBooks.close() 
    .quit 
Endwith 
sele tmp_xls
scan
	P1=AT(',"',tmp_xls.txt,1)
	P2=AT(',"',tmp_xls.txt,2)+2
	P3=AT(',"',tmp_xls.txt,3)
	repl tmp_xls.lic with allt(left(tmp_xls.txt,P1-1))
	ttt=SUBSTR(tmp_xls.txt,P2,P3-P2-1)
	ttt=strtr(ttt,",",".")
	repl tmp_xls.summ with val(ttt)
ends

СТРАНИЦА(0,15,10,10,10,"txt1")           && СТРАНИЦА(A,B,C,D,E) , где A (0-книга/1-альбом), ПОЛЯ в мм: B-левое, C-верхнее, D-правое, E-нижнее
@PROW(), 0 say " \par \f0 Приём оплаты через "+allt(s_org.nam_org)+" "+REESTR
@PROW(), 0 say " \par \fs16 "
ssum=0
sele tmp_xls
scan
	if val(tmp_xls.lic)>0
		лс=right(allt(tmp_xls.lic),6)	
		ty=year(DATE_R)
		tm=month(DATE_R)
		if tm=1
			tm=12
			ty=ty-1
		else
			tm=tm-1
		endi
		
@PROW(), 0 say " \par  л/с "+лс+" "+SPACE_HOM(str(tmp_xls.summ,12,2),10)

		t4=val(right(лс,5))
		sele ЛицСчёт
		seek t4
		if found()
			T2=VAL(LEFT(лс,1))
			_m_fo=DBF_NAM(t4,"OPL",1,2)
			SELECT 0
			use &_m_fo ALIAS ТабОплата
			SET ORDER TO 1
			a=SYS(2015)
			b=1
			DO whil b=1
				SEEK a
				IF ! FOUND()
					b=0
				ENDIF
				a=SYS(2015)
			endd
			=add()
			REPLACE lic WITH t4, cod_opl WITH a, cod_grp WITH t2, nmes WITH tm, year WITH ty
			REPLACE summ WITH tmp_xls.summ, d_opl WITH DATE_R, cod_org WITH s_org.cod_org, prot WITH REESTR
			use
		else
@PROW(), 0 say " ОШИБКА!"
		endi
			ssum=ssum+tmp_xls.summ
	endi
ends
use
@PROW(), 0 say " \par \fs24 "
@PROW(), 0 say " \par Итого на сумму:"+str(ssum,12,2)

ПЕЧАТЬ("txt1")                            &&Вывод формы
=MESSAGEBOX("Продолжить приём","",64)

******* КОНЕЦ КОДА *************************************

Закрыто