| Quintiq file version 2.0 | 
| #parent: #root | 
| Method CreateConfigurableColumnString ( | 
|   shadow[LibOpt_UISnapshotAttribute] att | 
| ) as String id:Method_LibOpt_FormIteration_CreateConfigurableColumnString | 
| { | 
|   #keys: '[139164.5.1067713876]' | 
|   Body: | 
|   [* | 
|     snapshots := construct( LibOpt_Snapshots ); | 
|     component_snapshot := att.Snapshot(); | 
|     while( not isnull( component_snapshot ) and not component_snapshot.istype( LibOpt_SnapshotComponent ) ) | 
|     { | 
|       component_snapshot := component_snapshot.Parent(); | 
|       snapshots.Add( component_snapshot ); | 
|     } | 
|      | 
|     trav_rel := 'IterationPartNM.IterationPart.Snapshot.astype( ' + typeofexpression( att.Snapshot() ).Name() + ' )'; | 
|      | 
|     filters := construct( Strings ); | 
|     filters.Add( 'snapshot.Type() = "' + att.Snapshot().Type() + '"' ); | 
|      | 
|      | 
|     for( i := 0; i < snapshots.Size(); i++ ) | 
|     { | 
|       snap := snapshots.Element( i ); | 
|       parents := ''; | 
|       for( j := 0; j <= i; j++ ) | 
|       { | 
|         parents := parents + '.Parent()'; | 
|       } | 
|       filter := 'snapshot' + parents + '.astype( ' + typeofexpression( snap ).Name() + ' ).Type() = "' + snap.Type() + '"'; | 
|       filters.Add( filter ); | 
|      | 
|     } | 
|      | 
|     snapshot_select := 'select( object, ' | 
|                     + trav_rel + ', ' | 
|                     + 'snapshot, ' | 
|                     + filters.ToString( ' and ' ) + ' )'; | 
|      | 
|      | 
|      | 
|     result := 'VALUE( ' | 
|             + snapshot_select | 
|             + '.' | 
|             + att.AttributeName() | 
|             + '() )'; | 
|      | 
|     return result; | 
|   *] | 
| } |