Agregar procesamiento externo a la base de datos. Agregar procesamiento externo a la base de datos Informes externos en 1c

Muy a menudo, cuando durante una consulta surge la necesidad de resolver algún problema complejo, sugiero a mis clientes implementarlo en el programa 1C usando procesamiento externo, o plancha de impresión externa. Y a menudo me encuentro con el hecho de que la gente simplemente no está familiarizada con esta posibilidad de los programas en la plataforma 1C Enterprise 8. A veces incluso me insultan, creyendo que el desarrollo y la implementación de dicho procesamiento como parte de su configuración conducirá a la incapacidad para actualizar automáticamente el programa. Que tendrás que pagar mucho dinero para actualizar el programa.

Para aclarar estas preguntas, así como para hablar sobre las oportunidades útiles que brindan el procesamiento externo y la impresión externa de formularios, decidí escribir este artículo. En este artículo no consideraré el aspecto técnico del proceso de creación del procesamiento. Lo más probable es que esto se analice en otra publicación. Aquí intentaré explicar la esencia misma del mecanismo y dar ejemplos específicos de casos en los que el procesamiento externo y la impresión de formularios pueden beneficiar al usuario.

El artículo analizará las siguientes opciones para objetos conectables externos adicionales:

  • Procesamiento externo adicional de piezas tabulares;
  • Formularios de impresión externa adicionales;
  • Informes externos adicionales;
  • Procesamiento externo adicional.

¿Qué son los procesamientos externos adicionales, informes y formularios impresos?




Para empezar, me gustaría hablar en general sobre ¿Qué son estos procesamientos externos, informes y formularios impresos?. Muy a menudo, cuando se trabaja con una configuración estándar, ya sea 1C ZUP o 1C Enterprise Accounting o alguna otra configuración, se necesita alguna funcionalidad que no proporcionan los desarrolladores de 1C. Por ejemplo, es posible que necesite formulario impreso, que no está regulado, pero se utiliza para las necesidades internas de la organización. O requerido de cierta manera proceso (cambiar, ajustar) datos disponibles en la base de datos. Por ejemplo, cambiar ciertos detalles en los documentos durante el período requerido, lo cual es inconveniente de hacer manualmente con grandes volúmenes de información.

En este caso, hay dos opciones. Primero, podemos modificar la configuración en sí, el propio programa. Después de eso, dejará de ser típico y no será posible actualizarlo utilizando los métodos bastante simples sobre los que escribí. Actualizar una configuración no estándar es un proceso más largo y serio, por lo que con este enfoque lo más probable es que tenga que pagarle mensualmente a un especialista de 1C para que actualice el programa. Segundo Una opción es desarrollar o solicitar desarrollar un procesamiento externo o un formulario impreso (informe). Se trata esencialmente de un módulo externo, que también está desarrollado en el lenguaje de programación 1C en el Configurador, pero no realiza cambios en la configuración estándar. Existe independientemente de la configuración misma. Para almacenarlos se utilizan directorios especiales: elemento del menú principal “Servicio” -> “Informes y procesamiento adicionales”.

Procesamiento externo adicional para completar partes tabulares

Seminario “trucos para 1C ZUP 3.1”
Análisis de 15 trucos de contabilidad en 1C ZUP 3.1:

LISTA DE VERIFICACIÓN para verificar los cálculos de nómina en 1C ZUP 3.1
VIDEO - autocontrol mensual de la contabilidad:

Cálculo de nómina en 1C ZUP 3.1
Instrucciones paso a paso para principiantes:

Ahora echemos un vistazo individualmente a qué capacidades nos brindará cada uno de los cuatro módulos externos disponibles. Empecemos con procesamiento externo de piezas tabulares. Me parece que este procesamiento de partes tabulares de documentos ilustra mejor cómo se puede modificar seriamente un programa sin tener que editar la configuración estándar, sino solo arreglárselas con el procesamiento externo.

Para que quede más claro, daré un ejemplo específico de mi práctica, en el que para resolver el problema utilicé procesamiento externo de piezas tabulares. En la configuración "1C Gestión de sueldos y personal" edición 2.5 hay un documento "Pago por festivos y fines de semana"(Este documento ha sido escrito en detalle). En su forma estándar, este documento brinda la posibilidad de completar automáticamente la parte tabular por parte de los empleados "Trabajando en vacaciones".

El contador pidió implementar la posibilidad de completar este documento por parte de los empleados cuya jornada laboral estaba programada para fines de semana, es decir, "Trabajando el fin de semana".

Este archivo ha sido subido al directorio. "Procesamiento externo de piezas tabulares"(elemento de menú “Servicio” -> “Informes y procesamiento adicionales” -> “Procesamiento externo adicional de partes tabulares”). Al crear un elemento de este directorio, se indicó a qué documento se refiere el procesamiento descargado - "Pago de días festivos y fines de semana de la organización", así como a qué parte tabular - "Empleados". En nuestro ejemplo, el documento tiene una parte tabular, pero en otros documentos puede haber varias, por lo que es necesario indicar específicamente a cuál de ellas se refiere el procesamiento.

