Depurando el programa 1s. Idioma incorporado. Usando el nuevo protocolo

Depuración 1C- un mecanismo muy potente y funcional de la plataforma 1C 8.3, que le permite encontrar rápidamente errores en el código del programa (en otros lenguajes de programación esto se llama "debug", del inglés "debug").

A continuación, consideraremos los métodos principales para utilizar el mecanismo de depuración en forma de instrucciones prácticas utilizando un ejemplo específico.

¡Atención! Si usa el modo cliente-servidor (en el servidor), necesita.

La forma más sencilla de iniciar la depuración en 1C es abrir 1C en modo y desde allí iniciar el modo de depuración en el modo de funcionamiento deseado (delgado/grueso, administrado/normal):

Depuración de trabajos en segundo plano 1C

Para poder depurar trabajos en segundo plano, debe ir al menú "Depuración - Conexión". En la ventana que se abre, haga clic en el botón "Conexión automática":

En esta ventana puede configurar la bandera correspondiente.

Además de los trabajos en segundo plano, en esta ventana puede habilitar la depuración de conexiones externas, http y .

Establecer un punto de interrupción

El segundo paso en la depuración es establecer un punto de interrupción (en otros lenguajes de programación, punto de interrupción).

Por ejemplo, seleccioné el controlador "Al cambiar" en el formulario del documento para depurarlo:

Para establecer un punto de interrupción, debe encontrar el código del programa deseado y hacer doble clic en el campo a la izquierda del campo de entrada del código (o presionar el botón F9):

Para ver una lista de todos los instalados, debe ir al menú Depurar - Lista de puntos de interrupción (alt + F9):

Obtenga 267 lecciones en video sobre 1C gratis:

Punto de interrupción 1C con condición (azul)

Además del punto de interrupción habitual en 1C, existe otro tipo de punto de interrupción: con una condición. Gráficamente, dicho punto se muestra en azul. Este punto de interrupción es muy útil cuando necesita capturar una iteración específica mientras atraviesa un bucle. La depuración se activará cuando se cumpla una determinada condición.

Por ejemplo, detengamos el ciclo en la línea número 25:

Punto de interrupción inactivo (gris)

Un punto de interrupción gris significa que no está activo y el sistema no se detendrá en ese punto de interrupción. Puede desactivarlo haciendo clic en el botón especial en el panel "Desactivar punto de interrupción" (shift+ctrl+F9):

Punto de interrupción de error

El sistema puede detenerse debido a un error; para hacer esto, debe configurar el indicador correspondiente en el menú Depurar - Detener por error:

Además, una parada de error tiene una funcionalidad similar a un punto de interrupción condicional: le permite filtrar excepciones con un texto de error específico.

Movimiento paso a paso a través del código del programa 1C.

Después de establecer un punto de interrupción, debe iniciar la ejecución del código del programa deseado para que el sistema ingrese la ejecución del código paso a paso. La visualización de una flecha indica el inicio del modo de ejecución del código paso a paso:

Para dar un paso a la siguiente línea, debe presionar el botón “F11″ (Paso a).

Si recorre líneas de código de programa y hay un procedimiento o función en la línea, entonces "caerá" dentro de este procedimiento (o función).

Para no "fallar", en lugar de F11 (Pasar a) basta con saltar las líneas con el botón F10 (Pasar a través), este botón le permite recorrer los procedimientos en el código del programa;

Para pasar de la posición actual del cursor a la deseada, sin pasar por las líneas de código intermedias, debe colocar el cursor en la línea deseada y presionar Mayús + F10 (Ir al cursor).

Análisis de valores en modo de depuración 1C.

Puedes ver los valores de ciertos valores de diferentes maneras:

Mostrar valor al pasar el mouse

Cuando pasa el cursor sobre una variable, el sistema "resalta" los valores de la variable:

Uso de Evaluar expresión o Tableau

  • Forma Evaluar expresión se puede llamar usando el menú contextual o presionando las teclas de método abreviado - (Shift + F9), o el menú (Depuración - Evaluar expresión).
  • Marcador se llama usando las teclas de método abreviado Ctrl + Alt + W o desde el menú (Depuración - Tableau).

Estos dos métodos de análisis son muy similares, las principales diferencias están en la interfaz. Es más conveniente utilizar un marcador para un grupo de indicadores y expresiones para indicadores individuales.

Estos métodos son muy fáciles de usar. Basta con ingresar el nombre de la variable deseada en la tabla. Una gran ventaja de los cálculos arbitrarios es que puedes agregar tus propios datos a la expresión.

Por ejemplo:

Es muy útil utilizar la evaluación de expresiones y ejecutar una consulta, subirla a una tabla de valores y mirarla.

Cómo saber desde dónde se llama a un procedimiento en la depuración - Pila de llamadas

Muy a menudo es necesario comprender desde dónde se llamó a un procedimiento o función en particular y con qué parámetros. Para ello, 1C proporciona una función especial: "Pila de llamadas". Para iniciar la pila de llamadas, debe presionar las teclas de acceso rápido: Ctrl + Alt + C o mediante el menú (Depuración - Pila de llamadas).

Utilizándolo podrás conocer en detalle desde dónde se llamó el procedimiento y con qué parámetros:

Si está interesado en evaluar el rendimiento durante la depuración: .

Vea también un video de descripción general sobre la depuración en 1C:


Palabras clave: depurador, depuración, control, punto de interrupción, ejecución paso a paso

Quienes han trabajado al menos una vez con el depurador de VBA sueñan con poder cambiar los valores de las variables en 1C y saltar a cualquier punto del código.

No lo prometo todo, pero algunas funciones están disponibles mediante intervenciones cosméticas en la configuración.

El uso de estas funciones se basa en el hecho de que en el panel del depurador en el modo Configurador o 1C:Enterprise puede llamar a funciones disponibles en el contexto de los puntos de interrupción. Los ejemplos deben ingresarse en la pantalla Ctrl+Alt+W o en la ventana de visualización del valor de la expresión Shift+F9 y obtener el resultado inmediatamente.

Función de control remoto

Esta función le permite ejecutar cualquier código en lenguaje 1C sobre cualquier dato que se le pase en cualquier momento.

Función Du(Código, P = Indefinido, P1 = Indefinido, P2 = Indefinido, P3 = Indefinido, P4 = Indefinido) Exportar Variable P; Ejecutar código); Devolver P; Función final

Ejemplos:
= Informa algún texto
Du("Informe(1) ")
= Establece la variable Fallo en verdadero
Du("P=verdadero", Rechazo)
= Cierra el formulario
Du("P.Close()", Esteformulario)
= No puedes llamar a un procedimiento en el depurador, pero puedes hacerlo a través del control remoto:
Du(" Sistema apagado()");

Asignación de función

Todo el mundo sabe que en 1C80 no se pueden cambiar los valores de las variables por motivos de depuración.
Sin embargo, ¡hay una salida!
En un módulo general, declare una función:

Función Asignar(A,B) Exportar A=B; Devolver A; Función final

Ahora puedes asignar un valor a una variable en cualquier momento.

Ejemplos:
Asignar (flContinue, falso); Asignar(Restante, RestanteEnStock()-11);

Depuración en una configuración estándar

Pero, ¿qué deberías hacer si llegas a depurar una configuración que no tiene estas excelentes funciones?

Todo es muy sencillo. Cree un procesamiento externo, agregue estas funciones a su módulo con la palabra clave export y llámelas, por ejemplo, así:

ExternalProcessing.Create("C:\debug.epf").Assign(A, Indefinido);

Manipulación de pilas.

Fue una agradable sorpresa para mí cuando descubrí que se pueden observar variables en diferentes niveles de la pila.

Debe abrir la ventana de la pila (Ctrl+F3), ir al nivel requerido e ingresar el nombre de la variable en la pantalla.
La mejor manera de pensar en esto es usar una función recursiva como ejemplo:
Prueba de función (A) Si A> 10, entonces devuelve falso; De lo contrario, prueba de devolución (A+1); terminara si; Función final

