El número de parámetros del trabajo en segundo plano no coincide. Tareas rutinarias y en segundo plano (1Cv8)

Nos permite realizar cualquier cálculo en el sistema sin que el usuario lo note, es decir, en segundo plano. Además, este mecanismo nos permite paralelizar el proceso de cálculo. Incluso podemos paralelizar el procedimiento que se ejecutará. Para hacer esto, nuestro trabajo en segundo plano debe ejecutar varios trabajos en segundo plano más. En este caso los procesos están paralelizados y, si tenemos un sistema multiprocesador y multinúcleo, nuestro algoritmo funcionará de manera eficiente. Después de iniciar varios procesos, podemos decirle al sistema que debe esperar a que finalicen estos procesos para poder combinar de alguna manera el resultado.

Por ejemplo, en configuraciones típicas, mientras el usuario está trabajando, se ejecutan varios tipos de trabajos de servicio en segundo plano. Esto puede evidenciarse mediante entradas de registro que registran el hecho de que se realizaron dichas acciones. Además, esto no afecta de ninguna manera el trabajo del usuario, simplemente no los nota.

Idealmente, se implementa un trabajo en segundo plano en una versión cliente-servidor, en cuyo caso toda la carga va al servidor. En cuanto a la versión del archivo, es posible realizar un trabajo en segundo plano, pero tiene algunas peculiaridades.

Esto es lo que producirá el sistema si no tiene en cuenta estas características y ejecuta un trabajo en segundo plano en la versión de archivo de la base de datos.


El trabajo en segundo plano de 1C tiene algunas limitaciones. Dado que se ejecuta en el lado del servidor, no hay posibilidad de trabajo interactivo con el usuario. Por ejemplo, no puede mostrar un mensaje ni ninguna información. Todos estos datos deben almacenarse dentro de la base de información y procesarse posteriormente de alguna manera.
Al comunicarse con el asistente de sintaxis, puede obtener información más detallada sobre los trabajos en segundo plano de 1C. Cabe señalar aquí que este objeto es puramente software y no se almacena en la base de datos de ninguna manera. Es decir, creamos una instancia de la clase, inicializamos las propiedades y la lanzamos para su ejecución.

¿Qué herramientas tenemos para gestionar trabajos en segundo plano? Esta instalación es un objeto de metadatos. "Administrador de tareas en segundo plano". Este objeto tiene un método. "Correr", con este método, se inicia el trabajo en segundo plano.

Tiene los siguientes parámetros:
"Nombre del método"- el nombre del procedimiento o función a ejecutar, y debe ser un procedimiento o función del contexto del servidor;

"Opciones"- una matriz de parámetros, cuyo número de elementos debe corresponder al número de parámetros de nuestro procedimiento/función especificado en el parámetro "Nombre del método";

"Llave"- una determinada clave de unicidad, que es una línea mediante la cual el sistema comprende si es necesario iniciar una tarea en segundo plano o si dicha tarea ya se está ejecutando;

"Nombre"- aquí puede especificar una descripción arbitraria de nuestro método.

El valor de retorno es un objeto. "Tarea de fondo", que contiene el nombre del método actual, la clave actual y varias propiedades y métodos más. Uno de esos métodos es el método "Espera completa". Su propósito es que podamos decirle al sistema que no haga nada hasta que se complete el trabajo en segundo plano.

Trabajo en segundo plano 1C 8.2, 8.3 - Ejemplo de uso

Pongamos un ejemplo de cómo trabajar con trabajos en segundo plano de 1C. Primero, crearemos un algoritmo simple que cargará brevemente el sistema 1C de tal manera que no podamos hacer nada en este momento.

Para esto:

1. Creemos un módulo común. "Controladores de tareas en segundo plano", que se compilará en el lado del servidor;


2. En él describiremos el procedimiento de exportación. "ProduceBackgroundCalculation(Parámetro)", que toma un parámetro de tipo cadena;

Procedimiento PerformBackgroundCalculation(Parámetro) ExportStartTime = CurrentDate(); Mientras que CurrentDate() - Hora de inicio< = 6 Цикл КонецЦикла ; КонецПроцедуры Процедура КнНажатие() ОбработчикиФоновыхЗаданий. ПроизветиФоновоеВычисление("Algún parámetro") ; Fin del Procedimiento
Listo. Ahora, cuando comienzas a procesar y presionas un botón, el sistema se congela durante varios segundos, durante los cuales no se puede hacer nada. Esto es exactamente lo que necesitábamos hacer.

Ahora nos aseguraremos de que estos cálculos se realicen en segundo plano, es decir, para que la tarea en segundo plano 1C 8.2, 8.3 se ejecute, pero no interfiera con nosotros.

Para esto:

1. Durante el procesamiento, en el evento de clic del botón, escriba el siguiente código.

Procedimiento KnPress() Parámetros = Nueva matriz; Opciones. Agregar( "Algún parámetro") ; Tarea de fondo. Correr ( "Manejadores de tareas en segundo plano. Realizar cálculo en segundo plano", Parámetros, Nuevo Identificador Único, "Prueba") ; Fin del Procedimiento

Aquí pasamos el nombre del procedimiento del módulo común como primer parámetro y una matriz de parámetros como segundo. Al tercer parámetro se le debe pasar una clave única y al cuarto parámetro una descripción de nuestro procedimiento.

Probablemente, ni una sola configuración seria en 1C 8.3 u 8.2 pueda funcionar sin el uso de tareas de rutina y en segundo plano. Son muy convenientes, ya que se ejecutarán según un cronograma claramente definido sin intervención del usuario o programador.

Por ejemplo, necesitas intercambiar datos con otro programa una vez al día. Utilizando tareas rutinarias y en segundo plano, 1C podrá realizar estas acciones de forma independiente, por ejemplo, fuera del horario laboral. Este método no afectará la experiencia del usuario de ninguna manera y ayudará a ahorrar tiempo.

Primero, averigüemos qué significan y cuál es su diferencia:

  • Tarea programada le permite lanzar cualquier acción específica de acuerdo con un cronograma preconfigurado.
  • Trabajo en segundo plano Es un objeto que contiene las acciones a realizar.

Supongamos que nuestra empresa vende algo y tiene su propio sitio web donde se ubican los precios. Queremos subirlos una vez al día para mantener la relevancia.

Abra la configuración y agregue una tarea programada.

Configuración de propiedades

Veamos los parámetros más importantes que deben completarse en sus propiedades.

  • En el campo " Nombre del método» selecciona el procedimiento de un módulo general específico que se ejecutará directamente. Le indicará todos los pasos para subir precios a nuestra web. Tenga en cuenta que la ejecución se llevará a cabo en el servidor. Esto es lógico porque las operaciones rutinarias se realizan sin la participación del usuario.
  • La tarea programada se puede desactivar o activar según sea necesario. No es necesario editar su agenda cada vez. Para hacer esto, en la paleta de propiedades, configure o borre la bandera " Uso».
  • Otra cosa importante es establecer si esta tarea de rutina será predeterminado, O no. Las tareas programadas predefinidas se inician automáticamente. Si esta función no está instalada, deberá iniciarlas mediante programación o utilizar el procesamiento de la "Consola de tareas" con ITS.
  • También puedes especificar Número de repeticiones e intervalo entre ellas. en caso de terminación anormal. La terminación anormal se refiere a aquellas situaciones en las que los trabajos no se completaron debido a un error.

Configurar un horario

El último paso es configurar un cronograma para nuestra carga al sitio usando el hipervínculo correspondiente en la paleta de propiedades.

Verá una configuración de horario típica en 1C 8.3. Aquí no hay nada complicado. En este ejemplo, configuramos el lanzamiento de nuestra carga de precios en el sitio todos los días de cinco a siete de la mañana. En el caso de que la tarea programada no tenga tiempo de completarse antes de las 7:00, se completará al día siguiente.

Bloquear tareas programadas

Ejecute la utilidad estándar "Administración de servidores empresariales 1C" y abra las propiedades de la base de datos donde creó la tarea de rutina (para las versiones cliente-servidor de 1C).

En la ventana que se abre (después de ingresar su nombre de usuario y contraseña para acceder a la seguridad de la información), verifique que la casilla "El bloqueo de tareas rutinarias está habilitado" no esté seleccionada. Si encuentra una situación en la que la tarea no funciona, verifique esta configuración primero.

De la misma forma, puedes desactivar por completo las tareas rutinarias en 1C 8.3. Para deshabilitar trabajos en segundo plano específicos, puede utilizar el procesamiento de la “Consola de trabajos en segundo plano” integrado en las últimas versiones.

Tareas en segundo plano y programadas en modo archivo

En este modo, configurar y ejecutar estas tareas es mucho más difícil de organizar. La mayoría de las veces se crea una cuenta adicional, cuya sesión siempre estará abierta.

En este caso, las tareas rutinarias se activan mediante el método “RunTaskProcessing()”.

También puedes utilizar la siguiente construcción:

Como nombre del procedimiento, debe especificar el nombre del procedimiento del cliente que se ejecutará. El intervalo muestra cuántos segundos después tendrá lugar la ejecución. El parámetro "Única vez" no es necesario. Refleja si este procedimiento se realizará una o varias veces.

Errores de seguimiento en trabajos en segundo plano

Puede ver el progreso de los trabajos en segundo plano, así como la presencia de posibles errores, en el registro. En el filtro, establezca la selección en la aplicación "Trabajo en segundo plano" y, si es necesario, seleccione la importancia de interés, por ejemplo, solo "Errores".

El registro mostrará todas las entradas que coincidan con su selección, junto con un comentario que le ayudará a comprender el motivo del error.

Mecanismo de trabajo

El motor de trabajos está diseñado para realizar cualquier aplicación o funcionalidad de forma programada o asincrónica.

El mecanismo de tareas resuelve las siguientes tareas:

  • Capacidad para definir procedimientos regulatorios en la etapa de configuración del sistema;
  • Ejecución de acciones específicas según cronograma;
  • Realizar una llamada a un procedimiento o función determinado de forma asincrónica, es decir, sin esperar a su finalización;
  • Seguimiento del progreso de una tarea específica y obtención de su estado de finalización (un valor que indica si fue exitosa o no);
  • Obtener una lista de tareas actuales;
  • Capacidad de esperar a que se completen una o más tareas;
  • Gestión de trabajos (posibilidad de cancelación, bloqueo de ejecución, etc.).

El mecanismo de trabajo consta de los siguientes componentes:

  • Metadatos de tareas rutinarias;
  • Tareas regulares;
  • Trabajos en segundo plano;
  • Programador de tareas.

Los trabajos en segundo plano están diseñados para realizar tareas de aplicaciones de forma asincrónica. Las tareas en segundo plano se implementan utilizando el lenguaje integrado.

Tareas programadas: diseñadas para realizar tareas aplicadas según un cronograma. Las tareas de rutina se almacenan en la base de información y se crean en función de los metadatos definidos en la configuración. Los metadatos de una tarea regulatoria contienen información como nombre, método, uso, etc.

Una tarea de rutina tiene un cronograma que determina en qué momentos se debe ejecutar el método asociado con la tarea de rutina. El cronograma, por regla general, se especifica en la base de información, pero también se puede especificar en la etapa de configuración (por ejemplo, para tareas rutinarias predefinidas).

El programador de tareas se utiliza para programar la ejecución de tareas rutinarias. Para cada trabajo programado, el planificador comprueba periódicamente si la fecha y hora actuales coinciden con la programación del trabajo programado. Si coincide, el programador asigna esa tarea a ejecución. Para hacer esto, para esta tarea programada, el programador crea una tarea en segundo plano, que realiza el procesamiento real.

Trabajos en segundo plano

Los trabajos en segundo plano son convenientes para realizar cálculos complejos cuando el resultado del cálculo puede tardar mucho en obtenerse. El motor de trabajos tiene los medios para realizar dichos cálculos de forma asincrónica.

Asociado con un trabajo en segundo plano hay un método que se llama cuando se ejecuta el trabajo en segundo plano. Un método de trabajo en segundo plano puede ser cualquier procedimiento o función de un módulo común no global que se pueda llamar en el servidor. Los parámetros del trabajo en segundo plano pueden ser cualquier valor que pueda pasarse al servidor. Los parámetros de un trabajo en segundo plano deben coincidir exactamente con los parámetros del procedimiento o función que llama. Si el método del trabajo en segundo plano es una función, se ignora su valor de retorno.

