Documentación para la versión en caja de Bitrix24. Completar el asistente de instalación

Marco Bitrix - núcleo tecnológico (plataforma) para la creación y gestión de proyectos (sitios web y portales corporativos). La plataforma le permite crear una cantidad ilimitada de proyectos utilizando una copia (licencia) del producto, colocando el núcleo y la base de datos del sistema en una sola copia en el servidor.

En este momento No todas las capacidades del kernel antiguo están duplicadas en D7. Pero el nuevo núcleo D7 Marco Bitrix reemplazando gradualmente al anterior. Si el uso de un kernel antiguo generó una advertencia del IDE: Método/clase está en desuso, entonces necesita usar métodos.

Por varias razones, es posible que la documentación de la API no cubra todos los métodos. Para entender cómo funciona, a veces es mejor mirar el código real del programa. Para esto puedes usar módulo gratuito del mercado: .

Nota: al agregar #examples a la dirección de cualquier página, puede ir rápidamente a un ejemplo, si lo tiene. (Esto no funciona en archivos de documentación en formato CHM).


Versiones de entidad

Marco Bitrix está en constante evolución. Aparecen nuevas funciones, algunas quedan obsoletas y aparecen nuevos parámetros en las funciones. Sin embargo, una cantidad bastante grande de proyectos no se actualizan. Para facilitar el trabajo de programación, la documentación indica con qué versión del producto existió (existe) la clase, método, parámetro, evento.

Las versiones se enumeran en dos lugares: en el título y en las tablas. Si el método es válido, entonces el título contendrá únicamente el número de versión con el que apareció en el producto. Si el método está desactualizado, también se indicará el rango de versiones en las que era válido.

Las tablas indican la versión con la que apareció la entidad en el producto solo si su apariencia no coincide con el momento de aparición de la clase, método en sí, etc. En la siguiente ilustración: el parámetro COURSE_ID apareció junto con el método (es decir, desde 5.1.0), y el parámetro CHAPTER_ID solo desde la versión 9.5.4.

Si un parámetro (generalmente esto se refiere a parámetros) ha cambiado con el desarrollo del producto, habrá una nota correspondiente en su descripción. (Por ejemplo: antes de la versión x.x.x el parámetro se llamaba *****).

Ejemplo

Notas:

  • Marca Anticuado para un método, parámetro o clave significa que no se recomienda usarlo ya que no habrá extensiones ni correcciones.
  • La instalación de las versiones no se ha completado por completo, actualmente se está trabajando en esta dirección.

"Bitrix", 2001-2019, "1C-Bitrix", 2019

La integración de una tienda en línea en 1C-Bitrix con el sistema se puede realizar utilizando el módulo del sistema en Bitrix.Marketplace.

Durante la instalación, el módulo le ayudará a cargar los pedidos existentes en el sistema.

Después de la instalación, el módulo:

  • cargar nuevos pedidos de 1C-Bitrix al sistema;
  • actualizar datos sobre pedidos existentes teniendo en cuenta los cambios realizados en 1C-Bitrix;
  • cargar nuevos pedidos y clientes del sistema a 1C-Bitrix;
  • actualizar los datos de los pedidos existentes teniendo en cuenta los cambios realizados en el sistema (por ejemplo, se cambió el estado del pedido en el sistema, la cantidad de productos en el pedido, etc., estos cambios también se reflejarán en 1C-Bitrix) ;
  • enviar información sobre el pago en línea de un pedido por parte del usuario al sistema.

También es posible personalizar las clases de complementos sin perder el código modificado al actualizar. Para implementar el código modificado, debe colocar una copia del archivo con la clase requerida en el directorio bitrix/php_interface/retailcrm.

El complemento tiene la capacidad de personalizar los siguientes archivos:

RestNormalizer.php
registrador.php
cliente.php
RCrmAcciones.php
RetailCrmUser.php
RetailCrmICML.php
RetailCrmInventory.php
RetailCrmPrecios.php
RetailCrmCollector.php
Venta al por menorCrmUa.php
RetailCrmEvent.php
RetailCrmHistory_v4.php
RetailCrmHistory_v5.php
RetailCrmOrder_v4.php
RetailCrmOrder_v5.php
ApiClient_v4.php
ApiClient_v5.php

Para personalizar archivos cuyos nombres incluyen la versión de API utilizada, los archivos se crean con un nombre sin especificar la versión, por ejemplo: RetailCrmHistory.php.

Después de crear una copia del archivo con la clase en el directorio bitrix/php_interface/retailcrm, el módulo utilizará una clase personalizada; puede realizar cambios en sus métodos.

Registro de una tienda online en el sistema.

Antes de la instalación, registra tu tienda online en tu instancia del sistema (sección Administración > Tiendas, por ejemplo, en la versión demo):

Instalación de la solución en 1C-Bitrix

  • Haga clic en "Instalar" en la página de la solución en Marketplace e ingrese la dirección de su tienda en línea:

  • Descargue el módulo a través del sistema de actualización 1C-Bitrix:

  • Comience a instalar el módulo:

Se iniciará el asistente de instalación.

Asistente de instalación. Paso 1

