|
![]() |
#1 |
Участник
|
Большое всем спасибо, разобрался. Получился вот такой код:
Это так наброски, код еще не оптимизировал. CREATE(Appl); Appl.Projects.Add; Appl.Visible(TRUE); LN:=0; JBL.RESET; JBL.SETRANGE("Job No.",CurrentJobNo); JBL.SETCURRENTKEY(LineNo); Job.GET("Job No."); Appl.SelectTaskField(LN,'Name'); Appl.SetTaskField('Name',Job.Description); Appl.SetTaskField('Start',FORMAT(TODAY)); Appl.SetTaskField('Finish',FORMAT(TODAY)); Appl.SetTaskField('Notes',CurrentJobNo); Line:=1; LN:=1; IF JBL.FIND('-') THEN Stage:=''; Task:=''; IF JBL.FIND('-') THEN REPEAT IF Stage<>JBL."Phase Code" THEN BEGIN Phase.GET(JBL."Phase Code"); Appl.SelectTaskField(LN,'Name'); Appl.SetTaskField('Name',Phase.Description); Appl.SetTaskField('Outline Level',FORMAT(2)); Appl.SetTaskField('Notes',JBL."Phase Code"); Stage:=JBL."Phase Code"; Line+=1; END; IF Task<>JBL."Task Code" THEN BEGIN TTask.GET(JBL."Task Code"); Appl.SelectTaskField(LN,'Name'); Appl.SetTaskField('Name',TTask.Description); Appl.SetTaskField('Outline Level',FORMAT(3)); Appl.SetTaskField('Notes',JBL."Task Code"); Task:=JBL."Task Code"; Line+=1; END; IF SubTask<>JBL."Step Code" THEN BEGIN TSubTask.GET(JBL."Step Code"); Appl.SelectTaskField(LN,'Name'); Appl.SetTaskField('Name',TSubTask.Description); IF FORMAT(Appl.ActiveProject.ProjectStart)>FORMAT(JBL."Starting Date") THEN Appl.ActiveProject.ProjectStart:=FORMAT(JBL."Starting Date"); Appl.SetTaskField('Start',FORMAT(JBL."Starting Date")); Appl.SetTaskField('Finish',FORMAT(JBL.EndDate)); Appl.SetTaskField('Outline Level',FORMAT(4)); Appl.SetTaskField('Notes',JBL."Step Code"); Appl.SetTaskField('Text1',JBL."Work Type Code"); SubTask:=JBL."Step Code" END; JBL.CALCFIELDS(Quantity); JBL.CALCFIELDS(JBL."Re-planned Quantity"); IF JBL.Chargebility=TRUE THEN Appl.SetTaskField('Work',FORMAT(JBL.Quantity)) ELSE Appl.SetTaskField('Work',FORMAT(JBL.Quantity+JBL."Re-planned Quantity")); IF (JBL."Legacy Type"=0) AND (JBL.Parent<>'') THEN IF JBL.Shift<>0 THEN Appl.SetTaskField('Predecessors',FORMAT(StrToInt(JBL.Parent)+Line)+'SS+'+FORMAT(JBL.Shift)+'d') ELSE Appl.SetTaskField('Predecessors',FORMAT(StrToInt(JBL.Parent)+Line)+'SS'); IF (JBL."Legacy Type"=1) AND (JBL.Parent<>'') THEN IF JBL.Shift<>0 THEN Appl.SetTaskField('Predecessors',FORMAT(StrToInt(JBL.Parent)+Line)+'FS+'+FORMAT(JBL.Shift)+'d') ELSE Appl.SetTaskField('Predecessors',FORMAT(StrToInt(JBL.Parent)+Line)+'FS'); IF (JBL."Legacy Type"=2) AND (JBL.Parent<>'') THEN IF JBL.Shift<>0 THEN Appl.SetTaskField('Predecessors',FORMAT(StrToInt(JBL.Parent)+Line)+'FF+'+FORMAT(JBL.Shift)+'d') ELSE Appl.SetTaskField('Predecessors',FORMAT(StrToInt(JBL.Parent)+Line)+'FF'); CASE JBL.Type OF JBL.Type::Resource: BEGIN Res.GET(JBL."No."); Res.TESTFIELD(Blocked,FALSE); Appl.SetTaskField('Resource Names',Res.Name); END; JBL.Type::Item: BEGIN Item.GET(JBL."No."); Appl.SetTaskField('Resource Names',Item.Description); END; JBL.Type::"G/L Account": BEGIN GLAcc.GET(JBL."No."); GLAcc.CheckGLAcc; GLAcc.TESTFIELD("Direct Posting",TRUE); Appl.SetTaskField('Resource Names',GLAcc.Name); END; JBL.Type::"Group (Resource)": BEGIN ResGr.GET(JBL."No."); Appl.SetTaskField('Resource Names',ResGr.Name); END; END; LN:=1; UNTIL JBL.NEXT=0; MESSAGE('Ok'); CLEAR(Appl); |
|
|
За это сообщение автора поблагодарили: mira (1). |