世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜
世界技能大赛 是一项为22岁以下青少年组织职业比赛的国际运动。

国际决赛每两年举行一次。 今年的决赛场地是 喀山 (上届决赛于 2017 年在阿布扎比举行,下届决赛将于 2021 年在上海举行)。

世界技能锦标赛是世界上最大的职业技能锦标赛。 他们从蓝领职业开始,近年来越来越多地关注“未来的职业”,包括IT学科,喀山锦标赛上为这些职业分配了一个单独的巨大集群。

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

在 IT 领域,有一项能力(一项特定的“运动”),称为“商业 IT 软件解决方案”。

在每场比赛中,允许使用的工具清单都是有限的。 例如,如果对于“景观设计”,可能的工具列表是有限的(当然,没有指明明确的制造商或颜色),那么在“商业软件解决方案”能力中,参与者可以使用的可接受技术列表受到严格限制,表示特定的技术和特定的平台(.NET 和 Java 以及一组特定的框架)。

1C对此问题的立场是:信息技术是一个非常活跃的领域,世界上不断出现新技术和开发工具。 从我们的角度来看,允许专家使用他们想要且习惯于工作的工具是正确的。

2018 年秋天,世界技能大赛管理层听到了我们的声音。 现在我们必须测试将新技术融入比赛的方法。 这并不简单。

1C:企业平台被列入喀山锦标赛基础设施清单,并组织了商业沙盒IT软件解决方案实验平台。

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

请注意,锦标赛的官方语言是英语。 所有包含解决任务结果的材料(源代码、随附文档、软件界面)也将以这种语言传输。 尽管有些人有疑问(仍然如此!),你可以在 1C 中用英语写作。

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

来自9个国家(菲律宾、台湾、韩国、芬兰、摩洛哥、俄罗斯、哈萨克斯坦、马来西亚)的8名小伙子在本站参加了比赛。

评审团是一个专家团队,由来自菲律宾的专家乔伊·马南萨拉 (Joey Manansala) 领导。

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

来自芬兰、阿联酋、哥斯达黎加、韩国、俄罗斯和台湾的专家出席了会议。

另外,我们注意到来自俄罗斯(Pavkin Kirill、Sultanova Aigul)和哈萨克斯坦(Vitovsky Ludwig)的参赛者决定使用 1C:Enterprise 平台作为竞赛的一部分。 其余参与者使用 .NET 进行桌面开发,使用 Android Studio 进行移动开发。 有趣的是,选择1C的参与者都很年轻(基里尔是斯塔夫罗波尔一所学校的学生,今年进入11年级,艾古尔是鞑靼斯坦喀山的大学生),而他们的对手则经验丰富得多(例如,一位来自韩国的参赛者——2013年莱比锡世界技能大赛冠军;所有人都有参加世界技能大赛的经验和多年的行业专业经验)。

考虑到参赛者在比赛期间使用了各种现代技术,我们有机会在真实的战斗条件下测试 1C:Enterprise 平台,以比较在其帮助下获得的解决方案的质量以及使用其实现的开发速度。

另外,我们注意到,在特殊的商业 IT 软件解决方案沙盒平台框架内,参与者完成了与主要的商业 IT 软件解决方案平台参与者相同的任务。

该任务本身是一项自动化特定业务的复杂任务;今年的业务示例是虚构的 KazanNeft 公司。

传说

喀山石油公司是鞑靼斯坦共和国最大的石油企业之一,是该领域的全国市场参与者和国际知名品牌。 该公司总部位于喀山(俄罗斯),专门从事石油、石油产品和天然气的现场勘探、生产、生产、精炼、运输以及销售和分销。

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

由于公司正在俄罗斯各地实施快速扩张和设立新办事处的战略,公司管理层决定引入新的业务自动化软件,旨在维护和管理某些运营。

冠军条件