En el paso 1.1, debe indicar la dirección de su sistema (por ejemplo, https://test.retailcrm.ru) y la clave API que generó anteriormente en el sistema:

¡Importante! Si solo hay una tienda en Bitrix, se omite el paso 1. Sitios.

Asistente de instalación. Paso 1. Sitios web

En el paso 1.Sitios, debe configurar la correspondencia entre sus tiendas en 1C-Bitrix y el sistema.

¡Importante! Todas sus tiendas en el sistema deben tener una clave API común.

Asistente de instalación. Paso 2

En el segundo paso, es necesario indicar la correspondencia entre los valores de la tienda online y los directorios del sistema. El propio módulo intenta establecer correspondencia entre estados típicos. Cuando el módulo no pudo hacer esto, deberá especificar la coincidencia usted mismo:

Compruebe si el sistema tiene los valores de directorio necesarios correspondientes a los directorios de la tienda online. Si no hay suficientes, agréguelos en la sección Administración sin cerrar la página del asistente de instalación:

Después de esto, actualice la página del asistente: se deben cargar los nuevos valores del directorio.

Asistente de instalación. Paso 3

En el tercer paso, el módulo le permite configurar la correspondencia entre los campos de 1C-Bitrix y el sistema.

¡Importante! Si hay un formulario " comentario"o pedidos "en 1 clic", y estos datos no entran en los pedidos estándar de Bitrix, entonces no se ingresan en el sistema.

Además, si está trabajando con entidades legales, debes completar todos los campos como se indica en la captura de pantalla a continuación.

Asistente de instalación. Etapa 4

En el cuarto paso, el módulo le permite cargar en el sistema los pedidos realizados previamente. La descarga puede tardar algún tiempo (se descargan 1000 pedidos en unos 5 minutos). El progreso del proceso de carga se mostrará mediante una barra de progreso.

Si es necesario, puedes pausar la descarga y reanudarla nuevamente después de un tiempo.

Después de cargar los pedidos realizados anteriormente, podrá ver informes analíticos en el Panel KPI. Recomendamos realizar este paso.

Asistente de instalación. Paso 5

En el quinto paso se configura la carga del catálogo de productos. Para ello, debes completar los siguientes puntos.

1. Selección de bloques de información y propiedades.

Los bloques de información seleccionados se cargarán en el sistema. Se le ofrecerá elegir sólo aquellos bloques de información que contengan productos o que tengan bloques de información vinculados con ofertas comerciales. Paralelamente a la selección de bloques de información, puede seleccionar las siguientes propiedades: artículo, fabricante, color, peso, tamaño; para ello debe especificar la propiedad del bloque de información, que es responsable de almacenar la propiedad correspondiente. Seleccionar una propiedad es opcional.

2. Ruta del archivo

Se generará un archivo en el formato en la ruta especificada, que contendrá la estructura del directorio. La ruta predeterminada es: "/bitrix/catalog_export/retailcrm.xml". Si cambia la ruta, deberá realizar una configuración similar en el sistema.

3. Establecer el número de ofertas en exportación

En la configuración de exportación del catálogo, existe un campo “Número máximo de ofertas comerciales para un producto”, donde se debe ingresar el número máximo de ofertas comerciales que puede tener un producto (si hay más de 50). De forma predeterminada, el módulo calcula un máximo de 50 ofertas comerciales para un producto. Si hay menos de 50 ofertas comerciales por producto en la tienda, esta configuración se puede ignorar. Si hay más ofertas comerciales y se especifica la configuración, se recomienda transferir el agente a coronas si funciona con éxito.

4. Seleccionar la frecuencia de descarga

Habrá tres opciones para elegir:

1. No- Cuando seleccione este elemento, la carga periódica del catálogo no se configurará automáticamente y tendrá que cargar el catálogo usted mismo cada vez.

Esta opción puede ser útil si el catálogo de productos de tu tienda online cambia muy raramente, o quieres configurar los parámetros de carga más adelante.

2. cron- Al seleccionar este elemento se creará automáticamente un perfil especial que se vinculará al servicio Cron del servidor en el que opera el sitio web de la tienda en línea.

La utilidad cron se ejecuta en fondo y realiza tareas específicas en momentos específicos.

Seleccionar este artículo puede resultar útil si el catálogo contiene un artículo muy grande ( más de 10.000 productos). Para este elemento, debe especificar el nombre del perfil de exportación especial.

3. Agente. En este caso, también se creará un perfil especial que se conectará a la tecnología “Agentes” en 1C-Bitrix, y se realizará la carga. automáticamente una vez al día.

Un agente es una función PHP que se ejecuta con una frecuencia determinada. Al comienzo de cada carga de página, el sistema verifica automáticamente si hay un agente que deba iniciarse y, si es necesario, lo ejecuta. No se recomienda crear agentes para cargas que requieren mucho tiempo; es mejor usar cron.

Esta opción es más preferible si el directorio contiene menos de 10.000 productos, entonces la carga se produce con bastante rapidez y esto no afectará de ninguna manera la velocidad del sitio web de la tienda en línea.

En el caso de una gama grande ( más de 10.000 productos), es necesario personalización adicional Agente en Cron. Para este elemento, también debe especificar el nombre del perfil de exportación especial.

4. Indicación de descarga instantánea.

Como resultado de configurar el indicador "Descargar ahora", la estructura del directorio se descargará en el archivo anterior, inmediatamente después de instalar el módulo.

Después de cargar el catálogo en un archivo en el sistema, debe ir a Administración -> Tienda -> Nombre de la tienda -> pestaña "Catálogo" y marcar la casilla "Descargar catálogo de ICML ahora". En este caso, la descarga del archivo y su procesamiento comienza casi instantáneamente.

5. Especificar un nombre de perfil

Después de configurar correctamente la carga del catálogo de productos, aparecerá un nuevo tipo de exportación del sistema en la sección Tienda > Configuración > Exportación de datos; si se especifica la carga periódica durante la instalación, también aparecerá un perfil de exportación.

Nota:
Para autoconfiguración Al cargar, es posible crear su propio perfil de exportación.

Completar el asistente de instalación

Al final de la instalación, se crearán 2 agentes: un agente carga el historial de pedidos de Bitrix al sistema, el segundo agente genera un catálogo. Si la carga de pedidos está configurada para un agente, los pedidos se cargan en el sistema en el momento en que se llama al historial. En otros casos, los pedidos se descargan en función de un evento.

Descarga del servicio de entrega durante el intercambio 1C-Bitrix - sistema

Si tiene servicios de entrega automatizados conectados a 1C-Bitrix, como eDost, que tienen muchos perfiles: Russian Post, EMS, DHL y muchos otros, entonces en el sistema puede aprovechar la posibilidad de descargar este tipo de servicio de entrega.

Los métodos de entrega deben configurarse en el lado del sistema. Si el módulo del sistema se instaló antes de conectar el servicio de entrega a Bitrix, los métodos de entrega que faltan deberán ingresarse en el sistema manualmente. Si el módulo se instaló después de conectar el servicio de entrega, los métodos de entrega se instalarán automáticamente, así como la descarga del servicio. Es decir, de cada pedido se descargará el coste de envío.

En el lado de 1C-Bitrix, debe realizar las siguientes configuraciones si el módulo del sistema se instaló después de conectar el servicio de entrega al sistema 1C-Bitrix:

Ir a Administración > Configuración, vaya a la pestaña "Configuración de directorio".

Configure la correspondencia de los métodos de entrega (preconfigurados en el lado del sistema). A continuación, haga clic en el botón "Cargar servicios de entrega".

Configurar la frecuencia de carga 1C-Bitrix - sistema

A la hora de actualizar el catálogo de productos se pueden destacar dos puntos:

Generación de catálogos (en formato yml/icml) en el lado del cliente y

El sistema descarga el catálogo una vez cada tres horas. La ruta al archivo que se debe cargar se establece en la configuración de la tienda; debe ir a la sección Administración > Tiendas > Seleccionar tienda > pestaña Catálogo.

Después de instalar el módulo del sistema en 1C-Bitrix, se crea un perfil para cargar. Para verlo hay que ir a Escritorio > Tienda > Configuración > Exportación de datos. La captura de pantalla muestra dos opciones:

Por defecto,

Subiendo el directorio del sistema.

Si seleccionas la segunda opción, al hacer clic en ella se abrirán las opciones de carga.

Si se selecciona Agente como opción de frecuencia, para ver la lista de Agentes, debe ir a Escritorio > Configuración > Configuración del producto > Agentes.

Si hace clic en "Cambiar" o "Agregar nuevo", puede asignar o cambiar la frecuencia de ejecución de la tarea de generación.

Frecuencia de sincronización de datos durante el intercambio 1C-Bitrix - sistema

El módulo del sistema le permite cargar un catálogo de productos en su sistema, así como realizar intercambios bidireccionales regulares de pedidos y clientes.

Al cargar oportunamente los datos del catálogo, los administradores de su sistema tendrán información actualizada sobre la disponibilidad del producto. No se producirá una situación en la que se solicite un producto y después de un tiempo resulte que está agotado.

El intercambio de pedidos es un proceso de sincronización de datos cuando los pedidos se cargan en ambas direcciones:

De 1C-Bitrix al sistema:

  • Si la carga por eventos está habilitada, al crear o cambiar un pedido en el sistema 1C-Bitrix, se cargará inmediatamente en el sistema. Si se selecciona un agente de descarga, el pedido se cargará en el sistema en 15 minutos (no se recomienda utilizar este mecanismo sin razones de peso, ya que en este caso los pedidos llegarán con retraso y no se transferirán las actualizaciones de estos pedidos). al sistema).
  • Cuando un usuario cambia, los datos maestros también se cargarán inmediatamente en el sistema.

