Esta característica está implementada en la versión 8.3.10.2168 de 1C:Enterprise.
Como herramienta para desarrollar y mantener aplicaciones, Designer se puede utilizar tanto de forma interactiva (para editar configuraciones o describir algoritmos de script de 1C:Enterprise) como desde la línea de comandos (para actualizar, volcar y restaurar configuraciones, etc.). Por ejemplo, el nuevo entorno de desarrollo (EDT) reasigna algunas de sus funciones a Designer.
Nuestra intención inicial era acelerar las interacciones entre EDT y Designer. Sin embargo, decidimos ampliar la tarea. En última instancia, desarrollamos una forma universal de trabajar con Designer a través de la línea de comandos. Lo llamamos el modo agente. En el modo agente, Designer puede ejecutar un número arbitrario de comandos externos sin cerrarse.
Beneficios
La principal ventaja para EDT es el tiempo reducido que ahora se tarda en ejecutar secuencias de operaciones, como volcar configuraciones a archivos, restaurar configuraciones desde archivos y actualizar configuraciones de bases de datos. Después de todo, en el modo por lotes de Designer previamente utilizado por EDT, Designer se iniciaba, ejecutaba un comando y luego se cerraba. Por lo tanto, si necesitabas ejecutar varios comandos en secuencia, los costos adicionales de inicio / cierre de Designer podían ser bastante significativos.
Otro beneficio que no planeamos originalmente es que ahora puedes operar Designer a través de clientes SSH estándar, lo que significa que puedes automatizar tus operaciones de Designer. Esto es algo sobre lo que nos gustaría entrar en más detalle.
Cómo funciona
Para iniciar Designer en el nuevo modo, se utiliza la opción de línea de comandos /AgentMode, junto con un número de otras opciones secundarias que definen la configuración de conexión. Al iniciar, se especifica la base de datos de información con la que Designer debe trabajar.
Una vez que el agente está en funcionamiento, puedes trabajar con la base de datos de información, alternando entre el agente (ejecutando comandos SSH) y Designer ejecutándose en modo regular. ¿Qué significa ‘alternar’?
Para administrar Designer a través del cliente SSH, primero debes conectarte a la base de datos de información. Esta operación simple se ve así:
designer>common connect-ib La operación se ha completado Después de esto, puedes ejecutar cualquier comando SSH.
Si ejecutas el comando de desconexión SSH, puedes (sin cerrar el agente) iniciar otro Designer en modo regular y trabajar con la base de datos de información como de costumbre, por ejemplo, editar módulos. Después de cerrar Designer en modo regular, puedes ejecutar comandos SSH para conectarte nuevamente a la base de datos de información a través del agente en ejecución. Esto es lo que se ve en la versión abreviada de la secuencia:
- Iniciar Designer en modo agente (se inicia la sesión SSH)
- Conectarse a la base de datos de información (comando SSH)
- … Otros comandos SSH
- Desconectarse de la base de datos de información (comando SSH)
- Iniciar Designer en modo regular
- … Modificar la base de datos de información a la que está conectado el agente de Designer
- Cerrar Designer en modo regular
- Conectarse a la base de datos de información (comando SSH)
- … Otros comandos SSH
- Desconectarse de la base de datos de información (comando SSH)
- Cerrar Designer en modo agente (comando SSH, terminación de la sesión SSH)
Comandos SSH
Puedes conectarte a Designer en modo agente a través de clientes SSH estándar, como PuTTY WinSCP MobaXterm y otros. Hasta ahora, solo hemos implementado los comandos más necesarios:
- Conectarse / desconectarse de bases de datos de información
- Volcar configuraciones a / restaurar desde archivos (incluido el volcado y la restauración parciales)
- Guardar/cargar informes externos o procesadores de datos
- Actualizar configuraciones de bases de datos
- Un número de comandos de utilidad
Consideraremos ampliar la lista de comandos en el futuro.
Ejemplo
Como se mencionó al principio, el protocolo SSH te ayudará no solo a aprovechar la línea de comandos en clientes SSH estándar, sino también a automatizar tus operaciones de Designer utilizando lenguajes de programación distintos al script de 1C:Enterprise. Por ejemplo, solo necesitas unas pocas líneas en Python (basado en la biblioteca Paramiko) para conectarte / desconectarte de una base de datos de información.
import paramiko host = ‘192.168.1.1’ user = ‘login’ secret = ‘password’ port = 1543 client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname=host, username=user, password=secret, port=port) stdin, stdout, stderr = client.exec_command(‘common connect-ib’) data = stdout.read() + stderr.read() … stdin, stdout, stderr = client.exec_command(‘common disconnect-ib’) data = stdout.read() + stderr.read() client.close()
Características específicas
Designer en sí mismo define una serie de restricciones de interacción SSH.
En primer lugar, Designer opera de tal manera que todos los comandos SSH se ejecutan de forma sincrónica. Solo se puede conectar un cliente de shell SSH y varios clientes SFTP a la base de datos de información al mismo tiempo.
En segundo lugar, existe una estricta restricción de “un agente – una base de datos de información”. Dado que la autenticación requiere un nombre de usuario y una contraseña de la base de datos de información, el agente necesita saber de inmediato (es decir, al iniciar), con qué base de datos de información trabajará.
Y en tercer lugar, una de las cosas que buscábamos al desarrollar este mecanismo era poder monitorear el progreso de la ejecución de comandos de Designer. Sin embargo, un análisis exhaustivo mostró que no todas las operaciones de Designer tienen esta opción y que implementarla es una tarea que requiere mucho tiempo. Por ahora, esta opción permanece en nuestra lista de deseos.