Coloque un punto de interrupción en esta función y verá que la variable A toma diferentes valores en diferentes niveles de la pila.

Interrumpir el programa

Desafortunadamente, en 1C 80 puedes dejar de ejecutar algún código solo deteniendo todo 1C:Enterprise. Por así decirlo, para combatir el dolor de cabeza es necesario cortarse la cabeza. :)
Pero no todo es tan malo.

Usando la función Asignar, puede asignar el valor Indefinido o cero a algún objeto crítico del programa, y ​​tan pronto como el programa intente obtener el atributo o método de este objeto, ocurrirá un error y el código dejará de funcionar.
Por ejemplo, estás en el punto:

A=1; Si Código de referencia>A, entonces devuelve Indefinido; terminara si;

Utilice llamada:
Asignar(Ref,0);

Ahora, tan pronto como la ejecución del código llegue a la línea "Si", se producirá un error y la ejecución se detendrá.

Mirar hacia el futuro

A veces, al depurar funciones anidadas complejas, no sabes si tiene sentido depurar esa función en particular paso a paso, o si es mejor hacerlo sin entrar para una depuración detallada.

En tales casos conviene mirar en la ventana de vista de valores ver qué valor devuelve esta función y si devuelve algún valor que nos resulte interesante depurarlo.

Cambiar código sobre la marcha

Si tiene mucho código ejecutado en la instrucción Ejecutar, entonces es mejor poner este código en alguna variable para que pueda cambiarlo si es necesario. Te cuento un caso de la práctica.

Una vez estaba depurando un procesamiento para el intercambio de datos: había muchos fragmentos de código ejecutados mediante Ejecutar. El problema ocurrió: estábamos descargando un archivo grande (de muchos metros de largo) y es una lástima que tarde una hora en cargarse y luego se bloquee debido a algún error menor en el código que no se detectó en la etapa de depuración, siempre en los lugares más inesperados.

Luchamos y luego se nos ocurrió una idea: todas las llamadas de ejecución se colocaron en una función, donde se pasaban el código para la ejecución y los parámetros. Esto nos ha servido mucho.

Insertamos Ejecutar en Attempt-Exception y, si ocurría una excepción, le pedíamos al programador que cambiara el código en vivo. Si estaba de acuerdo, se abriría un cuadro de diálogo de entrada de código donde podría reemplazar el código antiguo por el nuevo. Y antes de ejecutar el código, comprobamos si estaba en la lista de reemplazos. Si es así, antes de la ejecución reemplazamos el código antiguo por el nuevo. De esta manera pudimos descargar rápidamente los datos.

Depuración en el servidor

Para ahorraros algunos nervios os informo que es imposible depurar código que se ejecuta en el servidor (en un sistema de tres enlaces). Por lo tanto, si su programa en la versión de archivo se detiene en un punto de interrupción, pero en la versión de servidor no, no se alarme, esto es lo intencionado. Después de todo, el código se ejecuta en el servidor de aplicaciones y, por tanto, no se puede depurar en el cliente.

Punto de interrupción condicional

No todo el mundo sabe que 1C 80 tiene un punto de interrupción condicional: un punto de interrupción condicional. Sin embargo, es un mecanismo muy útil.

Rastreo

A veces es necesario rastrear el código del programa, es decir. al mostrar valores de variables en la ventana de mensaje en cada paso por un punto de código.

Para estos fines, en 1C puede utilizar un punto de interrupción condicional, porque la condición se verifica cada vez que el código pasa por el punto de interrupción condicional.

Veamos el código:
C=0; Para Ind=1 a 10 Ciclo C=C+Ind; Fin del ciclo; //Coloca un punto de interrupción condicional aquí

En la línea especificada establecemos un punto de interrupción con la condición:
UE(" Informe(""Cantidad:""+P)", CON)