Del sistema a 1C-Bitrix:

  • Si crea un pedido en el sistema para un nuevo usuario, el pedido se cargará en 1C-Bitrix y se creará. Nuevo Usuario en el rango de 1 a 15 minutos.
  • Si cambia la dirección, el costo de envío o el estado en el sistema en la página del pedido, todos estos cambios se cargarán en 1C-Bitrix en 15 minutos.
  • Si cambia los descuentos de productos en el sistema y cambia la cantidad de productos, esto cambiará en 1C-Bitrix en el intervalo de 1 a 15 minutos.

Cambios en el módulo de integración.

Versión 2.0

  • El módulo de integración versión V2.0 está diseñado para integrar 1C-Bitrix con el módulo “Tienda en línea (venta)” versión > 16 instalado en él.
  • Ahora el módulo funciona a través de API V4.
  • El módulo de integración ahora utiliza el nuevo núcleo 1C-Bitrix D7.
  • Ahora los cambios referentes al cliente (nombre completo, correo electrónico, teléfono) también se envían al sitio web desde el sistema.
  • En la configuración del módulo de integración en la sección "Otras configuraciones", fue posible traducir los números de pedido del sistema a 1C-Bitrix. Es decir, si crea manualmente un pedido en el sistema con el número, por ejemplo, 12345R, se creará un pedido con el mismo número en 1C-Bitrix.
  • Dado que en la versión > 16 del módulo "Tienda online (venta)" los desarrolladores de Bitrix dejaron de aplicar descuentos a todo el pedido y dejaron descuentos solo para los productos, el sistema, por ahora, tampoco tiene la posibilidad de utilizar descuentos para el orden completa. Puede establecer descuentos solo para artículos de pedido específicos.

Versión 2.1

  • Se agregaron unidades de medida en la exportación del catálogo.

Versión 2.2

  • El módulo ahora admite varias versiones de API con una opción.
  • Soporte API V5.
  • Se agregó la posibilidad de descargar saldos por almacén.
  • Se agregó la posibilidad de descargar tipos de precios.
  • Se agregó integración básica de Daemon Collector.
  • Integración agregada con Universal Analytics.
  • Se ha mejorado la lógica de las funciones integradas para la modificación de datos.
  • Se agregó la función incorporada retailCrmApiResult.
  • Se agregó una versión de activación del historial de cambios.

Versión 2.4

  • Se agregó un cheque en el procesador para guardar el pago de un nuevo pedido.
  • Se agregó configuración para el número de ofertas comerciales en exportación.
  • Conversión de precio de compra agregada.
  • Cambiar archivos de traducción.
  • Se agregó una verificación al descargar cambios del sistema para las propiedades del pedido.
  • Se agregó carga de IVA.
  • Se corrigió la obtención de una lista de tipos de precios para cargar. Todos los tipos disponibles en Bitrix están disponibles para su selección.

Otros ajustes

Configuraciones de pedido

Transmitir los números de pedido creados en el centro de procesamiento central a la tienda.

Cuando se crea una orden en el sistema, genera su propio número único de acuerdo con las reglas especificadas. Cuando se establece esta configuración en el módulo, el número de dicho pedido se transmitirá a la tienda durante la sincronización inversa.

Descarga de pedidos

  • Por evento- cuando guarda el pedido, los datos entran en el sistema;
  • Agente- Los nuevos pedidos se envían antes de solicitar el historial de cambios al sistema.

Versión de la API del cliente

Ahora puede seleccionar la versión de API con la que funcionará el módulo. La elección depende de la versión del sistema. Se recomienda seleccionar la última versión.

Habilitar descarga de saldos por almacén (disponible si existen almacenes)

Ahora puede descargar periódicamente saldos de los almacenes del sitio a los almacenes del sistema. Para hacer esto necesitas:

  • comparar los almacenes del sitio con los almacenes del sistema;
  • indicar las tiendas del sistema en las que se cargarán los saldos;
  • seleccionar bloques de información con mercancías necesarias para cargar saldos (es necesario seleccionar aquellos que se indican en la exportación del catálogo del sistema).

La carga la realiza el agente con una frecuencia de 1 hora (por defecto).

Tenga en cuenta que para cargar saldos en el sistema, las opciones deben estar habilitadas.

Habilitar la carga de tipos de precios para productos (disponible solo si hay varios tipos de precios)

Ahora puedes cargar periódicamente tipos de precios adicionales desde la tienda al sistema. Para hacer esto necesitas:

  • comparar los tipos de precios del sitio con los tipos de precios del sistema;
  • indicar las tiendas del sistema en qué tipos de precios adicionales se cargarán;
  • seleccione bloques de información con productos que requieran cargar tipos de precios adicionales (debe seleccionar aquellos que se especifican en la exportación del catálogo del sistema).

La carga la realiza el agente cada 24 horas (por defecto).

Activar coleccionista de demonios

Ahora puede agregar Collector Daemon al sitio web desde la interfaz de configuración. Para hacer esto, debe especificar la clave adecuada para el sitio deseado. La clave se puede encontrar en el sistema.

Habilitar la integración UA

Ahora puede habilitar la integración con Universal Analytics desde la interfaz de configuración (funciona correctamente con el componente de pedidos estándar). Para cada sitio al que desee agregar seguimiento, debe completar el ID de seguimiento y el índice de parámetros personalizados.

