365-П: формирование документа и подтверждений на поручение налогового органа
Сохранить в файлеОбсудить в форуме
Описание
Пока не реализованный на текущий момент функционал - формирование документа в РС-Банке и файлов подтверждений PB1 и PB2. PB2 можно просто удалить, если документ реально проведётся, а не будет поставлен на картотеку; PB1 формируется всегда; документ, сформированный по поручению налоговой, кладётся в отложенные.
В макросе поправить значения переменных Indir, OutDir.
В макросе поправить значения переменных Indir, OutDir.
Текст примера
/***************************************************************************** 24.01.12 SS Формирование документов по постановлениям налоговых органов Сергей Соколов (sokols@narod.ru), ЗАО КБ "ИС Банк", +7 (495) 744-08-51 *****************************************************************************/ import rslx; file pno() txt; file pb1() txt write; file pb2() txt write; file rd(regdoc) key 3; file d(postdoc) write; var {oper}, {curdate}, acc, InDir = "..\\365\\WORK\\IN\\", OutDir = "..\\365\\WORK\\OUT\\", ИНННП, parms, sfname, fname; macro StrToDate(sDate) var dd, mm, yy; DateSplit(sDate, dd, mm, yy); return String(yy:o:4, "-", mm:o:2, "-", dd:o:2); end; macro FindClient(inn) rd.RDKind = 100; rd.RegNum = inn; rd.Client = ""; if(GetGE(rd) and (rd.RegNum == inn)) return rd.Client; else return 0; end; end; macro WritePB1 var OK = TRUE; OK = OK and insert(pb1, sfname + "###"); OK = OK and insert(pb1, "10@@@"); OK = OK and insert(pb1, String(StrToDate(Date()), "@@@")); OK = OK and insert(pb1, String(Time(), "@@@")); OK = OK and insert(pb1, "==="); return(OK); end; macro WritePB2 var OK = TRUE; OK = OK and insert(pb2, sfname + "###"); OK = OK and insert(pb2, String("35;Документ поставлен в картотеку 2 в связи ", "с отсутствием средств на расчетном счете ", acc, "@@@")); OK = OK and insert(pb2, String(StrToDate(Date()), "@@@")); OK = OK and insert(pb2, String(Time(), "@@@")); OK = OK and insert(pb2, "==="); return(OK); end; macro Init parms = ActiveX("Scripting.Dictionary"); if(not SelectFile(fname, InDir + "pno*.txt")) [Файл не выбран]; Exit; end; SplitFile(fname, sfname, NULL); if(not open(pno, fname)) [Файл не открыт]; Exit; end; if(not open(pb1, OutDir + "PB1_" + sfname + ".TXT")) [Файл не открыт]; Exit; end; if(not open(pb2, OutDir + "PB2_" + sfname + ".TXT")) [Файл не открыт]; Exit; end; end; macro ReadPNO; var pos, s, parm, val; while(next(pno)) s = pno.str; pos = Index(s, ":"); if(pos > 0) parm = SubStr(s, 1, pos - 1); val = SubStr(s, pos + 1); parms.Add(parm, val); end; end; end; macro SetValues d.Oper = {oper}; d.Account_Payer = acc = d.Real_Payer = parms.Item("НомСчПл"); d.MFO_Receiver = parms.Item("БИКБПол"); d.Account_Receiver = parms.Item("НомСчПол"); d.Sum = Double(parms.Item("СумПоруч")) / 100; d.Dispatch = 0; d.Numb_Document = parms.Item("НомПоруч"); d.Date_Document = d.Date_Value = {curdate}; d.Kind_Oper = 1; d.Payer = parms.Item("Плательщ"); d.Receiver = parms.Item("НаимПол"); d.Bank_Receiver = parms.Item("БанкПол"); d.Ground = parms.Item("НазнПл"); d.OKPO_Payer = ИНННП = parms.Item("ИНННП"); d.OKPO_Receiver = parms.Item("ИННПол"); d.Payment = parms.Item("ОчерПл"); d.Shifr_Oper = parms.Item("ВидОп"); d.KPP_Payer = parms.Item("КППНП"); d.KPP_Receiver = parms.Item("КПППол"); d.ComposerStatus = parms.Item("Статус"); d.BudjClassifCode = parms.Item("КБК"); d.OKATO = parms.Item("ОКАТО"); d.TaxGround = parms.Item("ОснПл"); d.TaxPeriod = parms.Item("СрокУплТр"); d.TaxNumber = parms.Item("НомТреб"); d.TaxDate = parms.Item("ДатаТреб"); d.TaxPaymentType = parms.Item("ТипПлат"); d.Date_Enter = {curdate}; insert(d); end; macro main() Init(); ReadPNO; SetValues(); if(FindClient(ИНННП)) WritePB1(); WritePB2(); close(pb1); close(pb2); end; end; main;