Casa / Consolas de juegos / Cómo agregar una tabla de Excel a 1s. ¿Qué es mejor: "1C" o "Excel"? ¿Tiene alguna pregunta o necesita ayuda de un consultor?

Cómo agregar una tabla de Excel a 1s. ¿Qué es mejor: "1C" o "Excel"? ¿Tiene alguna pregunta o necesita ayuda de un consultor?

Muy a menudo, cuando me comunico con clientes potenciales, escucho que tienen suficiente funcionalidad de tabla de la suite ofimática y no ven el punto en los programas 1C. Esto se debe a que algunos todavía asocian esta solución solo con programas de contabilidad, lo cual no es cierto.

Excel es un producto universal y masivo, no se puede discutir con eso. Casi todos pueden usar este programa, a diferencia de los desarrollos de "1C", que están dirigidos a especialistas limitados. Usando tablas "verdes", puede implementar arbitrariamente la funcionalidad necesaria que sea conveniente: aquí está el modelo financiero de la organización con todos los acuerdos mutuos, contabilidad de gestión, incluso regulada, una gran selección de visualización de datos, la capacidad de expandir el programa capacidades usted mismo utilizando varios complementos: todo está en sus manos, todo desde cero...

Es bueno si recién está comenzando su negocio, tomando en cuenta gradualmente los datos necesarios en la tabla sobre relaciones con clientes, proveedores, autoridades reguladoras, construyendo su estructura arbitraria, pero qué hacer a continuación cuando la base de datos se vuelve voluminosa y el personal estar en las decenas? ¿Todo lo mismo para considerar según sus propios parámetros? Soy partidario de no confundir conveniencia con costumbre, que muchas veces interfiere en la sistematización de un negocio y, en consecuencia, en su optimización.

Para mayor claridad, imaginemos qué necesidades pueden surgir en la automatización de la contabilidad, por ejemplo, en el comercio:

1. Análisis de las ventas dentro de un período determinado.

El jefe del departamento de ventas puede analizar los datos de ventas. Después de todo, es importante para él comprender si el plan se está implementando, qué tan efectivas son sus estrategias, para poder hacer los ajustes oportunos en caso de ineficiencia.

2. Contabilidad de almacenes.
¿Debo explicar que también es importante que las ventas comprendan la disponibilidad de productos en stock, qué productos se pueden reservar y cuáles están agotados y qué se debe pedir? Creo que todo está claro aquí.

3. Mantener una base de datos de contrapartes.
Incluso si el propietario vende solo lo que puede comprar aquí y ahora, lo cual es típico del sector B2C, entonces tiene relaciones ligeramente diferentes con la base de proveedores: contratos, primaria... Imagínese lo conveniente que es cuando todo lo relacionado con el proveedor se muestra automáticamente de inmediato en una sola base de datos? El gerente responsable del almacén ve inmediatamente la disponibilidad de bienes en el almacén, otro empleado responsable de los documentos monitorea la información sobre su disponibilidad, si se cumplen todas las obligaciones bajo las relaciones contractuales, quién le debe a quién y cuánto. Y en caso de discrepancias, puede verificar los datos durante un período determinado, generando un resultado en menos de un minuto.

4. Beneficio de la organización.
No será difícil generar un informe de ganancias, ya que todos los datos sobre gastos e ingresos ya están presentes en la base de datos. Siempre que la información sea ingresada en tiempo y forma, por lo menos en la fecha requerida. Aquí el factor fundamental es la responsabilidad personal del usuario.

Si no tiene muchos clientes y proveedores, Excel realmente le conviene, ya que hay mucho tiempo para diseñar sus propios esquemas en la tabla y completarlos, con la posterior distribución de documentos en varias carpetas en su computadora: contratos, proveedores, clientes, clientes en el vecindario, clientes en desarrollo, clientes para eliminar: el proceso interminable y emocionante de crear carpetas dentro de una carpeta. Y si hay mucha información, ¿es conveniente llevar un registro de tu base de datos en este caso? Por supuesto, siempre hay excepciones, a veces hay organizaciones con grandes volúmenes de negocios, cuyos datos financieros se mantienen solo en Excel. ¿Cuánto tiempo les lleva intercambiar y combinar datos entre departamentos? Respuesta: mucho.

No tengo idea de cómo encontrar rápidamente el correcto en una gran cantidad de documentos de Excel organizados por un sistema arbitrario. Por ejemplo, al enviar documentos para requisitos fiscales. ¿Cómo presentará un contador informes a las autoridades reguladoras cuando la información está dispersa? La contabilidad, por supuesto, se puede subcontratar y, desafortunadamente, a algunos propietarios de negocios no les importa qué procesos puede tener un especialista determinado, siempre que equilibre. Pero incluso si es así, ¿cómo se organiza entonces el proceso de intercambio de documentos? ¿Qué tan rápido entenderá un empleado adicional la estructura de información improvisada?

No puedo decir lo mismo de 1C, porque toda la información allí está estructurada e interconectada:

    Una base de datos única para empleados remotos y de tiempo completo, en la que puede trabajar con todos los documentos estandarizados y arbitrarios;
    La presentación de informes a las autoridades reguladoras se basa en los datos que ya están reflejados en el programa, no es necesario abrir muchos archivos, reducir varios valores en una tabla para obtener los resultados finales.
"1C", en el buen sentido, es un sistema multitarea que está dirigido tanto a las tareas típicas de contabilidad como a la automatización de todos los procesos organizacionales, según el campo de actividad. La palabra clave aquí es sistema. A nadie le molesta organizar su sistema empresarial en Excel, pero ¿por qué reinventar la rueda cuando existen soluciones que cubren casi todas las necesidades en la optimización de tiempos y costes económicos, ayudando a sistematizar el trabajo?

En defensa de Excel

Probablemente, te pareció que estoy en contra de construir datos en tablas "verdes". Para nada. De hecho, yo mismo a menudo hago algunos negocios en Excel: si necesito cálculos arbitrarios, si necesito segmentar datos por clientes, realizar análisis de acuerdo con esos parámetros que no están en 1C, sí, esto sucede, voy a " excel. En pocas palabras, en las tablas hago cálculos, análisis no estándar, pero luego sistematizo todo más tarde de todos modos en 1C.

Y luego, para ver los archivos cargados desde 1C, aún necesita Excel, ya que los datos en 1C se almacenan en hojas de cálculo. ¿Crees que es un círculo vicioso? Lo diré de otra manera: "1C" y "Excel" van uno al lado del otro como dos socios, pero cada uno de ellos tiene su propio propósito, se complementan bien, pero no se intercambian.

Si necesita sistematizar sus asuntos, teniendo en cuenta el sistema legislativo de nuestro estado, teniendo en cuenta los detalles y la dirección de los negocios, especialmente cuando se trata de grandes cantidades de información, entonces necesita 1C. Si necesita cálculos arbitrarios, crear una estrategia desde cero, visualización de datos analíticos no estándar, entonces Excel está a su servicio. Pero es mucho más conveniente trabajar con estas soluciones simultáneamente.


¿Cuál es el resultado: "1C" o "Excel"?

De entrada, si la pregunta es precisamente en finanzas para automatización, aunque los programas básicos de 1C no cuestan tanto dinero, usaría Excel. Una gran ventaja es que los datos de las tablas "verdes" se pueden cargar en 1C sin pérdida. Pero a medida que aumenta la escala, le aconsejo que preste atención a los programas de automatización de procesos comerciales. Hay muchos de ellos, y puede que no sea necesariamente "1C"...

La transición a 1C podrá realizarse cuando entienda que es necesario optimizar sus recursos, incluso automatizando temas relacionados con las relaciones con clientes y proveedores, con las autoridades de control. En general, para mejorar sus flujos de trabajo con el fin de aumentar la eficiencia empresarial, cuando el procesamiento de la información llevará mucho tiempo y los archivos de Excel ya no podrán hacer frente al volumen de datos ingresados.

Sin embargo, no todos los "1C" pueden adaptarse a usted, debe tener en cuenta varios factores: los detalles y el alcance del negocio, la escala, la necesidad de tareas diarias, la rutina que debe minimizarse. Todo es individual. La verdad, como dije, está en algún lugar entre "1C" y "Excel", se suman entre sí.

En esto, tal vez, todo. Pero si tienes alguna duda, ponte en contacto con nosotros e intentaremos ayudarte. ¡Procesos comerciales exitosos, colegas!

  • Al realizar el intercambio de información entre contrapartes (listas de precios, actas de conciliación, etc.);
  • Para facilitar el trabajo de los operadores en los casos en que la contabilidad principal se lleva en 1C, y parte de ella se realiza en tablas de Excel;
  • Durante el llenado inicial de la base de datos.

Para realizar esta operación, puede usar tanto la funcionalidad estándar disponible con una suscripción al soporte de tecnología de la información (ITS) como el procesamiento escrito por usted mismo implementado a través de varias opciones de conexión. En nuestro artículo, intentaremos analizar todos los casos posibles de la forma más completa posible y responder a la mayoría de las preguntas existentes sobre la carga de datos de Excel a 1C.

movimiento universal

En los discos ITS, así como en el portal 1C, al ir al menú "Soporte tecnológico" -> "Informes y procesamiento universales", en la carpeta "Carga de datos de un documento de hoja de cálculo" hay un procesamiento correspondiente.

Cuando se inicia, se abre un formulario (Fig. 1):

Como puede ver en el formulario, le permite transferir información a los siguientes objetos de configuración:

  1. Directorio;
  2. La parte tabular del documento o libro de referencia;
  3. Registro de información.

Dependiendo de la posición del interruptor, el campo de selección de objetos cambia.

El formulario tabular de procesamiento se completa cuando abre el archivo cargado.

El procesamiento de tipos admite cargas desde:

  • Desarrollado por especialistas de la empresa 1C, archivos del formatomxl;
  • Lisztxls guardado en el formatoExcel 97-2003;
  • Archivo de textoTXT;
  • mesasDBF.

Los archivos de Excel de gran volumen pueden tardar mucho en cargarse, por lo que si se supone que la carga de datos puede realizarse en varias etapas o si sabe con seguridad que tendrá que abrir un archivo existente varias veces, es mejor guardar la información. de ella en mxl para ahorrar nervios y formato de hora. Puedes hacerlo directamente desde el formulario de tramitación.

Es importante comprender que si existen agrupaciones de líneas, subtítulos y notas en el archivo de origen, deberán eliminarse manualmente.

Ahora pasemos a la pestaña "Configuración" (Fig. 2):

Figura 2

Muy a menudo, las hojas de cálculo de Excel contienen un encabezado con todo tipo de detalles y datos (nombre del formulario impreso, detalles de la contraparte, fecha y número del documento entrante, nombres de columnas, etc.), para excluir su procesamiento por el programa en el formulario, en el atributo "Primera línea del documento de hoja de cálculo", debe especificar la primera línea con la información transferida

Después de seleccionar el objeto de metadatos en el que se escribirá la información, la sección tabular de la pestaña "Configuración" se llenará automáticamente con los nombres de los atributos, las descripciones de sus tipos y otros información importante. La consideración de las columnas de la parte tabular de la pestaña "Configuración" debe dedicarse a una sección separada.

Columnas de configuración

Bandera: al marcar o desmarcar la casilla en la línea, se determina si se completará el atributo correspondiente.

Representación del atributo: aquí se escribe un sinónimo (nombre) del atributo de metadatos, tal como se especifica en el configurador.

Campo de búsqueda: si marca esta casilla, el procesamiento buscará elementos por el atributo correspondiente y, si tiene éxito, cambiará los datos existentes, funcion adicional este campo - protección contra la aparición de duplicados.

Descripción de tipos: muestra el tipo de datos que tiene uno u otro atributo de metadatos.

Modo de descarga: ofrece tres opciones para elegir (Fig. 3):