Donde $order es la matriz generada de datos de pedidos que se enviarán al sistema y $arFields es una matriz de campos de pedidos en el sitio web. function retailCrmBeforeOrderSave($order) ( //Sus cambios devuelven $order; //o devuelven false; y luego se ignorarán los cambios del sistema para este pedido)

Donde $order es una matriz con datos de pedidos modificados recibidos del sistema.

función minoristaCrmAfterOrderSave

retailCrmAfterOrderSave: una función que se ejecuta inmediatamente después de que los cambios en los datos del pedido recibidos del historial del sistema se guardan en el sitio web.

function retailCrmAfterOrderSave($order) ( //Tus cambios regresan; )

Donde $order es una matriz con datos de pedidos modificados recibidos del sistema.

Función retailCrmApiResult

retailCrmApiResult: una función que se ejecuta inmediatamente después de recibir una respuesta de la API del sistema.

function retailCrmApiResult($methodApi, $res, $code) ( //Tus cambios regresan; )

Donde $methodApi es el nombre del método API, $res es el resultado de la solicitud verdadera/falsa (solicitud exitosa o no exitosa), $code es el código de estado de respuesta de la API.

Tenga en cuenta que los errores en el código al utilizar esta función pueden interrumpir la sincronización del sitio y el sistema.

Si las herramientas enumeradas anteriormente no son suficientes por algún motivo, puede realizar los cambios necesarios directamente en el código del módulo sin riesgo de perder estos cambios al actualizar el módulo. Para hacer esto, debe copiar el archivo con la clase requerida al directorio /bitrix/php_interface/retailcrm/ y realizar modificaciones en él. Este mecanismo admite el cambio de clases para trabajar con clientes, pedidos, eventos, exportación de catálogos y otros mecanismos auxiliares.


Marcador Tareas personalizadas está destinado a quienes trabajarán directamente con el producto, es decir, a empleados de empresas que utilizan nuestro producto de software.

La pestaña Tareas administrativas está destinada a quienes administrarán la versión en caja. "Bitrix24".

Marcador Documentación destinado a desarrolladores de proyectos basados ​​en la versión en caja "Bitrix24".

Tareas personalizadas

Tareas administrativas

Para desarrolladores

La documentación del desarrollador es una descripción de la API del sistema. La documentación del usuario es una descripción de los componentes y configuraciones del sistema.

La documentación está disponible tanto en línea como como archivo en formato chm. Se recomienda utilizar la versión online ya que está más actualizada. Los archivos chm se actualizan periódicamente y es posible que no contengan información sobre las últimas versiones.

¡Atención! Si no ve el contenido del archivo de formato .chm, entonces el motivo es la configuración de seguridad. Sistema operativo. En las propiedades del archivo, debe desbloquear la visualización del archivo. Leer más enPreguntas más frecuentes

La documentación es información de referencia. No basta con que un desarrollador novato trabaje con el sistema. Para dominar los principios de programación en Marco Bitrix Un curso especial te ayudará a:

No hace mucho, nuestra empresa recibió una tienda en línea bastante grande en 1C-Bitrix para mantenimiento y modificación. El proyecto se puso en funcionamiento comercial hace un par de meses, pero al mismo tiempo tuvo varios problemas graves. Además, el cliente tenía previsto completar las tareas de finalización de la nueva funcionalidad lo más rápido posible. Me dieron la tarea de organizar trabajo eficiente según el proyecto con un mínimo tiempo de inactividad del sitio y la máxima satisfacción de las necesidades del cliente.

Datos iniciales:

  • Hay una tienda en línea en 1C-Bitrix
  • El proyecto tiene varios años, pero hace solo unos meses el sitio fue transferido a 1C-Bitrix.
  • Asistencia 10-15 mil personas por día
  • El catálogo de la tienda contiene alrededor de 12.000 artículos de productos.
  • El tiempo de inactividad y las interrupciones del sitio son inaceptables
  • El proyecto fue desarrollado por otra empresa en seis meses:
    1. Existe una especificación técnica para aproximadamente 100 hojas, correspondientes a aproximadamente el 40% del trabajo realizado.
    2. Sin documentación del proyecto
    3. Falta de comprensión de por qué los desarrolladores anteriores utilizaron soluciones arquitectónicas específicas.

Desarrollo software En general, y proyectos web en particular, llevo unos 8 años trabajando en proyectos web. Durante este tiempo me encontré con proyectos de diversa complejidad y, a primera vista, la tarea no me pareció demasiado difícil. Al implementar proyectos en nuestra empresa, por regla general, se utiliza la metodología SCRUM. Empecé a alejarme de ella.

Primero que nada, obtuve acceso. código fuente proyecto. Analizado superficialmente. Acordar con el cliente la lista de tareas prioritarias. Hice un plan de desarrollo para 3 desarrolladores y, como dijo Gagarin, ¡vamos!

Problema número 1: los desarrolladores tienen la culpa de todo

Como suele ocurrir, todos tienen la culpa menos el cliente. El diseñador hizo un diseño que pesa demasiado, el proveedor de alojamiento proporcionó un servidor que funciona lentamente, los desarrolladores crearon un sitio web que tiene errores y falla todo el tiempo, los administradores completaron algunas tareas que no solicitamos que se realizaran después de cambiar de versión antigua sitio en 1C-Bitrix hubo una fuerte disminución en el tráfico de búsqueda, etc. La situación no está clara. Por un lado, la responsabilidad principal, por supuesto, debería recaer en la empresa promotora. Era necesario transmitir al cliente las consecuencias de todas las acciones con el sitio y prepararse para el resultado. Al realizar el trabajo, proponer una arquitectura holística. sistema futuro y un plan de desarrollo a seguir hasta que se completen los hitos. Realice pruebas exhaustivas de la funcionalidad y envíe el trabajo. Por otro lado, a menudo me encuentro con una situación en la que el cliente sabe todo mejor porque su madre alguna vez pintó y, por lo tanto, mejor diseñador, y su hijo de 7 años conoce bien la optimización SEO, porque pasa todo el tiempo en la computadora jugando GTA.

No nos corresponde a nosotros juzgar quién es culpable y quién tiene razón. En este caso, el contratista anterior era una empresa bastante conocida y fiable y no puedo decir nada malo sobre su desarrollo. Y el cliente, objetivamente, se preocupa por su producto y trata de mejorarlo. No sé cómo sucedió, yo mismo encontré una explicación en la cantidad insuficiente de análisis proporcionados por el contratista al cliente.

Como resultado:

  • El proyecto no ha llegado a su conclusión lógica. Muchas tareas se abandonan a mitad de camino.
  • El proyecto no está documentado. El funcionamiento de algunas de las funciones no es obvio. Al desarrollar una nueva funcionalidad, resulta que aquella funcionalidad que antes funcionaba y cuya existencia el nuevo desarrollador no sospechaba ha dejado de funcionar.
  • Parte del código escrito por el ejecutante anterior debe reescribirse desde cero.
  • La arquitectura prevista del proyecto no está clara para el nuevo contratista en las primeras semanas/meses de trabajo. La mejora de la funcionalidad de un módulo conduce a la pérdida de funcionalidad de un módulo que no tiene ninguna relación con él.
  • El cliente está nervioso, el artista está nervioso, los visitantes no están contentos, la asistencia está disminuyendo, las ventas están cayendo.

Sólo veo una solución al problema: limpiar gradualmente y de forma sistemática todos los módulos del sitio, uno por uno, para llevar el producto al estado requerido. Algunos errores se incluyeron en tareas separadas y se completaron de inmediato; otros se corrigieron en paralelo con el desarrollo de nuevas funciones. El resultado es que con cada actualización, después de eliminar rápidamente los errores, el sitio se vuelve mejor y más estable.

Problema nº 2: desarrollo paralelo.

De acuerdo con la política de licencias de 1C-Bitrix, cada licencia de sitio web le permite utilizar 2 copias del sistema. Uno como sitio de producción, el segundo para desarrollo. El problema es que el desarrollo lo realizan varios desarrolladores, en mi caso tres, de forma continua. En el caso del desarrollo clásico, todo es sencillo. Cada desarrollador trabaja en su propio módulo. Luego se llevan a cabo pruebas funcionales de cada módulo, todas las mejoras se fusionan en el repositorio de algún sistema de control de versiones y luego se prueban todos juntos (pruebas de integración). Si el resultado es normal, se presenta la versión de prueba al cliente. Una vez aceptada la versión de prueba, se actualiza el servidor de producción. De acuerdo con la metodología SCRUM, determiné que subiría nuevas versiones al sitio de producción una vez por semana. En consecuencia, quedan de 3 a 4 días para el desarrollo básico. 1 día para pruebas y corrección de errores y medio día para actualizar el servidor de producción. Los plazos, por supuesto, varían, pero traté de cumplir estrictamente con la regla de "publicar todos los jueves".

Lo primero que encontré fue que en 1C-Bitrix hay situaciones en las que el mismo archivo se usa simultáneamente en diferentes funciones en diferentes extremos del sitio. La solución más sencilla y obvia es utilizar un sistema de control de versiones, en mi caso, SVN, que utilizo en todos los demás proyectos. Pero para utilizar el control de versiones, es necesario que cada desarrollador tenga su propia versión del código, que edita y luego fusiona en el repositorio común.

¿Qué pasa con la licencia? Contactado apoyo técnico 1C-Bitrix. Recibí una oferta para comprar más. licencias para desarrollo. Por decirlo suavemente, no estaba contento, pero no recibí ninguna otra oferta. Encontré una solución lo suficientemente rápido. Decidí usar claves NFR. Afortunadamente, la condición de socio lo permite. Como resultado, creé 5 instalaciones de tiendas en línea:

  • Servidor de producción
  • Servidor de prueba
  • 3 servidores de desarrollo (uno por desarrollador)

Con el tiempo fui aún más lejos. También hay una instalación separada para el probador. Resultó que, con mi suerte, el cliente siempre inicia sesión en el servidor de prueba en el momento en que se actualiza algo allí. El seguimiento de errores contiene muchas tareas innecesarias que ya se han completado y el cliente tiene la impresión de que estamos haciendo mal nuestro trabajo.

Actualmente estoy usando el siguiente esquema:

  • Cada desarrollador utiliza sólo su copia local para trabajar
  • En el momento acordado, todas las mejoras completadas se fusionan en una rama común en el repositorio.
  • QA toma la versión fusionada para probarla
  • Después de probar y corregir errores, el servidor de demostración se actualiza para el cliente.
  • Tras la verificación y aceptación por parte del cliente, las mejoras se transfieren al servidor de producción.

Entre las desventajas obvias de este enfoque, me gustaría destacar el bajo nivel de participación del cliente en el desarrollo. El resultado es visible para el cliente sólo en la etapa final. Este enfoque es aplicable si cuenta con un buen analista que rara vez comete errores y está en contacto constante con el cliente. De lo contrario, habrá que rehacer muchas tareas desde cero.

Mientras construía el circuito encontré otro problema. El proyecto ocupa unos 80 GB de espacio en disco. Sin caché ni archivos temporales, alrededor de 60. Al principio intenté eliminar imágenes y videos del control de versiones, pero no funcionó. La información en el sitio cambia constantemente. Debe realizar la prueba utilizando datos actuales. La primera confirmación del sitio con el repositorio me llevó más de 2 días por partes. El primer pago a la carpeta de desarrollo tarda varias horas (servidor SVN en red local desarrollo). Si, Dios no lo quiera, accidentalmente actualizas por completo la carpeta del proyecto, puedes irte a fumar, almorzar, jugar al ping-pong o al curling. Confirmar sólo archivos o carpetas seleccionados es bastante rápido. Solución: Completé la tarea de descargar una docena de archivos modificados a la vez.

Problema nº 3: actualizar el servidor de producción y colaborar con el cliente

El problema es el más importante, complejo y no completamente resuelto. Después de todo, si otros problemas están relacionados con el trabajo interno del proyecto, entonces la reputación y los ingresos del cliente y, en consecuencia, mis ingresos, dependen del trabajo del sitio.

Las leyes de Murphy funcionan muy bien aquí:

  • Si algo no funciona bien en el servidor de prueba, definitivamente fallará en el servidor de producción.
  • Si algo funciona perfectamente en el servidor de prueba, igualmente fallará en el servidor de producción.
  • Si un error en el sitio existe durante solo 5 segundos, uno de los visitantes definitivamente lo encontrará y definitivamente escribirá sobre ello en reseñas o en el formulario de comentarios.
  • Si el sitio no funciona durante 1 minuto durante una actualización, es en ese momento cuando el propietario de la empresa se lo mostrará a su amigo o competidor (y esto a pesar del acuerdo sobre el momento y el procedimiento para la actualización).
Por supuesto que estoy exagerando, pero cada chiste tiene algo de humor. La carga mínima en el sitio es de 4 a 6 am. Por supuesto, sería mejor actualizar en este momento, pero realmente no quiero hacerlo.

En el caso de la mayoría de las aplicaciones web, existe una estructura clara para dividir la aplicación en capas y actualizar el sitio que se puede dividir en 2 partes:

  • Actualización de código
  • Actualización de la base de datos mediante scripts SQL

En el caso de 1C-Bitrix todo es un poco más complicado. En primer lugar, hay muchos archivos. Tengo más de un millón de ellos en mi proyecto. Una actualización típica desde el repositorio tarda no menos de 20 a 30 minutos. Por supuesto, puede actualizar sólo los archivos modificados, pero entonces se pierde todo el sentido del repositorio. En segundo lugar, y esto es mucho más triste, a menudo al actualizar hay que realizar cambios y configuraciones manuales a través del panel de administración. Y esto siempre es lento, es necesario recordar todos los cambios que se deben realizar, existe una alta probabilidad de cometer un error accidentalmente. Por supuesto, puede escribir un script SQL que realizará todos los cambios necesarios en la base de datos. En los casos más simples, por supuesto, hacemos precisamente eso. Pero en la mayoría de los casos, escribir y depurar un script de este tipo lleva más tiempo que el desarrollo en sí y mucho más que realizar todas las acciones manualmente con pruebas posteriores.

Todavía no he encontrado una buena solución al problema. Ahora actualizamos la configuración en la base de datos manualmente. Para minimizar los errores, se compila una lista de verificación con una lista de lo que se debe hacer durante la actualización. Intentamos realizar la actualización con el mayor cuidado y precisión posible. Después de la actualización, todo el equipo comprueba la funcionalidad principal del servidor de producción y realiza pruebas adicionales. Se ha minimizado la cantidad de errores, pero aún no ha sido posible eliminar por completo los errores y el tiempo de inactividad durante la actualización.

La segunda cosa que encontré es colaboración Con el cliente. Porque El proyecto es grande, alrededor de 30 personas trabajan constantemente en él. Gestores de contenidos, directores de ventas, optimizadores SEO, especialistas en marketing y muchos otros. Naturalmente, todos realizan algunos cambios en las páginas del sitio y en la configuración del módulo. La primera decisión fue quitarle al cliente el derecho a realizar cambios en el código del programa del sitio. La decisión fue absolutamente correcta, pero sólo empeoró. Si antes el cliente asumía que él también podía ir al sitio y romper algo accidentalmente, ahora todos los problemas empezaron a recaer solo en nosotros. ¿Qué tiene que ver con eso? Incluso si el administrador de contenido editó el texto de la página de manera torcida y no cerró alguna etiqueta, el desarrollador sigue siendo el culpable. La solución resultó ser bastante sencilla. El mercado tiene un módulo gratuito para el control de versiones de la página. Esto no resolvió el problema, alguien todavía arruinará algo de vez en cuando, pero ahora es posible ver en cualquier momento quién cambió lo que cambió y por qué todo se rompió. El resultado, por supuesto, no es hielo, pero me ahorra muchos nervios.

Además, decidimos que antes de cada actualización del servidor de prueba, le llevamos una copia del servidor de producción. Esto también lleva mucho tiempo. Archiva el proyecto, transfiérelo a otro servidor, descomprímelo. Todo esto lleva varias horas. Pero las nuevas mejoras se prueban prácticamente en condiciones de combate. Si la configuración de los servidores de prueba y de producción es idéntica, la diferencia en el funcionamiento será mínima y la cantidad de errores se reducirá significativamente. La experiencia ha demostrado que en una semana el servidor de producción puede cambiar tanto que algunas de las nuevas funciones que funcionan sin problemas en una copia de hace una semana pueden no funcionar en absoluto en una copia nueva.

Problema #4 – “hazlo por mí urgentemente, esta es una tarea de 5 minutos”

El problema no se relaciona tanto con 1C-Bitrix, sino con el perfeccionamiento y soporte de proyectos en funcionamiento. A menudo el cliente desea hacer algo pequeño, pero de forma urgente e inmediata en el lugar de producción. El resultado es siempre el mismo: no sale nada bueno. En el mejor de los casos, esta modificación simplemente se olvidará durante la próxima versión; en el peor de los casos, el servidor simplemente fallará y será necesario restaurarlo desde la copia de seguridad durante varias horas.

Solo encontré una solución: nunca seguir el ejemplo del cliente a expensas de la confiabilidad y la seguridad. No importa cómo pregunte el cliente, el desarrollador siempre tendrá la culpa. Como me dijo mi exjefe: “No te pedí que hicieras nada malo”.

Y ya que tocamos el tema de las copias de seguridad, quiero señalarlo. La copia de seguridad con 1C-Bitrick es, por supuesto, buena y conveniente, pero muy lenta. Si necesita restaurar urgentemente 1 o 2 archivos o varios valores en la base de datos, debe esperar hasta que se hayan descomprimido los 60 GB. El siguiente esquema me parece el más efectivo:

  • Debe haber una copia de seguridad diaria de archivos y bases de datos en forma de archivo en fuente externa datos.
  • Siempre hacemos una copia de seguridad inmediatamente antes de actualizar en una de 2 opciones:
    1. Luz de opción: copie toda la carpeta del proyecto a una carpeta adyacente en el servidor. Guardamos la base de datos como un volcado en un archivo separado. No archivamos nada. En caso de que necesites restaurar algún valor en la base de datos o en uno de los archivos, todo estará a mano y fácilmente accesible
    2. Opción fuerte: similar a la anterior, solo que copiamos la base de datos a otra base de datos datos mysql. Esto permitirá, en caso de una falla total, corregir la carpeta raíz del sitio en el archivo de hosts en 1-2 minutos, y el proyecto comenzará a funcionar desde una carpeta vecina con una copia de la base de datos.

Conclusión

Gracias a todos los que leyeron hasta el final. Espero que mi experiencia te sea de utilidad. Estaré encantado de recibir sugerencias sobre mejores formas de resolver los problemas planteados en los comentarios o en un mensaje personal. Ahora he tratado de expresar los principales problemas de finalizar y respaldar proyectos ya lanzados con altos requisitos de confiabilidad. Si el material resulta interesante, planeo escribir una continuación sobre las características de la arquitectura 1C-Bitrix que distinguen el desarrollo de un sitio en Bitrix del desarrollo de otros proyectos web.

Información sobre cómo trabajar con se puede encontrar en los tutoriales y la documentación. Los cursos de formación están diseñados para dominar los métodos de trabajo en producto de software y documentación, para dominar los principios de personalización de CMS.

Al trabajar con "1C-Bitrix: Gestión del sitio" Los problemas surgen en forma de problemas prácticos específicos. Hemos recopilado en temas especializados. diferentes paginas cursos de formación para que le resulte más fácil encontrar respuestas a sus preguntas.



Centros de formación Hacer una pregunta Foro



Marcador Gestores de contenidos está destinado a quienes trabajarán directamente con el producto, es decir, a administradores de contenido que lideren proyectos creados en nuestro producto de software.

Marcador Administradores destinado a quienes administrarán "1C-Bitrix: Gestión del sitio".

Marcador Para desarrolladores diseñado para desarrolladores de proyectos basados ​​en "1C-Bitrix: Gestión del sitio".

Gestores de contenidos

Puedes importar el curso a tu sitio web. Gestor de contenidos de este archivo. Curso sin preguntas para exámenes.
Versión del curso de fecha 5 de junio de 2015.

Administradores

Para desarrolladores

La documentación del desarrollador es una descripción de la API del sistema. La documentación del usuario es una descripción de los componentes y configuraciones del sistema.

La documentación está disponible tanto en línea como como archivo en formato chm. Se recomienda utilizar la versión online ya que está más actualizada. Los archivos en formato chm se actualizan periódicamente y pueden no contener información sobre Últimos cambios en el sistema de ayuda.

¡Atención! Si no ve el contenido del archivo de formato .chm, entonces el motivo es la configuración de seguridad del sistema operativo. En las propiedades del archivo, debe desbloquear la visualización del archivo. Leer más enPreguntas más frecuentes

La documentación es información de referencia. No basta con que un desarrollador novato trabaje con el sistema. Para dominar los principios de programación en Marco Bitrix Un curso especial te ayudará a:


Arriba