Un trabajo en segundo plano puede tener una clave: cualquier valor de aplicación. La clave introduce una restricción en el inicio de trabajos en segundo plano: solo se puede ejecutar un trabajo en segundo plano por unidad de tiempo con un valor de clave específico y un nombre de método de trabajo en segundo plano determinado (el nombre del método consta del nombre del módulo y el nombre del procedimiento). o función). La clave le permite agrupar trabajos en segundo plano que tienen los mismos métodos según una característica de aplicación específica para que no se ejecute más de un trabajo en segundo plano dentro de un grupo.

Los trabajos en segundo plano se crean y administran mediante programación desde cualquier conexión. Cualquier usuario puede crear un trabajo en segundo plano. Además, se ejecuta en nombre del usuario que lo creó. Se permite recibir tareas, así como esperar a que se completen, desde cualquier conexión con un usuario con derechos administrativos o con el usuario que creó estos trabajos en segundo plano.

Un trabajo en segundo plano es un objeto puramente de sesión y no pertenece a ninguna sesión de usuario. Para cada tarea, se crea una sesión especial del sistema, que se ejecuta en nombre del usuario que realizó la llamada. Los trabajos en segundo plano no tienen estado persistente.

Un trabajo en segundo plano puede generar otros trabajos en segundo plano. En la versión cliente-servidor, esto le permite paralelizar cálculos complejos entre los procesos de trabajo del clúster, lo que puede acelerar significativamente el proceso de cálculo en su conjunto. La paralelización se implementa generando varios trabajos en segundo plano secundarios y esperando a que cada uno de ellos se complete en el trabajo en segundo plano principal.

Los trabajos en segundo plano que se completan correctamente o fallan se almacenan durante 24 horas y luego se eliminan. Si el número de trabajos en segundo plano completados supera los 1000, los trabajos en segundo plano más antiguos también se eliminan.

Tareas programadas

Las tareas programadas se utilizan cuando es necesario realizar determinadas acciones periódicas o únicas según un cronograma.

Las tareas programadas se almacenan en la base de información y se crean en base a los metadatos de la tarea de rutina definida en la configuración. Los metadatos especifican parámetros de una tarea de rutina como: método llamado, nombre, clave, posibilidad de uso, signo de predeterminación, etc. Al crear una tarea de rutina, puede especificar adicionalmente el cronograma (se puede especificar en los metadatos), los valores. ​de los parámetros del método, nombre del usuario en cuyo nombre se realizan las tareas rutinarias, etc.

La creación y gestión de tareas programadas se realiza mediante programación desde cualquier conexión y solo está permitida a usuarios con derechos administrativos.

Nota. Cuando se trabaja en la versión de archivo, es posible crear y editar tareas de rutina sin iniciar el programador de tareas.

Asociado a una tarea de rutina hay un método que se llama cuando se ejecuta la tarea de rutina. El método de tarea de rutina puede ser cualquier procedimiento o función de un módulo común no global que pueda invocarse en el servidor. Los parámetros de una tarea de rutina pueden ser cualquier valor que pueda transmitirse al servidor. Los parámetros de una tarea de rutina deben coincidir exactamente con los parámetros del procedimiento o función que llama. Si el método de la tarea de rutina es una función, entonces se ignora su valor de retorno.

Una tarea rutinaria puede tener una clave: cualquier valor de aplicación. La clave introduce una restricción en el lanzamiento de tareas programadas, porque Por unidad de tiempo, entre las tareas de rutina asociadas con el mismo objeto de metadatos, solo se puede ejecutar una tarea de rutina con un valor clave específico. La clave le permite agrupar tareas de rutina asociadas con el mismo objeto de metadatos según una característica de aplicación específica, de modo que no se realice más de una tarea de rutina dentro de un grupo.

Durante la configuración, puede definir tareas de rutina predefinidas. Las tareas de rutina predefinidas no se diferencian de las tareas de rutina regulares, excepto que no se pueden crear ni eliminar explícitamente. Si en los metadatos de la tarea programada está configurado signo de una tarea rutinaria predeterminada, luego, al actualizar la configuración en la base de datos, se creará automáticamente una tarea de rutina predefinida. Si se borra la bandera predeterminada, al actualizar la configuración en la base de datos, la tarea de rutina predefinida se eliminará automáticamente. Los valores iniciales de las propiedades de una tarea programada predefinida (por ejemplo, una programación) se establecen en los metadatos. En el futuro, cuando la aplicación se esté ejecutando, se podrán cambiar. Las tareas rutinarias predefinidas no tienen parámetros.

