AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.09.2006, 08:44   #1  
Ardak is offline
Ardak
Участник
 
48 / 11 (1) +
Регистрация: 13.07.2006
Большое всем спасибо, разобрался. Получился вот такой код:
Это так наброски, код еще не оптимизировал.

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).
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:39.