Desktop version

Main > Forum > 1C:Enterprise Platform > 1C:Query language and DCS > Explicit lock of scheduled jobs

Forum

Search UsersRules
Explicit lock of scheduled jobs
#1
Active user
Points:: 0
Joined:: May 15, 2013

An explicit lock of scheduled jobs is applied to the infobase via the cluster console.

How to detect this situation in 1C code?

Profile
#2
Just came
Points:: 0
Joined:: Nov 30, 2014

You can create another scheduled job (eg every minute), which would be writing to some constant or register (new) just the last execution. Through a global handler expectations (AttachIdleHandler) (eg every 2-5 minutes) to check the difference between the current time and the last entry in the constant (or register) if the difference is greater than it should be, then the schedule is not working.

Not very elegant, but it might work =)

Profile
#3
Just came
Points:: 0
Joined:: Nov 30, 2014

Or, you can use this code:

Code
   ClusterAdminName      = "YourClusterAdminName";
   ClusterAdminPassword   = "YourClusterAdminPassword";

   ServerAdminName         = "YourServerAdminName";
   ServerAdminPassword      = "YourServerAdminPassword";  

   BaseName         = "YourBaseName";­

   ServerAddress         = "YourServerAddress"; //eg localhost  

   Connector = New COMОбъект("V83.COMConnector");
   AgentConnection = Connector.ConnectAgent(ServerAddress); 

   AgentConnection.AuthenticateAgent(ServerAdminName, ServerAdminPassword);  

   Clusters = AgentConnection.GetClusters();
   Cluster = Clusters.GetValue(Clusters.GetLowerBound()); // first cluster

   AgentConnection.Authenticate(Cluster, ClusterAdminName, ClusterAdminPassword);

   WorkProcs = AgentConnection.GetWorkingProcesses(Cluster);

   WorkProc = WorkProcs.GetValue(WorkProcs.GetLowerBound()); // first work process

   AddressWorkProc = "tcp://" + WorkProc.HostName + ":" + XMLString(WorkProc.MainPort);

   ConnectionWithWorkProc = Connector.ConnectWorkingProcess(AddressWorkProc);
  

   InfoBases = ConnectionWithWorkProc.GetInfoBases();  

    BaseFound = False;

    For each WorkBase in InfoBases Do

        xBase = НРег("""" + WorkBase.Name + """");

        BaseFound = Find(BaseName,xBase) > 0;

        If BaseFound Then

            Break;                

        EndIf;

    EndDo;­

   Message(?(WorkBase.ScheduledJobsDenied,"OFF","ON"));­

   Connector = Undefined;

Profile
#4
Active user
Points:: 0
Joined:: May 15, 2013

Thank you for your suggestions.

The second one is too complicated to use by the end user and is not available on Linux.
The first one is also quite complicated but probably doable. I might try it if there is no better solution.

Profile
#5
Just came
Points:: 0
Joined:: Jul 7, 2013

on linux use:

Code
cd /opt/1C/i386/

ras cluster localhost:1540 &
rac cluster list
rac infobase summary list --cluster=uuid
rac infobase info --infobase=uuid --cluster=uuid 

Profile
#6
Active user
Points:: 0
Joined:: May 15, 2013

Thank you for your suggestions, but they all where too complicated in our case, so we opted just to show a warning so that a user would not forget to check it manually.

Profile
Subscribe
Users browsing this topic (guests: 1, registered: 0, hidden: 0)



© 1C LLC. All rights reserved
1C Company respects the privacy of our customers and visitors
to our Web-site.