| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod Download ( | 
|   MacroPlan macroPlan | 
| ) as BinaryValue | 
| { | 
|   Description: '下载财务报表数据' | 
|   TextBody: | 
|   [* | 
|      | 
|     table := selectobject( macroPlan, CCEngineLogisticsCostReport, table, table.IsShow() ); | 
|      | 
|     xmlDOMI := XMLDOMImplementation::Create(); | 
|     xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' ); | 
|      | 
|     tableElement := xmlDOM.GetElementByTagName( "table", 0 ); | 
|     //Product | 
|     productcolumnelement := xmlDOM.CreateElement( "column" ); | 
|     productnameelement   := xmlDOM.CreateElement( "name" ); | 
|     producttypeelement   := xmlDOM.CreateElement( "type" ); | 
|     productnameelement.TextContent( 'Product' ); | 
|     producttypeelement.TextContent( "String" ); | 
|     productcolumnelement.AppendChild( productnameelement ); | 
|     productcolumnelement.AppendChild( producttypeelement ); | 
|     //Attribute | 
|     attricolumnelement := xmlDOM.CreateElement( "column" ); | 
|     attrinameelement   := xmlDOM.CreateElement( "name" ); | 
|     attritypeelement   := xmlDOM.CreateElement( "type" ); | 
|     attrinameelement.TextContent( 'Attribute' ); | 
|     attritypeelement.TextContent( "String" ); | 
|     attricolumnelement.AppendChild( attrinameelement ); | 
|     attricolumnelement.AppendChild( attritypeelement ); | 
|      | 
|     tableElement.AppendChild( productcolumnelement );  | 
|     tableElement.AppendChild( attricolumnelement ); | 
|     traverse ( table, Column, column ) { | 
|       columnelement := xmlDOM.CreateElement( "column" ); | 
|       nameelement   := xmlDOM.CreateElement( "name" ); | 
|       typeelement   := xmlDOM.CreateElement( "type" ); | 
|       nameelement.TextContent( column.Name() ); | 
|       typeelement.TextContent( "String" ); | 
|       columnelement.AppendChild( nameelement ); | 
|       columnelement.AppendChild( typeelement ); | 
|        | 
|       cells := selectsortedset( column, Cell, cell, cell.Row().RowNr() ); | 
|      | 
|       traverse ( cells, Elements, c ) { | 
|         if( column.Index() = 0 ){ | 
|           row := c.Row(); | 
|           //Product | 
|           product1cellElement := xmlDOM.CreateElement( "cell" ); | 
|           product1cellElement.SetAttribute( "value", row.Name() ); | 
|           productcolumnelement.AppendChild( product1cellElement ); | 
|            | 
|           product2cellElement := xmlDOM.CreateElement( "cell" ); | 
|           product2cellElement.SetAttribute( "value", row.Name() ); | 
|           productcolumnelement.AppendChild( product2cellElement ); | 
|            | 
|           product3cellElement := xmlDOM.CreateElement( "cell" ); | 
|           product3cellElement.SetAttribute( "value", row.Name() ); | 
|           productcolumnelement.AppendChild( product3cellElement ); | 
|            | 
|           product4cellElement := xmlDOM.CreateElement( "cell" ); | 
|           product4cellElement.SetAttribute( "value", row.Name() ); | 
|           productcolumnelement.AppendChild( product4cellElement ); | 
|            | 
|           product5cellElement := xmlDOM.CreateElement( "cell" ); | 
|           product5cellElement.SetAttribute( "value", row.Name() ); | 
|           productcolumnelement.AppendChild( product5cellElement ); | 
|            | 
|           product6cellElement := xmlDOM.CreateElement( "cell" ); | 
|           product6cellElement.SetAttribute( "value", row.Name() ); | 
|           productcolumnelement.AppendChild( product6cellElement ); | 
|            | 
|           product7cellElement := xmlDOM.CreateElement( "cell" ); | 
|           product7cellElement.SetAttribute( "value", row.Name() ); | 
|           productcolumnelement.AppendChild( product7cellElement ); | 
|           //Attribute | 
|           //外租库入库费用 | 
|           rententercostcellElement := xmlDOM.CreateElement( "cell" ); | 
|           rententercostcellElement.SetAttribute( "value", '外租库入库费用' );//RentEnterCost | 
|           attricolumnelement.AppendChild( rententercostcellElement ); | 
|           //外租库出库费用 | 
|           rentoutcostcellElement := xmlDOM.CreateElement( "cell" ); | 
|           rentoutcostcellElement.SetAttribute( "value", '外租库出库费用' );//RentOutCost | 
|           attricolumnelement.AppendChild( rentoutcostcellElement ); | 
|           //厂内到外租库运输费用 | 
|           factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" ); | 
|           factorytorenttranscostcellElement.SetAttribute( "value", '厂内到外租库运输费用' );//FactoryToRentTransCost | 
|           attricolumnelement.AppendChild( factorytorenttranscostcellElement ); | 
|           //外租库仓储费用 | 
|           rentstoragecostcellElement := xmlDOM.CreateElement( "cell" ); | 
|           rentstoragecostcellElement.SetAttribute( "value", '外租库仓储费用' );//RentStorageCost | 
|           attricolumnelement.AppendChild( rentstoragecostcellElement ); | 
|           //预计总费用 | 
|           estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" ); | 
|           estimatedtotalcostcellElement.SetAttribute( "value", '预计总费用' );//EstimatedTotalCost | 
|           attricolumnelement.AppendChild( estimatedtotalcostcellElement ); | 
|           //系数 | 
|           coefficientcellElement := xmlDOM.CreateElement( "cell" ); | 
|           coefficientcellElement.SetAttribute( "value", '系数' );//Coefficient | 
|           attricolumnelement.AppendChild( coefficientcellElement ); | 
|           //总费用 | 
|           totalcostcellElement := xmlDOM.CreateElement( "cell" ); | 
|           totalcostcellElement.SetAttribute( "value", '总费用' );//TotalCost | 
|           attricolumnelement.AppendChild( totalcostcellElement ); | 
|         } | 
|         //外租库入库费用 | 
|         rententercostcellElement := xmlDOM.CreateElement( "cell" ); | 
|         rententercostcellElement.SetAttribute( "value", c.RentInCost().Format( 'N(Dec)' ) ); | 
|         columnelement.AppendChild( rententercostcellElement ); | 
|         //外租库出库费用 | 
|         rentoutcostcellElement := xmlDOM.CreateElement( "cell" ); | 
|         rentoutcostcellElement.SetAttribute( "value", c.RentOutOfCost().Format( 'N(Dec)' ) ); | 
|         columnelement.AppendChild( rentoutcostcellElement ); | 
|         //厂内到外租库运输费用 | 
|         factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" ); | 
|         factorytorenttranscostcellElement.SetAttribute( "value", c.WerkToRentTransCost().Format( 'N(Dec)' ) ); | 
|         columnelement.AppendChild( factorytorenttranscostcellElement ); | 
|         //外租库仓储费用 | 
|         rentstoragecostcellElement := xmlDOM.CreateElement( "cell" ); | 
|         rentstoragecostcellElement.SetAttribute( "value", c.RentStorCost().Format( 'N(Dec)' ) ); | 
|         columnelement.AppendChild( rentstoragecostcellElement ); | 
|         //预计总费用 | 
|         estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" ); | 
|         estimatedtotalcostcellElement.SetAttribute( "value", c.EstimateTotalCost().Format( 'N(Dec)' ) ); | 
|         columnelement.AppendChild( estimatedtotalcostcellElement ); | 
|         //系数 | 
|         coefficientcellElement := xmlDOM.CreateElement( "cell" ); | 
|         coefficientcellElement.SetAttribute( "value", c.CoefficientValue() ); | 
|         columnelement.AppendChild( coefficientcellElement ); | 
|         //总费用 | 
|         totalcostcellElement := xmlDOM.CreateElement( "cell" ); | 
|         totalcostcellElement.SetAttribute( "value", c.AllCost().Format( 'N(Dec)' ) ); | 
|         columnelement.AppendChild( totalcostcellElement ); | 
|       } | 
|       tableElement.AppendChild( columnelement );   | 
|     } | 
|      | 
|     xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM ) | 
|      | 
|     //info( xmlString ); | 
|      | 
|     tableGroupHandle := TableGroupHandle::Create( CCEngineLogisticsCostReport::GetDefaultName() ); | 
|     tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) ); | 
|     tableGroupHandle.Add( tableHandle ); | 
|      | 
|     binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true ); | 
|      | 
|     return binaryData.AsBinaryValue(); | 
|   *] | 
| } |