Fig. 3

  • Buscar: se buscará el elemento correspondiente, en caso de ausencia, se puede crear uno nuevo;
  • Establecer: un determinado valor se establece de forma subordinada;
  • Calcular: en este caso, el resultado del cálculo de la expresión especificada en la columna "Condición de enlace/Expresión para el valor" se establecerá en el campo del elemento que se está creando.

En este último caso, al activar el campo Expresión se abrirá el formulario (Fig.4).

Figura 4

Número de columna: un campo que se usa para indicar de qué columna de la hoja de cálculo de Excel necesita tomar datos para completar.

Valor predeterminado: con bastante frecuencia surge una situación en la que el archivo cargado no contiene todos los datos necesarios para registrar un elemento, en este caso, la información contenida en este campo se completará para completar.

Condición de enlace / Expresión de valor: ya hemos tocado parcialmente este campo cuando consideramos los campos calculados, además, puede especificar la condición de acuerdo con la cual se sincronizarán los datos de origen.

Aquí, en principio, está toda la información que está disponible en la pestaña "Configuración".

Para no perder mucho tiempo cada vez que carga, prescribiendo correspondencias y expresiones, los desarrolladores han brindado la posibilidad de guardar la opción de configuración en un archivo con la extensión mxlz.

Puede verificar la exactitud de los datos transferidos haciendo clic en el botón "Control de relleno" (Fig. 1). Después de eso, puede iniciar el proceso de descarga. Se le notificará por separado sobre la finalización exitosa del procedimiento o situaciones no estándar.

Para cargar datos de Excel a bases de información"Gestión y comercio" hay otro mecanismo. Es menos universal que el método anterior, sin embargo, no requiere una suscripción ITS y está incluido en la entrega estándar.

Este procesamiento se puede encontrar en la pestaña "Compras", en el menú "Servicio", se llama "Carga de precios de proveedores desde archivos" (Fig. 5)

Figura 5

El formulario de procesamiento contiene:

  1. Un campo de selección de fecha que indicará a qué hora es relevante este precio;
  2. El campo para seleccionar la contraparte que envió su lista de precios;
  3. Un botón que permite seleccionar el tipo de precios a configurar;
  4. Una sección tabular que se puede llenar con datos cargados.

Este formulario se puede ver en la Fig.6

Figura 6

La leyenda en la parte superior del formulario explica cómo usar la primera pestaña del formulario.

Después de seleccionar una contraparte (dependiendo de si actúa como proveedor, comisionista o vendedor), aparecerán columnas adicionales para cada tipo de precio en la tabla.

Al trabajar a través de la interfaz web, algunos navegadores pueden requerir la instalación de un complemento de navegador (Fig. 7). Necesitamos hacer clic en el botón "Iniciar instalación" y reiniciar nuestra conexión.

Figura 7

Después de eso, usando el portapapeles, podremos transferir información de una tabla a otra. Cuando se completan las columnas que necesitamos ("Artículo", "Nombre", "Precio"), presionamos el botón "Siguiente" y vamos a la segunda página (Fig. 8)

Figura 8

El programa buscará automáticamente coincidencias dentro de la base de datos y, si no las hay, ofrecerá opciones para resolver el error. Apariencia La parte tabular se puede controlar con un interruptor. Además, el usuario puede comparar de forma independiente los elementos del archivo subido con los de la base de datos.

  • Registre todo;
  • Registre solo aquellos que hayan cambiado en comparación con los que ya están en la base de datos.

En el campo de texto, puede ingresar un comentario que se registrará en el documento (Fig. 9):

Figura 9

Después de procesar:

  • Se creará un elemento correspondiente en el directorio "Nomenclatura de proveedores" (si no estaba allí);
  • Se combinará con un elemento del libro de referencia "Nomenclatura";
  • Se creará y contabilizará el documento "Fijación de precios de artículos", indicando: proveedor, tipo de precio y fecha de fijación de datos.

El procesamiento de "Cargar productos desde archivos externos" funciona de manera similar.

Opciones de procesamiento de transferencia de bricolaje

El principal problema al extraer datos de un archivo de Excel es que 1C no tiene un mecanismo inequívoco incorporado para abrirlo. Hay varias opciones conexiones excel a 1C:

  • A través de Microsoft ADODB, un método bastante rápido que, por regla general, es aplicable a las opciones de almacenamiento de bases de datos de archivos y de cliente-servidor;
  • Al otro lado de uso de microsoft Office: un método que a veces falla cuando se trabaja con bases de datos SQL, por lo general, funciona un poco más lento que el primer método, y también se requiere Office;
  • A través de Libre Office, a diferencia del método anterior, es gratuito, además de los formatos xls y xlsx, también admite sus propias tablas, pero requiere una instalación Paquete LibreOffice y algo de preparación del archivo subido (la primera fila de la tabla debe contener los nombres de las columnas).

Miremos más de cerca varias maneras y opciones

Vía ADODB.Conexión

En general, ADO significa ActiveX Data Object y sirve para acceso al programa a varias bases de datos. El mayor problema al crear cualquier conexión a un archivo de terceros (incluido Excel) es componer correctamente la cadena de conexión.

Hay tres opciones para los archivos de Excel:

Opciones de cadena de conexión:

  • Proveedor: aquí se determina el controlador utilizado;
  • Fuente de datos: define el nombre del archivo que abriremos;
  • Propiedades extendidas: aquí puede especificar si se necesita una línea de encabezado para la tabla (HDR = SÍ indica que los datos se leerán desde la primera línea, HDR = NO - desde la segunda), si el archivo se abre en modo de solo lectura ( ReadOnly) y algunas otras opciones adicionales.

Habiendo creado una cadena de conexión, podemos conectarnos al archivo descargado (Fig. 13)

Figura 13

Ahora podemos usar una solicitud sencilla(Fig.14) comience a obtener información del archivo descargado.

EN este caso el parámetro "Hoja" determina con qué hoja del libro de Excel tenemos que trabajar.

El conjunto de registros almacenados en una hoja se puede leer mediante el objeto Recordset. En este caso, el primer registro de la hoja se puede obtener por el parámetro BOF (comienzo del archivo), y el último EOF (final del archivo).

A través de la aplicación Excel

La principal diferencia con el método anterior es que, además de los controladores de la base de datos, se debe instalar Excel en la computadora donde se realiza la conexión. Solo en este caso podemos inicializar la aplicación para la lectura de datos de la tabla (Figura 16).

Este objeto COM tiene varios parámetros secundarios, pero el principal para nosotros, en las condiciones actuales de la tarea, es el parámetro WorkBooks (Fig. 17).

Después de inicializar el libro, es necesario determinar la hoja desde la cual se leerán los datos (Fig. 18).

Después de eso, puede iterar dentro de los ciclos de las filas y columnas de la tabla del archivo que se está abriendo.

Algunas palabras sobre posibles errores.

La mayor parte de los errores al conectarse a un archivo se debe al hecho de que el archivo ya está siendo utilizado por otra aplicación. Está bien si la barra de tareas muestra que Excel se está ejecutando en la computadora, pero si usted u otro usuario lo abrieron desde procesamiento externo, visualmente, esto solo se puede determinar a través del "Administrador de tareas", así que no olvide cerrar la conexión antes de que finalice el procedimiento de transferencia:

En el caso de trabajar a través de ADO (Fig.19);

Figura 19

  • En el caso de trabajar con la aplicación (Fig. 20).

Arroz. veinte.

La conexión y el procedimiento para completar el trabajo con datos se organizan mejor dentro de la construcción Attempt-Exception-End Attempt, lo que provoca una descripción de error en una situación excepcional. Aunque esto a veces ralentiza el trabajo, simplifica enormemente la determinación de la causa del error y, en última instancia, las formas de eliminarlo.

En 1C, hay 2 formas de trabajar con archivos de MS Excel, a través de un objeto COM y herramientas 1C integradas que utilizan un objeto de documento de hoja de cálculo. Examinemos ambos métodos con más detalle.

1. Trabaje a través del objeto COM.

Este método requiere la instalación de MS Excel, y si está trabajando con un archivo en el servidor, entonces MS Excel debe estar instalado en el servidor, si está en el cliente, también se requiere MS Excel en el lado del cliente.

Un ejemplo (al final del artículo se puede ver en forma de texto):

Cabe señalar que todos los objetos, métodos y propiedades proporcionados por el objeto COM "Excel.Application" son objetos, métodos y propiedades de VBA, el lenguaje de programación de MS Office.

Nota:

A veces es necesario trabajar con una plantilla existente. Luego, debemos almacenar esta plantilla en algún lugar para que todos los usuarios necesarios tengan acceso a ella. Sin embargo, existe una solución más sencilla: guardamos la plantilla como un diseño binario.

2. Trabaje con el documento de hoja de cálculo 1C.

El documento de hoja de cálculo 1C admite el formato MS Excel para grabar a partir de la plataforma 8, pero para abrir solo a partir de la plataforma 8.3.6. Además, al abrir, todas las hojas se cargan en un documento de hoja de cálculo. A partir de la versión 8.3.10, al cargar, se cargan diferentes hojas como áreas diferentes.

El ejemplo de grabación es muy simple y no requiere mucha atención:

Sin embargo, aquí tenemos un problema. Al registrar desde 1C en un libro de Excel, la visualización de los nombres de las hojas está deshabilitada de forma predeterminada.

Este problema se puede resolver de 2 maneras, 1: habilite la visualización de hojas en el libro en la configuración (no todos los usuarios aceptarán hacer esto), 2: hágalo a través de un objeto COM (nuevamente necesitamos MS Excel instalado) .

Después de esta pequeña adición, las etiquetas de las hojas serán visibles en el archivo de MS Excel.

Leer MS Excel no es una tarea tan simple, ya que el método de lectura solo está disponible en el servidor o en el cliente pesado. Para hacer esto, necesitamos transferir el archivo de MS Excel al servidor.

&EnCliente

Procedimiento CreateDocument()

Una excepción

Fin del intento;

Libro = Excel.WorkBooks.Add(); //Crear un nuevo libro de MS Excel

Hoja = Libro.HojasDeTrabajo.Add(); //Añadir una hoja

Sheet.Name = "Ejemplo de 1C"; //Establecer el nombre de la hoja

Sheet.Cells (1,1).Value = "(!LANG:Vamos a crear una fórmula";!}

Hoja.Celdas(2,1).Valor = 1;

Hoja.Celdas(2,2).Valor = 2;

Hoja.Celdas(2,3).Fórmula = "=A2+B2";

Hoja.Celdas(3,1).Valor = FechaActual();

Libro.GuardarComo("C:\1\Prueba.xlsx");

Libro.Cerrar();

Procedimiento final

&En el servidor

Función GetLayoutServer()

Return FormAttributeToValue("Objeto").GetLayout("Cargar plantilla"); //Así es como obtenemos el diseño de procesamiento externo;

funciones finales

&EnCliente

Procedimiento Trabajo()

Excel = New COMObject("Excel.Aplicación");

Una excepción

Show("Intento fallido de conectar el componente de Excel. Es posible que Excel no esté instalado en este computador!");

Fin del intento;

Diseño = GetLayoutServer();

Layout.Write(Nombre de archivo temporal);

¿Tienes alguna duda, necesitas la ayuda de un consultor?

Libro = Excel.WorkBooks.Open(TempFileName);

SheetTemplate = Libro. Hojas de trabajo (1);

SheetTemplate.Cells (6,1).Valor = "(!LANG:Fecha:";!}

SheetTemplate.Cells(6,2).Valor = FechaActual();

SheetTemplate.NumberFormat = "dd/mm/aa;@"; // Damos el formato de fecha, este formato se obtiene grabando una macro en MS Excel

SheetTemplate.Columns("B:B").EntireColumn.AutoFit; // Estirar la columna para que se ajuste exactamente a la fecha