Ahora, al depurar un programa, la ejecución del código se rastrea en la ventana del mensaje:

Cantidad: 1
Cantidad:3
Cantidad:6
Cantidad: 10
Cantidad: 15
Cantidad:21
Cantidad: 28
Cantidad:36
Cantidad:45
Cantidad:55

Naturalmente, podemos utilizar condiciones y mostrar no todos los mensajes, sino solo los valores de las variables que nos interesan:
UE(" Si Monto>10 Entonces Informe(""Monto:""+P) EndIf", CON)

El método es conveniente porque no es necesario realizar cambios en la configuración.
Es conveniente detectar errores cuando 1C falla si escribe mensajes en un archivo.

Gestión de código

Digamos que tenemos este código:
Si A=0 Entonces ElseIf A=1 Entonces ElseIf A=2 Entonces EndIf;
En este caso, podemos utilizar el control programático del código.
Al comienzo de la declaración If establecemos un punto de interrupción condicional:
?(A=1, Asignar(A,2), Asignar(A,1))
Aquellos. si A = 1, entonces le asignamos a A el valor 2 y le asignamos 1 en caso contrario.
Esto nos permite redirigir constantemente el código a la rama que necesitamos sin cambiar la configuración.
Simplemente puede establecer un punto de interrupción condicional que asignará el valor deseado a A:
Asignar(A,2)

rastro visible

Si inserta muchas funciones de Informe en su código para rastrear el progreso del programa, a veces puede resultar problemático encontrar todas esas llamadas de rastreo.

Sugiero formatear dichas llamadas para que haya un punto y coma antes de la llamada del mensaje:
;Informe("Monto= "+Monto);

Si el rastreo no es necesario temporalmente, debe eliminarse de esta manera:
//;Notificar("Cantidad="+Cantidad);

Luego, todos los seguimientos activos se pueden encontrar en la línea ";Report", y todos los seguimientos inactivos se pueden encontrar en la línea "//;Report".

Interfaz de depuración

Honestamente, cuando me cansé de tener que pasar constantemente por Operaciones-Documentos hasta la lista de documentos que necesitaba después de reiniciar 1C, creé una interfaz "Depurador" para mí e inserté los comandos que necesitaba en su menú. Ahora, después de reiniciar, me encontré en el diario/formulario que necesitaba con un solo clic.

Otra opción es crear un todo escritorio de depuración- es decir. Abra inmediatamente todos los formularios y documentos necesarios. Para hacer esto, lo mejor es crear un procesamiento externo, llamarlo, por ejemplo, "Opener" y en el formulario de este procesamiento escribir lo que se debe abrir:
Procedimiento antes de abrir (rechazo, procesamiento estándar) Documentos.Invoice.GetListForm().Open(); Rechazar = verdadero; Fin del Procedimiento
Ahora sólo necesitas abrir este procesamiento externo y el escritorio estará configurado. La próxima vez, este procesamiento ya estará en la lista de archivos abiertos recientemente.

Una opción más sencilla para los perezosos es escribir en el marcador el cálculo de expresiones (por ejemplo, utilizando un mando a distancia), que abrirá los documentos y diarios necesarios. ¡Fácil y rápido!

Otra opción sencilla es utilizar el historial de selección. Luego, solo necesita hacer una selección de acuerdo con el documento requerido, asegúrese de cerrar 1C con una cruz y no detener la depuración (para que se conserven las condiciones de selección), y luego, después de iniciar 1C, vaya a la lista deseada y haga clic en historial de selección.

Depurar la base de datos cliente-servidor

Se sabe que el código del servidor no se puede depurar.
Por tanto las opciones de depuración son:
1. Seguimiento (insertar mensajes de diagnóstico).
2. Cargue la base de datos en una copia del archivo y depure allí.
3. Marque la casilla "Cliente" en el módulo que le interesa y depure. Luego vuelva a poner la marca de verificación.
Nota: En 1C v 8.1 fue posible depurar código en el servidor. Para hacer esto, necesita iniciar el servidor en modo de depuración, puede hacerlo desde la línea de comando: ragent.exe /depuración

Usando procesamiento externo

A menudo, cuando el código de la base de datos no se puede cambiar, pero desea probar, o cuando el código se ejecuta en el servidor y no hay forma de depurarlo, el uso de procesamiento externo ayuda.
Para hacer esto, necesita copiar el código en el procesamiento externo y depurar el procesamiento externo, cambiando el código y viendo las variables a lo largo del camino.

Datos de prueba de deslizamiento

A veces es difícil encontrar un ejemplo en la base de datos en el que se cumpla alguna condición exótica.
En este caso, es más fácil introducir datos de prueba.
Por ejemplo, si su código procesa una determinada tabla de valores, puede escribir directamente en el código para borrar esta tabla de valores y completarla con nuevos datos bajo los cuales se cumple esta condición exótica.
Para aquellos a quienes no les gusta estropear el código por el bien de la depuración, podemos recomendar el uso de la función de control remoto para llamar al procesamiento externo, que completará la tabla de valores según lo necesitemos (por ejemplo, contándolo desde el diseño). ).

Bloqueos de depuración

A veces es necesario ver cómo se comportan dos procesos paralelos.
La forma más sencilla de depurar este tipo de situaciones es insertar una llamada al procedimiento Advertencia() en el código.
Por ejemplo, en el evento Al grabar un objeto, insertamos una llamada de advertencia (“¡¡¡El objeto se está escribiendo!!!”).
Luego, si abre otra sesión e intenta escribir un objeto, recibirá una advertencia de que el objeto está bloqueado.

Si dicha depuración se realiza con frecuencia, recomiendo este método de llamar a dos sesiones 1C a la vez.
Desde el depurador, presione F5 (Iniciar depuración), se inicia 1C:Enterprise. Desconéctese de la depuración de este 1C Enterprise - "Depuración" -> "Desconectar", luego presione F5 nuevamente. Como resultado, su segunda sesión está conectada al depurador. Ejecuta el código con una advertencia en la primera sesión y lo depura en la segunda.

Acelerar la depuración

El depurador reduce la velocidad del programa.
Por lo tanto, puede hacer esto: deshabilitar el depurador y mostrar Advertencia();
Cuando se muestra una advertencia, puede volver a conectar el depurador, establecer un punto de interrupción y comenzar a depurar.

Encontrar un punto de interrupción

A veces es difícil encontrar en qué procedimiento ingresa el programa cuando presionas un botón. En este caso, seleccione el comando del depurador "Detener" y haga clic en el botón. El programa se detendrá en la primera línea de código. El método tiene un inconveniente: si se conecta un controlador de espera, el programa puede detenerse en él y no en el código del botón, si el código del controlador de espera se activa primero. ;-)

Damos la bienvenida a todos los lectores del sitio del portal, en este artículo hablaremos sobre los puntos de interrupción en 1C, o más bien sobre su funcionamiento incorrecto en determinadas versiones de la plataforma 1C.

A finales de mayo de 2015, un nuevo plataforma 1C 8.3.6.2014. Muchos programadores encontraron situaciones problemáticas al trabajar con esta plataforma. En particular, adecuadamente Los puntos de interrupción en el configurador no funcionaron al depurar la aplicación. Al final resultó que, se notaron problemas al depurar el procesamiento externo, utilizando el procesamiento "Prueba de formularios impresos externos".

Veamos primero el principio de funcionamiento del procesamiento "Prueba de formularios impresos externos". Usando este procesamiento, especificamos nuestro procesamiento externo (un formulario de impresión externo, por ejemplo) (1), y luego abrimos el mismo formulario de impresión en el configurador y establecimos puntos de interrupción, después de lo cual iniciamos la empresa bajo depuración. Cuando presionas el botón (2) fue nuestro formulario impreso externo el que se lanzó, y no el predeterminado generado por el sistema en el directorio tmp, como resultado, se activó un punto de interrupción en nuestro procesamiento abierto en el configurador. Todo funcionó como se esperaba. Pero eso fue antes... Si seguimos estos pasos en la plataforma 1C 8.3.6.2014, los puntos de interrupción en el procesamiento externo no se activarán! Al final resultó que, esta situación surgió porque La plataforma 1C 8.3.6.2014 cargó procesamiento externo en la RAM, mientras que las versiones más jóvenes de la plataforma lo guardaban en un archivo temporal, que estaba ubicado en el directorio predeterminado de archivos temporales de 1C.

