Den internationale finale afholdes hvert andet år. I år var det sidste mødested
WorldSkills Championships er verdens største mesterskaber i professionelle færdigheder. De startede med håndværkerfag, og i de senere år er der blevet mere og mere opmærksomhed på "fremtidens fag", herunder it-discipliner, som der blev tildelt en separat kæmpe klynge til ved mesterskabet i Kazan.
I IT-blokken er der en kompetence (en specifik "sport") kaldet "IT Software Solutions for Business".
I hver konkurrence er den tilladte liste over brugte værktøjer begrænset. Og hvis for eksempel for "landskabsdesign" listen over mulige værktøjer er begrænset (selvfølgelig uden at angive en eksplicit producent eller farve), så er der i kompetencen "Softwareløsninger til erhvervslivet" listen over accepterede teknologier, som deltagerne kan bruge er strengt begrænset, hvilket indikerer specifikke teknologier og specifikke platforme (.NET og Java med et specifikt sæt rammer).
1C's holdning til dette spørgsmål er som følger: informationsteknologi er et meget dynamisk område, nye teknologier og udviklingsværktøjer dukker konstant op i verden. Fra vores synspunkt er det korrekt at give specialister mulighed for at bruge de værktøjer, som de ønsker og er vant til at arbejde med.
I efteråret 2018 hørte WorldSkills-ledelsen os. Nu skulle vi teste metoden til at inkorporere nye teknologier i konkurrencer. Det er ikke enkelt.
1C:Enterprise-platformen blev inkluderet på infrastrukturlisten for mesterskabet i Kazan, og der blev organiseret en eksperimentel platform for IT-softwareløsninger til virksomheders sandkasse.
Bemærk venligst, at det officielle sprog for mesterskabet er engelsk. Alt materiale med resultater fra løsning af opgaver (kildekoder, medfølgende dokumentation, softwaregrænseflader) skulle også transmitteres på dette sprog. På trods af nogle menneskers tvivl (stadig!), kan du skrive på engelsk i 1C.
9 unge fyre fra 8 lande (Filippinerne, Taiwan, Korea, Finland, Marokko, Rusland, Kasakhstan, Malaysia) deltog i konkurrencen på denne side.
Juryen - et team af eksperter - blev ledet af en ekspert fra Filippinerne, Joey Manansala.
Eksperter fra Finland, UAE, Costa Rica, Korea, Rusland og Taiwan var repræsenteret.
Separat bemærker vi, at deltagere fra Rusland (Pavkin Kirill, Sultanova Aigul) og Kasakhstan (Vitovsky Ludwig) besluttede at bruge 1C:Enterprise-platformen som en del af konkurrencen. Resten af deltagerne brugte .NET til desktop og Android Studio til mobil udvikling. Det er interessant, at deltagerne, der valgte 1C, er meget unge (Kirill er studerende på en skole i Stavropol, i år gik han ind i 11. klasse, Aigul er universitetsstuderende, Kazan, Tatarstan), mens deres modstandere var meget mere erfarne ( for eksempel en deltager fra Korea - vinder af 2013 WorldSkills mesterskabet i Leipzig; alle har erfaring med at deltage i WorldSkills og flere års professionel erfaring i branchen).
I betragtning af, at deltagerne under konkurrencen brugte forskellige moderne teknologier, havde vi chancen for at teste 1C:Enterprise-platformen under virkelige kampforhold, for at sammenligne både kvaliteten af de løsninger, der blev opnået med dens hjælp, og udviklingshastigheden opnået med brugen.
Separat bemærker vi, at deltagerne inden for rammerne af den særlige IT Software Solutions for Business Sandbox-platform udførte de samme opgaver som deltagere i den primære IT Software Solutions for Business-platform.
Selve opgaven er en kompleks opgave til at automatisere en bestemt virksomhed; i år var eksemplet på en virksomhed den fiktive virksomhed KazanNeft.
legende
Kazan Oil er en af de største olievirksomheder i Republikken Tatarstan, der opererer som en national markedsaktør og et internationalt anerkendt mærke på dette område. Virksomhedens hovedkontor, der specialiserer sig i feltudforskning, produktion, produktion, raffinering, transport og salg og distribution af olie, olieprodukter og naturgas, ligger i Kazan (Rusland).
Da virksomheden implementerer en strategi med hurtig udvidelse og oprettelse af nye kontorer i hele Rusland, besluttede virksomhedens ledelse at introducere ny software til forretningsautomatisering, der sigter mod at vedligeholde og styre visse operationer.
Mesterskabsforhold
Opgaver blev givet til deltagerne i form af moduler (sessioner) med krav om at gennemføre dem på en begrænset tid. Der var i alt 7 moduler. Tre sessioner til løsning på en desktop – 2.5 time hver. Tre sessioner - klient-server udvikling, hvor klienten var en mobil applikation, og kommunikationen mellem klient og server foregik via WEB-API. Dette tog 3.5 timer. Sidste session – opgaver om reverse engineering af eksisterende software, 2.5 time. Som en del af reverse engineering skulle deltagerne, baseret på de oplysninger, de fik, designe strukturen af applikationsdatabasen (ved at bygge et ER-diagram), analysere scenarier for brug af systemet (ved at bygge et use case-diagram) og også udvikle og designe grænsefladen til softwareløsningen i overensstemmelse med de stillede funktionskrav.
De vigtigste udviklingsplatforme, der blev brugt, var .NET (C#) og Java (inklusive Android Studio til mobiludvikling). Den eksperimentelle SandBox brugte .NET, Java og 1C:Enterprise version 8.3.13.
I slutningen af hver session vurderede eksperterne resultatet - et færdiglavet brugbart projekt, der implementerer de opgaver, der blev stillet i begyndelsen af sessionen.
Det særlige ved opgaver er deres "vitalitet" - mange krav og begrænset tid. De fleste af problemerne er ikke specielle Olympiade-problemer, men er meget tæt på reelle industrielle problemer - specialister står over for dem hver dag. Men der er mange opgaver, og tiden er begrænset. Deltageren skal løse det maksimale antal problemer, der vil have størst gavn for virksomheden. Det er slet ikke et faktum, at en kompleks opgave ud fra et algoritmisk synspunkt vil have større vægt end en elementær. For eksempel er det vigtigere for en virksomhed at skabe et fungerende regnskabssystem med tre tabeller end en smuk indberetningsformular med komplekse algoritmer, hvilket er helt unødvendigt uden disse tabeller.
Vi bad vinderen af konkurrencen, en deltager fra Rusland, Kirill Pavkin, om at fortælle os mere om, hvad opgaverne var, og hvordan han greb deres løsning an.
Nedenfor er en beskrivelse af opgaven, Kirills egen historie om hvordan han løste opgaven. Vi bad også Vitaly Rybalka, en 1C-medarbejder og en af IT Solutions for Business Sandbox-eksperterne, om at kommentere Kirills løsninger.
Som en del af opgaven var det nødvendigt at automatisere aktiviteterne for flere typer brugere:
- Ansvarlig for regnskabsføring af virksomhedens aktiver
- Ansvarlig for uplanlagte reparationer og planlagt vedligeholdelse af virksomhedens aktiver
- Indkøbsansvarlige for komponenter og forbrugsvarer
- Olieefterforskning og olieproduktionsafdelinger
- Topledelsen havde brug for analytiske rapporter
Session 1
Med hensyn til aktiver (f.eks. en bilflåde) var det nødvendigt at implementere deres regnskaber (etablering af nye, redigering af nuværende), hurtig søgning og forskellige former for filtre til visning af information, flytning af aktiver mellem virksomhedens divisioner og grupper af aktiver selv. Hold en historie om sådanne bevægelser og giv analyser om dem i fremtiden. Asset accounting blev hovedsageligt implementeret til mobile brugergrupper.
Cyril: En interessant underopgave var implementeringen af knapper i aktivlisten. For at løse dette brugte vi en dynamisk liste: vi skriver en vilkårlig anmodning, og når vi modtager data på serveren, tildeler vi navigationslinks til billeder fra billedbiblioteket til de påkrævede felter.
Efter konvention kan billeder knyttes til et aktiv på to måder: Tag et billede (multimedier) og vælg fra galleriet (dialogboks til valg af fil).
Nogle figurer skulle tegnes igen, når skærmen blev roteret:
Ved ændring af skærmparametre ændrer vi synligheden af knapgrupper.
Underholdende, men enkle opgaver omfatter filtre i en dynamisk liste, søgning i to felter (nummer og navn) og generering af et aktivs serienummer.
Ekspertkommentar: set fra løsningens synspunkt på 1C:Enterprise platformen er opgaven ret klar. Udover selve oprettelsen af mobilapplikationen var det nødvendigt at sørge for at overføre data fra DBMS "serveren" (MS SQL på skrivebordet) til mobilapplikationen og tilbage. Til dette formål blev mekanismerne fra eksterne datakilder og http-tjenester brugt i desktop-"proxy-applikationen". For selve den mobile platform gav visning af billeder i en dynamisk liste øget kompleksitet.
Session 2
Det var nødvendigt at etablere reparationsstyring for selskabets aktiver. Som en del af denne opgave var det nødvendigt at vedligeholde en liste over anmodninger om reparationer (efter afdelinger og grupper), tage højde for prioriteterne for, hvor hastende reparationer, planlægge en reparationsplan i overensstemmelse med prioriteter, bestille de nødvendige komponenter og tage hensyntagen til de eksisterende. En interessant delopgave var, at nogle komponenter havde en udløbsdato; hvis en del allerede er bestilt til et givent aktiv, og dens frist ikke er udløbet, så er det for dette aktiv ikke nødvendigt at købe den samme del igen. Reparationsgrænsefladen er udviklet til desktop-komponenten i virksomhedens software.
Det var også nødvendigt at oprette en ikke-triviel autorisationsformular for to roller: den ansvarlige person og servicechefen. Det særlige er, at du efter autorisation automatisk skal vælge en af rollerne.
Listeformularen, der er tilgængelig for den ansvarlige person, er vist nedenfor:
Cyril: Kun fremhævelsen af afventende serviceanmodninger kan fremhæves her. Løsning ved betinget formatering i en dynamisk liste.
Ved at klikke på knappen nederst på skærmen kan brugeren gå til følgende formular:
Der er ikke noget kompliceret fra et 1C synspunkt i denne form.
Den formular, der er tilgængelig for servicechefen, er nedenfor:
Denne formular er sorteret efter prioritet og dato for anmodning. Ved at klikke på knappen nedenfor kan brugeren gå til formularen for den valgte anmodning:
Ud over idiotsikring foreslog denne formular at implementere en liste over reservedele til reparationer. Delopgaven er interessant, fordi delene har en udløbsdato. Det betyder, at hvis der allerede er opstået en nødsituation med dette aktiv, og der er bestilt en del til det, hvis gyldighedsperiode ikke er udløbet, så kan det genbruges. Dette skal vises til brugeren.
Ekspertkommentar: her placerede Kirill selv accenterne korrekt. Fra et synspunkt om implementering på 1C:Enterprise-platformen er der ikke noget ekstremt kompliceret. En omhyggelig analyse af betingelserne for bogføring og brug af reservedele og kompetent udførelse af opgaven som helhed var påkrævet. Derudover var det nødvendigt at registrere serviceanmodninger korrekt. Den største vanskelighed var kun tidspresset på 2.5 timer.
Derudover skulle deltageren, som ved mobiludvikling, kompetent indhente data fra et eksternt DBMS (MS SQL).
Session 3
Til vedligeholdelse (vedligeholdelse) blev det foreslået at implementere en langsigtet planlægningstjeneste. En interessant funktion her var kravet om at oprette en vedligeholdelsesplan for aktiver i henhold til timing - for eksempel hver anden måned den 3. Ligeledes ifølge en kvantitativ indikator - for eksempel ifølge en bils kilometertæller (olieskift hver 5000 km, dækskift hver 20000 km). Vedligeholdelsesadministratoren skulle have modtaget en praktisk mobilapplikation, der dynamisk viser en liste over forfalden, aktuel og afsluttet vedligeholdelse i en bestemt periode. Derudover skulle hver type vedligeholdelse males i farver efter særligt aftalte regler. Mobilapplikationen skulle sikre oprettelsen af nye vedligeholdelsesplaner og mærkning af dem, der allerede var afsluttet direkte på værkstederne med hurtig opdatering af disse oplysninger på serveren.
Cyril: Der er to typer reparationer: tidsbaserede og kørselsbaserede. Variabilitet er tilladt inden for hver. For eksempel skal reparationer ifølge planen ske hver fredag, den 13. i måneden eller hver 20,000 kilometer. En opgave anses for afsluttet, hvis der er et flueben til højre for den.
Der blev stillet en betingelse for sortering af opgaver i listen. Hver linje skal også fremhæves i farve afhængigt af forholdene.
Ved at klikke på knappen nedenfor, kan du oprette en ny serviceplan:
De påkrævede felter vises afhængigt af den valgte diagramtype. Hvis vi har valgt en ugentlig tidsplan, får vi vist to felter: ugenummeret og ugedagen. Fx om tirsdagen hver 3. uge.
Ekspertkommentar: som i den tidligere mobile udvikling på 1C:Enterprise platformen er opgaven her globalt delt op i 2 komponenter - kommunikation med “serveren” via web-api og kompetent visning af en dynamisk liste med betinget design og filtrering (selektion) af data. Derudover var det interessant at implementere kravet om at redegøre for reparationer både efter periode og efter kvantitativ indikator.
Session 4
For komponenter og forbrugsvarer var det nødvendigt at tage højde for varebeholdninger, planlægge udgifter og fremtidige indkøb. Herudover optrådte batchregnskab her, men ikke for alle varer. Alt dette skulle styres inden for flere lagre, inklusive modtagelse, udgifter og flytning. I henhold til opgavens vilkår var det nødvendigt at sikre kontrol med balancer og undgå konflikter ved arbejde med aktuelle lagre. Indkøbsansvarlige arbejder i desktopversionen af softwaren.
Hovedformularen er vist nedenfor:
Cyril: Ud over at sortere fra tilstanden blev det foreslået at give brugeren mulighed for at sortere tilfældigt. På 1C behøver du ikke engang tænke over det. Feltet med mængden af dele skal være markeret med grønt for fakturaer.
I denne session blev de bedt om at kontrollere de resterende varer i lagrene. Så den tilsvarende meddelelse skal vises, når du forsøger at slette fakturaen. Her husker vi platformspecialisteksamenen. Formen på fakturaen er som følger:
Hver del har en egenskab, der bestemmer, om den skal tildeles en bestemt batch. For sådanne reservedele er det bydende nødvendigt at angive batchnummeret i alle dokumenter. Dette er en ekstra måling ved overvågning af delerester. De kan også flyttes mellem lagre:
Formen adskiller sig kun fra den foregående ved, at du i stedet for kunden skal angive det lager, hvorfra leveringen vil blive foretaget. Udvælgelseslisten for partiet kompileres automatisk, efter at delen er valgt. Brugeren kan generere en rapport om reservedelsbalancer:
Her kan vi se de resterende varer på det valgte lager. Afkrydsningsfelterne til højre for lageret giver dig mulighed for at konfigurere filtrering og sortering. Listen har ikke en eksplicit opdeling ved lodtrækning for de dele, som den er påkrævet for. Saldierne for hvert batchnummer for den valgte reservedel kan ses ved hjælp af navigationslinket til højre.
Ekspertkommentar: i denne session (modul) dukkede batchregnskab op for første gang. Deltagerne blev forpligtet til at redegøre for forbrugsstoffer og varer ikke kun for sig selv, men også efter parti. Generelt er opgaven perfekt til 1C:Enterprise platformen – men det hele skulle udvikles fra bunden og klares på 2.5 time.
Session 5
I den femte session blev vi tildelt funktionaliteten af brøndledelse. For efterforskningsgrupper var det nødvendigt at oprette en mobilapplikation, der kunne tage højde for olie- eller gasproduktionsbrønde. Her var det nødvendigt at modtage en liste over aktuelle brønde fra serveren og vise den valgte brønd grafisk efter lag (jord, sand, sten, olie), under hensyntagen til dybderne af hvert lag. Derudover skulle applikationen tillade opdatering af oplysninger om brønden og tilføjelse af nye brønde. For denne applikation indstiller kunden særlige driftsbetingelser i offline- og onlinetilstande (kontrol af kommunikation med serveren) - kontrol af kommunikation med serveren hvert 5. sekund og ændring af applikationens funktionalitet afhængigt af serverens tilgængelighed.
Cyril: Når du vælger en brønd, vises et søjlediagram, som fremhæver lagene op til olie- eller gasaflejringerne. For hvert lag gemmes dets navn, farve og forekomstområde. På grund af designfunktionerne hjælper de indbyggede diagrammer i platformen ikke, men regnearksdokumentet klarer opgaven perfekt. Brønde kan oprettes og ændres:
Bortset fra flere idiotsikker beskyttelse var der intet interessant ved denne form.
Dernæst blev det foreslået at kontrollere forbindelsen til serveren. Vi forsøger at oprette forbindelse hvert 5. sekund. Hvis det ikke virker, så begrænser vi applikationens funktionalitet og viser en besked.
Ekspertkommentar: Opgaven i denne session er interessant primært på grund af dens grafiske muligheder. Deltagere, der brugte 1C:Enterprise-platformen, løste det på to forskellige måder - nogle ved hjælp af en diagrammekanisme, andre ved hjælp af et regnearksdokument. Hver metode har sine fordele og ulemper. Som en del af beslutningen ved WorldSkills-mesterskabet var tiden nøglen (husk tidsgrænsen igen). En separat interessant opgave er at pinge serveren hvert 5. sekund og ændre mobilapplikationens adfærd afhængigt af serverens tilgængelighed eller utilgængelighed.
Session 6
Det blev foreslået at skabe et arbejdsområde for topledelsen – Dashboard. På én skærm var det nødvendigt at vise virksomhedens generelle præstationsindikatorer for en bestemt periode i grafisk og tabelform. Hovedformularen er omkostningsrapporten:
Ud over Dashboardet var det nødvendigt at implementere distributionen af reservedele til aktivreparationer ved hjælp af FIFO/LIFO/"Billigst går først" afskrivningsmetoder.
Under distributionen blev der taget hensyn til batch-regnskaber, balancekontrol og beskyttelse mod uautoriserede brugerhandlinger ("fjollebeskyttelse").
Cyril: For at løse blev værditabeller med softwaregenerering af kolonner brugt, da der kan være et vilkårligt antal af dem:
- Den første tabel er ansvarlig for afdelingernes samlede omkostninger pr. måned. De mest urentable og profitable divisioner er fremhævet med henholdsvis rødt og grønt.
- Den anden tabel viser de dyreste og mest brugte dele for hver måned. Hvis der er flere dele, der opfylder kriterierne, skal de vises i én celle, adskilt af kommaer.
- De dyreste aktiver (i form af reservedelsomkostninger) vises i den første række i den tredje tabel. Den anden linje viser den division, som aktivet ovenfor tilhører. Hvis der er to dyreste aktiver med de samme omkostninger, skal de vises i samme celle adskilt af kommaer.
Diagrammerne blev vist ved hjælp af platformens indbyggede mekanismer og udfyldt programmatisk ved hjælp af forespørgsler.
Det blev også foreslået at gennemføre støtte til flersprogethed. Programmet indlæser XML-filer med lokalisering af interface-elementer, og formularen skal gentegnes ved valg af sprog i rullelisten.
Når du klikker på knappen i nederste venstre hjørne af skærmen, åbnes lagerstyringsformularen:
I denne form begynder vi endelig at bruge dele på reparationer. Her finder vi først de dele, vi skal bruge til at reparere aktivet. Baseret på de valgte felter og distributionsmetode (FIFO, LIFO eller minimumspris), vises de fundne matcher eller en besked, hvis der ikke er nogen matches. Du kan derefter markere delene som værende beregnet til at reparere det pågældende aktiv. Balancekontrol er relevant for den aktuelle session. Hvis vi allerede har tildelt detaljer, kan de ikke længere findes.
Ekspertkommentar: meget interessant session. Det udnytter mulighederne i 1C:Enterprise platformen bedst muligt – her er kompetent arbejde med virtuelle tabeller af akkumuleringsregistre, og programmatisk arbejde med formularelementer (først og fremmest – tabeller, for det andet – overskrifter) og diagrammer. Og endda LIFO/FIFO ved analyse af lagerbeholdning, resultat/tabsanalyse mv.
Session 7
Ved afslutningen af opgaven (session 7) leverede kunden software (exe-fil) til projektaktiviteter og en kort video om arbejdet med det. Det var nødvendigt at udføre reverse engineering og på baggrund heraf lave 2 diagrammer: et use case diagram og et entity-relationship diagram. Derudover blev der stillet nogle krav til at skabe software i fremtiden - det var nødvendigt at lave et interface layout efter disse krav.
Ifølge konkurrencebetingelserne var det kun MS Visio, der skulle lave diagrammer.
Ekspertkommentar: i denne session blev funktionerne i 1C:Enterprise platformen praktisk talt ikke brugt. Diagrammer for konkurrencebetingelserne blev lavet i MS Visio. Men en prototype af grænsefladen kunne skabes i en tom 1C informationsbase.
Generelle bemærkninger
I begyndelsen af hver session blev det foreslået at importere data ved hjælp af et SQL-script. Dette var den største ulempe ved at bruge 1C sammenlignet med C#, da vi brugte mindst en halv time på at destillere data til eksterne datakilder, lave vores egne tabeller og flytte rækker fra eksterne kilder til vores tabeller. Resten skulle bare klikke på knappen Udfør i Microsoft SQL Studio.
Af indlysende grunde er det ikke en god idé at gemme data på en mobilenhed. Derfor skabte vi en serverbase under mobile sessioner. De gemte data der og gav adgang til dem via http-tjenester.
Ekspertkommentar: 1C/ikke-1C-balancen er interessant her - mens 1C:Enterprise-programmører brugte betydelig tid på at oprette forbindelse til en ekstern DBMS (Kirill nævnte dette separat ovenfor), C#/Java (Android Studio til mobiludvikling) brugte tid på andre områder - grænseflader, skrive mere kode. Derfor var resultaterne af hver session uforudsigelige og yderst interessante for alle eksperter. Og denne intrige forblev indtil slutningen - se bare på finalebordet over vindere med fordelingen af point.
Kirill afsluttede historien :)
Afslutningsvis skal det erindres, at udøveren ikke behøvede "bare at programmere opgaven i henhold til de tekniske specifikationer" - han skulle analysere opgaven, vælge blokke til implementering af underopgaver, designe dem og beslutte, hvad han præcist ville være i stand til at implementere dette på den ekstremt korte afsatte tid. Alle 4 dage måtte jeg handle under et voldsomt tidspres, og jeg startede ofte hver efterfølgende session fra bunden. Selv en voksenspecialist med mange års erfaring i branchen vil have store problemer med at løse den tildelte opgave til sessionen 100 % inden for den afsatte tid.
Det vedtagne vurderingssystem fortjener særlig omtale.
For hver session udvikler opgaveforfatterne et komplekst system af kriterier, herunder kontrol af funktionalitet, korrekt betjening, krav til applikationsgrænsefladen og endda efter en stilguide, der er specielt udleveret til deltagerne af den virksomhed, som de udvikler deres løsninger til.
Evalueringskriterierne er meget fint granuleret - med den samlede pris for sessionsopgaven på ti point, kan opfyldelse af et eller andet kriterium tilføje tiendedele af et point til deltageren. Dette opnår et ekstremt højt og objektivt niveau for evaluering af resultaterne for hver deltager i konkurrencen.
Fund
De endelige resultater var imponerende.
I en bitter kamp vandt Kirill Pavkin fra Rusland, der brugte 1C:Enterprise platformen. Kirill er 17 år gammel, han er fra Stavropol.
Bogstaveligt talt tiendedele af et point adskilte vinderen fra hans forfølgere. Andenpladsen blev taget af en deltager fra Taiwan. Den samlede tabel over de seks bedste resultater ser således ud:
Selvfølgelig vandt Kirill takket være hans talent, viden og færdigheder.
Vi bemærker dog, at alle tre deltagere, der brugte 1C:Enterprise platformen som værktøj, var med i top fem – hvilket er en ubetinget bekræftelse af verdensniveauet for 1C:Enterprise teknologi.
Efter resultaterne af konkurrencen blev vinderne præmieret i KazanExpo mediecenter; fyrene modtog rene guldmedaljer (i overensstemmelse med deres plads) og pengepræmier. Fyrene modtog også certifikater, der tillod dem at gennemgå et praktikophold på 1C.
Kilde: www.habr.com