Libro.Guardar como(Nombre de archivo);

Libro.Cerrar();

Procedimiento final

&EnCliente

Procedimiento final

&EnCliente

Procedimiento WriteSpreadsheetDocument()

DocumentoHojaDeCalculo = Nuevo DocumentoHojaDeCalculo();

SpreadsheetDocument.Area("R1C1").Text = "Ejemplo de una entrada en MS Excel de 1C";

SpreadDocument.Write("C:\1\Test2.xls",SpreadDocumentFileType.XLSX);

Excel = New COMObject("Excel.Aplicación");

Excel.WorkBooks.Open("C:\1\Test2.xls");

Excel.Visible = 0;

Excel.ActiveWindow.DisplayWorkbookTabs = 1;

Excel.ActiveWindow.TabRatio = 0,6;

Excel.ActiveWorkbook.Save();

Excel.Aplicación.Salir()

Procedimiento final

BinaryData = New BinaryData("C:\1\test2.xlsx");

Dirección=PutToTempStorage(BinaryData,ThisForm.UniqueIdentifier) ​​;

SpreadsheetDocument = DownloadOnServer(Dirección);

Hoja de cálculoDocumento.Mostrar();

Procedimiento final

&En el servidor

Función LoadOnServer(Dirección)

Nombre del archivo temporal = Obtener nombre del archivo temporal ("xlsx");

FileData = GetFromTempStorage(Dirección);

FileData.Write(TemporaryFileName);

DocumentoHojaDeCalculo = Nuevo DocumentoHojaDeCalculo();

Devolver documento de hoja de cálculo;

Introducción.

Mucha gente sabe que Excel es mucho más antiguo que 1C. En mi opinión, este es un producto muy exitoso y no he escuchado ninguna queja al respecto. Excel es simple y versátil. Es capaz de realizar no solo operaciones aritméticas simples, sino también cálculos complejos, gráficos, etc. Conozco ejemplos en los que las organizaciones, antes de cambiar a 1C, llevaban parte de la contabilidad en Excel. Muchos y ahora en paralelo usan dos programas. En este artículo, consideraremos formas de intercambiar datos entre 1C y Excel.

Tablas 1C y Excel.

Para mayor comodidad, muchos usuarios guardan tablas 1C (formularios imprimibles) en formato Excel (* .xls). Después de eso, se realizan varias agrupaciones, clasificaciones, cálculos, etc. en el archivo resultante. Esto se debe al hecho de que en las tablas 1C no hay una funcionalidad tan grande como en las tablas de Excel. Pero en la versión 1C 8.0 hay innovaciones que hacen que trabajar con mesas sea más cómodo.

El sitio web de 1C (http://www.1c.ru/) tiene un programa útil que le permite abrir tablas de 1C en Excel y guardar una hoja de Excel como una tabla de 1C. Esto es útil si la tabla 1C no se guardó en formato Excel y 1C no está instalado en la computadora donde necesita abrir esta tabla. Sí, y recuerde constantemente que debe guardar la tabla 1C en formato Excel, no será necesario.

La información completa sobre el programa se puede encontrar aquí.
Puede descargar el programa aquí (archivo zip 682 739 bytes).

Comentario: En Excel, el separador decimal es ",". Por lo tanto, antes de guardar la tabla 1C en formato Excel, reemplace otro separador (por ejemplo, ".") con ",". De lo contrario, Excel no podrá realizar cálculos con estos números o no se mostrarán como números. Por ejemplo, en la tabla 1C, "15.2" se mostrará en Excel como "15 de febrero".

Obtener datos de Excel.

El acceso de 1C a Excel se realiza a través de OLE. Por ejemplo, código
Intento
Una excepción
Notificar (Descripción del error() +
);
Regreso;
Fin del intento;
nos permitirá acceder a través de la variable "Excel" a aplicación en ejecución Sobresalir. Y luego ya puede acceder al libro (archivo), hoja y celda con datos. A continuación se muestran ejemplos de código.

Abrir un libro (archivo):
Libro = Excel. libros de trabajo Abrir (ruta al archivo);
PathToFile es la ruta completa al archivo del libro de Excel.

Selección de una hoja de libro con la que trabajar:
o
Hoja = Libro. Hojas de trabajo (Nombre de la hoja);
SheetNumber es el número de la hoja en el libro, SheetName es el nombre de la hoja en el libro.

Obtener el valor de una celda de hoja:
Valor = Hoja. Celdas (Número de línea, Número de columna). valor;

Importante: no olvide agregar el código de Excel al campo para realizar las acciones necesarias. Dejar(); , de lo contrario, el proceso en ejecución permanecerá incompleto y ocupará la memoria y el procesador de la computadora.

Salida de datos a Excel.

Para exportar (cargar) datos a Excel, debe abrir un libro de trabajo existente o crear uno nuevo y seleccionar una hoja de trabajo para la salida de datos. La apertura de un libro existente se describe arriba, pero para crear un nuevo libro, debe usar el siguiente código:
Intento
Excel = CreateObject("Excel.Aplicación" );
Una excepción
Notificar (Descripción del error() +
"¡Excel no está instalado en esta computadora!");
Regreso;
Fin del intento;
Libro = Excel. libros de trabajo agregar();

Dado que al crear un libro de trabajo en Excel, las hojas se crean automáticamente (Herramientas->Opciones->General->Hojas en un nuevo libro de trabajo), solo necesita seleccionar la hoja con la que trabajar:
Hoja = Libro. Hojas de trabajo (Número de hoja);
o añadir una nueva hoja al libro, si es necesario:
Hoja = Libro. Hojas. agregar();
El siguiente paso es establecer el valor de la celda:
Sábana. Celdas (Número de línea, Número de columna). valor = valor;
RowNumber, ColumnNumber: número de fila y número de columna en la intersección de la cual se encuentra la celda.
Y al final, debe registrar el libro creado:
Intento
Libro . Guardar como (ruta al archivo);
Una excepción
Notificar (Descripción del error()
+ "¡Archivo no guardado!");
Regreso;
Fin del intento;
PathToFile: la ruta completa al archivo del libro de Excel (incluido el nombre).
Importante: recuerda que los nombres de archivo no deben contener \/:*? " >< |.

Métodos comúnmente utilizados para leer/establecer valores en Excel.

Excel = CreateObject("Excel.Aplicación" ); Obtener acceso a la aplicación Excel.
Sobresalir. Visible = Visibilidad ; 0 - Excel no está visible, 1 - visible.
Libro = Excel. libros de trabajo agregar(); Creación de un nuevo libro de trabajo (archivo) Excel.
Libro . Guardar como (nombre de archivo); Guardar un libro de Excel.
Hoja = Libro. Hojas de trabajo. agregar(); Agregar una nueva hoja al libro.
Libro = Excel. libros de trabajo Abrir (Nombre de archivo); Abrir un libro de trabajo existente (archivo) Excel.
Hoja = Libro. Hojas de trabajo (Número de hoja); Establecer una hoja como hoja de trabajo con numberSheetNumber.
Sábana. Nombre = NombreHoja ; Nombrar una hoja de trabajoSheetName
Sábana. Configuración de página. Zoom = Escala ; Especifica la opción Escalar página (de 10 a 400).
Sábana. Configuración de página. Orientación = Orientación ; Orientación: 1 - retrato, 2 - paisaje.
Sábana. Configuración de página. Margen Izquierdo = Excel . CentímetrosAPuntos ( Centímetros ); Establece el borde izquierdo (en centímetros).
Sábana. Configuración de página. Margen superior = Excel. CentímetrosAPuntos ( Centímetros ); Especifica el límite superior (en centímetros).
Sábana. Configuración de página. Margen Derecho = Excel . CentímetrosAPuntos ( Centímetros ); Especifica el borde derecho (en centímetros).
Sábana. Configuración de página. Margen Inferior = Excel . CentímetrosAPuntos ( Centímetros ); Establece el límite inferior (en centímetros).
Sábana. Columnas (ColumnNumber) . AnchoColumna = Ancho ; Establecer ancho de columna.
Sábana. Celdas (Número de Línea, Número de Columna). valor = valor; Introducción de datos en una celda.
Sábana. Celdas (Número de Línea, Número de Columna). fuente. Nombre = NombreFuente; Configuración de la fuente en una celda.
Sábana. Celdas (Número de Línea, Número de Columna). fuente. Tamaño = Tamaño de fuente; Establecer el tamaño de fuente en una celda.
Sábana. Celdas (Número de Línea, Número de Columna). fuente. Negrita = Negrita ; 1 - negrita, 0 - normales.
Sábana. Celdas (Número de Línea, Número de Columna). fuente. cursiva = cursiva ; 1 - fuente oblicua, 0 - normal.
Sábana. Celdas (Número de Línea, Número de Columna). fuente. Subrayado = Subrayado ; 2 - subrayado, 1 - no.
Sábana. Celdas (Número de Línea, Número de Columna). FormatoNumero = Formato ; Establezca el formato de datos de la celda.
Sábana. Celdas (Número de Línea, Número de Columna). Fronteras. Estilo de línea = Tipo de línea ; Establece los bordes de las celdas. 1 - sólido delgado.

Este método es simple. Su esencia es que el objeto Hoja De CálculoDocumento tiene métodos:

  • quemar (< ИмяФайла>, < ТипФайлаТаблицы >) para cargar datos en un archivo;
  • Leer (< ИмяФайла>, < СпособЧтенияЗначений >) para cargar datos desde un archivo.

¡Atención!

El método Write() está disponible tanto en el cliente como en el servidor. El método Read() solo está disponible en el lado del servidor. Necesito recordar esto
al planificar la interacción cliente-servidor.

Considere un ejemplo de cómo guardar un documento de hoja de cálculo en un archivo. Es necesario crear y completar el objeto TableDocument de cualquier manera, y descarga El archivo se hace con una sola línea:

TabDoc . Write(FilePath, SpreadsheetDocumentFileType.XLSX);

Aquí TabDoc- hoja de cálculo generada, La ruta al archivo- el nombre del archivo a subir, Hoja de cálculoDocumentoFileType.XLSX— el formato del archivo generado. Se admiten los siguientes formatos de Excel:

  • XLS95: formato Excel 95;
  • XLS97: formato Excel 97;
  • XLSX es el formato de Excel 2007.

TabDoc = Nuevo documento de hoja de cálculo;
TabDoc . Read(PathToFile, WayToReadSpreadsheetDocumentValues.Value);

Aquí La ruta al archivo- Ruta al archivo de Excel descargado. WayToReadValuesSpreadDocument.Value determina cómo interpretar los datos leídos del documento de origen. Opciones disponibles:

  • Sentido;
  • Texto.

Intercambio a través de OLE

El intercambio a través de la tecnología de automatización OLE es quizás la forma más común de trabajar mediante programación con archivos de Excel. Le permite utilizar toda la funcionalidad proporcionada por Excel, pero es más lento que otros métodos. El intercambio a través de OLE requiere la instalación de MS Excel:

  • En la computadora del usuario final, si el intercambio se realiza del lado del cliente;
  • En la computadora del servidor 1C:Enterprise, si el intercambio se realiza en el lado del servidor.

Ejemplo descarga:

// Crear un objeto COM
Excel = New COMObject("Excel.Aplicación");
// Deshabilitar advertencias y preguntas
Sobresalir . mostrar alertas = falso;
// Crear un nuevo libro
Libro = Excel. libros de trabajo Agregar();
// Posicionamiento en la primera hoja
Sábana = Libro. Hojas de trabajo (1);

// Escribir valor en la celda
Sábana . Celdas (Número de fila, Número de columna). Valor = valor de celda;

// Guarda el archivo
Libro . Guardar como (Nombre de archivo);


Sobresalir . Dejar();
Excel = 0;

Ejemplos leyendo:

// -- OPCIÓN 1 --

// Crear un objeto COM
Excel = New COMObject("Excel.Aplicación");
// Libro abierto
Libro = Excel. libros de trabajo Abierto( La ruta al archivo);

Sábana = Libro. Hojas de trabajo (1);

// Cierra el libro
Libro . Cerrar (0);

// Cerrar Excel y liberar memoria
Sobresalir . Dejar();
Excel = 0;

// -- OPCION 2 --

// Libro abierto
Libro = ObtenerObjetoCOM( La ruta al archivo);
// Posicionamiento en la hoja deseada
Sábana = Libro. Hojas de trabajo (1);

// Lea el valor de la celda, aquí es donde generalmente se encuentra el bucle de derivación de la celda
CellValue = Hoja. Celdas (Número de fila, Número de columna). valor;

// Cierra el libro
Libro . solicitud. Qui t();

Para derivación todas las filas llenas de la hoja de Excel, puede usar los siguientes trucos:

// -- OPCIÓN 1 --
Número de Filas = Hoja. Celdas(1 , 1 ). CeldasEspeciales(11 ). Fila;
For RowNumber = 1 Por número de filas Bucle
CellValue = Hoja. Celdas (Número de fila, Número de columna). valor;
FinCiclo;

// -- OPCION 2 --
Número de Línea = 0 ;
Mientras que el bucle verdadero
Número de Línea = Número de Línea + 1 ;
CellValue = Hoja. Celdas (Número de fila, Número de columna). valor;
Si NO ValueFilled (CellValue) Luego
abortar;
Terminara si;
FinCiclo;

En lugar de recorrer secuencialmente todas las líneas de la hoja, puede volcar todos los datos en una matriz y trabajar con él. Este enfoque será más rápido al leer una gran cantidad de datos:

TotalColumns = Hoja. Celdas(1 , 1 ). CeldasEspeciales(11 ). Columna;
filas totales = Hoja. Celdas(1 , 1 ). CeldasEspeciales(11 ). Fila;

Región = Hoja. Rango (Hoja. Celdas (1, 1), Lista. Celdas (TotalRows, TotalColumns));
Datos = Área. valor. descargar();

La siguiente tabla enumera las propiedades y métodos más solicitados para trabajar con Excel a través de OLE:

Acción El código Un comentario
Trabajando con la aplicación
Configuración de la visibilidad de la ventana de la aplicación Sobresalir . visible= falso;
Configuración del modo de visualización de advertencia (mostrar/no mostrar) Sobresalir . Mostrar alertas= falso;
Cerrar la aplicación Sobresalir . Dejar();
Trabajando con un libro
Crear un nuevo libro Libro = Excel. libros de trabajo Agregar();
Abrir un libro de trabajo existente Libro = Excel. libros de trabajo Abrir (nombre de archivo);
guardando un libro Libro . Guardar como (Nombre de archivo);
cierre de libro Libro . Cerrar (0);
Trabajando con una hoja
Configuración de la hoja actual Sábana = Libro. Hojas de Trabajo(NúmeroHoja);
Configuración de nombre Sábana . Nombre = Nombre;
Configuración de protección Sábana . Proteger();
Eliminación de la protección Sábana . Desproteger();
Configuración de la orientación de la página Sábana . Configuración de página. Orientación = 2; 1 - retrato, 2 - paisaje
Configuración del borde izquierdo Sábana . Configuración de página. Margen Izquierdo = Excel. CentímetrosAPuntos(Centímetros);
Configuración del límite superior Sábana . Configuración de página. Margen superior = Excel. CentímetrosAPuntos(Centímetros);
Establecer el borde derecho Sábana . Configuración de página. Margen derecho = Excel. CentímetrosAPuntos(Centímetros);
Establecer el límite inferior Sábana . Configuración de página. Margen Inferior = Excel. CentímetrosAPuntos(Centímetros);
Trabajando con filas, columnas, celdas
Configuración del ancho de columna Sábana . Columnas (Número de columna). Ancho de columna = Ancho;
Eliminación de una línea Sábana . Filas(NúmeroFila). Borrar();
Eliminación de una columna Sábana . Columnas (Número de columna). Eliminar();
Borrar una celda Sábana . Celdas (Número de fila, Número de columna). Borrar();
Establecer un valor Sábana . Celdas (Número de fila, Número de columna). Valor = Valor;
Combinar celdas Sábana . Rango (Hoja. Celdas (Número de fila, Número de columna), Hoja. Celdas (Número de fila1, Número de columna1)). Unir();
Instalando la fuente Sábana . Celdas (Número de fila, Número de columna). Fuente. Nombre = Nombre de fuente;
Configuración del tamaño de fuente Sábana . Celdas (Número de fila, Número de columna). Fuente. Tamaño = Tamaño de fuente;
Configuración de fuente en negrita Sábana . Celdas (Número de fila, Número de columna). Fuente. Audaz = 1 ; 1 - negrita, 0 - normal
Configuración de cursiva Sábana . Celdas (Número de fila, Número de columna). Fuente. Itálico = 1 ; 1 - cursiva, 0 - normal
Configuración de una fuente subrayada Sábana . Celdas (Número de fila, Número de columna). Fuente. Subrayar = 2 ; 2 - subrayado, 1 - no

Para averiguar qué propiedad debe cambiarse o qué método llamar, puede usar macros Sobresalir. Si graba una macro con las acciones requeridas, puede ver el código del programa en el VBA de la macro grabada.

Uso de COMSafeArray

Al descargar grandes cantidades de datos de 1C a Excel, puede usar el objeto para acelerar COMSafeArray. Tal como lo define el ayudante de sintaxis, COMSafeArray es un contenedor de objetos sobre una matriz multidimensional matriz segura de COM. Le permite crear y utilizar SafeArray para intercambiar datos entre objetos COM. En pocas palabras, esta es una matriz de valores que se pueden usar para intercambiar entre aplicaciones que usan tecnología OLE.

// Crear COMSafeArray
ArrayCom = New COMSafeArray("VT_Variant", TotalColumns, TotalRows);
// Llenar COMSafeArray
Para Str = 0 filas totales - 1 bucle
Para Recuento = 0 columnas totales - 1 ciclo
ArrayCom . EstablecerValor(Número, Cadena, Valor);
FinCiclo;
FinCiclo;
// Asignando los valores del área de la hoja de Excel desde COMSafeArray
Sábana . Rango (Hoja. Celdas (1, 1), Lista. Celdas (TotalRows, TotalColumns)). Valor = ArrayCom;

Intercambio a través de ADO

Un archivo de Excel, cuando se intercambia a través de ADO, es una base de datos a la que se puede acceder mediante consultas SQL. No se requiere la instalación de MS Excel, pero sí un controlador ODBC, a través del cual se realizará el acceso. El controlador ODBC utilizado se determina especificando la cadena de conexión al archivo. Por lo general, el controlador requerido ya está instalado en la computadora.

El intercambio a través de ADO es notablemente más rápido que el intercambio a través de OLE, pero al descargar, no hay forma de usar la funcionalidad de Excel para decorar celdas, marcar páginas, establecer fórmulas, etc.

Ejemplo descarga:


Conexión = Nuevo COMObject("ADODB.Conexión");


Compuesto . Cadena de conexión="

|Fuente de datos=" + nombre de archivo + ";
;
Compuesto . abierto(); // Abrir conexión

// Crear un objeto COM para el comando
Comando = Nuevo COMObject("ADODB.Command");
Mando

// Asignar texto de comando para crear una tabla
Mando . textocomando= "CREATE TABLE [Sheet1] (Column1 char (255), Column2 date, Column3 int, Column4 float)";
Mando . ejecutar(); // Ejecución de comandos

// Asignación de texto de comando para agregar una fila de tabla
Mando . textocomando= "INSERTAR EN [Hoja1] (Columna1, Columna2, Columna3, Columna4) valores ('abvgdeo', '8/11/2017', '12345', '12345,6789')";
Comando.Ejecutar(); // Ejecución de comandos

// Borrando el comando y cerrando la conexión
comando = indefinido;
Compuesto . cerrar();
Conexión = Indefinido;

Para crear una nueva hoja y formar su estructura, puede utilizar los objetos ADOX.Catálogo Y ADOX.Tabla. En este caso, el código se verá así:

// Crear un objeto COM para trabajar con el libro
Libro = New COMObject("ADOX.Catálogo");
Libro . ActiveConnection = Conexión;

// Crear un objeto COM para trabajar con la estructura de datos en la hoja
Tabla = Nuevo COMObject("ADOX.Table");
mesa . Nombre = "Hoja1" ;
mesa . columnas. Agregar ("Columna1", 202);
mesa . columnas. Agregar ("Columna2", 7);
mesa . columnas. Agregar ("Columna3", 5);
mesa . columnas. Agregar("Columna4" , 5 );

// Crea una hoja en el libro con la estructura descrita
Libro . mesas. agregar (tabla);
tabla = indefinido;
libro = indefinido;

En el ejemplo anterior, en el método

mesa . columnas. Adjuntar("Columna 1", 202);

el segundo parámetro especifica el tipo de columna. El parámetro es opcional, aquí hay algunos valores de tipo de columna:

  • 5-anuncioDoble;
  • 6 - moneda del anuncio;
  • 7 - Fecha de publicación;
  • 11 - anunciobooleano;
  • 202 - adVarWChar;
  • 203-adLongVarWChar.

Ejemplo leyendo:

// Crear un objeto COM para la conexión
Conexión = Nuevo COMObject("ADODB.Conexión");

// Establecer cadena de conexión
Compuesto . Cadena de conexión="
|Proveedor=Microsoft.ACE.OLEDB.12.0;
|Fuente de datos=" + nombre de archivo + ";
|Propiedades extendidas=""Excel 12.0 XML;HDR=SI"";";
Compuesto . abierto(); // Abrir conexión

// Crea un objeto COM para recibir una selección
Selección = Nuevo COMObject("ADODB.Recordset");
Texto de solicitud = "SELECCIONAR * DE [Hoja1$]";

// Ejecutar la solicitud
Muestra . Abrir (Texto de consulta, Conexión);

// Omite el resultado de la selección
Mientras NO Muestreo. Bucle EOF()
ColumnValue1 = Selección. campos. Elemento("Columna1"). valor ; // Referencia por nombre de columna
Valor de columna2 = selección. campos. Artículo (0). valor; // Recuperar por índice de columna
Muestra . MoverSiguiente();
FinCiclo;

Muestra . cerrar();
Muestra = indefinido;
Compuesto . cerrar();
Conexión = indefinido;

En la cadena de conexión, el parámetro HDR determina cómo se percibirá la primera línea de la hoja. Posibles opciones:

  • SÍ: la primera línea se percibe como los nombres de las columnas. Se puede acceder a los valores por nombre y por índice de columna.
  • NO - La primera línea se toma como dato. Solo se puede acceder a los valores por índice de columna.

En los ejemplos dados, solo se consideran algunos objetos ADO. El modelo de objetos ADO consta de los siguientes objetos:

  • conexión;
  • mando;
  • conjunto de registros;
  • registro;
  • campos;
  • Arroyo;
  • errores;
  • parámetros;
  • propiedades

Subir sin programar

Para guardar datos de 1C a Excel, no siempre es recomendable recurrir a la programación. Si en el modo Enterprise el usuario puede mostrar los datos necesarios para la carga, entonces es posible guardarlos en Excel sin programación.

Para guardar un documento de hoja de cálculo (por ejemplo, el resultado de un informe), puede llamar al comando Salvar o Guardar como… menú principal.

En la ventana que se abre, debe seleccionar el directorio, el nombre y el formato del archivo guardado.

Para guardar datos listas dinámicas(por ejemplo, una lista de elementos) debe:

  1. Salida de datos a una hoja de cálculo usando el comando Más ⇒ Mostrar lista...;
  2. Guarde el documento de hoja de cálculo en el formato requerido.