Como resultado de agregar este procesamiento al directorio "Procesamiento externo adicional para completar partes tabulares" en el propio documento “Pago de festivos y fracciones de fin de semana” aparecerá un botón “Rellenar” con un desplegable en el que será posible iniciar este trámite. En nuestro caso, el botón “Rellenar domingos” está disponible en la lista desplegable. Al pulsarlo se lanza el algoritmo contenido en el procesamiento. En este ejemplo, la parte tabular se completará con los empleados cuyos días laborales cayeron en día libre. Tenga en cuenta que este botón no existía anteriormente (captura de pantalla arriba).

Este mecanismo le permite resolver una amplia gama de problemas sin tener que modificar la configuración en sí. Por lo tanto, a menudo aprovecho esta oportunidad para implementar las tareas de los clientes.

Planchas de impresión externas opcionales

Seminario “trucos para 1C ZUP 3.1”
Análisis de 15 trucos de contabilidad en 1C ZUP 3.1:

LISTA DE VERIFICACIÓN para verificar los cálculos de nómina en 1C ZUP 3.1
VIDEO - autocontrol mensual de la contabilidad:

Cálculo de nómina en 1C ZUP 3.1
Instrucciones paso a paso para principiantes:

Esta opción es muy similar a la anterior. Probablemente haya visto y sepa que casi todos los documentos e incluso algunos elementos de los libros de referencia tienen formularios impresos. Por regla general, se encuentran en la esquina inferior derecha del formulario de un elemento de directorio o documento. A veces los formularios impresos estándar no son suficientes. Por ejemplo, una organización puede tener su propia forma de contrato de trabajo. Permítame recordarle que el formulario impreso estándar "Contrato de trabajo" se incluye en el formulario del directorio "Empleados".

Puede agregar el suyo propio a estos formularios impresos del directorio. Para ello se crea un formulario impreso externo con la extensión “.epf”. Luego se crea un elemento de directorio para ello. "Planchas de impresión externas adicionales"(elemento de menú “Herramientas” -> “Informes y procesamiento adicionales”) y se agrega un archivo con la extensión “.epf” a este elemento del directorio. También es necesario indicar para qué documento o libro de referencia se agrega el procesamiento.

Como resultado, como parte de los formularios impresos de los elementos del directorio "Empleados", aparecerá otro formulario: "Acuerdo de empleo (Alpha LLC)", que antes no existía. Y su apariencia y llenado de datos lo determina el programador en el archivo “.epf”.

Esta capacidad de agregar los formularios impresos necesarios para documentos y libros de referencia también es muy solicitada y, en mi opinión, es una funcionalidad bastante conveniente de los programas en la plataforma 1C Enterprise.

Informes externos adicionales

En este caso se puede desarrollar informe externo. Este es un archivo en formato “.erf”. Es este archivo el que determinará la apariencia del informe, qué datos de configuración utilizará y cuáles solicitará al usuario (por ejemplo, período, selección por empleado o por departamento). El archivo se crea en el configurador 1C en el lenguaje de programación 1C.

Se puede almacenar un informe externo como parte de la configuración utilizando el libro de referencia "Informes externos adicionales" (elemento de menú "Herramientas" -> "Informes y procesamiento adicionales"). No están relacionados con un documento o libro de referencia específico; esta información no es obligatoria.

Con esta opción de almacenamiento, el informe se lanza desde el mismo directorio (haciendo doble clic).

También puede iniciar un informe externo utilizando el elemento del menú "Archivo" -> "Abrir". Esta opción se puede utilizar si le resulta más conveniente almacenar informes externos no como parte del programa, sino simplemente en carpetas de la computadora.

Tratamientos externos adicionales

Tratamientos externos tienen aproximadamente el mismo significado que los informes externos. Pero a diferencia de los informes, que se utilizan para ver los datos de la base de datos en un formato fácil de usar, el procesamiento está diseñado para cambiar, editar o transformar los datos de la base de datos. La gama de problemas resueltos mediante procesamiento externo es bastante amplia.

Por ejemplo, procesamiento para carga de extractos de nómina. A pesar de la presencia de procesamiento estándar en ZUP (lea sobre esto), a veces puede no ser adecuado para un banco en particular y se desarrolla un procesamiento externo que convierte y descarga información en el formato requerido.

te traeré un ejemplo más un tratamiento completamente simple, pero bastante popular. Si en 1C ZUP no mantiene el documento "Transferencia del impuesto sobre la renta personal al presupuesto" durante el año, al generar el impuesto sobre la renta personal 2 para el año, el campo "Transferido" para cada empleado será cero, que es generalmente objetivamente incorrecto. Introducir el documento "Transferencia del impuesto sobre la renta personal al presupuesto" para todo el año puede resultar bastante tedioso, dadas las características específicas del documento en sí. Pero puede realizar un procesamiento externo, que en el 2-NDFL generado simplemente completará el campo "Listado" para cada empleado, en función de los valores en el campo "Calculado". A los contables les suele gustar mucho esta opción.

El procesamiento externo tiene exactamente las mismas dos opciones de almacenamiento e inicio: usar el directorio "Procesamiento externo adicional"(elemento del menú “Herramientas” -> “Informes y procesamiento adicionales”), o el elemento del menú principal “Archivo” -> “Abrir”.

¡Eso es todo por hoy!

Para ser el primero en enterarse de las nuevas publicaciones, suscríbase a las actualizaciones de mi blog:

Para conectar procesamiento externo, informes y formularios impresos para la plataforma 1C:Enterprise 8.2, se ha desarrollado un nuevo estándar para trabajar en una aplicación administrada (un estándar del subsistema de biblioteca estándar 8.2). Han aparecido “chips” que antes no existían, a saber:

    Se ha ampliado el tipo de procesamiento: rellenar un objeto, crear objetos relacionados. Ahora en los documentos puedes agregar tus propios botones para completar todo el documento, así como tus propios botones para ingresar en la base.

    Un procesamiento puede contener una lista de varias operaciones (comandos), es decir puede realizar un procesamiento, donde habrá varios elementos del menú a la vez: impresión y albarán de entrega, impresión de un recibo de compra, impresión de una tarjeta de garantía. (Nota del autor: anteriormente en el antiguo estándar, para hacer tales cosas, tenías que hacer todo a la vez (incluso si no era necesario) y no necesitabas cerrar ni dibujar tu propio formulario, que tenía los botones necesarios para seleccionar. la operación requerida)

    Puede ingresar y rellenar objetos basándose en varios objetos a la vez, en lugar de solo uno.

    Puede establecer una programación para ejecutar comandos del servidor (en el servidor).

    Puede configurar el modo en "Seguro" o "Inseguro", es decir. ejecutar el procesamiento teniendo en cuenta los derechos restringidos o ignorarlos (como ocurre con los derechos completos)

    Puede configurar el modo de uso: No usar, depurar, usar. "No usar" - no en funcionamiento, "Depuración" - visible solo para los administradores, "Usar en funcionamiento".

    Se puede utilizar en formularios de objetos y en formularios de lista.

    Puede vincular un procesamiento o informe a todos los objetos a la vez.

    Puede configurar el acceso rápido a ciertos comandos de procesamiento externo.

    Es posible especificar en qué secciones de la interfaz deben aparecer procesamientos e informes adicionales.

Entonces, ¿qué se puede conectar a las configuraciones estándar?

Desde el punto de vista de la plataforma, puedes conectar:

  • procesamiento externo (archivos con extensión “epf”);
  • informes externos (archivos con la extensión “erf”).

Desde el punto de vista del área de aplicación (configuración), puede conectar procesamientos e informes externos con el formulario*:

  • Procesamiento adicional
    • Sólo un poco de procesamiento adicional. Es posible personalizar
  • Informe adicional
    • Solo un informe adicional
  • Llenar un objeto
    • Sus propios botones para completar objetos (documentos), anteriormente solo existían botones para completar la parte tabular.
  • Formulario imprimible
    • Formulario imprimible adicional (se agrega un botón “Formularios imprimibles adicionales”)
  • Informe
    • Un informe adjunto a los objetos (directorios y documentos).
  • Crear objetos vinculados
    • Su propia entrada basada en (el botón “Crear objetos relacionados...” se agrega al elemento del menú “Entrada basada en”)

*usando el ejemplo de la redacción “Gestión de una pequeña empresa ed. 1,2"

Echemos un vistazo a cómo funciona todo. Para conectar el procesamiento y los informes externos, existe un estándar que describe la interfaz para la interacción con el procesamiento y los informes externos, y existen requisitos generales para todos los tipos y específicos para cada tipo de procesamiento o informe.

Comencemos con los requisitos generales para todo tipo de procesamiento e informes. Para crear un informe o procesamiento externo de complemento, debe declarar la función de exportación InformationOnExternalProcessing() en el módulo de objeto, que debe completar una estructura que describa el comportamiento. Un ejemplo de esta función:

Función InformationOnExternalProcessing() Exportar
RegistrationData = Nueva estructura;
Registration Data.Insert("Nombre", "Ejemplo de uso del procesamiento externo 8.2.");
RegistrationData.Insert("Modo Seguro", Verdadero);
RegistrationData.Insert("Versión", "1.0");

//Procesamiento adicional
//Informe Adicional
//Rellenando el objeto
//Informe
//Forma impresa
//Creando objetos relacionados
RegistrationData.Insert("Ver", "Procesamiento adicional");

Registration Data.Insert("Información", "Procesamiento realizado según el nuevo estándar para conectar procesamiento externo 8.2. Ejemplo de procesamiento ""Hello Word"" ");

///////////// comandos //////////////////////////
tzCommand = Nueva tabla de valores;
tzCommand.Columns.Add("Identificador");
tzCommand.Columns.Add("Ver");
tzCommand.Columns.Add("Modificador");
tzCommand.Columns.Add("Mostrar alerta");
tzCommand.Columns.Add("Uso");


stringCommands.Identifier = "1";
stringCommands.View = "comando ""Hola Palabra"" (OpenForm)";

stringCommands.Use = "OpenForm";

CommandString = tzCommand.Add();
stringCommands.Identifier = "2";
stringCommands.View = "comando""Hola Palabra""(CallClientMethod)";
stringCommands.ShowAlert = Verdadero;
stringCommand.Usage = "CallClientMethod";

CommandString = tzCommand.Add();
stringCommands.Identifier = "3";
stringCommands.View = "comando""Hola Palabra""(CallServerMethod)";
stringCommands.ShowAlert = Verdadero;
stringCommand.Use = "CallServerMethod";

RegistrationData.Insert("Comandos", tzCommands);

