Job Scheduler

CindyPret
Member Posts: 15
Can Navision's Job Scheduler run automatically withou a user pressing the start button?
0
Comments
-
if you use a NAS for sheduling, yesDo you make it right, it works too!0
-
You have to move the code from the form to a codeunit. and add code to CU 1 to start the a timer that will call the new CodeUnit.0
-
The problem with NAS is that you will not be able to run anything that returns a output...Confessions of a Dynamics NAV Consultant = my blog
AP Commerce, Inc. = where I work
Getting Started with Dynamics NAV 2013 Application Development = my book
Implementing Microsoft Dynamics NAV - 3rd Edition = my 2nd book0 -
Thank you!0
-
Here is the Single Instance CU that would start from CU 1.
OnRun() JobSchedMgtSetup.GET; JobSchedMgtSetup.TESTFIELD("Shut Down Time"); IF ISCLEAR(Timer) THEN CREATE(Timer); Timer.StartTimer(6000); IsRunning := TRUE; CodeUnitIsRunning() : Boolean EXIT(IsRunning); Code() IF NOT JobSchedMgtSetup.GET THEN ERROR(Text000,JobSchedMgtSetup.TABLECAPTION); IF (NOT JobSchedMgtSetup."Log Scheduler Actions") THEN EXIT; CheckAndRunScheduler; CheckAndRunScheduler() SELECTLATESTVERSION; JobSchedSetup2.LOCKTABLE; JobSchedSetup2.RESET; JobSchedSetup2.SETCURRENTKEY("Next Check Date","Next Check Time"); JobSchedSetup2.SETFILTER("Next Check Date",'<>%1',0D); JobSchedSetup2.SETRANGE(Enabled,TRUE); IF JobSchedSetup2.FIND('-') THEN REPEAT JobSchedSetup := JobSchedSetup2; IF RunNow(JobSchedSetup."Next Check Date",JobSchedSetup."Next Check Time",JobSchedSetup) THEN IF AllObj.GET(JobSchedSetup."Object Type",JobSchedSetup."Object No.") THEN BEGIN COMMIT; IF JobSchedSetup."Error Handling" = JobSchedSetup."Error Handling"::"Mark as Error and Stop" THEN BEGIN CASE JobSchedSetup."Object Type" OF JobSchedSetup."Object Type"::Report: REPORT.RUNMODAL(JobSchedSetup."Object No.",FALSE,FALSE); JobSchedSetup."Object Type"::Dataport: DATAPORT.RUNMODAL(JobSchedSetup."Object No.",FALSE); JobSchedSetup."Object Type"::Codeunit: CODEUNIT.RUN(JobSchedSetup."Object No."); END; COMMIT; JobSchedSetup.LOCKTABLE; JobSchedSetup.GET(JobSchedSetup.ID); JobSchedSetup."Message Text" := 'Processed successfully.'; JobSchedSetup."Last DateTime Run" := CURRENTDATETIME; NewDateAndTime(JobSchedSetup); IF JobSchedSetup.MODIFY THEN; COMMIT; END ELSE BEGIN IF RunObjectFromJobSched.RUN(JobSchedSetup) THEN BEGIN COMMIT; JobSchedSetup.LOCKTABLE; JobSchedSetup.GET(JobSchedSetup.ID); JobSchedSetup."Message Text" := 'Processed successfully.'; JobSchedSetup."Last DateTime Run" := CURRENTDATETIME; NewDateAndTime(JobSchedSetup); IF JobSchedSetup.MODIFY THEN; COMMIT; END ELSE BEGIN JobSchedSetup.LOCKTABLE; JobSchedSetup.GET(JobSchedSetup.ID); JobSchedSetup."Message Text" := Text013; JobSchedSetup."Last DateTime Run" := CURRENTDATETIME; IF JobSchedSetup.MODIFY THEN; COMMIT; END; END; END; UNTIL JobSchedSetup2.NEXT = 0; RunNow(RunDate : Date;RunTime : Time;JobSchedSetup : Record "Job Scheduler Setup") : Boolean IF JobSchedSetup."Run Status" = JobSchedSetup."Run Status"::"Special Order" THEN EXIT(TRUE); IF (RunDate = 0D) OR (RunTime = 0T) THEN EXIT(FALSE); IF ((TODAY - RunDate) * 24) + ((TIME - RunTime) / 3600000) > 0 THEN BEGIN CASE DATE2DWY(TODAY,1) OF 1: IF JobSchedSetup."Valid on Mondays" THEN EXIT(CheckTimeLimit(JobSchedSetup)) ELSE EXIT(FALSE); 2: IF JobSchedSetup."Valid on Tuesdays" THEN EXIT(CheckTimeLimit(JobSchedSetup)) ELSE EXIT(FALSE); 3: IF JobSchedSetup."Valid on Wednesdays" THEN EXIT(CheckTimeLimit(JobSchedSetup)) ELSE EXIT(FALSE); 4: IF JobSchedSetup."Valid on Thursdays" THEN EXIT(CheckTimeLimit(JobSchedSetup)) ELSE EXIT(FALSE); 5: IF JobSchedSetup."Valid on Fridays" THEN EXIT(CheckTimeLimit(JobSchedSetup)) ELSE EXIT(FALSE); 6: IF JobSchedSetup."Valid on Saturdays" THEN EXIT(CheckTimeLimit(JobSchedSetup)) ELSE EXIT(FALSE); 7: IF JobSchedSetup."Valid on Sundays" THEN EXIT(CheckTimeLimit(JobSchedSetup)) ELSE EXIT(FALSE); ELSE EXIT(FALSE); END; END ELSE EXIT(FALSE); CheckTimeLimit(JobSchedSetup : Record "Job Scheduler Setup") : Boolean IF (JobSchedSetup."Starting Time" = 0T) OR (JobSchedSetup."Ending Time" = 0T) THEN EXIT(TRUE); WTime := TIME; IF (WTime >= JobSchedSetup."Starting Time") AND (WTime <= JobSchedSetup."Ending Time") THEN EXIT(TRUE) ELSE EXIT(FALSE); NewDateAndTime(VAR JobSchedSetup2 : Record "Job Scheduler Setup") JobSchedSetup2."Last Date Checked" := TODAY; JobSchedSetup2."Last Time Checked" := TIME; IF JobSchedSetup2."Run Status" <> JobSchedSetup2."Run Status"::"Special Order" THEN RunObjectFromJobSched.CalcNewDateTime( JobSchedSetup2."Next Check Date",JobSchedSetup2."Next Check Time", JobSchedSetup2."Time Between Check",JobSchedSetup2."Unit of Measure"); Timer::TimerEvent() Code; COMMIT;
All the variables have been copied from Form.0 -
Thank you0
-
you are welcome.0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions