Explicit lock of scheduled jobs

Common questions about 1C:Query language, Query builder tool and Data composition schema

#1
People who like this:0Yes/0No
Active user
Rating: 2
Joined: May 15, 2013
Company:

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

How to detect this situation in 1C code?

 
#2
People who like this:0Yes/0No
Just came
Rating: 0
Joined: Nov 30, 2014
Company:

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

 
#3
People who like this:0Yes/0No
Just came
Rating: 0
Joined: Nov 30, 2014
Company:

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;

Edited: Alex Shirokov - Dec 01, 2014 12:08 AM
 
#4
People who like this:0Yes/0No
Active user
Rating: 2
Joined: May 15, 2013
Company:

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.

 
#5
People who like this:1Yes/0No
Just came
Rating: 0
Joined: Jul 7, 2013
Company:

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 

 
#6
People who like this:0Yes/0No
Active user
Rating: 2
Joined: May 15, 2013
Company:

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.

 
Subscribe
Users browsing this topic (guests: 1, registered: 0, hidden: 0)
Be the first to know tips & tricks on business application development!

A confirmation e-mail has been sent to the e-mail address you provided .

Click the link in the e-mail to confirm and activate the subscription.