////////////// propósito (en qué objetos se utiliza) //////////////////////////
//para imprimir formularios, completar, ingresar objetos relacionados
//ArrayAssignments = Nueva matriz;
//Matriz de asignaciones.Add("Documento.*"); // todos los documentos están asignados
//Matriz de asignaciones.Add("Documento.Informe avanzado");
//Matriz de asignaciones.Add("Documento.Pedido del comprador");
//Datos de registro.Insert("Destino", Matriz de destino);

Datos de Registro de Devolución;

Función final

Entonces, como puede ver, la función llena la estructura de Datos de Registro, que tiene los siguientes elementos (parámetros):

    Nombre – nombre corto del tratamiento

    Versión: información sobre la versión de procesamiento

    Modo seguro: responsable de si el procesamiento debe realizarse teniendo en cuenta los derechos del usuario. Si se establece en False, el procesamiento o la generación de informes se realizarán sin tener en cuenta las restricciones de derechos (como ocurre con los derechos completos). Esta característica apareció precisamente en 8.2, donde al crear informes y procesamientos externos, el segundo parámetro especifica el modo.

    Tipo – tipo de procesamiento o informe. Enumeré los valores posibles al principio del artículo y los valores posibles a establecer en el código se indican en los comentarios.

  • Comandos: una tabla de valores que enumera los comandos utilizados. Columnas de la tabla de valores:
    • Identificador: cualquier cadena (identificador de comando)
    • Ver - descripción del comando
    • Modificador: cadena (utilizada para formularios impresos adicionales)
    • Mostrar notificación: la ventana de notificación aparecerá antes del inicio y después del final de la ejecución (para comandos de cliente y servidor sin formulario)
    • Uso – modo de inicio de procesamiento:
      • OpenForm: se abrirá el formulario de procesamiento
      • CallClientMethod: llama al método de exportación del cliente del formulario
      • Call ServerMethod: llame al método de exportación desde el módulo de procesamiento

Dependiendo del tipo de procesamiento o informe, así como del modo de inicio del comando "Usar", se llaman los métodos definidos en el módulo de formulario o en el módulo de objeto. La lista de parámetros pasados ​​también es diferente. Adjunto ejemplos de llamadas y uso de todo tipo de tramitación.

Ir al menú superior Servicio->->.

Aparece el formulario de lista del directorio de procesamiento externo. En el menú superior presione el botón Agregar.

Aparecerá el formulario Agregar nuevo objeto. Haga clic en el botón Abrir y seleccione el archivo con el procesamiento deseado. Después de haber seleccionado el archivo deseado, si es necesario, especifique un nombre de procesamiento (campo Nombre). Después de esto, debe hacer clic en Aceptar para guardar los cambios realizados.

Después de esto, la ventana para crear un elemento del directorio se cierra y volverá al formulario de lista, que ya contiene el nuevo procesamiento.

¡Eso es todo! El proceso de agregar procesamiento a la configuración está completo. Para abrir este procesamiento más tarde, siga el camino anterior: Servicio->Informes y procesamiento adicionales->Tratamientos externos adicionales.

Para BP 3.0, ZUP 3.0, UT 11, ERP 2.0.

El procesamiento externo para 1C:Enterprise 8 viene en varios tipos. En esta instrucción, le mostraré cómo adjuntar procesamiento para modificación de grupo y procesamiento para completar objetos específicos.

Para el primer caso, agregaremos el procesamiento para completar el directorio de nomenclatura desde Excel.

Vayamos a la sección correspondiente del programa:


Es necesario que esté configurada la bandera para el uso de informes y procesamiento adicionales; siga el hipervínculo a la lista de objetos externos:

En la lista haga clic Crear:


En el cuadro de diálogo que se abre, seleccione el archivo deseado para procesar:


Se ha rellenado la ficha del nuevo objeto externo en el programa, solo queda configurarlo. alojamiento(secciones del programa desde las cuales estará disponible el procesamiento):


Seleccione una sección arbitraria (o varias) para su ubicación:


Escribe y cierra la tarjeta de objeto externo:


Ahora abramos el procesamiento desde la interfaz:


La lista está vacía, haga clic Personaliza la lista:


Elija nuestro procesamiento:


Ya está disponible para su selección. Para abrir el procesamiento, debe hacer clic Ejecutar:


Ahora veamos cómo se agrega el procesamiento para completar (modificar) objetos específicos. Por ejemplo, tomemos el procesamiento externo, que adjunta escaneos a elementos seleccionados de directorios o documentos del sistema. El comienzo de agregar dicho procesamiento no es diferente de la opción anterior. La diferencia es que en este caso la ubicación se completa automáticamente (y no por la sección del programa, sino por los tipos de objetos de la base de datos):


Si lo desea, la lista de ubicaciones se puede ajustar ( no agregue ubicaciones adicionales, pero elimine las innecesarias):


Para aceptar el cambio también se deberá anotar la tarjeta de objeto externo.

Para utilizar el procesamiento, debe ir a un objeto de base de datos específico (de la lista de ubicaciones), hacer clic en Llenar en el panel de comando y seleccione el comando:

Consideremos la posibilidad de crear un informe externo en 1C 8 sin utilizar un sistema de composición de datos. Para crear un informe externo, usaremos la configuración de Contabilidad 2.0, los datos iniciales: “Escriba un informe sobre la cuenta contable 62 en el que se mostrará el volumen de negocios para el período especificado en el contexto Contrapartes Y Contratos de contrapartes.

1. Crea un informe

En primer lugar, creemos un archivo de informe externo; para ello, vayamos a 1s 8 en el modo Configurador, vamos al menú Archivo -> Nuevo, o haga clic en el icono nuevo documento.

Seleccione el elemento de la lista Informe externo. Después de crear el informe externo, asígnele un nombre (por ejemplo Informe más simple) y guárdelo en el disco. También agregaremos dos detalles: comienzo del periodo Y Fin del periodo tipo fecha, los necesitaremos para limitar el intervalo de tiempo para el muestreo de datos al generar un informe.

2. Cree un diseño de informe externo

Para generar un informe en 1C 8, necesita un diseño, esta es una plantilla para mostrar datos en la que se establecen todos los parámetros necesarios, se dibujan tablas, etc. Agreguemos un nuevo diseño; para hacer esto, seleccione el elemento en el árbol de metadatos del informe. Diseños y presione el botón Agregar, al crear, seleccione el tipo de diseño documento de hoja de cálculo.

Nuestro diseño tendrá 4 áreas:

  • Encabezado - en esta área mostraremos el nombre del informe, el período para el cual fue generado y el encabezado de la tabla;
  • Datos de la contraparte: en esta área mostraremos los datos de la contraparte en una tabla;
  • DatosAcuerdo de contraparte: en esta área mostraremos datos sobre el acuerdo de contraparte en una tabla;
  • Pie de página: en esta área mostraremos los valores totales de todo el informe para los campos Ingresos y Gastos.

Comencemos a crear áreas de diseño. Para crear un área en el diseño, seleccione el número requerido de líneas y haga clic en Tabla de menú -> Nombres -> Asignar nombre(O Ctrl + Mayús + N). a la región una gorra Escribamos el nombre del informe: Volumen de negocios 62 cargos, dibuja usando la herramienta Fronteras encabezado del informe y también establecer los parámetros comienzo del periodo Y Fin del periodo. Usando parámetros, puede mostrar los datos necesarios en el informe; esto lo abordaremos en la siguiente etapa de desarrollo, es decir, al escribir el código del informe. Para crear un parámetro en el diseño, seleccione la celda deseada, escriba el nombre del parámetro en ella (sin espacios), haga clic derecho sobre él, seleccione el elemento en el menú que se abre Propiedades. En las propiedades de la celda en la pestaña Disposición seleccionar relleno Parámetro.

Después de esto, el nombre del parámetro en la celda se incluirá entre corchetes angulares ("<>“). Como resultado, el área una gorra debería verse así:

En la zona DatosContraparte crearemos parámetros para mostrar el nombre de la contraparte, así como los ingresos y gastos de la cuenta 62, utilizando la herramienta Fronteras Diseñemos el área como una fila de mesa.

En la zona Acuerdo de contraparte de datos Creemos parámetros para mostrar el nombre del contrato, así como los ingresos y gastos de la cuenta 62, usando la herramienta Bordes diseñaremos el área como una fila de tabla. Hagamos una pequeña sangría antes del parámetro. Acuerdo de contraparte(Esto se puede hacer dividiendo y fusionando celdas. Haga clic derecho en la celda -> Unir o celda dividida), es necesario para que el informe pueda ver que la línea del contrato está más abajo en la jerarquía que la línea de la contraparte.

En la zona Sótano Creemos parámetros para los totales de ingresos y gastos.

Como resultado, deberíamos obtener un diseño como este:

3. Cree un formulario de informe

Para mostrar datos, configure el período de formación y el botón Forma nuestro informe requerirá un formulario. Para crear un formulario, busque el elemento en el árbol de metadatos del informe externo. Formularios y presione el botón Agregar. En la primera página del diseñador de formularios, no necesita realizar ningún cambio, solo necesita hacer clic en el botón Más.

En la siguiente página del diseñador, seleccione ambos detalles disponibles ( comienzo del periodo, Fin del periodo) para su colocación en el formulario.

Como resultado, obtendremos este formulario:

Pero no estamos satisfechos con él en esta forma; hagámosle algunos cambios:

  • Arrastramos el botón Forma desde el panel inferior del informe hasta la parte superior (esto será más conveniente para el usuario);
  • Estire la forma vertical y horizontalmente;
  • arreglemos los campos comienzo del periodo Y Fin del periodo horizontalmente;
  • Agreguemos un elemento de control de campo de documento de hoja de cálculo al formulario (nuestro informe se mostrará en él), asígnele un nombre. TabDoc;
  • Creemos un botón de selección de período (al hacer clic, aparecerá un cuadro de diálogo con una elección conveniente del período deseado). No escribiremos el código del programa todavía, así que simplemente colocaremos el botón al lado de los campos del período.

Como resultado, nuestro formulario se verá así:

4. Programación

Después de crear el formulario de informe, comencemos a programar. Primero, creemos un procedimiento para mostrar un cuadro de diálogo de selección de período (ya creamos un botón para esto en la etapa anterior). Haga clic derecho en el botón y seleccione el elemento del menú. Propiedades, en las propiedades del botón ve a la pestaña Eventos, donde usando el botón con icono de lupa crearemos un procedimiento Botón1Presionar en el módulo de formulario.

Puede cambiar entre el formulario y su módulo usando las pestañas en la parte inferior del formulario.

Para llamar al formulario de selección de período, utilizaremos el procedimiento estándar. Contabilidad 2.0 de un módulo común Trabajar con cuadros de diálogo - HandlerPeriodSettingPress, debe pasarle los detalles del informe como parámetros comienzo del periodo Y Fin del periodo.

Procedimiento Botón1Presionar(Elemento) Trabajar con Dialogs.PeriodSettingHandlerPressing(PeriodStart,PeriodEnd); Fin del Procedimiento

Ahora pasemos a escribir el código que generará y mostrará nuestro informe. El módulo de formulario ya tiene un procedimiento. BotónGenerarPrensa, que se ejecutará cuando se presione el botón Forma, ahí es donde escribiremos nuestro código. Comencemos inicializando las variables necesarias. Primero que nada, creemos una variable para campos de documento de hoja de cálculo en el que enviaremos datos, esto no es necesario, es solo que la grabación de las llamadas será más corta, lo que significa que el código del programa será más comprensible para la lectura.

TabDoc = FormElements.TabDoc;

Obtengamos el diseño del informe externo usando la función. Obtener diseño (<ИмяМакета>) , pasaremos el nombre del diseño como parámetro y, si dicho diseño existe, la función lo encontrará.

Diseño = GetLayout("Diseño");

Después de recibir el diseño, creemos variables para cada una de sus áreas, use el método de diseño para esto ObtenerArea(<ИмяОбласти>) .

AreaHeader = Layout.GetArea("Encabezado"); AreaDataAccount = Diseño.GetArea( "Datos del contratista"); AreaDataContract = Layout.GetArea("DataContract"); Pie de página = Layout.GetArea("Pie de página");

Limpiemos el campo del documento de hoja de cálculo. Esto es necesario para que cada vez que se genere un nuevo informe, se eliminen los datos antiguos.

TabDoc.Clear();

Ahora que se completó la inicialización de las variables, pasemos a completar y mostrar las áreas de diseño una por una. Empecemos por el encabezado. Si recuerdas, creamos dos parámetros en esta área. comienzo del periodo Y Fin del periodo, pasaremos allí los valores del periodo de generación del informe, para ello usaremos la propiedad Opcionesáreas de diseño.

AreaHeader.Parameters.PeriodStart = Inicio del Periodo; AreaHeader.Parameters.EndPeriod = EndPeriod;

No más acciones con el área. una gorra El fabricante no es necesario, por lo que mostraremos su campo en un documento de hoja de cálculo.

TabDoc.Output(AreaHead);

A continuación escribiremos una consulta a la base de datos, con la que tomaremos la facturación de la cuenta. 62 del registro contable Autoportante. Definamos una variable en la que se ubicará nuestra solicitud.

Solicitud = nueva Solicitud;

Antes de comenzar a escribir el texto de la solicitud, pasemosle los parámetros necesarios. Ya que estamos escribiendo una solicitud de factura. 62 contabilidad, primero que nada crearemos un parámetro para ello

Request.SetParameter("Account62", Planes de cuentas. Autosuficiente. Buscar por código("62" ));

También es necesario pasar el período de generación del informe a la solicitud. No olvide que tenemos detalles de informes especiales para el período de generación y los pasamos como parámetros.

Request.SetParameter("Inicio del período", Inicio del período); Request.SetParameter("Fin del período", Fin del período);

Comencemos a escribir el texto de la consulta, lo haremos usando el diseñador de consultas. En muchos tutoriales escriben que es necesario poder escribir una consulta tanto manualmente como utilizando un constructor, pero en la práctica este no es el caso. En las tareas que enfrenta constantemente un programador de 1C, la prioridad es escribir código de manera rápida y eficiente, y al escribir una consulta a la base de datos manualmente, esto es casi imposible de lograr; dedicará mucho tiempo precioso a reproducir correctamente todas las estructuras de consulta. y encontrar errores tipográficos que cometió al escribir, etc. Por lo tanto, no pierda el tiempo intentando escribir consultas manualmente, utilice el constructor de consultas. Le ahorrará tiempo y le permitirá escribir consultas complejas sin mucho esfuerzo. Para comenzar a escribir el texto de la solicitud, escribamos en código:

Solicitud.Texto = "" ;

Después de eso, coloque el cursor entre las comillas, haga clic derecho y seleccione Constructor pedido. Se abrirá la ventana del diseñador de consultas.

Ahora necesitamos seleccionar la tabla de base de datos que necesitamos 1C 8. Necesitamos una tabla virtual Revoluciones registro contable Autoportante. Busquémoslo en el lado izquierdo de la ventana del diseñador.

Movámoslo al área. Mesas y comencemos a completar los parámetros. Para todas las tablas de consulta virtuales existe un conjunto especial de parámetros que le permiten seleccionar los datos necesarios de la tabla principal (en nuestro caso, la tabla principal Registro contable Autoportante). Abramos la ventana de parámetros de la tabla virtual.

Completemos los parámetros para el período que pasamos a la solicitud. Para utilizar un parámetro en el texto de la solicitud, debe escribir el símbolo antes de su nombre. signo comercial (&)

Queda por completar la condición de la cuenta contable. contabilidad. Para hacer esto, busque la línea en los parámetros de la tabla virtual. Condición de la cuenta y escribiremos allí

Cuenta EN JERARQUÍA (&Cuenta62)

También puedes utilizar el constructor de condiciones haciendo clic en el botón de tres puntos.

No es necesario imponer más condiciones en la mesa virtual, así que hagamos clic en el botón DE ACUERDO en la ventana de parámetros de la tabla virtual. A continuación, debemos seleccionar los campos que necesitamos de la tabla. Autoportante.Facturación(a saber: Contraparte, Acuerdo de Contraparte, Ingresos y Gastos). Para ver la lista de campos disponibles en la tabla que hemos seleccionado, haga clic en el símbolo “+” junto a su nombre. Después de eso, arrastre los campos requeridos al área más a la derecha del diseñador de consultas, que se llama: Campos. Si abrimos el plan de cuentas veremos que para la cuenta 62 análisis en Para la contraparte este es el Subconto1, y por Acuerdo de Contraparte - Subconto2.

Por tanto, de los campos de la tabla virtual seleccionamos Subconto1 Y Subconto2. Como necesitamos ingresos y gastos por monto, también seleccionamos los campos Importe FacturaciónDt Y Cantidad FacturaciónKt

Rellenemos los alias de los campos que hemos seleccionado, para ello vayamos a la pestaña Uniones/Alias y establezca los nombres de los campos requeridos.

Dado que en nuestro informe los datos se mostrarán jerárquicamente (la Contraparte está en el primer nivel y todos sus contratos están en el segundo), configuraremos la visualización de datos en la jerarquía usando Totales. Vayamos a la pestaña en el diseñador. Resultados. Arrastre a campos de agrupación secuencialmente Contraparte Y Acuerdo de contraparte, y en la final Próximo Y Consumo.

Esto completa el trabajo en el constructor de consultas, haga clic en el botón DE ACUERDO y vemos que el texto de nuestra petición aparece en el código del programa.

Consulta.Texto = "SELECCIONAR | Facturación Autosuficiente.Subconto1 AS Contraparte, | Facturación Autosuficiente.Subconto2 AS Acuerdo de Contraparte, | Facturación autosuficiente. Importe FacturaciónDt AS Recibo, | Facturación autosuficiente. Importe Facturación Kt AS Gasto|DESDE | Registro Contable Autocontabilidad Rotación (&Inicio de Período, &Fin de Período, Cuenta EN JERARQUÍA (&Cuenta 62),) AS Autocontabilidad Rotación|RESULTADOS | IMPORTE(Ingresos), | IMPORTE(Gasto) |PO | contraparte, | Acuerdo de Contraparte";

Una vez que hayamos terminado de escribir la solicitud, comencemos a completar las áreas. DatosContraparte, DatosAcuerdoContraparte Y Sótano. Rellenaremos todas estas áreas con los datos recibidos al ejecutar la solicitud. Dado que nuestra consulta contiene agrupaciones ( Contraparte Y Acuerdo de contraparte) seleccione datos del mismo de la siguiente manera:

SelectionCounterpart = Request.Execute().Select(BypassQueryResult.ByGrouping);

De esta forma recibiremos registros con totales de todas las contrapartes.

Antes de recorrer los datos de muestra mediante un bucle, inicializamos las variables destinadas a calcular los resultados generales del informe:

TotalEntrante = 0; Consumo Total = 0;

Para que los datos del informe se muestren con una jerarquía (y rotaciones a lo largo de "+"), establezcamos el comienzo de la agrupación automática de las filas del documento de hoja de cálculo:

TabDoc.StartAutoGroupingRows();

Todos los preparativos están completos, ahora comencemos a rastrear los resultados de la consulta. Realizaremos el recorrido usando un bucle. Adiós

Mientras selecciona Account.Next() Cycle EndCycle;

Al inicio del ciclo restablecer los parámetros. Próximo Y Consumo región DatosContraparte. ¿Para qué sirve? Imaginemos una situación en la que la contraparte Tío Vasya, el ingreso es 10 y el gasto es 5, y para la siguiente contraparte Tío Petia no hay ingresos ni gastos, en este caso, si no reseteamos los parámetros Próximo Y Consumo, luego en línea por contraparte Tío Petia habrá un ingreso de 5 y un gasto de 10.

AreaDataAccount.Parameters.Receipt = 0; AreaDataAccount.Parameters.Expense = 0;

Después de eso llenamos el área. DatosContraparte datos de elementos de muestra

FillPropertyValues(AreaAccountData.Parameters,SelectionAccount);

Después de completar los datos, puede mostrar el área en documento de hoja de cálculo, Dado que utilizamos la agrupación automática de filas, debemos indicar el nivel de la fila en la agrupación (nuestro informe tendrá dos niveles, para las contrapartes el primero para los contratos).

TabDoc.Output(AreaDataAccount,1);

Ahora para esta contraparte haremos una selección según sus contratos.

Acuerdo de SelecciónContrapartida = SelecciónContrapartida.Select(BypassQueryResult.ByGroups);

Realizaremos el recorrido usando un bucle. Adiós.

Mientras que SelectionCounterparty Agreement.Next() Loop EndCycle;

En el ciclo de acuerdos de contraparte, restablezcamos los parámetros Próximo Y Consumo, llena el área Contrato de datos de la muestra y mostrarla en un documento de hoja de cálculo en el segundo nivel de registros.

AreaDataContract.Parameters.Receipt = 0; AreaDataContract.Parameters.Expense = 0; CompletePropertyValues(AreaDataAgreement.Parameters,SelectionCounterpartyAgreement); TabDoc.Output(AreaDataContract,2);

También en este ciclo sumaremos los valores actuales a las variables para calcular los valores totales de ingresos y gastos.

Recibo Total = Recibo Total + SelecciónContrapartidaAcuerdo.Recibo; Gasto Total = Gasto Total + Ejemplo de Acuerdo de Contraparte. Gasto;

Con esto concluye la salida de datos en el área. DatosContraparte, DatosAcuerdoContraparte completado, solo queda completar la agrupación automática de las filas del documento de hoja de cálculo.

TabDoc.FinishAutoGroupingRows();

Ciclos completos responsables de la salida de datos al área. DatosContraparte Y DatosAcuerdoContraparte se parece a esto:

TabDoc.StartAutoGroupingRows(); Mientras que SelectionAccount.Next() bucle AreaDataAccount.Parameters.Receipt = 0; AreaDataAccount.Parameters.Expense = 0; FillPropertyValues(AreaAccountData.Parameters,SelectionAccount); TabDoc.Output(AreaDataAccount,1); Acuerdo de SelecciónContrapartida = SelecciónContrapartida.Select(BypassQueryResult.ByGroups); Mientras que SelectionCounterparty Agreement.Next() Loop AreaDataAgreement.Parameters.Receipt = 0; AreaDataContract.Parameters.Expense = 0; CompletePropertyValues(AreaDataAgreement.Parameters,SelectionCounterpartyAgreement); TabDoc.Output(AreaDataContract,2); Recibo Total = Recibo Total + SelecciónContrapartidaAcuerdo.Recibo; Gasto Total = Gasto Total + Ejemplo de Acuerdo de Contraparte. Gasto; FinCiclo; FinCiclo; TabDoc.FinishAutoGroupingRows();

Falta mostrar los datos finales en la zona Sótano y enviar el área misma a documento de hoja de cálculo.

AreaBasement.Parameters.TotalIncoming = TotalIncoming; AreaBasement.Parameters.TotalConsumption = TotalConsumo; TabDoc.Output(AreaFooter);

Esto completa el proceso de redacción de un informe externo para 1C 8 sin utilizar un sistema de control de acceso. Ahora se puede generar en modo 1C:Enterprise 8 y agregarlo al directorio Procesamiento externo Puede descargar el archivo del informe analizado en el artículo desde .

Mire un vídeo sobre cómo crear un imprimible externo para una aplicación administrada:

¡Atención!
Todo el procesamiento de los discos ITS tiene fines informativos y exclusivamente para usuarios registrados de ITS.

Selección y procesamiento de objetos. (Universal)

Busca objetos en documentos y directorios que cumplan determinadas condiciones. Procesa los resultados de la búsqueda.

Convolución de la base de información. (Universal)

Realiza un resumen de seguridad de la información de configuraciones típicas:

  • UPP 3.1.
  • BP 1.6.
  • TU 10.3.

Registro de cambios para intercambio. (Universal)

Edita, en modo de aplicación administrada, el registro de cambios en los objetos intercambiados. Le permite cambiar el registro actual en varios nodos. Cambia los números de mensajes recibidos y enviados.

Conversión del registro de actividad del usuario. (Universal)

Convierte un registro de acciones del usuario en un programa en un lenguaje integrado.

Búsqueda de texto completo en datos. (Universal)

Indexación y búsqueda de datos.

Encontrar y reemplazar valores. (Universal)

Busca y reemplaza valores de referencia en objetos de seguridad de la información.

Configuración de un registro tecnológico. (Universal)

Crea o edita un archivo de registro de proceso. Tiene la capacidad de configurar la creación de un volcado de memoria, configurar condiciones y eventos, cuya información se registrará en este registro.

Consola de trabajo. (Universal)

Supervisa las tareas rutinarias y en segundo plano. Elimina, crea otros nuevos.

Conversión de procesamiento externo. (Universal)

Cambiar información confidencial. (Universal)

Cambio selectivo o limpieza de la seguridad de la información a partir de cierta información.

Cambio de datos del grupo. (Universal)

Cambia detalles y partes tabulares en documentos y libros de referencia.

Subiendo y cargando usuarios. (Universal)

Carga y carga información de usuarios de seguridad en un archivo XML.

Carga de datos a bases de datos externas. (Universal)

Carga estructuras de datos a DBMS externos usando ADO en dos modos:

  • Descargar todo
  • Cargar cambios (se utiliza para sincronizar cambios en el IS de trabajo con el IS de recepción). Esta modalidad utiliza mecanismos de planes de intercambio.

Soporta los siguientes DBMS:

  • MicrosoftSQL
  • DB2
  • Oráculo
  • PostgreSQL
  • mysql

Subir y cargar datos XML. (Universal)

Sube y carga datos en seguridad de la información, tanto total como parcialmente. Se utiliza para transferir datos entre configuraciones que son similares en composición de objetos.

Cargando datos desde un documento de hoja de cálculo. (Universal)

Carga datos en directorios y partes tabulares de documentos tabulares.

Funciona en un cliente pesado en modo de aplicación normal.

Solicitar consola. (Universal)

Proporciona una gran ayuda en la creación de informes y consultas.