Punto en el tiempo y límite, propósito, ejemplos de uso. Salidas de esta situación.

Para implementadores que trabajan con configuraciones estándar o propias, y aquellos que se están preparando para la certificación en 1C: Especialista en plataforma.

En este artículo veremos:

  • Cómo utilizar correctamente los bloqueos administrados para el procesamiento operativo y no operativo de documentos
  • ¿A qué puede conducir? sin bloqueo
  • cómo evitar cometer errores que no se descubren inmediatamente y pueden tener graves consecuencias :)

Tiempo de lectura: 20 minutos.

Entonces, dos métodos para controlar los saldos en 1C:Enterprise 8.3

Comencemos con el hecho de que las designaciones "método antiguo" y "método nuevo" son bastante arbitrarias. De hecho, si desde 2010 se utiliza una “nueva técnica”, ya no es tan nueva :)

Sin embargo, una vez más nos vemos obligados a detenernos aquí, porque Es necesario distinguir entre estos enfoques y esto es fundamental..

El “método antiguo” es un enfoque para controlar los residuos que se ha utilizado desde los días de 1C:Enterprise 8.0.

Desde 2010, con el desarrollo de la plataforma y la incorporación de nuevas capacidades con 1C:Enterprise 8.2, se ha aplicado una “nueva metodología” ( sin embargo - no en todas partes).

¿Cuál es la diferencia?

La diferencia fundamental está en el momento del control de residuos:

  • En el método "antiguo", las balanzas se controlan ANTES de registrar los movimientos en los registros.
    Primero, verificamos los saldos; si los saldos "no son suficientes" (surgirán saldos negativos), no publicaremos el documento.
  • En el método “nuevo”, el control se produce DESPUÉS de registrar los movimientos, es decir, después del hecho.
    Si después de la ejecución se forman saldos negativos, es necesario "revertir" la transacción, es decir, cancelar el documento.

Las ventajas y desventajas de la nueva técnica se analizan en detalle en un artículo aparte, por lo que nos limitaremos únicamente a la tesis general: la nueva técnica es más óptima en términos de rendimiento y escalabilidad.

Bien, ¿entonces la antigua técnica es cosa del pasado y este es el destino de UT 10.3?

No, eso no es del todo cierto.

La nueva metodología se puede utilizar cuando, al cancelar bienes Todos los datos necesarios están en el documento y no es necesario calcularlos..

Por ejemplo, cuando el monto a cancelar se conoce por la parte tabular del documento. El problema surge con el precio de coste, porque hay que calcularlo antes de escribir en el registro, es decir, ejecutar una consulta a la base de datos.

Por lo tanto, la nueva metodología se puede aplicar con éxito si los datos sobre cantidad y costo se almacenan en registros separados.

Por ejemplo, así:

Sin embargo, existen configuraciones en las que en un mismo registro se tienen en cuenta tanto la cantidad como el coste. Y aquí está justificado. El antiguo método de control de residuos todavía funciona.!

A continuación se muestra un ejemplo de un registro tanto para cantidad como para costo:

¿Qué pasa con las configuraciones típicas? Es sólo una técnica nueva, ¿verdad?

¡No siempre!

Por ejemplo, en "1C: Trade Management 11.3" hay 2 registros:

Al publicar los documentos de envío, el registro "Costo de la mercancía" no se completa en absoluto. Los datos ingresan a este registro únicamente cuando se realizan operaciones de rutina para cerrar el mes.

UT 11 utiliza una nueva técnica, ya que todos los datos para la publicación de documentos se pueden obtener sin acceder a registros controlados.

En cuanto a "1C: Contabilidad", allí se almacenan tanto la cantidad como el costo. en un registro departamento de contabilidad, sobre las cuentas contables correspondientes.

Es por eso BP 3.0 utiliza la técnica antigua.

Tenga en cuenta que la contabilidad cuantitativa y de costos en UT 11 se lleva a cabo con diferentes análisis. Por ejemplo, el costo se actualiza adicionalmente por organización, división, gerente, tipo de actividad, IVA, etc.

Como parte de este artículo, analizaremos el bloqueo de los métodos antiguos y nuevos de control de saldos.

Sobre la pronta tramitación de documentos.

A menudo existen ideas erróneas sobre esta sencilla pregunta.

A veces se cree que la implementación operativa es el control de residuos mediante un nuevo método. Esto no es cierto, de la palabra "en absoluto".

El desempeño operativo se puede analizar mientras se monitorean los residuos, pero no es necesario.

Implementación operativa– esta es la capacidad del documento para registrar eventos emergentes aquí y ahora, es decir, en tiempo real.

Se configura mediante una propiedad de documento especial:

¿Qué significa “registrarse aquí y ahora”? La plataforma de documentos procesados ​​rápidamente realiza una serie de acciones:

  • A los documentos publicados hoy se les asigna la hora actual
  • Si se publican dos documentos simultáneamente, cada uno tendrá su propio tiempo (es decir, el sistema espaciará los documentos en segundos diferentes)
  • Los documentos no se pueden publicar en una fecha futura.

Pero lo principal es que el sistema transmite. un signo de eficiencia documento para su tramitación:

Para documentos contabilizados puntualmente se puede omitir especificar el parámetro en la solicitud, los saldos vigentes se obtendrán al 31 de diciembre de 3999:

Los saldos actuales se almacenan en el sistema y se obtienen lo más rápido posible (los saldos para otras fechas en la mayoría de los casos se obtienen mediante cálculo).

De este modo La implementación operativa puede adoptarse tanto para los métodos antiguos como para los nuevos de control de residuos..

Dato interesante.

En UT 11, se prohíbe la cancelación de documentos de nomenclatura con prontitud. Por ejemplo, estos son los documentos "Venta de bienes y servicios", "Montaje de bienes", "Movimiento de bienes", "Consumo interno de bienes" y otros.

¿Por qué se hace esto?

En el sistema, el control del saldo siempre se realiza en el momento actual (el parámetro Período no se especifica en la solicitud). Y la falta de ejecución operativa le permite ingresar documentos en el futuro; esta tarea a menudo es requerida por los clientes.

Control de saldos mediante un nuevo método, sin bloqueos

Consideremos brevemente el algoritmo para controlar los saldos al realizar el documento “Ventas de bienes y servicios” utilizando una configuración modelo.

Hay dos registros:

  • Saldos disponibles – para contabilidad cuantitativa
  • Costo de bienes – para contabilidad de costos

Para controlar los saldos de productos, basta con trabajar con el registro “Saldos libres”.

El código de procesamiento de publicación se verá así:

Solicitud = Nueva Solicitud;


#Área Área1
Query.TemporaryTableManager = NuevoTemporaryTableManager;
#EndArea


#Área Área2
Solicitud.Texto =
"ELEGIR

|Colocar documento de mercancías
|DESDE
|DONDE
|
|Agrupar por
|
|ÍNDICE POR
| Nomenclatura
|;

|SELECCIONAR
| &Fecha AS Período,
| VALOR(Tipo de MovimientoAcumulación.Gasto) COMO Tipo de Movimiento,
| ProductosDocumento.Cantidad AS Cantidad
|DESDE
";
Query.SetParameter("Fecha", Fecha);
#EndArea

// 4. Registro de movimientos en la base de datos
#ÁreaÁrea4
Movimientos.Record();
#EndArea


#RegiónRegión5
Solicitud.Texto =
"ELEGIR
| -FreeRemainingRemaining.CantidadRemaining AS Déficit
|DESDE
| ProductosDocumento CÓMO ProductosDocumento
| UNIÓN INTERNA RegistrarAcumulaciones.FreeRemains.Remains(
| & Momento del tiempo,
| Nomenclatura B
| (ELEGIR
| ProductosDocumento.Nomenclatura AS Nomenclatura
| DE
| Productos del Documento COMO Productos del Documento)) COMO Libre Resto Restante
| Productos de softwareDocumento.Nomenclatura = DisponibleRemainingRemaining.Nomenclature
|DONDE
| DisponibleRestanteRestante.CantidadRestante< 0";
#EndArea


#RegiónRegión6
Momento de control restante =
?(Modo = Modo de retención de documentos. Operacional,
Indefinido,
Nuevo límite (TimePoint(), BoundaryView.Inclusive));
Request.SetParameter("Momento de tiempo", Momento de control restante);
SolicitudResultado = Solicitud.Execute();
#EndArea


#RegiónRegión7
Si NO es el resultado de la consulta. Vacío() Entonces
Rechazar = Verdadero;
ErrorSelect = QueryResult.Select();
Mientras que el bucle SelectErrors.Next()
Message.Text = "No hay suficiente cantidad de producto: "+SelectionErrors.Shortage;
Message.Field = "Productos["+(ErrorSelection.LineNumber-1)+"].Cantidad";
Mensaje.Mensaje();
Fin del ciclo;
terminara si;
#EndArea


#Región Región8
Si falla entonces
Devolver;
terminara si;
#EndArea

Fin del Procedimiento

Consideremos los puntos clave del algoritmo de control residual.

1. Inicializando el administrador de tablas temporales

El administrador será necesario para que la tabla temporal creada en la consulta esté disponible en consultas posteriores.

Por tanto, los datos de la parte tabular se obtienen una vez, se guardan en una tabla temporal y luego se utilizan repetidamente.

2. Consultar datos tabulares de agrupación.

La consulta selecciona datos agrupados de la sección tabular.

Tenga en cuenta que el número de línea del documento también está seleccionado; será necesario para contextualizar el mensaje de error. Para el número de línea, se utiliza la función agregada MINIMUM(), es decir, el mensaje se vinculará a la primera línea donde aparece la nomenclatura especificada.

La primera solicitud del lote crea una tabla temporal. En la segunda consulta, se seleccionan los datos de la tabla temporal y se agregan 2 campos requeridos para cada entrada de registro: Período y Tipo de movimiento.

Las ventajas de este enfoque:

  • No es necesario realizar una limpieza previa, es decir, utilizar el método Clear()
  • No es necesario organizar un bucle basado en la selección o la parte tabular.

Por cierto, se utiliza un enfoque similar en las configuraciones estándar, en particular en UT 11 y BP 3.0.

4. Registro de movimientos en la base de datos.

La grabación se podría realizar con un comando (en lugar de dos): Movements.FreeRemains.Record().

Y en nuestro caso, cuando se escriba un registro, no habrá diferencia.

Pero este enfoque es más universal:

  • Primero, configure el indicador de escritura para los conjuntos de registros requeridos.
  • Luego llame al método Write() de la colección Movement, que escribe todos los conjuntos con el indicador Write configurado en la base de datos.