任务以模块(会话)的形式分配给参与者,并要求在有限的时间内完成。 总共有7个模块。 三个在桌面上解决问题的课程 – 每个 2.5 小时。 三个会话 - 客户端-服务器开发,其中客户端是移动应用程序,客户端和服务器之间的通信通过 WEB-API 进行。 这花了 3.5 小时。 最后一节课——现有软件的逆向工程任务,2.5 小时。 作为逆向工程的一部分,参与者必须根据提供给他们的信息,设计应用程序数据库的结构(通过构建 ER 图),分析使用系统的场景(通过构建用例图),以及根据所提供的功能需求,开发设计软件解决方案的界面。

使用的主要开发平台是.NET(C#)和Java(包括用于移动开发的Android Studio)。 实验性 SandBox 使用 .NET、Java 和 1C:Enterprise 版本 8.3.13。

在每次会议结束时,专家们都会评估结果——一个现成的可行项目,可以实施会议开始时设定的任务。

任务的特殊性在于它们的“活力”——要求多且时间有限。 大多数问题不是特殊的奥林匹克问题,而是非常接近实际的工业问题 - 专家们每天都会遇到它们。 但任务很多,时间也有限。 参与者必须解决最多数量的问题,从而为企业带来最大的利益。 从算法的角度来看,复杂的任务比基本的任务更重要,这根本不是事实。 例如,对于企业来说,创建一个由三个表组成的功能齐全的会计系统比一个具有复杂算法的漂亮报表更重要,如果没有这些表,这是完全没有必要的。

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

我们请比赛的获胜者、来自俄罗斯的参赛者基里尔·帕夫金 (Kirill Pavkin) 告诉我们更多有关任务是什么以及他如何解决问题的信息。

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

以下是该任务的描述,基里尔自己关于他如何解决该任务的故事。 我们还请 1C 员工、商业沙箱 IT 解决方案专家之一 Vitaly Rybalka 对 Kirill 的解决方案发表评论。

作为任务的一部分,有必要自动化几种类型用户的活动:

  • 负责公司资产的会计核算
  • 负责公司资产的计划外维修和计划维护
  • 零部件和消耗品采购经理
  • 石油勘探和石油生产部门
  • 高层管理人员需要分析报告

第七场

从资产(例如车队)的角度来看,有必要实现其会计(建立新资产、编辑现有资产)、快速搜索和各种过滤器以显示信息、在公司部门之间移动资产以及资产组本身。 保留此类运动的历史记录并在将来提供分析。 资产核算主要针对移动用户群体进行。

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

西里尔:一个有趣的子任务是资产列表中按钮的实现。 为了解决这个问题,我们使用了动态列表:我们编写任意请求,当在服务器上接收数据时,我们将图像库中图像的导航链接分配到所需字段。

按照惯例,照片可以通过两种方式附加到资产:拍摄照片(多媒体)和从图库中选择(文件选择对话框)。

当屏幕旋转时,一些形状需要重新绘制:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

当更改屏幕参数时,我们会更改按钮组的可见性。

有趣但简单的任务包括动态列表中的过滤器、在两个字段(编号和名称)中搜索以及生成资产序列号。

专家评论:从1C:Enterprise平台上的解决方案来看,任务是相当明确的。 除了实际创建移动应用程序之外,还必须负责将数据从 DBMS“服务器”(桌面上的 MS SQL)传输到移动应用程序并返回。 为此,在桌面“代理应用程序”中使用了外部数据源和http服务的机制。 对于移动平台本身来说,在动态列表中显示图片增加了复杂性。

第七场

有必要对公司资产建立修复管理。 作为这项任务的一部分,有必要维护一份维修请求清单(按部门和小组),考虑维修紧急程度的优先级,根据优先级规划维修时间表,订购必要的组件并采取措施考虑到现有的。 一个有趣的子任务是某些组件有过期日期; 如果已经为给定资产订购了零件并且其截止日期尚未到期,则对于该资产无需再次购买相同的零件。 修复界面是为该公司软件的桌面组件开发的。

还需要为两个角色创建一个重要的授权表单:负责人和服务经理。 特殊之处在于,授权后您必须自动选择其中一个角色。

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

负责人可用的清单表格如下:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

西里尔:此处只能突出显示待处理的服务请求。 通过动态列表中的条件格式来解决。

通过单击屏幕底部的按钮,用户可以转到以下表单:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

从1C的角度来看,这种形式没有什么复杂的。

服务经理可用的表格如下:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

该表格按优先级和请求日期排序。 通过单击下面的按钮,用户可以转到所选请求的表单:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

除了万无一失之外,该表格还建议实施一份维修备件清单。 该子任务很有趣,因为零件有到期日期。 这意味着,如果该资产已经发生紧急情况并且为其订购了零件,且其有效期尚未过期,则可以重复使用。 这应该显示给用户。

专家评论:基里尔本人在这里正确地放置了重音。 从1C:Enterprise平台上的实现来看,并没有什么极其复杂的地方。 需要仔细分析备件的核算和使用条件以及整个任务的有效实施。 此外,有必要正确记录服务请求。 主要困难只是2.5小时的时间压力。

此外,与移动开发一样,参与者必须能够从外部 DBMS (MS SQL) 获取数据。

第七场

对于维护(维护),建议实施长期规划服务。 这里的一个有趣的功能是要求根据时间创建资产维护计划 - 例如,每两个月的第三天。 同样,根据一些定量指标 - 例如,根据汽车的里程表(每 3 公里更换一次机油,每 5000 公里更换一次轮胎)。 维护经理应该收到一个方便的移动应用程序,该应用程序可以动态显示指定时间段内过期、当前和已完成的维护列表。 此外,每种类型的维护都必须根据特别商定的规则涂上颜色。 移动应用程序应该确保创建新的维护计划并标记已直接在车间完成的维护计划,并在服务器上及时更新此信息。

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

西里尔:有两种类型的修复:基于时间的修复和基于运行的修复。 每个内部都允许有变化。 例如,按照计划,每周五、13日或每20,000万公里进行一次维修。 如果任务右侧有复选标记,则任务被视为已完成。

提供了对列表中的任务进行排序的条件。 此外,每行应根据情况以颜色突出显示。

通过单击下面的按钮,您可以创建新的服务计划:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

根据所选图表类型显示所需字段。 如果我们选择了每周时间表,那么我们将显示两个字段:周数和星期几。 例如,每三周的星期二。

专家评论:与之前 1C:Enterprise 平台上的移动开发一样,这里的任务全局分为 2 个部分 - 通过 web-api 与“服务器”通信,以及通过条件设计和过滤(选择)显示动态列表。数据。 此外,执行按期间和定量指标核算维修的要求也很有趣。

第七场

对于零部件和消耗品,有必要考虑库存、计划费用和未来采购。 另外,这里出现了批量核算,但并不是针对所有货物。 所有这些都必须在多个仓库内进行管理,包括收货、支出和移动。 根据任务条款,在处理当前库存时,必须确保控制余额并避免冲突。 采购经理使用该软件的桌面版本工作。

主要形式如下图所示:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

西里尔:除了根据条件排序之外,还建议给予用户随机排序的能力。 在 1C 上你甚至不需要考虑它。 对于发票,零件数量字段应以绿色突出显示。

在这次会议中,他们被要求控制仓库中的剩余货物。 因此,当您尝试删除发票时,应该会显示相应的消息。 这里我们记住平台专家考试。 发票格式如下:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

每个零件都有一个特征,决定是否应将其分配到特定批次。 对于此类备件,必须在所有文件中注明批号。 这是监测零件残留物时的附加测量。 它们还可以在仓库之间移动:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

该表格与前一个表格的不同之处仅在于,您需要指示将进行交货的仓库,而不是客户。 选择零件后,会自动编译批次的选择列表。 用户可以生成备件余额报告:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

在这里我们可以查看所选仓库中的剩余货物。 仓库右侧的复选框允许您配置过滤和排序。 该列表没有对需要的部件进行明确的批次划分。 可以使用右侧的导航链接查看所选备件每个批次号的余额。

专家评论:在这个会话(模块)中,批量记账首次出现。 参与者不仅要对消耗品和货物进行清点,还要按批次进行清点。 总的来说,该任务非常适合 1C:Enterprise 平台 - 但一切都必须从头开始开发并在 2.5 小时内完成。

第七场

在第五节课中,我们被分配了井管理的职能。 对于勘探团体来说,有必要创建一个移动应用程序来说明石油或天然气生产井的情况。 在这里,需要从服务器接收当前井的列表,并按层(土壤、沙子、石头、石油)以图形方式显示所选井,同时考虑到每层的深度。 此外,应用程序必须允许更新有关井的信息并添加新井。 对于此应用程序,客户在离线和在线模式下设置特殊的操作条件(控制与服务器的通信) - 每 5 秒检查一次与服务器的通信,并根据服务器的可用性更改应用程序的功能。

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

西里尔:选择一口井时,会显示一个条形图,突出显示直至石油或天然气矿床的各层。 对于每个图层,其名称、颜色和出现范围都被存储。 由于设计特点,平台内置的图表没有帮助,但电子表格文档可以完美地应对任务。 可以创建和修改井:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

除了多重万无一失的防护之外,这个形态并没有什么有趣的地方。
接下来,建议控制与服务器的连接。 我们尝试每 5 秒连接一次。 如果它不起作用,那么我们会限制应用程序的功能并显示一条消息。

专家评论:本次会议的任务很有趣,主要是因为它的图形功能。 使用 1C:Enterprise 平台的参与者以两种不同的方式解决了这个问题 - 一些使用图表机制,另一些使用电子表格文档。 每种方法都有其优点和缺点。 作为世界技能锦标赛决策的一部分,时间是关键(再次记住时间限制)。 另一个有趣的任务是每 5 秒对服务器执行 ping 操作,并根据服务器的可用性或不可用性更改移动应用程序的行为。

第七场

建议为高层管理人员创建一个工作区——Dashboard。 在一个屏幕上需要以图形和表格的形式显示公司在指定时期内的总体绩效指标。 主要形式是成本报告:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

除了仪表板之外,还需要使用先进先出/后进先出/“最便宜的先”核销方法来实施资产维修备件的分配。

在分发过程中,考虑了批量记账、余额控制和针对未经授权的用户操作的保护(“傻瓜保护”)。

西里尔:为了解决这个问题,使用了带有软件生成列的值表,因为它们可以有任意数量:

  • 第一个表负责按月划分部门的总成本。 最不盈利和最盈利的部门分别以红色和绿色突出显示。
  • 第二个表显示了每个月最昂贵和最常用的部件。 如果有多个部分符合条件,则应将它们显示在一个单元格中,并用逗号分隔。
  • 最昂贵的资产(就备件成本而言)显示在第三个表的第一行中。 第二行显示上述资产所属的部门。 如果有两个最昂贵的资产具有相同的成本,那么它们应该显示在同一个单元格中,并用逗号分隔。

这些图表是使用平台的内置机制显示的,并使用查询以编程方式填充。

还建议实施对多种语言的支持。 该程序加载带有界面元素本地化的 XML 文件,并且在下拉列表中选择语言时应重新绘制表单。

当您单击屏幕左下角的按钮时,将打开库存管理表单:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

在这种形式下,我们终于开始花费零件进行维修。 在这里,我们首先找到修复资产所需的零件。 根据所选字段和分配方法(先进先出、后进先出或最低价格),将显示找到的匹配项或显示一条消息(如果没有匹配项)。 然后,您可以将零件标记为用于修复该资产。 余额控制与当前会话相关。 如果我们已经分配了详细信息,那么就无法再找到它们。

专家评论: 非常有趣的会议。 它充分利用了 1C:Enterprise 平台的功能 - 这里可以处理累积寄存器的虚拟表,以及处理表单元素(首先是表格,其次是标题)和图表的编程工作。 甚至在分析库存、损益分析等时采用后进先出/先进先出法。

第七场

在任务(第 7 节)结束时,客户提供了用于项目活动的软件(exe 文件)以及使用该软件的简短视频。 有必要进行逆向工程,并在此基础上创建两个图:用例图和实体关系图。 此外,还对未来创建软件提出了一些要求——需要根据这些要求创建界面布局。

根据比赛条件,只需要MS Visio即可创建图表。

专家评论:在本次会议中,1C:Enterprise 平台的功能实际上没有被使用。 比赛条件图表是在 MS Visio 中创建的。 但是可以在空的 1C 信息库中创建界面原型。

总论

在每个会话开始时,建议使用 SQL 脚本导入数据。 与 C# 相比,这是使用 1C 的主要缺点,因为我们至少花了半个小时将数据提取到外部数据源、创建我们自己的表以及将行从外部源移动到我们的表中。 剩下的只需单击 Microsoft SQL Studio 中的“执行”按钮即可。

出于显而易见的原因,在移动设备上存储数据并不是一个好主意。 因此,在移动会话期间,我们创建了一个服务器库。 他们在那里存储数据并通过 http 服务提供对其的访问。

专家评论:1C/非 1C 平衡在这里很有趣 - 而 1C:企业程序员花费大量时间连接到外部 DBMS(Kirill 在上面单独提到了这一点),C#/Java(用于移动开发的 Android Studio)开发人员将时间花在其他领域 -接口,编写更多代码。 因此,每次会议的结果都是不可预测的,并且对所有专家来说都非常有趣。 而这种阴谋一直持续到最后——看看最终的胜者表和积分分配就知道了。

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜
基里尔讲完了这个故事:)

