// ***************************************************************************** // Название: Запись данных брокерского отчета в xml для передачи в таможню // Описание: Запись данных брокерского отчета в xml для передачи в таможню // Кнопка вызова: 0 // Подпись кнопки: // ***************************************************************************** // // EXECUTESCRIPT (INCLUDETRAILINGBACKSLASH(PROGRAMPATH())+'ProcDocs\WriteXMLBrokerReport.prd'); // Функция создания UUID для xml FUNC ('GENERATEUUID_2', , Block( Var('sGuid', String); sGuid := GENERATEUUID (); sGuid := COPY (sGuid, 1, 8) + '-' + COPY (sGuid, 9, 4) + '-' + COPY (sGuid, 13, 4) + '-' + COPY (sGuid, 17, 4) + '-' + COPY (sGuid, 21, 12); sGuid ) ); FUNC ('sFile', , Block( Var('sScriptFilePathXml', String, 'BrokerReport_'+ FDT('YYYYMMDD_HHMMSS', DATE()+TIME(1)) +'.xml'); FORCEDIRECTORIES('C:\TEMP\BrokerReport'); sScriptFilePathXml := 'C:\TEMP\BrokerReport\' + sScriptFilePathXml; sScriptFilePathXml ) ); FUNC ('WriteBrokerReport', , Block( VAR('XMLFile', integer, XMLDOCUMENTCREATE()); VAR('XMLRoot', integer, XMLDOCUMENTROOT(XMLFile)); XMLDOCUMENTENCODING(XMLFile, 'utf-8'); VAR( 'cbrCustomsBrokerReport', integer, XMLNODEADDCHILD(XMLRoot, 'cbr:CustomsBrokerReport')); XmlNodeSetAttribute (cbrCustomsBrokerReport, 'xsi:schemaLocation', 'urn:customs.ru:ReportingCollection:CustomsBrokerReport:1.0.0 CustomsBrokerReport.xsd'); XmlNodeSetAttribute (cbrCustomsBrokerReport, 'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); XmlNodeSetAttribute (cbrCustomsBrokerReport, 'xmlns:cat_ru', 'urn:customs.ru:CommonAggregateTypes:5.0.7'); XmlNodeSetAttribute (cbrCustomsBrokerReport, 'xmlns:cbr', 'urn:customs.ru:ReportingCollection:CustomsBrokerReport:1.0.0'); XMLNodeSetValue ( XMLNodeAddChild ( cbrCustomsBrokerReport, 'cat_ru:DocumentID'), GENERATEUUID_2 () ); XMLNodeSetValue ( XMLNodeAddChild ( cbrCustomsBrokerReport, 'cat_ru:RefDocumentID'), GENERATEUUID_2 () ); XMLNodeSetValue ( XMLNodeAddChild ( cbrCustomsBrokerReport, 'cbr:ReportDate'), FDT('YYYY-MM-DD', DATE()) ); XMLNodeSetValue ( XMLNodeAddChild ( cbrCustomsBrokerReport, 'cbr:ReportNumber'), '112233' ); XMLNodeSetValue ( XMLNodeAddChild ( cbrCustomsBrokerReport, 'cbr:ReportingDateFrom'), FDT('YYYY-MM-DD', rtDateBegin) ); XMLNodeSetValue ( XMLNodeAddChild ( cbrCustomsBrokerReport, 'cbr:ReportingDateTo'), FDT('YYYY-MM-DD', rtDateEnd) ); VAR('cbrCustomsBroker', integer, XMLNODEADDCHILD (cbrCustomsBrokerReport, 'cbr:CustomsBroker')); XMLNodeSetValues ( cbrCustomsBroker, '', 'cbr:OrganizationName', rtOrgName, 'cbr:INN', rtINN ); XMLNodeSetValues ( XMLNODEADDCHILD (cbrCustomsBroker, 'cbr:Certificate'), '', 'cbr:DocumentNumber', edtSvid, 'cbr:DocumentDate', FDT('YYYY-MM-DD', rtDateSvid) ); VAR('cbrCustomsSpecialist', integer, XMLNODEADDCHILD (cbrCustomsBrokerReport, 'cbr:CustomsSpecialist')); XMLNodeSetValues ( cbrCustomsSpecialist, '', 'cbr:PersonSurname', EXTRACTSTR (rtFIO, 2, ' '), 'cbr:PersonName', EXTRACTSTR (rtFIO, 1, ' '), //'cbr:PersonMiddleName', 'Evgenevich', //'cbr:PersonQCDate', FDT('YYYY-MM-DD', DATE()), //'cbr:PersonQCNumber', '132456789', ); //Сведения о таможенных операциях VAR('cbrCustomsOperation', integer); VAR('sPayer', String); VAR('vG45', Float); VAR('vG47', Float); Var ( 'iTotal', Integer, 0); // общее кол-во Var ( 'iTek', Integer, 0); // текущая запись в цикле iTek := 0; iTotal := RECORDCOUNT ('T'); SHOWPROGRESS ('Запись в XML файл ...'); FIRST ('T'); while( EOF('T')=0, Block( cbrCustomsOperation := XMLNODEADDCHILD (cbrCustomsBrokerReport, 'cbr:CustomsOperation'); XMLNodeSetValues ( XMLNODEADDCHILD (cbrCustomsOperation, 'cbr:CustomsOffice'), '', 'cat_ru:Code', "T"."COMP_3", 'cat_ru:OfficeName', REFERENCE('KTAM.DBF', 'CODE', "T"."COMP_3", 'NAMT', 'DBEGIN', 'DATAS', "T"."G542") ); XMLNodeSetValues ( XMLNODEADDCHILD (cbrCustomsOperation, 'cbr:DeclarationNumber'), '', 'cat_ru:CustomsCode', COPY ("T"."G07", 1, 8), 'cat_ru:RegistrationDate', FDT('YYYY-MM-DD', "T"."G542"), 'cat_ru:GTDNumber', COPY ("T"."G07", 17, 7) ); XMLNodeSetValues ( XMLNODEADDCHILD (cbrCustomsOperation, 'cbr:CustomsProcedure'), '', 'cbr:Direction', "T"."G011", 'cbr:CustomsModeCode', "T"."G012" ); XMLNodeSetValues ( XMLNODEADDCHILD (cbrCustomsOperation, 'cbr:SenderOrReceiver'), '', 'cbr:OrganizationName', "T"."COMP_2", 'cbr:INN', "T"."COMP_11" ); XMLNodeSetValues ( XMLNODEADDCHILD (cbrCustomsOperation, 'cbr:BrokerAgreement'), '', 'cbr:DocumentNumber', "T"."COMP_6", 'cbr:DocumentDate', FDT('YYYY-MM-DD', "T"."COMP_7") ); sPayer := ''; If(rtGB = 1, sPayer := "T"."COMP_25"); If(rtG09 = 1, sPayer := "T"."G092"); If(rtG14 = 1, sPayer := "T"."G142"); If(rtBroker = 1, If(chkPP_Docs = 1, If(Pos(UpperStr(Trim(edtBrokerSign)), "T"."COMP_12") > 0, If(Pos(UpperStr(Trim(edtDeclSign)), "T"."COMP_12") > 0, sPayer := TRIM(edtBroker) + '\'+ "T"."G142", sPayer := TRIM(edtBroker) ), sPayer := "T"."G142" ), sPayer := TRIM(edtBroker) ) ); XMLNodeSetValues ( cbrCustomsOperation, '', 'cbr:FinancialOrganizationName', sPayer ); vG45 := "T"."G45"; vG47 := "T"."COMP_8"; if(("T"."COMP_19" <> '1/0000/1') * (useKTCtamStoim <> 0) * (FieldIsNull("T","COMP_23")= 0), vG45 := "T"."COMP_23" ); if(("T"."COMP_19" <> '1/0000/1') * (useKTCplateji <> 0) * (FieldIsNull("T","COMP_24")= 0), vG47 := vG47 + "T"."COMP_24" ); XMLNodeSetValues ( XMLNODEADDCHILD (cbrCustomsOperation, 'cbr:Shipment'), '', 'cbr:Description', COPY(REPLACECR ("T"."G312"),1,250), 'cbr:TnvedCode', "T"."G33", 'cbr:CustomsCost', FloatRound(vG45,2), 'cbr:NetWeight', "T"."G38" ); XMLNodeSetValues ( cbrCustomsOperation, '', 'cbr:CustomsDutiesAmount', FloatRound(vG47,2) ); IF((FieldIsNull("T", "RptOfCompletion_Num")=0)*(FieldIsNull("T", "RptOfCompletion_Date")=0), XMLNodeSetValues ( XMLNODEADDCHILD (cbrCustomsOperation, 'cbr:AcceptanceCertificate'), '', 'cbr:DocumentNumber', "T"."RptOfCompletion_Num", 'cbr:DocumentDate', FDT('YYYY-MM-DD', "T"."RptOfCompletion_Date") )); XMLNodeSetValues ( XMLNODEADDCHILD (cbrCustomsOperation, 'cbr:CustomsSpecialist'), '', 'cbr:PersonSurname', "T"."G5441", 'cbr:PersonName', "T"."G5441Name", 'cbr:PersonMiddleName',"T"."G5441MdlName", 'cbr:PersonQCDate', FDT('YYYY-MM-DD', "T"."G5445"), 'cbr:PersonQCNumber', "T"."G5444" ); XMLNodeSetValues ( XMLNODEADDCHILD (cbrCustomsOperation, 'cbr:IdentityCard'), '', 'cbr:DocumentName', COPY("T"."G5443_1",1,15), 'cbr:DocumentSeries', "T"."G54521", 'cbr:DocumentNumber', "T"."G5444_1" ); XMLNodeSetValues ( XMLNODEADDCHILD (cbrCustomsOperation, 'cbr:QualificationCertificate'), '', 'cbr:DocumentNumber', "T"."G5444", 'cbr:DocumentDate', FDT('YYYY-MM-DD', "T"."G5445") ); XMLNodeSetValues ( cbrCustomsOperation, '', 'cbr:Note', '' ); SETPROGRESS ( ((iTek*100)/iTotal) ); iTek := iTek + 1; next('T'); if ( CANCELPRESSED (), Block( HIDEPROGRESS (); RAISEEXCEPTION ('Запись остановлена'); ),//block ); //if ) ); HIDEPROGRESS (); XMLDOCUMENTSAVE(XMLFile, SaveFileName); showmessage('Отчет записан в файл:'+ CHAR(13)+CHAR(10)+ SaveFileName); ) );