Después de ejecutar el comando “Movements.Record()”, el indicador de grabación para todos los conjuntos se restablecerá a Falso.

También debe recordar que al final de la transacción (después del posprocesamiento), el sistema escribirá automáticamente en la base de datos solo aquellos conjuntos de registros para los cuales el indicador de escritura esté configurado en Verdadero.

Las soluciones típicas utilizan un esquema similar para registrar movimientos. ¿Por qué?

El método Write() de la colección Movement escribe conjuntos de registros en la misma secuencia, incluso para documentos diferentes.

Registrar los movimientos manualmente puede causar problemas.

Pongamos un ejemplo.

Si escribe en el documento de “Implementación” así:

Movimientos.FreeRemainders.Write();
...
Movimientos.Costo de las Mercancías.Escribir();

Y en el documento “Movimiento de mercancías” cambia el orden:

Movimientos. Costo de los artículos.Write();
...
Movimientos. Restos libres.Write();

Esto puede provocar un bloqueo de documentos en conjuntos de elementos que se cruzan.

El enfoque de grabación de movimiento anterior se puede utilizar si se especifica el valor de grabación de movimiento apropiado en las propiedades del documento:

5. Consulta recibiendo saldos negativos

La solicitud selecciona saldos negativos por artículo del documento.

Un saldo negativo es una escasez (escasez) de un producto.

La conexión a los elementos del documento se realiza únicamente para obtener el número de línea.

Si no planeáramos vincular mensajes a campos de documentos, la consulta podría simplificarse enormemente: los datos se obtendrían de una tabla (el resto del registro).

6. Determinación del momento para controlar los residuos

Aquí es donde la ejecución operativa resultó útil.

Si el documento se realiza con prontitud, entonces el momento de recepción de saldos es Indeterminado, lo que significa recibir saldos vigentes.

Si se trata de una transacción no operativa, obtenemos un momento "después" del documento para tener en cuenta los movimientos que se acaban de realizar.

Recordemos que obtener saldos actuales es una operación rápida en comparación con obtener saldos en un momento arbitrario.

Éste es precisamente el beneficio de los documentos ejecutados con prontitud.

7. Si la solicitud no está vacía, significa que se han formado saldos negativos.

En el bucle, revisamos todos los restos negativos y mostramos un mensaje adjunto a las filas de la parte tabular.

Así es como se verá el mensaje de diagnóstico:

8. Si hay errores, regrese desde el controlador de eventos.

Si hubo al menos un error, salimos del procedimiento.

Dado que no tiene sentido continuar con la transacción, la transacción no se registrará de todos modos (y luego desarrollaremos un código para cancelar lotes).

Implementación de amortizaciones de costos por lote.

Una vez que la verificación de los saldos haya sido exitosa, puede comenzar a cancelar los lotes.

El código para cancelar por FIFO será el siguiente:

// I. Análisis del avance de fecha del documento


Y NO ThisObject.ThisNew()
Y este objeto. Realizado entonces

Solicitud = Nueva Solicitud;
Solicitud.Texto =
"ELEGIR
| Documento.Fecha AS Fecha
|DESDE
|DONDE

SolicitudResultado = Solicitud.Execute();
SeleccionarDocumento.Siguiente();

De lo contrario
Mentir);
terminara si;

Fin del Procedimiento

Procedimiento al registrar (rechazo)

ThisObject.AdditionalProperties.Insert("DocumentDateMovedForward",
EsteObjeto.Fecha>


terminara si;

Fin del Procedimiento

Procedimiento de procesamiento (fallo, modo)

Solicitud = Nueva Solicitud;

// 1. Inicialización del administrador de tablas temporales
#Área Área1
...
#EndArea

// 2. Consultar datos de la tabla de agrupación
#Área Área2
...
#EndArea

// 4. Registro de movimientos en la base de datos
#ÁreaÁrea4
...
#EndArea

// 5. Consulta recibiendo saldos negativos
#RegiónRegión5
...
#EndArea

// 6. Determinar el momento para controlar los saldos
#RegiónRegión6
...
#EndArea

// 7. Si la solicitud no está vacía, entonces se han formado saldos negativos
#RegiónRegión7
...
#EndArea

// 8. Si hay errores, regresa desde el controlador de eventos.
#Región Región8
...
#EndArea

//II. Preparación de juegos de registros para el registro de "Costo de bienes"
#ÁreaÁreaII

Movimientos.Record();
terminara si;
Movimientos.Costo de los Bienes.Registro = Verdadero;
#EndArea

//III. Solicite la recepción de saldos de lotes para su cancelación utilizando FIFO
#ÁreaAreaIII
Solicitud.Texto =
"ELEGIR
| ProductosDocumento.Nomenclatura AS Nomenclatura,
| ProductsDocument.Número de línea AS Número de línea,

| Queda Partido AS Partido
|DESDE
| ProductosDocumento CÓMO ProductosDocumento
| & Momento del tiempo,
| Nomenclatura B
| (ELEGIR
| DE

|ORDENAR POR
|RESULTADOS
| MÁXIMO(Cantidad),
| SUMA(Cantidad Restante)
|software
| Nomenclatura";
SolicitudResultado = Solicitud.Execute();
#EndArea

//IV. Ciclo por nomenclatura de documentos
#ÁreaÁreaIV

// V. Obtener el monto a cancelar
//VI. Ciclo por lotes por FIFO
Mientras que SelectionBatch.Next() y RemainingWrite>0 bucle
// VII. Verificar saldo cero
Si SampleBatch.QuantityRemaining=0 Entonces
Continuar;
terminara si;
Movimiento.Período = Fecha;

// VIII. Cálculo de la cantidad y el importe a amortizar.

// IX. Reduciremos el importe a amortizar
Fin del ciclo;
Fin del ciclo;
#EndArea

Fin del Procedimiento

Veamos los puntos clave del algoritmo para cancelar lotes utilizando FIFO.

I. Análisis del avance de fecha del documento

Aquí entendemos si la fecha del documento publicado avanza. Esta información será útil a continuación cuando limpie los movimientos.

Para analizar el cambio de fecha del documento se requieren 2 eventos:

  • Antes de grabar– para obtener la fecha anterior del documento y verificar el modo de publicación del documento
  • Al grabar– para obtener una nueva fecha del documento

Transferimos datos entre eventos a través de una colección especial del objeto: "Propiedades adicionales". Existe mientras la versión actual del objeto esté en la memoria, es decir, está disponible para todos los eventos durante la ejecución.

Se utiliza una técnica similar en el estándar "1C: Contabilidad 8". Pero se utiliza un evento "Antes de grabar".

¿Por qué no es necesario utilizar “Al grabar” en el BP?

Es simple: los documentos de envío no se pueden procesar rápidamente en el departamento de contabilidad. Esto significa que la hora del documento no aceptará un sello operativo (si el documento se vuelve a publicar en el día actual), por lo tanto, tanto la fecha antigua como la nueva del documento se pueden obtener en el evento "Antes de grabar".

II. Preparación de juegos de registros para el registro de “Costo de bienes”

El modo de eliminación de movimiento está configurado para el documento: "Cuando se cancela la publicación":

Así, existe la posibilidad de que al volver a publicar podamos tener en cuenta los movimientos del propio documento. PERO esto sólo sucederá si la fecha del documento se adelanta. Es decir, tiene sentido compensar los movimientos sólo cuando se adelanta la fecha del documento.

He aquí un ejemplo:

  • El saldo de monitores LG en el momento de la documentación es de 10 unidades.
  • Se publica un documento que cancela 8 unidades.
  • En el mismo documento se aumenta el tiempo en 1 minuto, repitamos

Si no se eliminan los movimientos antiguos, el sistema informará una falta de 6 monitores, ya que los movimientos de documentos actuales ya han cancelado 8 de los 10 monitores disponibles.

Nota. A veces hay un consejo: eliminar los movimientos solo durante la cirugía.

Pero esto está mal: no tendrán en cuenta la situación de cambiar los documentos "no operativos" (los de ayer y los anteriores).

Es decir, el problema de la “falta de 6 monitores” (ver arriba) en este caso se resolverá sólo para los documentos modificados hoy.

III. Solicitud que recibe saldos de lotes para cancelación usando FIFO

En la solicitud nos referimos a los saldos por lote, y al mismo tiempo superponemos los totales por ítem.

A nivel total, se obtiene la cantidad del documento - MÁXIMA(Cantidad) y el saldo del lote - SUMA(CantidadRemanente).

¿Cree que la cantidad del documento puede exceder el saldo total del artículo para todos los lotes?

Si los movimientos en los registros "Restos libres" y "Costo de bienes" por cantidad se realizan sincrónicamente (tanto entrantes como salientes), entonces tal situación no puede surgir. Esto es en lo que nos basaremos al cancelar lotes.

IV. Ciclo por nomenclatura de documentos

Gracias a los resultados de la consulta en el bucle exterior, omitimos la nomenclatura del documento.

V. Obtener el monto a cancelar

Recordemos cuánto necesita cancelar. Además esta cantidad disminuirá.

VI. Ciclo por lotes por FIFO

El ciclo anidado contendrá lotes según el artículo actual.

VII. Verificar saldo cero

En general, la situación en la que el saldo del lote es cero es un error en los datos del sistema (sin embargo, tal situación es posible). El caso es que en este caso la suma NO es cero (la tabla virtual de saldos de registros no devuelve registros con valores de recursos cero).

Por lo tanto, decidimos que nos saltaremos juegos tan erróneos. Si lo desea, puede emitir diagnósticos al usuario.

VIII. Cálculo de la cantidad y el importe a amortizar.

La cantidad a amortizar es el valor mínimo entre el resto del lote y lo que queda por amortizar.

La cantidad se calcula mediante una proporción elemental.

Si se cancela todo el saldo de un lote, se cancelará el monto total de ese lote. Esto es matemática de 3er grado en una escuela parroquial: X*Y/X = Y :)

Es decir, NO es necesario realizar comprobaciones adicionales (a veces dan ese tipo de consejos) para garantizar que se cancele el importe total. Este consejo incluso tiene su propio nombre: “ el problema de los centavos».

Y para aquellos que dan malos consejos, tiene sentido mirar la configuración "1C: Contabilidad 8". Allí (¡oh, horror!) no hay control de que todo el lote esté cancelado :)

Aquí hay una captura de pantalla del módulo general "Contabilidad de bienes", el método "Cancelación de bienes restantes":

IX. Reduciremos el importe a amortizar

Debe comprender cuánto queda por cancelar. Para ello, reste la cantidad del movimiento del registro.

¿Por qué se necesitan bloqueos administrados?

Aquí llegamos al bloqueo controlado.

Parecería que los algoritmos presentados anteriormente funcionan como un reloj. Puede probarlos usted mismo (enlaces a descargas de bases de datos al final del artículo).

Pero durante el funcionamiento multiusuario real, los problemas comenzarán y, como suele suceder, los problemas no se detectarán de inmediato...

Pongamos un ejemplo del problema más típico al cancelar un artículo, cuando 2 usuarios intentan casi simultáneamente cancelar un artículo (realizar una venta):

En este ejemplo, dos usuarios realizan la venta de bienes casi simultáneamente: el documento número 2 comenzó a realizarse un poco más tarde que el documento 1.

Al recibir el saldo, el sistema informa que el saldo es de 10 unidades y ambos documentos se procesan exitosamente. El triste resultado es que quedan menos de 5 monitores LG en stock.

Pero al mismo tiempo, ¡el control de residuos funciona! Es decir, si el documento No. 2 se contabiliza después del final del documento No. 1, el sistema no contabilizará el documento No. 2:

A veces surge una idea errónea: "Solo 3-4 usuarios trabajan en mi base de datos al mismo tiempo, la probabilidad de procesamiento paralelo de documentos es cero, por lo que no es necesario distraerse bloqueando".

Esto es muy razonamiento peligroso.

Incluso dos usuarios pueden publicar documentos casi simultáneamente, por ejemplo, si uno de ellos realiza la publicación de documentos en grupo.

Además, no puedes ser inmune a un aumento en el número de usuarios. Si el negocio despega, se necesitarán nuevos vendedores, tenderos, logísticos, etc. Por lo tanto, es necesario crear de inmediato soluciones que funcionen de manera estable en un entorno multiusuario.

¿Cómo solucionar el problema al publicar documentos en paralelo?

La solución es simple: bloquear los monitores LG en el momento T1, para que otras transacciones no puedan acceder a los saldos de este producto.

Luego, en el momento T2, el sistema esperará a que se desbloquee el monitor LG. Y después de esto, el sistema recibirá el saldo actual de bienes y se completará (o no se completará) la cancelación de bienes.

Sólo unas pocas palabras sobre la clasificación del bloqueo.

Existen 2 tipos de cerraduras:

  • Objeto
  • Transaccional.

En pocas palabras, los bloqueos de objetos no permiten interactivamente cambiar un objeto (elemento de directorio o documento) para dos usuarios.

Y los bloqueos de transacciones permiten programáticamente operar con datos actuales al realizar movimientos entre registros.

En este artículo nos interesaremos en los bloqueos transaccionales y luego simplemente en los bloqueos.

¿Cuándo se debe aplicar el bloqueo?

La tarea de configurar bloqueos se vuelve relevante tan pronto como se inicia la base de datos. trabajar más de un usuario.

Es necesario colocar bloqueos en las transacciones, pero ¿cuándo ocurren las transacciones? Así es, el caso más común es el procesamiento de documentos.

Es decir, ¿se debe aplicar el bloqueo al procesar todos los documentos?

En ningún caso. Definitivamente no vale la pena poner cerraduras "por si acaso".. Después de todo, los propios bloqueos reducen la concurrencia de usuarios (escalabilidad del sistema).

Los bloqueos se deben colocar en los recursos (filas de la tabla) que se leen y modifican en las transacciones. Por ejemplo, al realizar documentos.

En el ejemplo anterior, dicho recurso es el saldo del producto. El sistema debía bloquear el saldo desde el momento en que se recibían los datos del saldo (T1) hasta el final de la transacción (T3).

Nota. La transacción al contabilizar el documento No. 1 comienza antes del momento en que se recibe el saldo. Pero para simplificar, asumimos que T1 es tanto la hora de inicio del procesamiento de documentos como el momento de recepción de los saldos.

Ejemplo cuando no es necesario bloquear– realizar el documento de “Recepción de mercancías”. En este caso, no hay competencia por los recursos (sobrantes,...), por lo que el bloqueo será perjudicial: reducirá la escalabilidad del sistema.

Bloqueo automático y controlado

Aquí no entraremos en teoría (este es el tema de un artículo aparte), solo diremos que los bloqueos administrados son más óptimos.

En lugar de teoría, podemos dar pruebas: todas las configuraciones estándar modernas funcionan con enclavamientos controlados.

Por tanto, en la configuración de nuestro modelo se seleccionará el modo adecuado:

Cerraduras controladas en nueva tecnología de control de residuos

Aplicaremos un bloqueo al registro “Saldos libres” y únicamente a los elementos que se encuentren en el documento.

Además opción de bloqueo correcta- lo más tarde posible.

En el nuevo método de control de saldos, esto debe hacerse antes de registrar (o al momento de registrar) los movimientos en el registro “Saldos Libres”, para que otras transacciones no puedan cambiar este recurso compartido.

El bloqueo se puede aplicar manualmente (mediante programación) y un poco más adelante mostraremos cómo se hace.

Pero una ventaja adicional de la nueva tecnología de control de saldo es que solo se necesita una línea de código para bloquear recursos compartidos.

Sólo necesita establecer la propiedad BlockForChange en el conjunto de entradas del registro:

// 3.1. Restos del registro de bloqueo
#Área Área3_1
Moves.FreeRemainders.BlockForChange = Verdadero;
#EndArea

// 4. Registro de movimientos en la base de datos
#ÁreaÁrea4
Movimientos.FreeRemainders.Write = Verdadero;
Movimientos.Record();
#EndArea
...

Como resultado, 2 transacciones no podrán cambiar los saldos libres de un artículo.

De hecho, cuando la propiedad es BlockForChange no instala bloqueo administrado, solo desactiva el modo de separar totales de registros al escribir.

Pero para nuestro artículo, lo siguiente es fundamental: el sistema bloqueará la combinación de datos escritos en el registro. Analizaremos en detalle el funcionamiento de la propiedad BlockForChange en un artículo aparte.

Por cierto, en el UT 11 estándar no es tan fácil encontrar la configuración de la propiedad BlockForChange para el registro "Saldos libres". El caso es que esto se realiza en el módulo de conjunto de registros, en el evento “Antes de escribir”.

Eso es todo, ¡con una sola línea de código se aseguró el correcto funcionamiento del sistema!

Importante. No bloqueamos el registro "Costo de los bienes".

¿Por qué? Tal bloqueo sería innecesario (y esto es una cierta carga en el servidor 1C), ya que los movimientos a los registros "Saldos libres" y "Costo de bienes" siempre se realizan de forma sincrónica, es decir, secuencialmente uno tras otro.

Por lo tanto, al bloquear bienes de los “Saldos libres”, no permitiremos otras transacciones antes de estos bienes y en el registro de “Costo de los bienes”.

Pero para el antiguo método de control residual, el bloqueo se aplicará de manera diferente. Primero, veamos el algoritmo de cancelación por lotes para este caso.

Antiguo método de control de residuos

Le recordamos que se puede aplicar la antigua metodología si se tienen en cuenta la cantidad y el coste en un solo registro.

Sea este el registro de “Costo de bienes”:

Entonces, el algoritmo para publicar el documento "Ventas de bienes" se verá así:

// 1. Controlador de eventos "Antes de grabar"
Procedimiento antes de grabar (falla, modo de grabación, modo de conducción)

Si Modo de grabación = Modo de grabación de documentos.
Y NO ThisObject.ThisNew()
Y este objeto. Realizado entonces

Solicitud = Nueva Solicitud;
Solicitud.Texto =
"ELEGIR
| Documento.Fecha AS Fecha
|DESDE
| Documento Ventas de Bienes y Servicios AS Documento
|DONDE
| Documento.Enlace = &Enlace";
Request.SetParameter("Enlace", ThisObject.Link);
SolicitudResultado = Solicitud.Execute();
SelectionDocument = Resultado de la consulta.Select();
SeleccionarDocumento.Siguiente();

ThisObject.AdditionalProperties.Insert("OldDocumentDate", SelectDocument.Date);

De lo contrario
terminara si;

Fin del Procedimiento

Procedimiento al registrar (rechazo)

Si NO es ThisObject.AdditionalProperties.Property("DocumentDateShiftedForward") Entonces

ThisObject.AdditionalProperties.Insert("DocumentDateMovedForward",
ThisObject.Date>ThisObject.AdditionalProperties.OldDocumentDate);

Informe (ThisObject.AdditionalProperties.DocumentDateMovedForward);
terminara si;

Fin del Procedimiento

Procedimiento de procesamiento (fallo, modo)

// 2. Eliminación de movimientos de documentos "antiguos"
Si AdditionalProperties.DocumentDate se desplaza hacia adelante, entonces
Movimientos.Costo de los Bienes.Registro = Verdadero;
Movimientos.Costo del Producto.Borrar();
Movimientos.Record();
terminara si;

// 3. Configurar la bandera para registrar movimientos al final de la transacción
Movimientos.Costo de los Bienes.Registro = Verdadero;

// 4. Solicitud que recibe saldos por lote al momento del documento
Solicitud = Nueva Solicitud;
Solicitud.Texto =
"ELEGIR
| Ventas de Productos Nomenclatura AS Nomenclatura,
| SUMA(ProductosVentas.Cantidad) COMO Cantidad,
| MÍNIMO(ProductosVentas.NúmeroLínea) ASNúmeroLínea
|Colocar documento de mercancías
|DESDE
| Documento Ventas de bienes y servicios Bienes CÓMO vender bienes
|DONDE
| ProductosVentas.Enlace = &Enlace
|Agrupar por
| Ventas de Productos Nomenclatura
|ÍNDICE POR
| Nomenclatura
|;
|////////////////////////////////////////////////////////////////////////////////
|SELECCIONAR
| ProductosDocumento.Nomenclatura AS Nomenclatura,
| ProductosDocumento.Cantidad COMO Cantidad,
| ProductsDocument.Número de línea AS Número de línea,
| ISNULL(Remaining.NumberRemaining, 0) AS CantidadRemaining,
| ISNULL(Remaining.CantidadRemanente, 0) COMO CantidadRemanente,
| Queda Partido AS Partido
|DESDE
| ProductosDocumento CÓMO ProductosDocumento
| CONEXIÓN IZQUIERDA Registro Acumulaciones Costo de Bienes Restos(
| & Momento del tiempo,
| Nomenclatura B
| (ELEGIR
| T. Nomenclatura AS Nomenclatura
| DE
| ProductosDocumento AS T)) AS Sobras
| Productos de softwareDocumento.Nomenclatura = Restante.Nomenclatura
|ORDENAR POR
| Restos.Lote.Momento de tiempo
|RESULTADOS
| MÁXIMO(Cantidad),
| SUMA(Cantidad Restante)
|software
| Numero de fila";

Request.SetParameter("TimePoint", TimePoint());
Request.SetParameter("Enlace", Enlace);

SolicitudResultado = Solicitud.Execute();

SelectionNomenclature = Resultado de la consulta.Select(BypassQueryResult.ByGrouping);

// 5. Ciclo por artículo: comprobar si la cantidad es suficiente para la cancelación
Mientras que el bucle SelectionNomenclature.Next()

Déficit de nomenclatura = Nomenclatura de muestra.Cantidad - Nomenclatura de muestra.Cantidad restante;

Si el déficit de nomenclatura>0 entonces
Mensaje = Nuevo mensaje al usuario;
Message.Text = "No hay suficiente producto en cantidad: "+Deficiencia de nomenclatura;
Message.Field = "Productos["+(SelectionNomenclature.LineNumber-1)+"].Cantidad";
Mensaje.SetData(EsteObjeto);
Mensaje.Mensaje();
Rechazar = Verdadero;
terminara si;

Si falla entonces
Continuar;
terminara si;

// 6. Obtenga el monto a cancelar
Escritura restante = Nomenclatura de muestra.Cantidad;
SelectionBatch = SelectionNomenclature.Select();

// 7. Ciclo por lotes
Mientras que SelectionBatch.Next() y RemainingWrite>0 bucle

Movimiento = Movimientos.Costo de Bienes.AddExpense();
Movimiento.Período = Fecha;
Movimiento.Nomenclatura = SelectionBatch.Nomenclatura;
Movimiento.Lote = SelecciónBatch.Lote;
// 9. Cálculo de la cantidad a amortizar
Movimiento.Cantidad = Min(RemainingWrite, BatchSelection.QuantityRemaining);
// 10. Cálculo del importe de la cancelación
Movimiento.Cantidad = Movimiento.Cantidad*
SampleBatch.AmountRemaining/SampleBatch.QuantityRemainder;

// 11. Reducir el monto a amortizar
Escritura restante = Escritura restante - Movimiento.Cantidad;

Fin del ciclo;
Fin del ciclo;

¿Necesito cambiar a 1C:Enterprise 8.2? Si estás leyendo este artículo, significa que probablemente ya hayas respondido afirmativamente a esta pregunta. Por tanto, ahora no volveremos a hablar de las ventajas de cambiar a una nueva plataforma, sino que nos centraremos directamente en los detalles y características de este proceso.


1. Algoritmo general

Entonces, ha decidido cambiar al "ocho" y quiere saber cómo se hace y qué "amenaza" para usted. En su forma más general, el diagrama de transición se ve así (Fig. 1).

Arroz. 1. Algoritmo de transición de la plataforma 1C:Enterprise 7.7 a la plataforma 1C:Enterprise 8.2


1. Actualizar. Lo primero que debe hacer es escribir una solicitud de su organización, enviar un formulario de registro para la plataforma 7.7 y comprar la plataforma 8.2. En este caso se le proporcionará descuento en el monto del costo de la plataforma anterior, pero no más del 50%. La plataforma anterior permanece con usted y puede continuar usándola; sin embargo, será eliminada del soporte técnico en 1C.


2. Actualización configuración actual hasta la última versión actual.


3. Preparar la base de datos para la transferencia. Esto implica hacer una copia de seguridad de la base de datos, cerrar el período de facturación actual, borrar la base de datos de los elementos marcados para su eliminación y corregir los errores contables (si los hubiera).


4. Transferencia de datos. Este es el escenario principal. Los algoritmos y la intensidad del trabajo son diferentes en cada caso concreto.


5. Capacitación del personal para trabajar con la nueva configuración. Dado que las configuraciones en las plataformas 7.7 y 8.2 difieren tanto en interfaz como en funcionalidad, es posible que necesite capacitación para trabajar con la nueva configuración. Puede estudiarlo usted mismo utilizando la literatura metodológica adecuada, pero es mejor realizar un curso especializado en 1C.


6. Operación. En esta etapa, cuando los usuarios comienzan a trabajar en el nuevo programa, se depura y se corrigen posibles errores en la transferencia automatizada de datos.

Consideremos el proceso de migración a una nueva plataforma en el contexto de la configuración. "contabilidad 1c".


2. Cambie "1C: Contabilidad 7.7" a "1C: Contabilidad 8.2"

La estrategia y los mecanismos para transferir datos de "1C: Contabilidad 7.7" a "1C: Contabilidad 8.2" están determinados por los siguientes factores:

  • hora de inicio de la contabilidad en el nuevo programa;
  • la presencia y complejidad de modificaciones en la versión actual de su configuración;
  • la necesidad de preservar el historial de transacciones comerciales de períodos pasados.


Aconsejamos a nuestros clientes comenzar a trabajar en un nuevo programa de contabilidad. a partir del 1 de enero del año nuevo . Esto se debe al hecho de que la mayoría de los impuestos se calculan sobre una base devengado. Por lo tanto, para no desarrollar medios para transferir correctamente los resultados acumulados, es necesario vincular el inicio del trabajo en el programa al inicio del período de declaración de impuestos. Por supuesto, puede comenzar a trabajar desde principios del trimestre, e incluso desde principios del próximo mes, pero dicha transición implicará costos más significativos (debido a diferencias significativas en la estructura de los documentos en 7.7 y 8.2).


Dependiendo de la combinación de los factores anteriores, las situaciones pueden ser las siguientes.

Situación 1:

Transición del nuevo año, configuración TÍPICA, se generan saldos de cuenta correctos en el programa anterior


Esta opción es simple y clara, pero en la práctica es extremadamente rara. En algunas pequeñas empresas, solo es posible generar saldos correctos en el programa anterior inmediatamente antes de comenzar a trabajar en el nuevo programa, y ​​solo con la condición de que se proporcionen e ingresen en el programa todos los documentos primarios del período anterior.


Si este es tu caso, estás de suerte. Solo necesita actualizar la configuración “1C:Enterprise 7.7” a la última versión y utilizar el procesamiento “Transferencia de datos desde bases de información 1C:Enterprise 7.7” integrado en “1C:Enterprise 8.2”. Puede hacerlo usted mismo, sin la ayuda de un especialista. Solo es necesario seguir estrictamente las instrucciones especificadas en el procesamiento.

Situación 2:

Transición del nuevo año, configuración TÍPICA, en el programa anterior NO HAY SALDOS DE CUENTA CORRECTOS


La práctica estándar en este caso es trabajando en el programa antiguo y nuevo simultáneamente . Durante el "período de transición" (Fig. 2), los empleados cierran sus transacciones anteriores en el programa anterior y comienzan a ingresar documentos sobre nuevas transacciones en el nuevo sistema.


Arroz. 2. Período de transición al cambiar de plataforma


Para superar este período con pérdidas mínimas, puede utilizar las siguientes estrategias:

  • transferir saldos "tal cual" al comienzo del año y mantener registros basados ​​en estos datos. Una vez obtenidos los saldos correctos en los "siete", se deben ajustar inmediatamente y con carácter retroactivo en los "ocho".
  • negarse a transferir saldos incorrectos e ingresar documentos primarios para nuevas transacciones en el G8 sin realizarlas posteriormente. En este caso, no importa si hay saldos en el programa o no, los documentos no contabilizados no realizarán ningún movimiento en las cuentas. Esto debe hacerse hasta que se reciban los saldos correctos en 1C:Enterprise 7.7. Luego, los saldos resultantes se transfieren al nuevo programa a principios de año. El paso final es la implementación consistente de lo "primario" introducido en el nuevo programa durante el período de transición utilizando el procesamiento incorporado. “Tratamiento grupal de directorios y documentos” .

Situación 3:

Transición desde mitad de año, configuración TÍPICA

"1C: Contabilidad 8.2" admite una serie de mecanismos importantes para la contabilidad, cuyo desempeño depende de los datos ingresados ​​​​en los documentos durante el año. Entre dichos mecanismos se encuentran el ya mencionado cálculo de impuestos en base devengado, un algoritmo para la distribución de gastos indirectos y otros trámites relacionados con el cierre de mes. Precisamente por estas características, en esta situación es imposible cambiar a un nuevo programa tan fácilmente como en los dos primeros casos. Para minimizar la cantidad de errores que pueden ocurrir durante la migración, recomendamos:

  • comenzar a trabajar, si no desde principios de año, al menos desde principios de trimestre;
  • transferir saldos al comienzo del año;
  • transfiera todos los documentos primarios para el período de informe actual (año) al nuevo sistema y restaure los datos contables y fiscales mediante el procesamiento grupal de directorios y documentos.


1. Solución estándar "1C: Conversión de datos 2.1". Este producto de software se puede utilizar para transferir información entre configuraciones en la plataforma 1C de cualquier estructura y complejidad.

2. Desarrollos de franquiciados 1C. Muchas empresas, incluida la empresa « RG-Soft" (), existen métodos probados para resolver este problema, que pueden reducir significativamente el tiempo y el presupuesto del trabajo de transferencia de datos.


Situación 4:

Transición desde una configuración ESTÁNDAR CON TRANSFERENCIA DE DOCUMENTOS DEL PERÍODO PASADO

Por otra parte, observamos que hay empresas que mantienen relaciones a largo plazo (más de un año) bajo contratos con contrapartes. La dirección de dichas empresas está interesada en tener un historial de transacciones comerciales en el programa. La presencia en el nuevo programa de documentos ingresados ​​en el programa anterior permite a los usuarios rastrear fácil y rápidamente las relaciones bajo acuerdos/transacciones específicas.


Es posible implementar dicha transferencia utilizando los mismos mecanismos que en la situación anterior. La diferencia entre este proceso es que no es necesario transferir todos los documentos; puede limitarse a transferir solo unos pocos tipos de documentos y los saldos de otras cuentas se ingresan mediante el procesamiento estándar. En este caso, los documentos transferidos adicionales normalmente no se contabilizan.


Aunque es posible transferir documentos del período anterior de un programa antiguo a uno nuevo, dicha transferencia conduce a un aumento notable en el tamaño de la base de datos y, en consecuencia, en el tamaño de las tablas procesadas. Esto puede hacer que el sistema se ralentice. Por lo tanto, no debes utilizar esta opción de transición a menos que sea absolutamente necesario. Se recomienda dejar sin contabilizar los documentos transferidos de períodos anteriores para que la información que contienen no afecte la contabilidad y los informes fiscales actuales. Utilice documentos históricos únicamente como referencia.


Situación 5:

Transición desde una configuración NO TÍPICA en la plataforma 1C:Enterprise 7.7

Las opciones descritas anteriormente se utilizan al migrar desde la configuración estándar "1C:Enterprise 7.7", pero en la práctica a menudo hay que lidiar con configuraciones modificadas. Organizar una transición en esta situación es una opción especial que merece consideración.


Dependiendo de la naturaleza de los cambios realizados en el programa, están disponibles las siguientes tecnologías de transferencia de datos:

· si la configuración se ha modificado ligeramente y los mecanismos básicos son similares a la solución estándar 1C, puede, como en las opciones anteriores, utilizar herramientas de transición estándar. Sólo necesitas configurarlos o modificarlos ligeramente para adaptarlos a tu programa. Quizás la herramienta más probada y confiable sea la ya mencionada "1C: Data Conversion 2.1". Esta herramienta requerirá ciertas habilidades operativas por parte del usuario, pero con su ayuda es posible organizar la transferencia automatizada de objetos entre configuraciones.

· si a lo largo de los años de uso la configuración se ha rediseñado radicalmente, entonces configurar herramientas de migración estándar puede resultar más laborioso que escribir su propio procesamiento para estos fines. Una situación similar surge en el caso de organizar una transición desde un programa de contabilidad que no está asociado con las plataformas 1C. También es posible realizar esa transición, pero no será posible prever de antemano un intercambio universal. Cada caso específico requiere un enfoque individual del problema. Nuestra empresa puede ofrecer su experiencia en la transferencia de datos a través de archivos de diversos formatos, como dbf, xls(Cargador universal de Excel a 1C), xml.


Otro punto que vale la pena mencionar en relación con la transición de la plataforma 7.7 a la 8.2 es la preocupación consolidación de bases de datos.


Debido a la falta de un mecanismo para mantener registros de varias empresas en una base de datos, muchas empresas tuvieron que mantener varias bases de datos simultáneamente en 1C:Enterprise 7.7. Dado que este problema se resolvió en la octava versión, surge la tarea de combinar varias bases de datos en una sola como parte de un proyecto de transferencia de datos. Además, cada una de las siete bases puede tener sus propias características.

Utilizando los métodos indicados anteriormente, puede establecer la interacción con cada una de las bases de datos por separado. Sin embargo, surgen una serie de subtareas que son específicas de este caso.

1. Unificación de documentos relacionados con una organización en particular. Este problema se resuelve fácilmente utilizando el mecanismo de prefijo. A cada organización registrada en el programa se le asigna su propio prefijo de letra. Este prefijo se agrega al número del documento, asegurando así la unicidad de los números.

2. Control de elementos duplicados de directorios. Al transferir datos de varias fuentes de información a un único sistema de información, puede surgir una situación en la que los mismos elementos de los directorios, por ejemplo, la misma contraparte en un nuevo directorio, se repitan varias veces. Por lo tanto, después de transferir datos, es necesario realizar un procedimiento para comparar y fusionar elementos de directorio duplicados.


3. Posibles dificultades que debes conocer

Con una planificación adecuada del proceso de transición a una nueva plataforma, se pueden evitar muchos problemas. Sin embargo, hay una serie de características específicas que ya se revelan en la etapa de implementación del proyecto. Estamos hablando de varios errores que surgen tanto por acciones incorrectas del usuario como por las características técnicas de la plataforma 1C:Enterprise. Consideremos estos puntos con más detalle.


3.1. Errores en los datos de origen

En general, la identificación inequívoca de un objeto en la base de datos es posible utilizando los detalles TIN y KPP. En siete, ambos valores se almacenaron en un detalle TIN/KPP y no se verificaron la exactitud de los datos ingresados ​​​​en este detalle. Era posible ingresar menos números, colocar el separador en el lugar equivocado e ingresar un TIN completamente abstracto.


Una transferencia típica, al crear un directorio, las contrapartes se separan por TIN y KPP simplemente cortando la cantidad requerida de caracteres. Por lo tanto, es posible que se registren datos absolutamente incorrectos en los detalles de la nueva base de datos. Por tanto, será muy difícil identificar correctamente los objetos durante la transferencia utilizando dichos datos.


Otro problema es la falta de un formato unificado de entrada de datos. Cada usuario podrá introducir el nombre que más le guste. Imaginemos que en una base de datos "siete" el usuario, completando el "Nombre" de la contraparte, escribió "Sociedad gestora Vympel", y en otra base de datos "siete" la misma contraparte figura como "Sociedad gestora Vympel". En tal situación, el procesamiento automático no podrá determinar que se trata de la misma contraparte y la trasladará a ocho dos veces. Será difícil seguir trabajando en una base de datos de este tipo, ya que parte del saldo estará en un elemento y la segunda parte en otro.


3.2. Diferencias de configuración

Otro grupo de errores de transferencia es causado por diferencias tecnológicas en las configuraciones. Algunas transacciones comerciales se reflejan en "1C:Enterprise 7.7" por varios tipos de documentos, y en "1C:Enterprise 8" por uno. Por ejemplo, los recibos tanto de materiales como de bienes se reflejan en el nuevo programa con un documento y en el antiguo, con dos. Así, al intentar transferir los documentos “Recepción de materiales No. 22” y “Recepción de mercancías No. 22”, se produce un error de control de unicidad. Dado que es imposible registrar dos documentos con el mismo número en un período determinado, es necesario introducir diferencias en ellos artificialmente y el sistema para introducir estas diferencias se acuerda de antemano.


Por ejemplo, este problema se soluciona añadiendo un prefijo adicional al número del documento descargado. Para cada característica del documento, este prefijo se asigna por separado. Esto puede ser una característica de la base de datos desde la que se descargan los documentos o del tipo de documento desde el que se realizó la descarga. A continuación se muestra un ejemplo de la formación de dicho prefijo. La sucursal en Krasnoyarsk lleva el prefijo "KR". El tipo de documento “Recepción de materiales” a partir del cual se realiza la descarga lleva el prefijo “M”. Entonces, si el número de documento en siete era 00000031, entonces el número en ocho será el siguiente:

“KR” + “M” + “00000031” = “KRM00000031”

Como resultado, se registrará un número único en la base de datos.


3.3. Problemas técnicos

También pueden producirse errores en la transferencia de datos debido a las características técnicas de la plataforma 1C:Enterprise. Por ejemplo, el mecanismo de búsqueda estándar por nombre no distingue las letras mayúsculas del nombre de un elemento del directorio de las pequeñas. Existe confusión al utilizar este mecanismo. Por ejemplo, en la base de datos hay dos contrapartes, “l-audio” y “L-Audio”. Al buscar una contraparte de “l-audio”, el sistema encontrará “L-Audio”. El resultado será un documento completado incorrectamente.


También es necesario prestar atención al método de transferencia de datos elegido. Es posible que el ejemplo descrito anteriormente con la duplicación de contrapartes, cuando se transfiere desde las bases de datos de las sucursales de la empresa, no resulte ser una duplicación. Es muy posible que las empresas que operan en diferentes ciudades tengan contrapartes que también operen en diferentes ciudades. La sucursal de la empresa L-Audio en Nizhny Novgorod y la propia empresa L-Audio en Moscú se pueden llamar exactamente igual en las bases de datos. Para evitar tal confusión, es necesario elegir un método de transferencia con antelación. En nuestro ejemplo, podemos separar las contrapartes en diferentes grupos de directorios según la base de datos de origen. La elección de dicha técnica también afectará a los mecanismos de carga de datos.


Es posible que los métodos descritos anteriormente para resolver problemas emergentes tampoco sean lo suficientemente universales. Al migrar datos, es muy importante poder combinar los métodos utilizados en la herramienta de migración. Por ejemplo, identificamos la mayoría de los elementos de los directorios por su nombre. Al mismo tiempo, al transferir el documento "Aceptación de activos fijos para contabilidad", este método dará resultados indeseables en el caso de que se ingresen varios activos fijos pequeños del mismo tipo (material de oficina, muebles, etc.), diferenciándose sólo en el número de inventario. Cada documento de aceptación a contabilidad indicará el mismo objeto. Y es imposible aceptar un objeto para contabilizar varias veces. Por lo tanto, es muy importante brindar la posibilidad de personalizar la herramienta de migración de datos utilizada. En este caso simplemente indicaremos que la búsqueda del SO debe realizarse por el número de acceso (código).


Conclusión

Actualmente, todavía hay muchas empresas que trabajan con 1C:Enterprise 7.7. Esto se debe a factores como la falta de comprensión de las ventajas de la nueva plataforma, la renuencia a aprender nuevas tecnologías y el miedo a encontrar una gran cantidad de dificultades durante la transición. Usando el ejemplo de 1C: Contabilidad, intentamos mostrar que la mayoría de estas razones no son tan importantes. A lo largo de nuestras actividades, ayudamos a nuestros clientes a afrontar cualquier posible dificultad asociada con la implementación de programas en la plataforma 1C:Enterprise 8. Si está interesado en el tema de la transición o tiene alguna otra pregunta sobre la plataforma 1C:Enterprise 8 y las configuraciones creadas en ella, ¡los especialistas de RG-Soft están a su servicio!

Momento del tiempo:
La empresa 1C lo describe de esta manera:
Diseñado para recibir y almacenar un momento determinado de un objeto en la base de datos. Contiene la fecha y la hora, así como una referencia a un objeto de base de datos. Se utiliza como valores de propiedad y parámetros de método de otros objetos del tipo Instante de tiempo.
El punto en el tiempo se utiliza en casos en los que es importante distinguir entre puntos en el tiempo para objetos que tienen la misma fecha y hora, por ejemplo, para comparar las posiciones de documentos en un eje de tiempo.

Y en tus propias palabras:
Un momento en el tiempo es una combinación de una fecha y una referencia a un documento. Le permite dividir y organizar documentos en un segundo, ordenándolos todos en una secuencia inequívoca. Recibir datos al publicarse en un momento determinado garantiza que se tendrán en cuenta los movimientos realizados en el mismo segundo que el documento que se publica, pero ubicado delante de él.
Pero hay una peculiaridad: los documentos publicados en el mismo segundo se organizan en orden aleatorio y no en el orden de su creación física (como era el caso en 7.7).

