WorldSkills es una competencia profesional internacional para jóvenes menores de 22 años.
Las finales internacionales se celebran cada dos años. Este año, la sede de la final fue
Kazan (la última final fue en 2017 en Abu Dhabi, la próxima será en Shanghai en 2021).
WorldSkills Championships son los campeonatos mundiales más grandes en excelencia profesional. Comenzaron con profesiones de trabajo, y en los últimos años se ha prestado cada vez más atención a las "profesiones del futuro", incluidas las disciplinas de TI, para las cuales se asignó un gran grupo separado en el campeonato en Kazan.
El bloque de TI tiene una competencia (un "deporte" específico) llamado "Soluciones de software para empresas" (Soluciones de software de TI para empresas).
En cada competencia, la lista permitida de herramientas usadas es limitada. Y si, por ejemplo, para el "diseño del paisaje" la lista de herramientas posibles es limitada (por supuesto, sin especificar un fabricante o color explícito), entonces en la competencia "Soluciones de software para empresas" la lista de tecnologías aprobadas que los participantes pueden usar está estrictamente limitada con tecnologías específicas y plataformas específicas (.NET y Java con un conjunto específico de marcos).
La posición de 1C sobre este tema es la siguiente: la tecnología de la información es un área muy dinámica, las nuevas tecnologías y herramientas de desarrollo están apareciendo constantemente en el mundo. Desde nuestro punto de vista, es correcto permitir que los especialistas utilicen las herramientas que desean y con las que están acostumbrados a trabajar.
En el otoño de 2018, la gerencia de WorldSkills nos escuchó. Ahora era necesario probar la metodología para incorporar nuevas tecnologías en las competiciones. Esto no es facil.
En la lista de infraestructura del campeonato en Kazán, incluyeron la plataforma 1C: Enterprise (1C: Enterprise) y organizaron el sitio experimental de soluciones de software de TI para Business Sandbox.

Tenga en cuenta que el idioma oficial del campeonato es el inglés. Todos los materiales con los resultados de la resolución de tareas (códigos fuente, documentación de respaldo, interfaces de software) también deben transmitirse en este idioma. A pesar de las dudas de algunas personas (¡todavía!), 1C se puede escribir en inglés.

9 niños pequeños de 8 países del mundo (Filipinas, Taiwán, Corea, Finlandia, Marruecos, Rusia, Kazajstán, Malasia) participaron en las competiciones en este sitio.
El jurado, un equipo de expertos, fue dirigido por un experto de Filipinas, Joey Manansala.

Estuvieron representados expertos de Finlandia, Emiratos Árabes Unidos, Costa Rica, Corea, Rusia y Taiwán.
Cabe señalar por separado que los participantes de Rusia (Pavkin Kirill, Sultanova Aigul) y Kazajstán (Vitovsky Ludwig) decidieron utilizar la plataforma 1C: Enterprise como parte de la competencia. Los participantes restantes utilizaron .NET para escritorio y Android Studio para desarrollo móvil. Es interesante que los participantes que eligieron 1C son muy jóvenes (Kirill es un estudiante de la escuela en Stavropol este año se mudó al 11 ° grado, Aigul es un estudiante universitario, Kazan, Tatarstán), mientras que sus rivales tenían mucha más experiencia (por ejemplo, un participante de Corea es el ganador del Campeonato del Mundo de Habilidades 2013 en Leipzig; todos tienen experiencia en WorldSkills y varios años de experiencia profesional en la industria).
Teniendo en cuenta que los participantes utilizaron varias tecnologías modernas en el marco de la competencia, tuvimos la oportunidad de probar la plataforma 1C: Enterprise en condiciones realmente de combate, para comparar tanto la calidad de las soluciones obtenidas con su ayuda como la velocidad de desarrollo lograda con su uso.
Por separado, observamos que en el marco de la plataforma especial Sandbox de soluciones de software de TI para empresas, los participantes realizaron las mismas tareas que los participantes de la plataforma principal de soluciones de software de TI para empresas.
La tarea en sí es una tarea compleja para la automatización de un determinado negocio. Este año, la empresa condicional KazanNeft se convirtió en un ejemplo de un negocio.
Leyenda
Kazan Oil es una de las compañías petroleras más grandes de la República de Tatarstán, que actúa como un actor del mercado nacional y una marca reconocida internacionalmente en este campo. La oficina central de la compañía especializada en investigación de campo, producción, producción, refinación, transporte y venta y distribución de petróleo, productos derivados del petróleo y gas natural se encuentra en Kazan (Rusia).

A medida que la compañía implementa una estrategia para la rápida expansión y creación de nuevas oficinas en toda Rusia, la gerencia de la compañía decidió introducir un nuevo software de automatización de negocios destinado a mantener y administrar ciertas operaciones.
Términos del campeonato
Se asignaron tareas a los participantes en forma de módulos (sesiones) con el requisito de implementarlas en un tiempo limitado. Había 7 módulos en total. Tres sesiones para resolver en el escritorio: 2.5 horas cada una. Tres sesiones: desarrollo cliente-servidor, donde el cliente era una aplicación móvil, y la comunicación entre el cliente y el servidor se llevó a cabo a través de la API WEB. 3.5 horas fueron asignadas para esto. La última sesión: tareas de ingeniería inversa del software existente, 2.5 horas. Como parte de la ingeniería inversa, los participantes tenían que, en función de la información que se les proporcionaba, diseñar la estructura de la base de datos de la aplicación (mediante la creación de un diagrama ER), analizar los escenarios de uso del sistema (mediante la construcción de un diagrama de casos de uso) y desarrollar y diseñar una interfaz de solución de software de acuerdo con los requisitos funcionales proporcionados .
Como plataformas de desarrollo, se utilizaron en la plataforma principal .NET (C #) y Java (incluido Android Studio para desarrollo móvil). El SandBox experimental utilizó .NET, Java y 1C: Enterprise versión 8.3.13.
De acuerdo con los resultados de cada sesión, los expertos evaluaron el resultado: un proyecto factible listo para usar que implementa las tareas establecidas al comienzo de la sesión.
Una característica de las tareas es su "vitalidad": muchos requisitos y un tiempo limitado. La mayoría de las tareas no son problemas de olimpiadas especiales, sino que están muy cerca de problemas industriales reales: los especialistas los enfrentan todos los días. Pero hay muchas tareas y el tiempo es limitado. El participante debe resolver el número máximo de tareas que tendrán el mayor beneficio para el negocio. No es en absoluto un hecho que una tarea que es difícil desde el punto de vista de los algoritmos tenga más peso que una primaria. Por ejemplo, la creación de un sistema de contabilidad funcional de tres tablas para negocios es más importante que un hermoso formulario de informes, con algoritmos complejos que son completamente innecesarios sin estas tablas.

Le pedimos al ganador de la competencia, el participante de Rusia, Kirill Pavkin, que nos contara más sobre cuáles eran las tareas y cómo abordaba su solución.

A continuación hay una descripción de la tarea, la historia del propio Cyril sobre cómo resolvió la tarea. También le pedimos a Vitaliy Rybalka, un empleado de 1C, uno de los expertos en soluciones de TI para empresas, que comentara sobre las decisiones de Cyril.
Como parte de la tarea, se requería automatizar las actividades de varios tipos de usuarios:
- Responsable de contabilizar los activos de la empresa.
- Responsable de reparaciones no programadas y mantenimiento programado de los activos de la compañía.
- Gerentes de compras de componentes y suministros
- Exploración de petróleo y unidades de producción de petróleo
- Los altos directivos necesitaban informes analíticos
Sesión 1
Desde el punto de vista de los activos (por ejemplo, una flota de automóviles), fue necesario implementar su contabilidad (establecer una nueva, editar las actuales), búsqueda rápida y varios filtros para mostrar información, mover activos entre las divisiones de la Compañía y los grupos de activos mismos. Mantenga un historial de tales movimientos y proporcione análisis sobre ellos en el futuro. La contabilidad de activos se implementó principalmente para grupos de usuarios móviles.
Kirill : Una subtarea interesante fue la implementación de botones en la lista de activos. Se utilizó una lista dinámica para la solución: escribimos una solicitud arbitraria, y cuando recibimos datos en el servidor asignamos enlaces de navegación a imágenes de la biblioteca de imágenes a los campos necesarios.
Según la condición, las fotos se pueden adjuntar a un activo de dos maneras: tomar una foto (multimedia) y seleccionarla de la galería (cuadro de diálogo de selección de archivos).
Algunas formas tuvieron que ser redibujadas cuando se rotó la pantalla:

Al cambiar la configuración de la pantalla, cambiamos la visibilidad de los grupos de botones.
Las tareas divertidas pero simples incluyen filtros en una lista dinámica, una búsqueda en dos campos (número y nombre), generación del número de serie del activo.
Comentario de expertos : desde el punto de vista de la solución en la plataforma 1C: Enterprise, la tarea es bastante comprensible. Además de crear realmente una aplicación móvil, era necesario atender la transferencia de datos desde el DBMS del "servidor" (MS SQL en el escritorio) a la aplicación móvil y viceversa. Para esto, utilizamos los mecanismos de fuentes de datos externas y servicios http en la "aplicación proxy" de escritorio. Para la plataforma móvil en sí, la mayor complejidad estuvo representada por la salida de imágenes a una lista dinámica.
Sesión 2
Era necesario establecer una gestión de reparación de los activos de la Compañía. Como parte de esta tarea, era necesario mantener una lista de solicitudes de reparaciones (por unidades y grupos), tener en cuenta las prioridades para la urgencia de las reparaciones, planificar el calendario de reparaciones de acuerdo con las prioridades, ordenar los componentes necesarios y tener en cuenta los existentes. Una subtarea interesante fue que algunos componentes tenían una fecha de vencimiento; Si una parte ya ha sido ordenada para un activo dado y su plazo no ha expirado, entonces para este activo no es necesario comprar la misma parte nuevamente. La interfaz de reparación fue desarrollada para el componente de escritorio del software de la compañía.
También fue necesario crear un formulario de autorización no trivial para dos roles: la persona responsable y el gerente de servicio. La peculiaridad radica en el hecho de que después de la autorización, debe seleccionar automáticamente uno de los roles.

El formulario de lista disponible para la persona responsable se presenta a continuación:
Kirill : Aquí solo puede resaltar la acumulación de solicitudes de servicio incompletas. Se resuelve por apariencia condicional en una lista dinámica.
Al hacer clic en el botón en la parte inferior de la pantalla, el usuario puede ir al siguiente formulario:

No hay nada complicado desde el punto de vista de 1C en esta forma.
El formulario disponible para el administrador de servicios es el siguiente:

Este formulario tiene una clasificación por prioridad y fecha de solicitud. Al hacer clic en el botón a continuación, el usuario puede ir al formulario de la solicitud seleccionada:

Además de la protección del tonto, de esta forma se propuso implementar una lista de repuestos para reparación. La subtarea es interesante porque las partes tienen una fecha de vencimiento. Esto significa que si ya se han producido situaciones de emergencia con este activo y se ha pedido una parte para él, cuya validez no ha expirado, entonces puede reutilizarse. Esto debe mostrarse al usuario.
Comentario experto : aquí el propio Cyril enfatizó correctamente. Desde el punto de vista de la implementación en la plataforma 1C: Enterprise, no hay nada desalentador. Se requirió un análisis cuidadoso de las condiciones para la contabilidad y el uso de repuestos y la implementación competente de la tarea en su conjunto. Además, era necesario configurar correctamente la contabilidad de las solicitudes de servicio. La principal dificultad fue solo la presión del tiempo a las 2.5 horas.
Además, como en el desarrollo móvil, el participante debe recibir correctamente los datos de un DBMS externo (MS SQL).
Sesión 3
Para el mantenimiento (mantenimiento) se propuso implementar un servicio de planificación a largo plazo. Una característica interesante aquí fue el requisito de formar un programa de mantenimiento para los activos según los términos, por ejemplo, cada dos meses del tercer día. Entonces, para algún tipo de indicador cuantitativo, por ejemplo, el cuentakilómetros de un automóvil (cambio de aceite cada 5000 km, cambio de neumáticos cada 20,000 km). El gerente de mantenimiento debería haber recibido una aplicación móvil conveniente que muestra dinámicamente una lista de mantenimiento caducado, actual y completado durante el período especificado. Además, cada tipo de mantenimiento debería haber sido pintado en color de acuerdo con reglas especialmente acordadas. Se suponía que la aplicación móvil proporcionaría el establecimiento de nuevos programas de mantenimiento y marcaría ya completada directamente en los talleres con la actualización operativa de esta información en el servidor.
Cyril : Hay dos tipos de reparaciones: basadas en el tiempo (basadas en el tiempo) y en kilometraje (basadas en la ejecución). Dentro de cada variación está permitido. Por ejemplo, un plan de reparación debe ocurrir todos los viernes 13 de cada mes o cada 20,000 kilómetros. Una tarea se considera completa si hay una marca de verificación a la derecha de la misma.
Se proporcionó una condición para ordenar tareas en una lista. Además, cada línea debe resaltarse según las condiciones.
Cuando hace clic en el botón a continuación, puede crear un nuevo plan de servicio:

Los campos obligatorios se muestran según el tipo de gráfico seleccionado. Si seleccionamos un horario semanal, se nos mostrarán dos campos: número de semana y día de la semana. Por ejemplo, los martes cada 3 semanas.
Comentario de expertos : como en el desarrollo móvil anterior en la plataforma 1C: Enterprise, la tarea aquí se dividió globalmente en 2 componentes: comunicación con el "servidor" a través de la API web y visualización competente de una lista dinámica con formato condicional y filtrado (selección) de datos. Además, el requisito de contabilizar las reparaciones tanto por períodos como en términos de cantidad fue interesante para la implementación.
Sesión 4
Para los componentes y consumibles se requería tener en cuenta las existencias, planificar los gastos y futuras compras. Además, las cuentas por lotes aparecieron aquí, pero no para todos los productos. Todo esto tuvo que llevarse a cabo en el marco de muchos almacenes, incluidos recibos, gastos y movimiento. Según las condiciones de la tarea, era necesario asegurar el control de los saldos y evitar conflictos al trabajar con reservas reales. Los gerentes de compras trabajan en la versión de escritorio del software.
El formulario principal se presenta a continuación:
Cyril : Además de ordenar de la condición, se propuso dar al usuario la opción de ordenar arbitrariamente. En 1C, ni siquiera puedes pensar en ello. El campo con el número de partes debe resaltarse en verde para las facturas entrantes.
En esta sesión, solicitaron controlar los saldos de bienes en los almacenes. Por lo tanto, se debe mostrar el mensaje apropiado al intentar eliminar un recibo. Aquí recordamos el examen para un especialista en plataformas. Formulario de factura a continuación:

Cada parte tiene una característica por la cual se determina si debe adjuntarse a una parte en particular. Para tales repuestos, es necesario indicar el número de lote en todos los documentos. Esta es una medida adicional cuando se monitorean las partes residuales. También se pueden mover entre almacenes:

El formulario difiere del anterior solo en que, en lugar del cliente, es necesario indicar el almacén desde el que se realizará la entrega. La lista de selección para el lote se compila automáticamente después de la selección de la pieza. El usuario puede generar un informe sobre el saldo de repuestos:

Aquí podemos ver los productos restantes en el almacén seleccionado. Las casillas de verificación a la derecha del almacén le permiten configurar el filtrado y la clasificación. La lista no tiene una separación explícita de lotes para las partes para las que se requiere. Los saldos para cada número de lote de la pieza de repuesto seleccionada se pueden ver utilizando el enlace de navegación a la derecha.
Comentario de expertos : en esta sesión (módulo), apareció por primera vez la contabilidad de partidos. Los participantes debían considerar los consumibles y bienes no solo por su cuenta, sino también en lotes. En general, la tarea es perfectamente adecuada para la plataforma 1C: Enterprise: solo para desarrollarlo todo, tenía que comenzar desde cero y tener tiempo en 2.5 horas.
Sesión 5
En la quinta sesión, nos encargaron la funcionalidad de gestión de pozos. Para los grupos de reconocimiento, fue necesario crear una aplicación móvil que registre pozos para la producción de petróleo o gas. Aquí fue necesario obtener una lista de pozos reales del servidor y mostrar un pozo seleccionado gráficamente en capas (suelo, arena, piedra, petróleo) teniendo en cuenta las profundidades de cada capa. Además, se suponía que la aplicación permitiría actualizar la información sobre el pozo y agregar nuevos pozos. Para esta aplicación, el cliente establece condiciones de trabajo especiales en modos fuera de línea y en línea (control de la comunicación con el servidor): verifica la comunicación con el servidor cada 5 segundos y cambia la funcionalidad de la aplicación según la disponibilidad del servidor.
Cirilo : al elegir un pozo, se muestra un gráfico de barras, en el que se resaltan las capas de los depósitos de petróleo o gas. Para cada capa, se almacenan su nombre, color y rango. Debido a las características de diseño, los diagramas integrados en la plataforma no se guardan, pero el documento de hoja de cálculo hace un excelente trabajo. Los pozos se pueden crear y modificar:

Además de la protección múltiple del tonto, no había nada interesante en esta forma.
Se propuso además controlar la conexión al servidor. Cada 5 segundos intentamos conectarnos. Si no funciona, limitamos la funcionalidad de la aplicación y mostramos un mensaje.
Comentario de expertos : la tarea de esta sesión es principalmente interesante por sus capacidades gráficas. Los participantes que usaron la plataforma 1C: Enterprise lo resolvieron de dos maneras diferentes: alguien que usa un motor de diagrama, alguien que usa un documento de hoja de cálculo. Cada uno de los métodos tiene sus pros y sus contras. Como parte de la decisión en el campeonato de WorldSkills, la clave era el tiempo (de nuevo, recuerde el límite de tiempo). Una tarea interesante por separado es hacer ping al servidor cada 5 segundos y cambiar el comportamiento de la aplicación móvil dependiendo de la disponibilidad o inaccesibilidad del servidor.
Sesión 6
Para la alta gerencia, se propuso crear un espacio de trabajo: Panel de control. En una pantalla era necesario mostrar los indicadores generales de la empresa para el período especificado en forma gráfica y tabular. El formulario principal es el informe de costos:
además del Tablero, fue necesario implementar la distribución de repuestos para reparaciones de activos utilizando los métodos de desmantelamiento FIFO / LIFO / "El más barato sale primero".Al distribuir, se tuvo en cuenta la contabilidad de lotes, se utilizó el control de saldos y la protección contra acciones no autorizadas del usuario ("protección contra el tonto").Kirill : Para la solución, se usaron tablas de valores con generación de columnas de software, ya que puede haber cualquier cantidad de columnas:, .
. XML- , .
:

- . , . (FIFO, LIFO ) , . . . , .
: . 1: – , ( – , — ), . LIFO/FIFO , / ..
7
(7 ) (exe-) . - 2 : -. , – .
MS Visio.
: 1: . MS Visio. 1.
SQL-. 1C C#, , . - Execute Microsoft SQL Studio.
. . http-.
: 1/1 – 1: ( ), C#/Java (Android Studio ) – , . . – .
:), « » – , , , . 4 , . , 100% .
.
, , , , , .
— , - . .
Resultados
.
, 1:. 17 , .
. . :

, , .
, , 1:, — 1:.
Según los resultados de la competencia, se realizó una ceremonia gratificante en el centro de medios KazanExpo, los muchachos recibieron medallas de oro puro (de acuerdo con el lugar ocupado) y premios en efectivo. Los muchachos también recibieron certificados que les permitieron completar una pasantía en 1C.