рдореИрдВ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рдПрдХ рд▓реЗрдЦ рд▓рд╛рддрд╛ рд╣реВрдВ:
- рдПрдлрд╝рдЯреАрдкреА рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП% Net.FtpSession рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
- Xls рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдЖрд╕рд╛рди рддрд░реАрдХрд╛
- рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрд╕
FTP рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред
рд╡реЗрдм рд╕реЗрд╡рд╛рдПрдБ? рдирд╣реАрдВ, рдирд╣реАрдВ рд╕реБрдирд╛ред
рддреАрд╕рд░реЗ рджрд┐рди, рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рд╣реЗ рдЙрддреНрдкрд╛рджрди рдкрд░рд┐рд╕рд░ рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдбреЗрдЯрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реАред рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдЖрдИрдЯреА рд╡рд┐рднрд╛рдЧ рдиреЗ рдПрдлрд╝рдЯреАрдкреА рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЬрд╝реЛрд░ рджрд┐рдпрд╛, рд╡рд┐рдирд┐рдордп рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред
рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
s ftp = ##class(%Net.FtpSession).%New() тАУ FTP ftp.Timeout = тАУ ftp.Connect(, , , ) тАУ FTP ftp.SetDirectory() тАУ FTP ( ) ftp.List( , ) тАУ , , ftp.Binary() тАУ ftp.Retrieve(, .GlobalStream) тАУ ftp.Delete() тАУ ftp.Append(, ) - ftp.Logout() тАУ FTP
рдПрдлрд╝рдЯреАрдкреА рд╕рд░реНрд╡рд░ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг (рдлрд╝рд╛рдЗрд▓реЗрдВ рдорд╛рд╕реНрдХ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рд╣реИрдВ)ред ClassMethod FTPGetFiles(ftp, fileName) As %Status { s ftp = ##class(%Net.FtpSession).%New() s ftp.Timeout = 2000 s host = "11.111.11.111" s port = 2021 s user = "myth/user" s pass = "userspass" if ftp.Connect(host, user, pass, port) { d ftp.SetDirectory("/TestDir") // s fileName = "????????t??????vK*.xml" // d ..ParserDir(ftp, fileName) s fileName = "????????a??????yK*.xml" d ..ParserDir(ftp, fileName) } q ftp.Logout() } /// , ClassMethod ParserDir(ftp, fileName) As %Status { s file = "" sx = 1 s file(x) = "" // d ftp.List(fileName, .stream) q:'$IsObject(stream) while 'stream.AtEnd { // s file = stream.ReadLine(1, .sc, .eol) if ( file = $C(10) ) { // sx = x + 1 s file(x) = "" } else { // s file(x) = file(x) _ file } if $$$ISERR(sc) { w "ERROR" q } } // d ftp.Binary() // s key = $ORDER(file(""),1) while ( key '= "" ) { // s fName = $E(file(key), 40, *) if ( $L(fName) > 0 ) { #dim GlobalStream As %GlobalBinaryStream; // fName. - FTP CP1251 d ftp.Retrieve($zcvt($zcvt(fName,"I","CP1251"),"O","CP1251"),.GlobalStream) #dim status As %String; // if ( $F(fName,"s") > 0 ) { s status = ..Parser(GlobalStream, "Product", "Shipment", parser) } elseif ( $F(fName,"d") > 0 ) { s status = ..Parser(GlobalStream, "Product", "Disposal" ,parser) } if ( status ) { d ftp.Delete(fName) } } s key = $order(file(key),1) } q ftp.Logout() }
рдПрдХ рдПрдлрд╝рдЯреАрдкреА рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг /// FTP ClassMethod RunExport() As %Status { s ftp = ##class(%Net.FtpSession).%New() s ftp.Timeout = 2000 s host = "11.111.11.111" s port = 2021 s user = "myth/user" s pass = "userspass" if ftp.Connect(host, user, pass, port) { d ftp.Binary() // s st = ##class(%SQL.Statement).%New() d st.%PrepareClassQuery("%File","FileSet") s rs = st.%Execute("/usr/cachesys201221/csp/sm/export_xml","*.xml","Size,Name") while rs.%Next() { // , d ftp.Delete(rs.%GetData(6)) // s stream = ##class(%FileBinaryStream).%New() // 1 - s stream.Filename = rs.%GetData(1) // - "done" if ( ftp.Append(rs.%GetData(6),stream) = $$$OK ) { d ##class(%File).Rename(rs.%GetData(1), ##class(%File).GetDirectory(rs.%GetData(1)) _ "done/" _ rs.%GetData(6)) } k stream } } d ftp.Logout() k ftp q $$$OK }
рдбреЗрдЯрд╛ рдХреЛ xlsx рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред
рдкрдбрд╝реЛрд╕реА рдХреЗ рджреБрдГрдЦ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рд╕реБрдЦрджрд╛рдпрдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╕реБрдмрд╣, рдХрд╛рд░реНрдпрд╛рд▓рдп рдкрд╣реБрдВрдЪрдиреЗ рдкрд░, рдПрдХ рд╕рд╣рдХрд░реНрдореА рдореБрдЭреЗ рджреЗрдЦрдХрд░ рдореБрд╕реНрдХреБрд░рд╛рдпрд╛ рдФрд░, рдмрд┐рдирд╛ рдердХреЗ рд╣реБрдП, рдореЛрдЬрд╝рд┐рд▓рд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдиреЗ рдХреА рд╕реВрдЪрдирд╛ рджреАред рдФрд░ рд╕рднреА рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рджреГрд╢реНрдп-рд╕реА рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛ред рдлрд╝рд╛рдпрд░реНрдлрд╝реЙрдХреНрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдерд╛, рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓рдирд╛ рдФрд░ рдбреАрдПрд▓рдПрд▓ (рдФрд░ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд▓рдЧрдЗрди) рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛, рдбреАрдПрд▓рдПрд▓ рдФрд░ рдЬреЗрдПрд╕рдПрд▓ рдкрд╛рд░реНрд╕рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛)ред рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╛рдж рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рддреАрд╕рд░реЗ рджрд┐рди, рдХреБрдХреАрдЬрд╝ рд╡рд╛рд▓рд╛ рдПрдХ рдЯреНрд░рдХ рдПрдХреНрд╕реЗрд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реА рд╕рдбрд╝рдХ рдкрд░ рдмрджрд▓ рдЧрдпрд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
- рд╣рдо рдПрдХ html рдбреЗрдЯрд╛ рдЯреЗрдмрд▓ рд▓реЗрддреЗ рд╣реИрдВ (рдлреЙрд░реНрдо)
- рдЯреЗрдмрд▓ рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ, рдПрдХреНрд╕рд▓реНрд╕ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдмрджрд▓реЗрдВ
- рд╣рдо рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдЪреЗрддрд╛рд╡рдиреА рдкреНрд▓реЗрдЯ рдФрд░ "рд╡реЙрдЗрд▓рд╛" рдкрд░ "рд╣рд╛рдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ! рдПрдХреНрд╕реЗрд▓ рдиреЗ рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╣рдЪрд╛рди рд▓рд┐рдпрд╛ред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╕реАрдПрд╕рдПрд╕ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг #server(TestProject.MakeExcelFile($("#table_to_excel").html(), "PriceList"))# ClassMethod MakeExcelFile(Data As %String, FileName As %String) As %Status { s FileName = "/tkf/reports/" _ FileName _ "_Excel.xls" s stream = ##class(%Library.FileCharacterStream).%New() s FP = $$GetFilename^%apiCSP(FileName) if ( $L(Data) = 22 ) { d stream.CopyFrom(Data) } else { d stream.Write(Data) } d stream.SetAttribute("Content-Length",stream.Size) d stream.SetAttribute("ContentType","application/excel") d stream.SetAttribute("Charset","UTF8") d stream.SetAttribute("ContentDisposition","attachment; filename=" _ $p(FileName,"/",4)) d stream.LinkToFile(FP) d stream.SaveStream() s oid = stream.%Oid() &js<window.location="#url(%25CSP.StreamServer.cls?STREAMOID=#(..Encrypt(oid))#)#";> q $$$OK }
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реЗрд▓ рдХреЛ
рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рд╛рд░реВрдк рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
<style>.toText{ mso-number-format:\"\@\"; } </style> <td class=тАЭtoTextтАЭ> </td>
рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрд╕
рд▓рдШреБрд░реВрдк
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рд░ рдХреЛрдИ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рд╕реАрдУрдПрд╕ рдореЗрдВ рдЗрди рдЬреИрд╕реЗ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ:
рд╕реЗрдЯ = рдПрд╕
рдбреВ = рдбреА
рд▓рд┐рдЦ = w
рдорд╛рд░ = рдХреЗ
рдЫреЛрдбрд╝рдирд╛ = рдХреНрд╖
...
рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддреА рд╣реИ:

рдЯрд╛рдЗрдкрд┐рдВрдЧ
COS рд╕рдЦреНрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рднрд╛рд╖рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП #dim рдирд┐рд░реНрдорд╛рдг рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛
рдПрдХ рдЙрджрд╛рд╣рд░рдг:


SQL рдореЗрдВ $ CLASSNAME
рдПрдХ рджреБрд░реНрд▓рдн, рд▓реЗрдХрд┐рди рдХрд╛рдлреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдорд▓рд╛ - рдХреНрд╡реЗрд░реА рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╡рд░реНрдЧ рдирд╛рдо (SQL рдореЗрдВ $ CLASSNAME рдХрд╛ рдПрдирд╛рд▓реЙрдЧ) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдк рдЙрди рдЫрд┐рдкреЗ рд╣реБрдП рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВ - x__classnameред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
2 рд╡рд░реНрдЧ рдП рдФрд░ рдмреА рд╣реИрдВ рдЬреЛ рдкрддреНрд░ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреВрд░реНрд╡рдЬ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ% рдирд┐рд░рдВрддрд░ред рдЪрдпрди рдореЗрдВ x__classname рдлрд╝реАрд▓реНрдб рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред

Cache рд╕рдВрд╕реНрдХрд░рдг - UNIX рдХреЗ рд▓рд┐рдП рдХреИрд╢ (x86-64 рдХреЗ рд▓рд┐рдП Red Hat Enterprise Linux) 2012.2.1 (рдмрд┐рд▓реНрдб 705U) рдмреБрдз 24 рдЕрдХреНрдЯреВрдмрд░ 2012 14:32:01 EDTред