Выписки на емайл через рс аларм
Сохранить в файлеОбсудить в форуме
Описание
отправка выписок на емайл по средствам рс аларм
Текст примера
import bankInter,param,alarms; var AccR = Tbfile ("account.dbt", "r", 4, "account.dbt", "bank.def"); var ДатаОтчета = {curdate}, start = False, StartDoc = False, Дебет = $0, Кредит = $0, DocR; var deb_corracc, bank_payer, payerMFO, kred_acc, kred_corracc, bank_receiver, receiverMFO, i,s; private record d (document); private record da (arhdoc); Macro Filtr(acc) if (Substr(acc,1,2)=="40") return True; end; return False; end; MACRO ШапкаПоСчету( Клиент, ЛицСчет, НазвСчета, Дата1, ДПД, Остаток, Апострофы, ПечатьОснования ) [$# Выписка по лицевому счету за ################### Клиент : # Лицевой счет: ######################### Наименование счета: # ДПД : ########## ]( AccR.rec.userfield2,Дата1:m, Клиент, ЛицСчет, НазвСчета, ДПД ); [ Входящий остаток пассив #################### ](abs(Остаток):a); [┌──┬─────┬─────────┬──────────────────────┬────────────────────┬────────────────────┐]; [│ВО│№ док│ БИК │ Счет │ Дебет │ Кредит │]; [├──┼─────┼─────────┼──────────────────────┼────────────────────┼────────────────────┤]; s=" Выписка по лицевому счету \n"; s=s+" за "+Дата1+"\n \n"; s=s+" Клиент : "+Клиент+"\n"; s=s+" Лицевой счет: "+ЛицСчет+"\n"; s=s+" Наименование счета: "+НазвСчета+"\n"; s=s+" ДПД : "+ДПД+"\n"; s=s+" Входящий остаток пассив "+abs(Остаток)+"\n"; s=s+"┌──┬─────┬─────────┬──────────────────────┬────────────────────┬────────────────────┐"+"\n"; s=s+"│ВО│№ док│ БИК │ Счет │ Дебет │ Кредит │"+"\n"; s=s+"├──┼─────┼─────────┼──────────────────────┼────────────────────┼────────────────────┤"+"\n"; END; Macro ВзятьДПД(account, dat); var Res = Tbfile ("restdate.dbt","r",0,"restdate.dbt", "bank.def"); res.rec.account = account; res.rec.code_Currency = 0; res.rec.Date_Carry = Dat; GetGE(res); prev(res); return res.rec.Date_Carry end; macro ИтогиЗаДень( Дебет, Кредит, Остаток) [├──┴─────┴─────────┴──────────────────────┼────────────────────┼────────────────────┤]; [│ Итог оборотов │####################│####################│] ( Дебет:a, Кредит:a ); [└─────────────────────────────────────────┴────────────────────┴────────────────────┘]; [ Исходящий остаток ####################│] ( abs(Остаток):a); [ Банк # ] ( {Name_Bank} ); s=s+"├──┴─────┴─────────┴──────────────────────┼────────────────────┼────────────────────┤"+"\n"; s=s+"│ Итог оборотов │"+string(дебет:20)+"│"+string(кредит:20)+"\n"; s=s+"└─────────────────────────────────────────┴────────────────────┴────────────────────┘"+"\n"; s=s+" Исходящий остаток "+abs(Остаток)+"\n"; s=s+{Name_Bank}; //submitm("security@taatta.ru",s); submitm("AccR.rec.userfield2",s); END; MACRO ПечатьДокумента( doc, ДК ) var СуммаНулевая = ""; if ( ДК == 1 ) [│##│#####│#########│######################│####################│####################│ │ │################################################################│] ( doc.rec.Shifr_Oper, doc.rec.Numb_Document, doc.rec.MFO_Receiver, doc.rec.Account_Receiver, doc.rec.Sum:a, СуммаНулевая, doc.rec.Ground:w ); s=s+"│"+string(doc.rec.Shifr_Oper:2); s=s+"│"+string(doc.rec.Numb_Document:5); s=s+"│"+string(doc.rec.MFO_Receiver:9); s=s+"│"+string(doc.rec.Account_Receiver:22); s=s+"│"+string(doc.rec.Sum:20); s=s+"│ │\n"; s=s+"│ │"+string(doc.rec.Ground:64)+"│\n"; else [│##│#####│#########│######################│####################│####################│ │ │################################################################│] ( doc.rec.Shifr_Oper, doc.rec.Numb_Document, doc.rec.MFO_Payer, doc.rec.Account_Payer, СуммаНулевая, doc.rec.Sum:a, doc.rec.Ground:w ); s=s+"│"+string(doc.rec.Shifr_Oper:2); s=s+"│"+string(doc.rec.Numb_Document:5); s=s+"│"+string(doc.rec.MFO_Payer:9); s=s+"│"+string(doc.rec.Account_Payer:22); s=s+"│ │"; s=s+"│"+string(doc.rec.Sum:20)+"\n"; s=s+"│ │"+string(doc.rec.Ground:64)+"│\n"; end; END; getdate(датаотчета,"Дата Выписки"); i=0; InitProgress(nrecords(accr),"Формирование выписки", "Формирование рублевых выписок"); rewind(accr); while (next(accr)) i = i + 1; useprogress(i); if ((AccR.rec.userfield2!="") and (AccR.rec.open_close!="З")) if (index(AccR.rec.userfield2,"taatta.ru")==0)/*не отправлять выписки на наш сервер*/ if (substr(AccR.rec.Account,6,3)=="810") if (Filtr(AccR.rec.Account)) Дебет = DebetA(AccR.rec.Account, ДатаОтчета); Кредит = KreditA(AccR.rec.Account,ДатаОтчета); ШапкаПоСчету(AccR.rec.NameAccount, AccR.rec.Account, AccR.rec.NameAccount, ДатаОтчета, ВзятьДПД(AccR.rec.Account, ДатаОтчета), RestA(AccR.rec.account, ДатаОтчета-1)); if (Дебет > $0) if (ДатаОтчета < {curdate}) DocR = Tbfile ("arhdoc.dbt", "r", 1, "arhdoc.dbt", "bank.def"); DocR.rec.Real_Payer = AccR.rec.Account; DocR.rec.Date_Carry = ДатаОтчета; DocR.rec.Sum = $0; StartDoc = GetGE(DocR); while (StartDoc and (DocR.rec.Real_Payer == AccR.rec.Account) and (DocR.rec.Date_Carry == ДатаОтчета)) if (DocR.rec.Result_Carry != 23) ПечатьДокумента( DocR, 1 ); end; StartDoc = next(DocR); end; else DocR = Tbfile ("document.dbt", "r", 3, "document.dbt", "bank.def"); DocR.rec.Real_Payer = AccR.rec.Account; DocR.rec.Sum = $0; StartDoc = GetGE(DocR); while (StartDoc and (DocR.rec.Real_Payer == AccR.rec.Account)) if (DocR.rec.Result_Carry != 23) ПечатьДокумента( DocR, 1 ); end; StartDoc = next(DocR); end; end; else Дебет =0; end; if (Кредит > $0) if (ДатаОтчета < {curdate}) DocR = Tbfile ("arhdoc.dbt", "r", 2, "arhdoc.dbt", "bank.def"); DocR.rec.Real_Receiver = AccR.rec.Account; DocR.rec.Date_Carry = ДатаОтчета; DocR.rec.Sum = $0; StartDoc = GetGE(DocR); while (StartDoc and (DocR.rec.Real_Receiver == AccR.rec.Account) and (DocR.rec.Date_Carry == ДатаОтчета)) if (DocR.rec.Result_Carry != 23) ПечатьДокумента( DocR, 0 ); end; StartDoc = next(DocR); end; else DocR = Tbfile ("document.dbt", "r", 4, "document.dbt", "bank.def"); DocR.rec.Real_Receiver = AccR.rec.Account; DocR.rec.Sum = $0; StartDoc = GetGE(DocR); while (StartDoc and (DocR.rec.Real_Receiver == AccR.rec.Account)) if (DocR.rec.Result_Carry != 23) ПечатьДокумента( DocR, 0 ); end; StartDoc = next(DocR); end; end; else Кредит = 0; end; ИтогиЗаДень(Дебет, Кредит, RestA(AccR.rec.account, ДатаОтчета)); end; end; end; end; end; remprogress;