| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod RefreshData ( | 
|   InterfaceDataset interface, | 
|   MacroPlan macroPlan, | 
|   const Archive archive | 
| ) | 
| { | 
|   TextBody: | 
|   [* | 
|     //根据当前版本的下线计划 | 
|     allunit                := OfflinePlanArchiveVersion::GetDefaultAllUnit(); | 
|     name                   := OfflinePlanArchiveVersion::GetDefaultName(); | 
|     search                 := interface.OfflinePlanArchiveSearch( relnew, Product := allunit, ProductionLine := allunit, TimeUnit := Translations::MP_GlobalParameters_Day(), Unit := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() ); | 
|     table                  := selectobject( interface, OfflinePlanArchiveVersion, version, not version.IsShow() ); | 
|     if( isnull( table ) ){ | 
|       table                := interface.OfflinePlanArchiveVersion( relnew, ID := name, Name := name ); | 
|     } | 
|     showtable              := selectobject( interface, OfflinePlanArchiveVersion, version, version.IsShow() ); | 
|     if( isnull( showtable ) ){ | 
|       showtable               := interface.OfflinePlanArchiveVersion( relnew, ID := name, Name := name, IsShow := true ); | 
|     } | 
|     nopcolumns             := selectuniquevalues(  macroPlan, NewOfflinePlanTable.NewOfflinePlanColumn, nopcolumn, not exists( table, Column, column, column.TimeUnit() = Translations::MP_GlobalParameters_Day() and column.StartDate() = nopcolumn.StartDate() ), nopcolumn.StartDate() ); | 
|     if( nopcolumns.Size() > 0 ){ | 
|       table.GenerateColumn( nopcolumns, false ); | 
|     } | 
|     noptable               := maxobject( macroPlan, NewOfflinePlanTable, noptable, noptable.SaveDateTime() ); | 
|     actproductiondatas     := selectset( archive,ActualDailyProductionData,data,true ); | 
|     actproductiontree      := NamedValueTree::Create(); | 
|     for( i := 0; i< actproductiondatas.Size(); i++ ){ | 
|       actproduction        := actproductiondatas.Element( i ); | 
|       actproductionKey     := actproduction.ProductNo() + actproduction.ProductionDate().AsQUILL(); | 
|       actproductionhandle  := actproductiontree.GetHandle( actproductionKey ); | 
|       actproductiontree.Root().AddChild( actproductionhandle,i );  | 
|     } | 
|     traverse( noptable, NewOfflinePlanRow, noprow, noprow.Type() = '1' ){ | 
|       row                  := table.GetRow( noprow ); | 
|       if( not isnull( row ) ){ | 
|         traverse( noprow, NewOfflinePlanCell, nopcell ){ | 
|           column             := selectobject( table, Column, column, column.TimeUnit() = Translations::MP_GlobalParameters_Day() and column.StartDate() = nopcell.NewOfflinePlanColumn().StartDate() ); | 
|           cell               := selectobject( row, Cell, cell, cell.Column() = column ); | 
|           actproductionKey   := noprow.ProductID() + column.StartDate().AsQUILL(); | 
|           actproductionhandle:= actproductiontree.GetHandle( actproductionKey ); | 
|           actproductionindex := guard( actproductiontree.Root().Child( actproductionhandle ),null( NamedValue )); | 
|            | 
|           actproductionqty       := 0.0; | 
|           if( not isnull( actproductionindex )){ | 
|             actproduction        := actproductiondatas.Element( actproductionindex.GetValueAsNumber() ); | 
|             actproductionqty     := actproduction.ActualOut(); | 
|           } | 
|           cell.ActualProductionQty( actproductionqty ); | 
|           cell.InventoryWeight( nopcell.InventoryWeight() ); | 
|       //      cell.ProductionSerialNumber( nopcell.ProductionSerialNumber() ); | 
|           cell.Quantity( nopcell.Quantity() ); | 
|       //      cell.Shift( nopcell.Shift() ); | 
|       //      cell.Value( nopcell.Value() ); | 
|         } | 
|       } | 
|     } | 
|     showtable.Generate( search ); | 
|   *] | 
| } |