Resolviendo el problema con los puntos de interrupción en el procesamiento externo en la plataforma 1C 8.3.6.2014

Desafortunadamente, en este momento, No fue posible resolver el problema con los puntos de interrupción en el procesamiento externo en la plataforma 1C 8.3.6.2014. El caso es que esta versión de la plataforma almacena el procesamiento en la RAM y el depurador no llega allí, ya que no podemos abrir el procesamiento en el configurador y establecer un punto de interrupción. Esperemos que los especialistas de 1C permitan ingresar a la RAM con un depurador o propongan métodos de depuración alternativos.

El depurador es una herramienta auxiliar que facilita el desarrollo de módulos de software del sistema 1C:Enterprise 8.0. El depurador proporciona las siguientes características:

  • Ejecución paso a paso del módulo;
  • Disposición de puntos de interrupción;
  • Interrumpir y continuar la ejecución del módulo;
  • Capacidad para depurar varios módulos simultáneamente;
  • Cálculo de expresiones para analizar el estado de variables;
  • Ver la pila de llamadas a procedimientos y funciones;
  • Posibilidad de detenerse cuando ocurre un error;
  • Posibilidad de editar el módulo durante la depuración;
  • Medición del desempeño.

El depurador es una herramienta integrada en el configurador. Para utilizarlo es necesario que la configuración que se está depurando se inicie simultáneamente con el configurador en modo 1C:Enterprise. No importa el orden en que se lanzan los programas.

El proceso de depuración consiste en realizar secuencialmente los siguientes pasos:

  • Inicie el configurador y abra el módulo destinado a la depuración;
  • Coloque puntos de interrupción en las líneas requeridas del módulo;
  • Inicie el modo "1C:Enterprise" para la configuración seleccionada si el modo ya se ha iniciado, luego ejecute el comando "Depurar - Conectar";
  • Realizar acciones que provocarán la ejecución del módulo que se está depurando (por ejemplo, publicar un documento);
  • Realice la ejecución paso a paso del fragmento de módulo que necesita.

Si la configuración se inicia en 1C: modo Enterprise, en el configurador debe seleccionar "Depuración - Conectar". Aparece una ventana para seleccionar un proceso en la pantalla. Normalmente, la lista contiene una línea que indica la configuración que se ejecuta en 1C: modo Enterprise. Si se ejecutan varias aplicaciones 1C:Enterprise con esta configuración, la lista puede contener varias líneas. La selección de procesos le dice al depurador qué proceso se depurará.

Para depurar el módulo de procesamiento externo, debe abrir el archivo de procesamiento externo en el Configurador usando el elemento "Archivo - Abrir". En el futuro, podrá trabajar con el módulo de procesamiento externo en el Depurador de la misma manera que con cualquier otro módulo.

El depurador le permite establecer un marcador especial en una línea específica de un módulo (un punto de interrupción), al alcanzar el cual se detiene la ejecución del módulo del programa y el control se transfiere al depurador. Se puede establecer un punto de interrupción en cualquier línea del módulo, en cualquier momento mientras se trabaja con el depurador. En caso de que la línea en la que se establece el punto de interrupción no contenga declaraciones (por ejemplo, una línea vacía), contenga texto no ejecutable (por ejemplo, el encabezado de un procedimiento o función, definición de variable) o sea una continuación de una declaración iniciado en líneas anteriores, la posición del punto de interrupción se ajustará automáticamente.

Para administrar puntos de interrupción, use comandos del menú Depurar o comandos del menú contextual invocado desde la línea.