La programación de tareas de rutina determina en qué momentos se debe ejecutar la tarea de rutina. El cronograma permite configurar: la fecha y hora de inicio y fin de la tarea, el período de ejecución, los días de la semana y meses en los que se debe realizar la tarea programada, etc. (ver descripción del programa integrado). en el lenguaje).

Ejemplos de cronogramas de tareas rutinarias:

Cada hora, solo un día

Período de días repetidos = 0, período de días repetidos = 3600

Todos los días una vez al día

Período de días repetidos = 1, período de días repetidos = 0

Un día, una vez

PeriodoRepeticiónDías = 0

Cada dos días una vez al día

PeriodoRepeticiónDías = 2

Cada hora de 01.00 a 07.00 todos los días

PeriodoRepeticiónDías = 1

Repetir período durante el día = 3600

Hora de inicio = 01.00

Hora de finalización = 07.00

Todos los sábados y domingos a las 09.00 horas.

PeriodoRepeticiónDías = 1

Días de la semana = 6, 7

Hora de inicio = 09.00

Todos los días durante una semana, sáltate una semana

PeriodoRepeticiónDías = 1

Periodo Semanas = 2

A la 01.00 una vez

Hora de inicio = 01.00

Último día de cada mes a las 9:00 horas.

PeriodoRepeticiónDías = 1

DíaEnMes = -1

Hora de inicio = 09.00

Quinto día de cada mes a las 9:00

PeriodoRepeticiónDías = 1

DíaEnMes = 5

Hora de inicio = 09.00

Segundo miércoles de cada mes a las 9:00

PeriodoRepeticiónDías = 1

DíaSemanaEnMes = 2

Días de la semana = 3

Hora de inicio = 09.00

Puede comprobar si una tarea se está ejecutando para una fecha determinada (el método RequiredExecution del objeto ScheduleTasks). Las tareas programadas siempre se realizan bajo el nombre de un usuario específico. Si no se especifica el usuario de la tarea programada, la ejecución se produce en nombre del usuario predeterminado que tiene derechos administrativos.

Las tareas rutinarias se ejecutan utilizando tareas en segundo plano. Cuando el programador determina que se debe iniciar una tarea programada, se crea automáticamente un trabajo en segundo plano basado en esta tarea programada, que realiza todo el procesamiento posterior. Si esta tarea de rutina ya se está ejecutando, no se volverá a ejecutar, independientemente de su programación.

Las tareas programadas se pueden reiniciar. Esto es especialmente cierto cuando se debe garantizar la ejecución del método de tarea de rutina. Una tarea de rutina se reinicia cuando finaliza de manera anormal, o cuando el proceso de trabajo (en la versión cliente-servidor) o el proceso de cliente (en la versión de archivo) en el que se ejecutó la tarea de rutina finaliza de manera anormal. En la tarea programada, puede especificar cuántas veces debe reiniciarse, así como el intervalo entre reinicios. Al implementar el método de tarea de rutina reiniciable, se debe tener en cuenta que al reiniciar, su ejecución comenzará desde el principio y no continuará desde el momento de la terminación anormal.

Es importante recordar que Hora de finalización no necesariamente completará el trabajo en segundo plano en el momento especificado. Algunas declaraciones:

* Un trabajo en segundo plano puede ignorar su cancelación automática si no está congelado pero continúa ejecutándose porque no se pueden cancelar todas las operaciones de la plataforma. Si se ejecuta el código cíclico del lenguaje incorporado, entonces el trabajo se puede cancelar; de lo contrario, no. Todo depende de lo que haga el trabajo. * Hora de finalización: ¿el límite dentro del cual una tarea puede comenzar en lugar de terminar? * ¿La finalización forzada de una tarea revierte los cambios realizados al inicio de la transacción?

Características de la ejecución de trabajos en segundo plano en variantes de archivo y cliente-servidor

Los mecanismos para ejecutar trabajos en segundo plano en las versiones de archivos y cliente-servidor son diferentes.

  • En la versión de archivo, debe crear un proceso de cliente dedicado que realizará trabajos en segundo plano. Para hacer esto, el proceso del cliente debe llamar periódicamente a la función de contexto global ExecuteJobProcessing. Sólo un proceso de cliente por base de datos debe procesar trabajos en segundo plano (y, en consecuencia, llamar a esta función). Si no se ha creado un proceso de cliente para procesar trabajos en segundo plano, al acceder mediante programación al motor de trabajos, se mostrará el error "El Administrador de trabajos no está activo". No se recomienda utilizar un proceso de cliente que procese trabajos en segundo plano para otras funciones.

Una vez que se inicia el proceso del cliente que procesa trabajos en segundo plano, otros procesos del cliente pueden acceder mediante programación al motor de trabajos en segundo plano, es decir, puede ejecutar y administrar trabajos en segundo plano.

En la versión cliente-servidor, se utiliza un programador de tareas para ejecutar trabajos en segundo plano, que se encuentra físicamente en el administrador del clúster. Para todos los trabajos en segundo plano en cola, el programador obtiene el proceso de trabajo menos cargado y lo utiliza para ejecutar el trabajo en segundo plano correspondiente. El proceso de trabajo ejecuta el trabajo y notifica al planificador los resultados de la ejecución.

En la versión cliente-servidor es posible bloquear la ejecución de tareas rutinarias. La ejecución de tareas rutinarias se bloquea en los siguientes casos:

  • Se ha instalado un bloqueo explícito de tareas rutinarias en la base de información. El bloqueo se puede configurar a través de la consola del clúster;
  • Hay un bloque de conexión en la base de información. El bloqueo se puede configurar a través de la consola del clúster;
  • El método SetExclusiveMode() con el parámetro True se llamó desde el lenguaje integrado;
  • En algunos otros casos (por ejemplo, al actualizar la configuración de la base de datos).

Crear metadatos para una tarea rutinaria

Antes de crear mediante programación una tarea de rutina en la base de datos, debe crear un objeto de metadatos para ella.

Para crear un objeto de metadatos para una tarea de rutina en el árbol de configuración en la rama "General" para la rama "Tareas de rutina", ejecute el comando "Agregar" y complete las siguientes propiedades de la tarea de rutina en la paleta de propiedades:

Nombre del método: indique el nombre del método de la tarea de rutina.

Clave: especifique un valor de cadena arbitrario que se utilizará como clave de la tarea programada.

Horario: indica el horario de la tarea de rutina. Para crear un cronograma, haga clic en el enlace "Abrir" y en el formulario de cronograma que se abre, establezca los valores requeridos.

En la pestaña “General” se indican las fechas de inicio y finalización de la tarea y el modo de repetición.

En la pestaña "Diario" se indica el horario diario de la tarea.

Especifique el horario:

  • hora de inicio y hora de finalización de la tarea;
  • tiempo de finalización de la tarea, después del cual será terminada por la fuerza;
  • período de repetición de tareas;
  • duración de la pausa entre repeticiones;
  • duración de la ejecución.

Se permite especificar una combinación arbitraria de condiciones.

En la pestaña "Semanal" se indica el cronograma semanal de la tarea.

Seleccione las casillas de verificación para los días de la semana en los que se ejecutará la tarea. Si desea repetir la tarea, especifique el intervalo de repetición en semanas. Por ejemplo, la tarea se ejecuta en 2 semanas, el valor de repetición es 2.

En la pestaña “Mensual” se indica el cronograma mensual de la tarea.

Seleccione las casillas de verificación de los meses en los que se ejecutará la tarea. Si es necesario, puede especificar un día específico (mes o semana) de ejecución desde el principio del mes/semana o desde el final.

Uso: si se establece, la tarea se ejecutará según el cronograma.

Predefinida: si se establece, la tarea es una tarea predefinida.

Número de reintentos en caso de terminación anormal: indica el número de reintentos en caso de terminación anormal.

Intervalo de reintento en caso de terminación anormal: especifica el intervalo de reintento en caso de terminación anormal. Ejemplos

Creación de un trabajo en segundo plano "Actualización del índice de búsqueda de texto completo":

BackgroundTasks.Run("ActualizandoFullTextSearchIndex");

Creación de una tarea de rutina “Recuperación de secuencias”:

Horario = Nueva tarea programada; Horario.PeriodRepeatDays = 1; Schedule.RepeatPeriodDuringDay = 0;

Tarea = RoutineTasks.CreateRoutineTask("Restaurando Secuencias"); Trabajo.Programación = Programación; Tarea.Escribir();

Consola de trabajo

Procesando con ITS, gestiona tareas rutinarias:

Trabajar con tareas rutinarias

Objetos de trabajo

No se hace referencia a los objetos de trabajo, pero se almacenan en la base de datos en algún almacenamiento especial.

Si el indicador "Predefinido" está habilitado en los metadatos, dicho objeto se crea automáticamente cuando se inicia 1C:Enterprise y siempre existe exactamente en una instancia. Un objeto así no se puede eliminar.

Si no se establece el indicador "Predefinido", los objetos de dicha tarea se crean y eliminan mediante programación, especificando el cronograma y los parámetros.

Obtener una lista de tareas

La lista de tareas se puede obtener utilizando el método. Obtener tareas de rutina gerente de trabajo global Tareas de rutina

Administrador de trabajos programados

Obtener trabajos programados (GetScheduledJobs)

Sintaxis:

Obtener tareas de rutina (<Отбор>)

Opciones:

<Отбор>(opcional)

Tipo: Estructura. Estructura que define la selección. Los valores de la estructura pueden ser: Identificador único, Clave, Metadatos, Predefinido, Uso, Nombre. Si no se especifica la selección, se obtienen todas las tareas de rutina.

Si está filtrando por metadatos, como valor de metadatos puede especificar el objeto de metadatos de la tarea de rutina o su nombre.

Valor de retorno:

Tipo: Matriz.

Descripción:

Recibe una serie de tareas rutinarias para una selección determinada. La recepción de tareas programadas sólo es posible para el administrador.

Disponibilidad:

Rutina = RoutineTasks.GetRoutineTasks(Selección);

Para cada rutina del ciclo de rutina NewLine = Lista de tareas de rutina.Add(); NewRow.Metadata = Regular.Metadata.View(); NuevaLínea.Nombre = Regular.Nombre; NewString.Key = Regular.Clave; NewLine.Schedule = Horario.Horario; NewLine.User = Regular.Nombre de usuario; NewString.Predefinido = Regular.Predefinido; NewString.Use = Regular.Uso; NewString.Identifier = Regular.UniqueIdentifier;

ÚltimaTarea = Regular.ÚltimaTarea; Si la última tarea<>Indefinido Entonces NewRow.Running = LastTask.Start; NewRow.State = Última Tarea.State; terminara si; Fin del ciclo;

Creación

Creado por el método Create RoutineTask para el administrador de tareas rutinarias:

RoutineTask = RoutineTasks.CreateRoutineTask(MetadataSelection);

RegularTask.Nombre = Nombre; RegularTask.Key = Clave; RegularTask.Use = Uso; RoutineTask.UserName = UsersChoice; TareadeRutina.Número deRepeticionesEnEmergenciaCompleción =NúmerodeRepeticionesEnEmergenciaCompleción; ScheduledTask.RepeatIntervalAtEmergencyCompletion = RetryIntervalAtEmergencyCompletion; ScheduleTask.Schedule = Horario; RegularTask.Record();

TaskObject = RoutineTasks.CreateRoutineTask("ExchangeExchange");

TaskObject.Name = Nombre; JobObject.Use = Verdadero;

El objeto de tarea tiene un campo "Parámetros" en el que se especifican los parámetros del método:

Trabajo programado

Opciones(Parámetros)

Uso:

Lee y escribe.

Descripción:

Tipo: Matriz. Una matriz de parámetros para una tarea programada. El número y la composición de los parámetros deben corresponder a los parámetros del método de la tarea de rutina.

Disponibilidad:

Servidor, cliente pesado, conexión externa.

Nota:

Las capacidades de lectura y escritura solo están disponibles para el administrador.

Eliminación

Eliminado usando el método Delete() del objeto de tarea:

Tarea programada.Delete();

Obtener un objeto de trabajo

  • lista a través del método GetRoutineTasks:

Rutina = RoutineTasks.GetRoutineTasks(Selección);

  • a través del FindByUniqueIdentifier del método del administrador de tareas:

Tarea = Tareas programadas.FindByUniqueIdentifier(UID);