总之,应该记住,执行者不需要“仅仅根据技术规范对任务进行编程”——他必须分析任务,选择用于实现子任务的块,设计它们并决定他到底要做什么能够在极短的分配时间内实施。 在这四天里,我都必须在严重的时间压力下行动,经常从头开始每个后续的训练。 即使是具有多年行业经验的成年专家也很难在规定时间内 4% 完成会议指定的任务。

所采用的评估体系值得特别提及。

对于每个会话,任务作者都会开发一个复杂的标准系统,包括检查功能、正确操作、应用程序界面的要求,甚至遵循他们正在为其开发解决方案的公司专门提供给参与者的风格指南。

评估标准非常细化——会话任务的总成本为几十分,满足某些标准可以为参与者增加十分之一分。 这实现了对每位参赛者成绩的极高且客观的评估。

结果

最终的结果令人印象深刻。

经过一番苦战,使用1C:Enterprise平台的来自俄罗斯的基里尔·帕夫金(Kirill Pavkin)获胜。 基里尔今年17岁,来自斯塔夫罗波尔。

从字面上看,获胜者与追赶者之间仅相差十分之一分。 第二名是来自台湾的选手。 前六名结果的总表如下所示:

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

当然,基里尔获胜要归功于他的才华、知识和技能。

但我们注意到,使用1C:Enterprise平台作为工具的三位参与者全部​​进入了前五名——这无条件证实了1C:Enterprise技术的世界水平。

比赛结果公布后,获奖者在喀山博览会媒体中心接受了颁奖;他们获得了纯金牌(根据排名)和现金奖励。 这些人还获得了在 1C 实习的证书。

世界技能大赛决赛,商业 IT 解决方案开发 - 它是什么、它是如何发生的以及为什么 1C 程序员能够获胜

来源: habr.com

添加评论