Los puntos de interrupción pueden ser incondicionales o condicionales. Cuando se alcanza un punto de interrupción incondicional, la ejecución del módulo de software se detiene en cualquier caso.


Cuando se alcanza un punto de interrupción condicional, la ejecución del módulo del programa se detiene sólo si la condición especificada es verdadera:


El depurador admite la capacidad de deshabilitar puntos de interrupción. En este caso, la línea del módulo permanece marcada con un marcador, pero no tiene ningún efecto en el progreso de ejecución del módulo.


Si hay una gran cantidad de puntos de interrupción, es conveniente utilizar una ventana separada para trabajar con puntos de interrupción, que le permite verlos y editarlos en una sola lista:


Después de que el control de la solución de la aplicación se transfiere al depurador cuando se alcanza un punto de interrupción, es posible seguir ejecutando el módulo en varios modos: ejecución paso a paso, ejecución de una función o llamada a procedimiento, interrupción de la ejecución paso a paso de una función o procedimiento, ejecución de un módulo en la línea en la que se encuentra el cursor, o continuación de la ejecución libre del módulo:


Usando la tabla y el cuadro de diálogo "Expresión", puede obtener los valores de las expresiones de interés. La pila de llamadas le permite rastrear la secuencia de llamadas a procedimientos y funciones.


En caso de que no queramos continuar ejecución paso a paso módulo más adelante, usando el comando "Depurar - Continuar depurando" permitiremos que el sistema 1C:Enterprise 8.0 ejecute libremente el módulo (hasta el siguiente punto de interrupción).

En caso de que necesite interrumpir el proceso de depuración en su totalidad, borre todos los puntos de interrupción de todos los módulos y ejecute el comando "Depurar - Continuar" si actualmente se activa un punto de interrupción. Si necesita interrumpir la depuración sólo de este módulo, utilice el comando "Depuración - Detener".


Los puntos de interrupción establecidos se recuerdan cuando se cierra la configuración. Si abre la configuración nuevamente, puede ver la lista de puntos de interrupción usando el cuadro de diálogo "Puntos de interrupción", llamado por el elemento del menú "Depuración - Lista de puntos de interrupción".

Durante la depuración, puede editar la configuración actual y guardando cambios.

Atención! Aunque es posible editar el módulo que se está depurando durante el proceso de depuración, el depurador no compila el código modificado; la depuración del código de configuración de la base de datos continúa (en el momento en que se inicia o conecta el depurador). Para depurar cambios, deberá cerrar en modo 1C:Enterprise, guardar cambios, actualizar configuración de base de datos y reinicie el depurador.

De hecho, un módulo consta de funciones y procedimientos. Estas son líneas del programa, unidas por un nombre. Dentro de una función, se puede llamar a otra, incluida una ubicada en otro módulo.

El programa está escrito en modo Configurador 1C. El programa se ejecuta en modo Enterprise 1C.

¿Cómo se ejecuta el programa?

¿Cómo se ejecuta el programa?

Primero, la primera vez que se accede a un módulo, se ejecutan las líneas de programa ubicadas al final del módulo, no incluidas en una función o procedimiento (si corresponde).

En segundo lugar, debe producirse una llamada a una función o procedimiento. Esto se puede hacer mientras se ejecuta algún otro módulo. Si se trata de un módulo de formulario o de un módulo de objeto, entonces el módulo tiene controladores. Los controladores son funciones que la plataforma 1C llama automáticamente cuando ocurre un determinado evento. Por ejemplo, “cuando se abre un formulario”, se ejecuta el controlador correspondiente (si ha sido asignado).

Cuando es necesario ejecutar una función, la plataforma comienza a ejecutarla desde la primera línea del programa dentro de la función y va secuencialmente hasta el final de la función, línea por línea.

La excepción es que si se llama a otra función, la plataforma continúa ejecutándola y solo entonces regresa de donde vino.

¿Qué es la depuración de 1C?

Cuando se escribe un programa, el programador sólo puede adivinar cómo debería funcionar. Cuando comienza a funcionar de verdad, el usuario ingresa algunos datos en los campos del formulario, comienzan a aplicarse ciertas condiciones y configuraciones y, de repente, el programa puede comenzar a funcionar de manera no exactamente como lo pretendía el programador.

Al mismo tiempo, son interesantes las decisiones específicas tomadas por el programa, los resultados de la comparación en condiciones "Si", etc.

Para estos fines, se utiliza la depuración 1C. Su idea general es que el programador puede poner un punto de interrupción en la línea deseada del programa y el programa detendrá la ejecución en ella, es decir, hará una pausa. En este momento se puede ver qué valores tomaron las variables y otros parámetros.

El programador puede presionar un botón en el depurador 1C y el programa continuará ejecutándose, pero no del todo, sino solo una línea. Y luego se pausará nuevamente.

De esta manera puede detectar áreas problemáticas del programa.

Lanzando la depuración 1C

Dado que el programa está escrito (y ubicado) en el configurador y ejecutado en modo Enterprise, para usar la depuración 1C necesita tener 1 configurador y 1 modo Enterprise depurado:

  • correr
  • conectado.

El modo empresarial se puede iniciar inmediatamente con la depuración de 1C. Para ello, puedes utilizar el botón correspondiente en el configurador como en la imagen.

O utilice el menú Depuración/Iniciar depuración o Depuración/Iniciar depuración/Seleccione la opción de cliente 1C.

Si ya tiene 1C ejecutándose en modo Empresarial y desea conectarse a él, debe hacer lo siguiente:
1) En el cliente 1C en modo Empresa, en el menú Servicio/Opciones en la pestaña "Servicio", marque la casilla "Se permite la depuración en la sesión actual"

2) En el configurador, seleccione el elemento del menú Depurar/Conexión
3) En la ventana que se abre, resalte el cliente deseado con el cursor y haga clic en el botón Conectar.

Punto de interrupción 1C (punto de interrupción)

Una vez que haya conectado el configurador y el cliente en ejecución con la depuración 1C (es decir, "conectado con el depurador 1C"), todas las acciones de los programas de los módulos de este cliente se realizan bajo el control de este configurador.

Para comenzar a observar cómo ocurre la ejecución, debe establecer un punto de interrupción en el lugar requerido.

Para hacer esto, necesita abrir el módulo que desea depurar. A continuación, busque el procedimiento requerido. Puede establecer un punto de interrupción de las siguientes maneras:

  • Haga clic izquierdo en la barra gris a la izquierda de los textos del módulo.
  • Presione F9
  • Seleccione el elemento de menú Depurar/Punto de interrupción.

Como resultado, aparecerá un círculo rojo, como en la imagen. Este es el punto de quiebre. Tan pronto como un programa que se ejecuta en modo Enterprise llegue a esta línea, dejará de ejecutarse y se pausará.

Cuando esto suceda (el programa se detuvo), habrá una flecha amarilla en la línea donde se está "ejecutando" actualmente.

Para ver el valor de una variable en este momento, resalte la variable requerida con el cursor y presione Shift + F9.

Para ejecutar una línea (es decir, pasar a la siguiente línea), haga clic en el botón correspondiente como en la imagen o seleccione un elemento del menú Depuración de 1C.

Punto de interrupción condicional

Además del punto de interrupción habitual, puede establecer uno que solo se active si se cumple la condición especificada en él. Se llama "Punto de interrupción con condición"; consulte el elemento del mismo nombre en el menú Depuración de 1C.

Por ejemplo, un programa tiene un bucle que se repite muchas veces. Podemos establecer un punto de interrupción que se activará en una iteración específica del bucle (“iteración del bucle”).

Punto de interrupción de error

Para tales fines, existe un punto de interrupción que se activa cuando se produce algún error o errores de cierto tipo mientras se trabaja "en el depurador 1C".

Tenga en cuenta que este punto de interrupción incluso detecta errores que ocurren en .




Arriba