InstantTime() es el momento inmediatamente ANTES de la posición del documento (análogo a CalculateRegistersOn(CurrentDocument() en 7), y si necesita obtener el momento inmediatamente después de la posición del documento, utilice el objeto Border
Código 1C v 8.x Momento inmediatamente después del documento = Nuevo borde (DocumentLink, BorderView.Inclusive)

Código 1C v 8.x // El ejemplo crea un punto en el tiempo usando una fecha y un enlace a un objeto en la base de datos.
Momento = Nuevo Momento(TekDocument.Date, TechDocument.Link);

Al recibir saldos:
"Punto en el tiempo" es un campo virtual, no almacenado en la base de datos. Contiene un objeto de momento (que incluye una FECHA y un ENLACE DEL DOCUMENTO)
<Виртуальная>la tabla de saldos no se almacena en la base de datos, sino que se construye en el momento de acceder a ella.
1. seleccione un punto de tiempo mayor o igual al valor del PARÁMETRO para el cual se CALCULAN los saldos
2. en este momento se obtienen los restos de la tabla de totales
3. Si el momento en el que se calculan los saldos no coincide con el momento de los totales, los saldos se CONTAN por movimientos.

Borde:
Diseñado para recibir y almacenar el límite de un cierto rango de valores. Contiene el valor límite del intervalo, así como un signo de inclusión o exclusión del valor límite en el intervalo.
Se utiliza como valores de propiedad y parámetros de método de otros objetos del tipo Límite.
El límite se utiliza en los casos en los que es importante indicar la inclusión o exclusión de un valor límite, por ejemplo, al obtener los saldos y giros de registros de acumulación, sectores y valores de registros de información, para establecer intervalos de consulta.

Tipo de borde: define un conjunto de tipos de borde en relación con el valor del límite:
BoundaryView.Include: el límite incluye el valor del límite.
BoundaryView.Exclusive: el límite excluye el valor del límite.
Código 1C v 8.x Borde = Nuevo borde (Fecha, Tipo de borde. Incluyendo);
Request.SetParameter("ConBorder", Borde);

Un ejemplo de obtención de saldos a la fecha del documento, incluyendo sus movimientos.
Solicitud.Texto =
"ELEGIR

|DESDE

Request.SetParameter("MomTime", Nuevo límite (MomTime.InstantTime(), BorderType.Inclusive));

Un ejemplo de obtención de saldos en la fecha del documento, pero antes de sus movimientos.
Código 1C v 8.x Solicitud = Nueva solicitud;
Solicitud.Texto =
"ELEGIR
| Acuerdos mutuos con empleados de organizaciones Saldos Individuos,
| Liquidaciones mutuas con empleados de organizaciones Saldos Monto de las liquidaciones mutuas Saldo
|DESDE
| Registro de Acumulaciones. Liquidaciones mutuas con Empleados de Organizaciones. Saldos (&MomTime, Individual = &Individual) AS Liquidaciones mutuas con Empleados de Organizaciones Saldos";
MomTime = Documentos. Nómina para empleados de la organización. Buscar por número("00012","31/12/2009 23:59:59");
Request.SetParameter("MomTime", Nuevo límite (MomTime.InstantTime(), BorderType.Exclusive));
// o así: Request.SetParameter("MomTime", MomTime.Instance());
Request.SetParameter("Físico", Directories.Individuals.FindByCode("365"));
ResultadoSalida(Query.Run());

Información extraída del sitio.

Hoy en día, los productos de software 1C son una especie de estándar para contabilidad, gestión y otros tipos de contabilidad en pequeñas y medianas empresas. Los empleadores exigen que sus empleados tengan las habilidades necesarias para trabajar con este producto de software en particular. Si en la agenda surge el tema de la integración de una tienda online y sistemas de automatización (restos, precios, pedidos, etc.), la oficina suele disponer también de una base de datos 1C con la que se debe realizar la integración. Lo mismo ocurre en muchos otros casos: cualquier proceso de automatización para pequeñas y medianas empresas tradicionalmente comienza con los productos 1C y continúa con su uso.

Como consultor de negocios, a menudo me encuentro con preguntas sobre qué es 1C, qué estructura puede tener este producto de software y, en general, cómo funciona todo este sistema. Por lo general, las hacen los desarrolladores web que se ven obligados a lidiar con problemas de integración del sitio y 1C, programadores especializados en aplicaciones móviles y otros especialistas que, por la naturaleza de su trabajo, tienen que lidiar con programas 1C con poca frecuencia.

En este artículo decidí recopilar respuestas a las preguntas más comunes que surgen constantemente en mi trabajo. Por lo tanto, quiero advertirles de inmediato: el artículo está destinado a personas familiarizadas con las tecnologías de TI, lo más probable es que a empresarios, contadores y personas alejadas del ámbito de TI les resulte difícil comprender algunos de los matices. Por supuesto, intentaré escribir lo más simple posible y no planeo ahondar en matices técnicos a nivel de código, pero aún así, ciertos términos y conceptos pueden parecer complejos para los no especialistas.
Algunas palabras sobre mi experiencia con 1C
Hubo un tiempo en que trabajé como programador de 1C en un gran proyecto, luego asumí el puesto de director de proyecto y durante bastante tiempo fui jefe del departamento de proyectos, que se ocupaba exclusivamente de tareas en 1C.

Ahora, como he escrito más de una vez, trabajo como consultor empresarial en el ámbito de las pequeñas y medianas empresas. Constantemente me enfrento a diversas tareas relacionadas con la automatización del trabajo y, como resultado, a los productos de software 1C. La mayoría de las veces, como consultor de negocios, contrato especialistas de 1C para resolver ciertos problemas, tengo un equipo permanente y también atraigo a especialistas externos, incluidos autónomos. En casos muy raros, yo mismo escribo algo en 1C, la mayoría de las veces si necesito resolver urgentemente un pequeño problema.

Por otro lado, me alejo cada vez más del trabajo constante con los productos 1C. Si al comienzo de mi carrera trabajar con programas 1C me generaba el 100% de mis ingresos, hoy la implementación de algunas soluciones 1C no ocupa más del 20% de mi trabajo, todo lo demás son sitios web, sistemas CRM, etc.

Por lo tanto, aunque todavía no me he desviado demasiado de las cuestiones relacionadas con el programa 1C, decidí sistematizar mis conocimientos, recopilar y registrar aspectos y matices importantes del trabajo con estos productos de software.

Un poco más sobre 1C y por qué escribo todo esto
Yo mismo sé que estoy a punto de, como dicen, abrazar la inmensidad. Por tanto, otra advertencia:
  1. Planeo crear toda una serie de artículos sobre 1C, donde hablaré sobre este producto de software desde diferentes puntos de vista. Este artículo está destinado principalmente a programadores. Por eso lo publico en Habré. Lo siguiente cubrirá una gama más amplia de conceptos, incluidos aquellos de interés para empresarios y usuarios de productos de software 1C y, por lo tanto, se publicarán en Megamind.
  2. No profundizaré en los matices del uso del código u otros detalles técnicos, que cada uno de ustedes puede leer por su cuenta en el sitio web oficial de 1C, en los sitios de soporte, en foros conocidos, etc.
  3. No discutiré los matices de cómo funciona tal o cual versión de la plataforma. Además, la mayoría de las veces hablaré de la plataforma 8.3 como la última en el momento de escribir este artículo, así como de las configuraciones típicas que tienen más demanda entre mis clientes (medianas y pequeñas empresas).
Al mismo tiempo, no solo quiero ayudar a un programador web u otro especialista a comprender dónde buscar el código correcto, sino que quiero ayudarlos a comprender qué es: 1C.
Hoy en día, la propia empresa 1C ha introducido tanta confusión en las descripciones de los productos, en los requisitos para el nivel de especialistas que configurarán el sistema, en la elección de la plataforma, configuración, complementos, complementos, versiones, etc. etc., que el sistema 1C personalmente comienza a recordarme la antigua serie de televisión " Pulpo". Si alguien más lo recuerda, en esta película el comisario luchó contra un grupo criminal, parte del cual era un grupo bancario. Y este sistema bancario era tan confuso que era muy difícil entender de dónde venía el dinero, adónde iba, cómo funcionaba tal o cual división y, lo más importante, por qué.

En el sistema 1C, me parece que los esfuerzos por "confundir" al usuario tienen como objetivo una cosa: no es necesario entender nada, solo hay que pagar. Y muchos empresarios acaban pagando sin saber si necesitan esta actualización, si necesitan este producto. Simplemente pagan y listo.

Intentaré desenredar los "tentáculos del pulpo" y estructurar una comprensión general de cómo funciona el sistema 1C.

También nos gustaría recordar a los programadores que pueden encontrar cualquier información técnica en el sitio web de 1C. No planeo insistir en estos matices en absoluto. Escribiré en un lenguaje sencillo, en la medida de lo posible, sobre cuestiones fundamentales.

Y si necesita matices técnicos específicos de 1C, siempre puede utilizar los siguientes recursos:

  1. Sitio web de 1C y foro de socios. http://www.1c.ru
  2. Otros recursos
En la gran mayoría de los casos, las respuestas a sus preguntas las encontrará en uno de estos recursos. Hay muchos más foros y otras cosas, pero la mayoría de las soluciones están ahí.

1C como ecosistema

Cuando un empresario, abogado, contador, vendedor y otros usuarios se encuentran con los programas 1C, muy a menudo surge un malentendido de qué se trata. Algunas personas piensan que 1C es un sistema de contabilidad conveniente, otras piensan que es un sistema para automatizar una tienda en línea, otras no entienden realmente de qué estamos hablando. Algunos incluso piensan que con la ayuda de tal o cual producto 1C se puede solucionar cualquier problema empresarial, solo hay que elegir el producto adecuado y, quizás, modificarlo un poco.

La razón de percepciones tan claramente erróneas es que nadie entiende qué es 1C desde el punto de vista de la plataforma. Cada uno ve algo diferente, específico. La propia 1C genera aún más confusión, ya que apoya activamente todos estos conceptos erróneos debido a su marketing, que intenta posicionar a 1C como una solución para todas las ocasiones y para cualquier propósito.

En el artículo ya dije que, de hecho, 1C debería percibirse como un ecosistema completo. Es este enfoque el que le ayudará a comprender qué es 1C y por qué es necesario.

Entonces, desde el punto de vista del ecosistema técnico, 1C consta de los siguientes componentes:

  1. La plataforma 1C es la base sobre la que se escriben las configuraciones, con la que trabajan los programadores, etc. Se actualiza de versión en versión, por lo que puede ser: 6.0, 7.7, 8.0, 8.2 u 8.3.
  2. Configuración. Este es el siguiente nivel de especificidad. Las configuraciones se escriben en la plataforma utilizando el código 1C. Los usuarios trabajan con configuraciones.
  3. Bitrix 1C. Vale la pena hablar del sistema para trabajar con sitios web por separado.
Otro aspecto en el que se puede estructurar el trabajo de 1C es el nivel organizativo. Y aquí hay 2 partes que tampoco funcionan una sin la otra:
  1. La propia empresa 1C y su plantilla de especialistas.
  2. Socios de 1C (franquicias) y especialistas involucrados en el mantenimiento del sistema. También vale la pena destacarlos como uno de los componentes del ecosistema. Sin especialistas que finalicen e implementen 1C, el sistema no funcionará. Podrían ser empresas asociadas de 1C o autónomos solteros, no importa, simplemente tienen que serlo, de lo contrario el sistema no será viable.
A continuación, propongo echar un vistazo más de cerca a las partes del ecosistema 1C.

Plataforma

La plataforma es la base misma sobre la cual los programadores de 1C, utilizando el lenguaje de programación 1C, escriben programas (configuraciones) listos para usar para los usuarios. La plataforma es la base sin la cual ningún componente o configuración funcionará. Al mismo tiempo, la plataforma en sí sin configuración puede ser de interés exclusivamente para un programador de 1C, para todos los demás (usuarios, varios especialistas) es inútil.
Puedes trabajar en diferentes versiones de la plataforma. Sé que en la práctica se utilizan las versiones 8.2 y 8.0, así como la bastante antigua, pero aún popular, 7.7, a veces incluso se utiliza la primera versión exitosa, 6.0. Pero hablaré exclusivamente de la versión 8.3, por ser la más reciente en el momento de escribir este artículo. Muchas de las cosas que discutiremos son igualmente relevantes para versiones anteriores. Pero algunos se agregaron sólo en las últimas versiones. Me gustaría que los lectores tuvieran en cuenta este hecho.

Es importante comprender que la mayoría de las veces los usuarios no necesitan toda la gama de capacidades que ofrece 1C. Esta afirmación es especialmente relevante para las pequeñas y medianas empresas. Pero la calidad y fiabilidad del trabajo son extremadamente importantes para los usuarios. Y en este sentido, lamentablemente, surgen bastantes problemas con los productos de software 1C.
Cuando trabajan con 1C, los programadores utilizan un lenguaje de programación especial creado por los desarrolladores de 1C para trabajar con la plataforma 1C. Hoy en día está disponible en ruso e inglés, pero originalmente fue escrito en ruso y, por lo tanto, las configuraciones estándar también se escriben tradicionalmente en ruso, aunque siempre es posible utilizar versiones en inglés de los operadores en el lugar correcto si es más conveniente para el programador. trabajar. Este lenguaje es una mezcla de BASIC y C+ con la adición de SQL para escribir consultas. Además, ofrece la posibilidad de utilizar varios constructores y complementos.

Una de las características de la plataforma 1C es la falta de modularidad. La plataforma es algo completo, es imposible indicar claramente qué fragmento de código (módulo) es responsable de qué capacidades. Por supuesto, durante la instalación puedes especificar qué componentes deben instalarse y cuáles no. Pero esta opción sólo está presente en el momento de la instalación y, de hecho, ofrece un número muy reducido de opciones.

Una nota más que, con suerte, ayudará a evitar incendios y disputas:

Entiendo que la plataforma 1C es una herramienta poderosa y muy flexible. Y si usted, como programador experimentado de 1C, se propone escribir algo especial en él, lo más probable es que obtenga un software excelente. Y para diferentes casos, aquí puedes encontrar una solución precisamente gracias a la riqueza de capacidades de la plataforma. Pero la mayoría de las veces me encuentro con el uso de configuraciones estándar (Contabilidad, Gestión Comercial, Nómina y Recursos Humanos, Gestión de Producción), la mayoría de los usuarios trabajan con ellas, especialmente cuando se trata de pequeñas y medianas empresas. Por lo tanto, escribiré sobre la elección de la plataforma y sobre algunos problemas asociados con el funcionamiento de 1C principalmente desde el punto de vista del trabajo con configuraciones estándar.

Al mismo tiempo, también entiendo que con muchas ganas y un nivel suficiente de conocimiento del programador se pueden resolver muchas cuestiones, pero los problemas no serán relevantes. Por lo tanto, si utilizas algunos desarrollos únicos, los problemas y cuestiones que te revelo pueden no resultarte del todo interesantes. Para todos los demás, continúo.
Opciones de entrega de plataforma
Al elegir una plataforma, es muy importante prestar atención a las opciones de entrega de la solución. Lo primero que le importa es el método de organización del trabajo con datos:
  • Solución de archivos
  • Opción cliente-servidor
En una solución basada en archivos, toda la información del trabajo se almacenará en un archivo común. No importa qué configuración instales. En cualquier caso, recibirás un archivo de servicio con extensión CD (formato interno 1C), en el que se almacenará todo: directorios, documentos, registros, etc. Si el número de usuarios de su programa no supera las 4 personas, lo más probable es que esta opción sea muy adecuada para usted. Además, configurar un sistema de archivos es mucho más fácil, aquí incluso puedes prescindir de la ayuda de un especialista de 1C. El problema de la velocidad se puede resolver en parte utilizando RPD (Protocolo de escritorio remoto), pero sólo en parte.

Pero para utilizar 1C en empresas con un flujo de documentos bastante activo y una cantidad bastante grande de usuarios del sistema (más de 4 personas), el sistema de archivos no funcionará satisfactoriamente. Los usuarios accederán al mismo archivo casi simultáneamente, cuyo volumen aumentará constantemente. Además, se requerirán sincronizaciones constantes, lo que ralentizará aún más el trabajo.

Para resolver este problema, la empresa 1C está intentando probar el almacenamiento en caché de datos, pero este método hasta ahora trae aún más problemas. Si alguien está interesado en este tema, simplemente escriba "Problemas de caché de 1C" en el motor de búsqueda, en la búsqueda aparecerán muchos foros y discusiones sobre esto con una variedad de problemas, que en última instancia se reducen al hecho de que el almacenamiento en caché no no siempre funciona correctamente.

La organización cliente-servidor del almacenamiento de datos es la organización de bases de datos en tablas en el servidor. Podría ser MSSQL, Oracle u otra opción de organización de base de datos.

Las ventajas de esta opción son obvias: no importa cuántos usuarios accedan a las bases de datos, no surgirán problemas de velocidad y acceso. Esta es la opción que utilizan la mayoría de las medianas empresas y es la que suelo recomendar a los clientes.

En la mayoría de los casos, las empresas instalan un servidor Windows en el que se almacenan tanto el programa como la base de datos. A veces, las aplicaciones y las bases de datos están separadas en diferentes servidores, pero estos casos son complejos y bastante raros, por lo que no me detendré en ellos.

Versiones de 1C para diferentes plataformas.
Hoy puede elegir diferentes versiones del software 1C para trabajar en diferentes plataformas. Aquí también vale la pena averiguar qué vale la pena comprar y en qué caso.

Entonces, existen versiones de 1C:

  • para ventanas,
  • para Linux.
Al momento de escribir este artículo, no se ha desarrollado ninguna versión para Mac OS.

El programa 1C, que se ejecuta en Windows, fue desarrollado desde el principio, es una potente herramienta familiar para todos, lo suficientemente refinada como para utilizarla sin problemas. La versión de Linux hoy en día se considera todavía nueva y, por lo tanto, bastante “bruta”; todavía tiene muchos errores, como ocurre con cualquier producto de software nuevo.

Los empresarios y cualquier representante empresarial son personas bastante conservadoras; lo más importante para ellos es un trabajo estable y fiable. La mayoría de las veces, una empresa no está tan interesada en la alta velocidad o en una lista enorme de capacidades, ya que simplemente requiere un funcionamiento estable. Además, hoy en día Linux no tiene una gran demanda en las empresas nacionales. Por lo tanto, uno encuentra esta versión muy raramente.

Componente base 1C
La base de componentes de 1C es muy extensa, contiene una gran cantidad de capacidades, mientras que 1C divide y agrega funciones constantemente. Aquellos. Cuando los desarrolladores de 1C necesitan crear algo nuevo, casi siempre crean un nuevo tipo de objeto. Por ejemplo, cuando se requirieron servicios web, los desarrolladores no crearon ningún tipo de complemento, sino que simplemente introdujeron el concepto: servicio web. De manera similar, para muchos procesos de negocios en una empresa 1C, la mayoría de las veces se crea un nuevo componente, incluso en los casos en que el existente podría simplemente modificarse.

¿Qué podemos decir sobre los componentes de la plataforma 1C?

  • Algunos componentes han estado funcionando durante mucho tiempo, otros desde la creación del producto de software. Son estables y confiables.
  • Algunos componentes se agregaron recientemente, otros se están agregando ahora mismo. La mayoría de ellos están muy mal probados y, por lo tanto, es necesario trabajar con ellos con extrema precaución.
Al elegir un componente con el que trabajar, siempre debes prestar atención al momento en que se agregó. Los programadores profesionales de 1C tienen esta regla: cuando los desarrolladores agregan una nueva función, si es posible, evítela hasta que haya pasado un tiempo suficiente. Aquellos. esperan hasta que el componente haya sido probado en la práctica, se hayan identificado y solucionado los principales “errores” y solo entonces comienzan a trabajar activamente con él.

Uno de los componentes de la reputación negativa de 1C es la práctica de la empresa de agregar constantemente soluciones nuevas y no probadas. A pesar de que a menudo los componentes ya implementados funcionan mal, los errores aún no se han solucionado y los desarrolladores ya están añadiendo algo nuevo. Estos no pueden ser solo componentes, pueden ser nuevas funciones para objetos existentes, nuevos métodos, etc. Todos los programadores que trabajan con 1C se enfrentarán a este problema: la presencia constante de software "tosco", "errores" constantes y sus constantes correcciones.

Los usuarios también pueden encontrar este problema: errores y funcionamiento inestable del software cuando trabajan con la plataforma. Existe un determinado conjunto de funciones de mantenimiento de 1C que un usuario puede realizar. Existe una interfaz de usuario de la plataforma para este propósito. Y aquí vale la pena volver a las diferentes versiones de la interfaz de usuario.

La plataforma 1C consta de muchos componentes diferentes que se agregan constantemente, ampliando las capacidades de este producto. Además de documentos, directorios y registros diversos, también existen diversos componentes para la entrada/salida de información, es decir, interfaces de usuario.

Según esta característica, puede elegir:

  1. Cliente nativo 1C. Esta es una interfaz de software tradicional cuando se accede a 1C desde 1C.
  2. Trabajar a través de un navegador.
  3. Trabajar a través de una aplicación móvil.
Cada una de las opciones tiene algunas limitaciones, puedes leer más sobre ellas en el sitio web oficial de 1C.
Cliente nativo
El cliente nativo también se divide en una serie de subclientes, lo que introduce un caos adicional en el proceso de selección de software. Lo más importante aquí es elegir una opción de cliente "pesado" o "ligero". A primera vista, la elección aquí no es crítica, especialmente para un programador. De hecho, al trabajar con la configuración a través de la interfaz pueden surgir problemas por errores de selección.

¿Cuál es la diferencia entre estos subclientes?

"Grueso" requiere un canal de comunicación amplio (grueso), "delgado" necesita un mínimo. La gran mayoría de mis clientes utilizan un cliente "pesado", ya que ahora todo el mundo tiene buenos canales locales o de Internet y no hay problemas con su "ancho". Por otro lado, un cliente “ligero” tiene ciertas limitaciones en su funcionamiento, hay cosas que no se pueden hacer en él.

Cliente web (trabajar a través del navegador)
El cliente web funciona con el programa 1C a través de un navegador. Aquellos. utiliza una determinada tecnología que le permite acceder a la base de datos a través de Internet, utilizando un navegador que le resulte conveniente. En este caso, la interfaz se muestra completamente directamente en el navegador.

Esta opción impone ciertas restricciones, esto debe recordarse constantemente. Por otro lado, trabajar con el cliente web es bastante estable, está bien depurado y llega a cierta conclusión lógica. Es por eso que mucha gente usa esta opción de interfaz. Trabajar con 1C en línea puede resultar muy cómodo e incluso necesario.

version móvil
Esta versión del cliente de 1C apareció hace relativamente poco tiempo y aún no tiene una gran demanda. Razones de esta actitud:
  1. El cliente resultó ser muy difícil. Para configurar este programa, una persona debe conocer tanto 1C como las tecnologías móviles, y bastante profundamente a nivel de código. Está claro que es bastante difícil encontrar un especialista de este tipo, lo que no contribuye a la popularidad de la solución de software.
  2. La tecnología todavía está muy “en bruto” y mal depurada. Personalmente intenté utilizar esta solución para mis clientes, hablé con compañeros que también se familiarizaron con esta tecnología, y de momento mi opinión y la de mis compañeros coinciden: es más fácil y conveniente crear algún tipo de aplicación móvil que para usar la opción de 1C.
La versión móvil debe combinar muchas cosas, requiere el trabajo de varios especialistas que trabajarán juntos y se ayudarán entre sí:
  • Configurar el acceso a la base de datos desde el exterior;
  • Resolver problemas de seguridad;
  • Configurar un servidor para trabajar con aplicaciones móviles;
  • Configuración de productos de software 1C;
  • Configuración de aplicaciones web (si es necesario).
Todo esto es necesario para garantizar el correcto funcionamiento de la aplicación móvil 1C. Está claro que reunir un equipo de especialistas de este tipo es difícil y costoso y, por lo tanto, esta solución no es popular en las pequeñas y medianas empresas.
Plataforma 1C: resumen
La plataforma 1C es muy funcional, tiene una lista enorme de diversas capacidades. Y esta cantidad, naturalmente, se convierte en complejidad. Como resultado, la barrera de entrada para un programador a trabajar con 1C es muy alta. Los clientes escuchan sobre varias capacidades de 1C y le piden a un programador que les ayude a implementarlas. Esto significa que un especialista debe estar constantemente al tanto de las actualizaciones, comprender y saber una variedad de cosas.

Es muy difícil encontrar un programador que pueda entender todo a nivel de programa a la vez: trabajar con 1C, programación web, trabajar con aplicaciones móviles, etc. Esto es posible a nivel conceptual, es decir. en el que ahora estoy compartiendo mis conocimientos.

Pero los clientes generalmente no entienden esto y comienzan a exigir que el programador de 1C implemente una variedad de capacidades.

Por otro lado, la plataforma 1C cambia constantemente, tiene una gran cantidad de opciones, muchas soluciones diferentes y, como resultado, una gran cantidad de errores y sus correcciones.

Todo esto en conjunto conduce a un problema de posicionamiento:

  • Por un lado, está la empresa 1C, que les dice a sus clientes que 1C es sencillo y cómodo. No escriben en ninguna parte que mantener 1C requerirá un especialista con conocimientos especiales, que es difícil para los programadores trabajar con 1C moderno.
  • Por otro lado, en realidad el cliente se enfrenta a todos estos problemas. Y sería bueno que reciba ayuda de un equipo que trabaje bien y que participe en la implementación de 1C o de un consultor empresarial con mi nivel de conocimientos que pueda encontrar los especialistas adecuados y asignarles las tareas adecuadas. En otros casos, el usuario enfrentará muchos problemas durante el proceso de implementación.

Brevemente sobre la plataforma 1C: una gran cantidad de posibilidades, un alto grado de flexibilidad, muchas soluciones diferentes. Y al mismo tiempo: baja calidad de implementación, complejidad de la solución en constante crecimiento, una gran cantidad de errores en cada versión.

A nivel conceptual creo que hay suficiente información. Y siempre puede encontrar matices técnicos en los recursos de 1C que recomendé anteriormente.

Configuraciones

Las configuraciones 1C son soluciones de software listas para usar que se crean sobre la base de una versión específica de la plataforma. La configuración es con lo que trabajan directamente los usuarios, el entorno de software en el que mantienen registros actualizados, trabajan con el flujo de documentos, directorios, etc. Es posible que los usuarios a menudo no sepan qué tipo de plataforma tienen. Pero siempre saben qué configuración específica se utiliza.

Hay configuraciones:

  1. Estándar: escrito por la empresa 1C. Todos están presentes en el sitio web de 1C.
  2. Atípico: escrito por empresas asociadas.
A nivel de usuario, los dos tipos se distinguen de la siguiente manera:
  1. Las configuraciones estándar son creadas y mantenidas por 1C. En la mayoría de los casos, son de mayor calidad, en estas configuraciones el trabajo con el código está mejor organizado, las soluciones óptimas se utilizan con mayor frecuencia y los errores se corrigen rápidamente. Por supuesto, todo el mundo oye hablar constantemente de "errores eternos" en las configuraciones típicas de 1C y, de hecho, están constantemente presentes allí, pero aun así vale la pena dar crédito a los especialistas de la empresa. Solucionan errores críticos muy rápidamente.
  2. Las configuraciones atípicas están escritas por empresas asociadas de 1C y es bastante difícil decir algo definitivo aquí. Estas configuraciones son muy diferentes. La mayoría de las veces se escriben en una ocasión: para una industria específica (para una industria específica) o para una ocasión específica (una empresa específica). Y aquí es necesario comprender que las empresas asociadas de 1C en su mayor parte tienen una rotación de personal bastante alta. Y, por lo tanto, las configuraciones en ellos están escritas de una manera bastante desorganizada. Un programador empieza a escribir, otro continúa y un tercero termina. Al mismo tiempo, cada uno aporta algo propio, su comprensión, soluciones, ideas. Y aplica los desarrollos de su predecesor según le conviene y no como estaba previsto.
¿Quizás recuerdas la divertida caricatura "Tres de Prostokvashino"? Allí, el niño tío Fyodor escribió una carta a sus padres, pero no la terminó, se distrajo y sus amigos se turnaron para terminarla por él: un gato y un perro. Y cada uno de ellos habló de sus problemas. Como resultado, los padres del niño se sorprendieron al saber que “le dolían las patas y se le estaba cayendo la cola”. Este es el principio que se utiliza muy a menudo para escribir configuraciones no estándar.
La falta de continuidad en la redacción de configuraciones no estándar y, a menudo, la falta de documentación suficientemente detallada, lleva al hecho de que para todas las cuestiones de implementación y modificaciones deberá ponerse en contacto con la empresa que desarrolló esta configuración.

Las configuraciones no estándar también vienen en dos tipos:
  1. Escrito en base a los estándar. Estas configuraciones se crean agregando funcionalidad a alguna estándar. Por ejemplo, existe un producto como 1C: Trade Management y CRM. Aquí combinamos la configuración estándar de Trade Management y el sistema CRM. Es interesante que los creadores de la configuración, la empresa Rarus, lo llamen subsistema de Gestión Comercial, aunque en realidad fue la base sobre la que se escribió toda la configuración.
        pros Estas configuraciones son más funcionales en comparación con las estándar y, a menudo, se les agregan características muy necesarias.
        Desventajas– los desarrolladores de estas configuraciones a menudo no tienen tiempo para crear sus actualizaciones de manera oportuna. Por lo tanto, es muy posible que la empresa 1C ya haya publicado sus opciones de actualización, y el usuario de una solución no estándar tendrá que esperar un tiempo hasta que el desarrollador cree una actualización similar para una solución específica. Además, dichas modificaciones también pueden ser bastante “brutas” y contener muchos errores.
       
  2. Configuraciones escritas desde cero. Al crearlos, no se utilizan configuraciones estándar en absoluto, las soluciones se escriben para tareas específicas.
        pros: la configuración fue escrita exactamente de acuerdo a las necesidades del cliente, hay todo lo necesario y casi nada superfluo.
        Desventajas: Por lo general, al escribir este tipo de soluciones, no se respetan los estándares de código; es muy difícil modificar dichos productos de software; la mayoría de las veces, solo el autor puede hacerlo con la suficiente rapidez.
Si llego a los clientes y veo que hay una configuración atípica escrita desde cero, trato de no tocarla en absoluto o cambiarla por completo a una solución conveniente y universal. Muy a menudo, estas soluciones no son realmente necesarias, especialmente en las pequeñas y medianas empresas. Al mismo tiempo, los productos estándar son más fáciles de mantener y, por tanto, más baratos, lo que siempre es importante para las empresas.

Resumen

Es importante comprender que los emprendedores suelen buscar configuración. Por ejemplo, para automatizar el trabajo del departamento de contabilidad, necesitan 1C.Contabilidad y para organizar el trabajo con los clientes, 1C. Gestión comercial. Son estos productos los que les resultan comprensibles y, por tanto, interesantes.

Por tanto, es importante que el programador sepa con qué plataforma necesitará trabajar. El usuario está interesado en la configuración. Al mismo tiempo, sin la ayuda de un programador 1C, en la mayoría de los casos una empresa no podrá establecer la configuración deseada. Por eso llamo a los especialistas de 1C una parte integral del ecosistema de 1C.

Permítanme recordarles que los especialistas de 1C también son diferentes. Algunos participan en el desarrollo de la plataforma y configuraciones estándar (empleados de la empresa 1C), otros son sus socios y participan en la implementación y modificaciones, mientras que otros ayudan de forma privada a resolver ciertos problemas relacionados con la implementación de 1C. Agregar etiquetas

Compartir: