1C - Dobro a zlo. Usporiadanie bodov v holivaroch okolo 1C

1C - Dobro a zlo. Usporiadanie bodov v holivaroch okolo 1C

Priatelia a kolegovia, v poslednej dobe sa častejšie objavujú články o Habrém s nenávisťou voči 1C ako vývojovej platforme a prejavmi jej obhajcov. Tieto články identifikovali jeden vážny problém: kritici 1C ho najčastejšie kritizujú z pozície „neovládania“, nadávajúc na problémy, ktoré sa de facto ľahko riešia, a naopak, nedotýkajú sa problémov, ktoré sú skutočne dôležité, stojí za to. diskutujúcich a predávajúci ich nerieši . Verím, že má zmysel vykonať triezvy a vyvážený prehľad platformy 1C. Čo dokáže, čo nedokáže, čo by mal robiť, ale nerobí, a na záver, čo robí s ranou, a vaši vývojári v %technology_name% budú robiť sto rokov a zahodia to viac ako jeden ročný rozpočet.

Výsledkom je, že ako manažér alebo architekt budete môcť jasne pochopiť, akú úlohu bude pre vás výhodné používať 1C a kde je potrebné ho vypáliť horúcim železom. Ako vývojár vo svete „non-1C“ budete môcť vidieť, čo je v 1C, čo spôsobuje rozruch. A ako vývojár 1C budete môcť porovnať svoj systém s ekosystémami iných jazykov a pochopiť svoju polohu v súradnicovom systéme vývoja softvéru.

Pod rezom je veľa hrubých útokov na 1C, na kritikov 1C, na Javu, .NET a všeobecne... Ventilátor je plný, vitajte!

O mne

Predmet rozhovoru poznám približne od roku 2004. Programujem asi od svojich 6 rokov, hneď ako sa mi do rúk dostala kniha o profesorovi Fortranovi s komiksami o mačke, vrabcovi a húsenici. Rozoberal som programy, ktoré mačka napísal z obrázkov v knihe a zistil som, čo robili. A áno, v tom čase som nemal skutočný počítač, ale bola tam kresba na šírke knihy a ja som poctivo stláčal papierové tlačidlá a zadával príkazy, ktoré som špehoval na mačke X.

Potom tu bol BK0011 a BASIC v škole, C++ a assemblery na univerzite, potom 1C a potom toľko iných vecí, že som si lenivý pamätať. Posledných 15 rokov sa venujem hlavne 1C, nielen čo sa kódovania týka, ale celkovo 1C. Nastavenie úloh, administrácia a vývoj tu. Posledných 5 rokov sa venujem spoločensky užitočným aktivitám v zmysle vývoja vývojových a automatizačných nástrojov pre ostatných používateľov 1C, písaniu článkov a kníh.

Rozhodnime sa o predmete diskusie

Najprv si definujme, o čom budeme hovoriť, pretože písmená „1C“ môžu znamenať veľa vecí. V tomto prípade budeme písmenami „1C“ znamenať výlučne vývojový rámec „1C: Enterprise“ modernej ôsmej verzie. O výrobcovi a jeho politike sa toho veľa baviť nebudeme (ale budeme musieť trochu urobiť, nebudeme rozoberať konkrétne aplikácie napísané pomocou tohto frameworku). Technológia je oddelená, aplikácie alias konfigurácie sú oddelené.

Architektúra na vysokej úrovni 1C: Enterprise

Nie nadarmo spomínam slovo „rámec“. Z pohľadu vývojára je platforma 1C presne rámcom. A musíte s ním zaobchádzať presne ako s rámcom. Predstavte si to ako Spring alebo ASP.NET, spustené nejakým runtime (JVM alebo CLR). Stáva sa, že vo svete konvenčného programovania („nie 1C“) je rozdelenie na frameworky, virtuálne stroje a špecifické aplikácie prirodzené, pretože tieto komponenty zvyčajne vyvíjajú rôzni výrobcovia. Vo svete 1C nie je zvykom explicitne rozlišovať vývojový rámec a samotný runtime, navyše konkrétne aplikácie napísané pomocou frameworku sú vyvíjané hlavne samotným 1C. V dôsledku toho vzniká určitý zmätok. Preto v rámci článku budeme musieť zvážiť 1C z niekoľkých strán naraz a klasifikovať ho podľa niekoľkých súradnicových osí. A do každej súradnicovej osi dáme lopatu hnedej hmoty a pozrieme sa na vlastnosti, výhody a nevýhody existujúceho riešenia.

Názory na 1C

1C pre kupujúceho

Kupujúci si zakúpi automatizačný systém, pomocou ktorého môže rýchlo vyriešiť problémy s automatizáciou vlastného podnikania. Podnik môže byť malý stánok alebo to môže byť veľká holdingová spoločnosť. Je jasné, že potreby týchto podnikov sú odlišné, ale obe sú podporované jednotnou základňou kódu platformy.

Pre kupujúceho 1C je to rýchly čas uvedenia na trh. Rýchlo. Rýchlejšie ako Java, C# alebo JS. Priemerná. Okolo nemocnice. Je jasné, že webová stránka s vizitkou využívajúca React dopadne lepšie, no backend systému WMS sa na 1C spustí rýchlejšie.

1C ako nástroj

Každé technologické riešenie má limity použiteľnosti. 1C nie je univerzálny jazyk; nežije oddelene od svojho rámca. Odporúča sa použiť 1C, keď potrebujete:

  • serverová aplikácia
  • aplikácia, kde sa objavujú financie
  • s predpripraveným používateľským rozhraním, ORM, Reporting, XML/JSON/COM/PDF/YourDataTransferingFormat
  • s podporou procesov a úloh na pozadí
  • s bezpečnosťou založenou na rolách
  • so skriptovateľnou obchodnou logikou
  • so schopnosťou rýchlo vytvoriť prototyp a krátkym časom uvedenia na trh

Nepotrebujete 1C, ak chcete:

  • strojové učenie
  • výpočty GPU
  • počítačová grafika
  • matematické výpočty
  • CAD systémom
  • spracovanie signálu (zvuk, video)
  • highload http hovory so stovkami tisíc rps

1C ako výrobná spoločnosť

Stojí za to pochopiť, čo je predmetom podnikania 1C ako výrobcu softvéru. Spoločnosť 1C predáva riešenia obchodných problémov prostredníctvom automatizácie. Rôzne podniky, veľké alebo malé, ale to je to, čo predáva. Prostriedkom na dosiahnutie tohto cieľa sú obchodné aplikácie. Pre účtovníctvo, mzdové účtovníctvo a pod. Na písanie týchto aplikácií spoločnosť využíva vlastnú platformu pre vývoj obchodných aplikácií. Špeciálne prispôsobené pre bežné úlohy týchto rovnakých obchodných aplikácií:

  • Finančné účtovníctvo
  • jednoduché prispôsobenie obchodnej logiky
  • široké možnosti integrácie v heterogénnom prostredí IT

Ako výrobca sa 1C domnieva, že toto je stratégia, ktorá vám umožňuje pracovať s partnermi a klientmi v režime win-win. Môžete s tým namietať, ale zhruba takto sa spoločnosť propaguje: hotové riešenia obchodných problémov, ktoré môžu partneri rýchlo prispôsobiť a integrovať do akéhokoľvek prostredia IT.

Všetky nároky alebo želania týkajúce sa 1C ako rámca by sa mali pozerať výlučne cez túto prizmu. „Chceme OOP v 1C,“ hovoria vývojári. „Koľko nás bude stáť podpora OOP na platforme, pomôže nám to zvýšiť predaj škatúľ?“ hovorí 1C. Otvára jeho „prizma“ predaja riešení obchodných problémov:

- Hej, obchod, chceš OOP vo svojom 1C?
- Pomôže mi to vyriešiť moje problémy?
- Kto vie...
- Potom to nie je potrebné

Tento prístup môže byť dobrý alebo zlý v závislosti od toho, kto sa na to pozerá, ale je to tak. Keď už hovoríme o tom, že v 1C nie je žiadna funkcia X, musíte pochopiť, že tam nie je z nejakého dôvodu, ale v kontexte voľby „náklady na implementáciu verzus výška zisku“.

Technologická klasifikácia

„V skutočnosti sa Odinesniks snaží používať tie najlepšie vzory, ktoré starostlivo vybrali starostliví metodológovia a vývojári platformy 1C.
Keď napíšete svoj hlúpy kód pre jednoduchý riadený formulár, v skutočnosti ho používate model-view-controller с obojsmerná dátová väzba в trojvrstvový-data-app-engine, ochutené objektovo-relačné mapovanie na vysokej úrovni na základni deklaratívny popis metadátmať svoj vlastný dopytovací jazyk nezávislý od platformy, C deklaratívne dátovo orientované užívateľské rozhranie, úplná transparentná serializácia a doménovo orientovaný programový jazyk.

Tam, kde sa vývojári 1C líšia od svojich západných kolegov, je PR. Radi dávajú akejkoľvek keci veľké meno a behajú s ňou ako so špinavým vrecom.“
A. Orefkov

Platforma 1C má klasickú 3-vrstvovú architektúru, v strede ktorej je aplikačný server (alebo jeho emulácia za málo peňazí pre malých obchodníkov). Ako DBMS sa používa buď MS SQL alebo Postgres. Existuje aj podpora pre Oracle a IBM DB2, ale to je dosť ezoterické, nikto nevie, čo sa stane, ak implementujete 1C na tieto databázy pri strednom a vysokom zaťažení. Verím, že 1C sám o tom nevie.

Klientska časť je buď tenký klient nainštalovaný na počítači používateľa alebo webový klient. Kľúčovou vlastnosťou je, že programátori nepíšu 2 rôzne kódy, píšu jednu aplikáciu v jednom jazyku a v prípade potreby alebo potreby ju môžete zobraziť v prehliadači. Kto tam chcel skutočný plný balík a jeden jazyk pre front a backend, node.js? Nikdy sa im nepodarilo urobiť presne to isté až do konca. Skutočný plný zásobník existuje, ale budete ho musieť napísať v 1C. Irónia osudu, také veci :)

Cloudové riešenie SaaS 1C:Fresh funguje aj v režime prehliadača, v ktorom si nemôžete kúpiť 1C, ale prenajať si malú databázu a sledovať tam predaj shawarma. Len v prehliadači, bez inštalácie alebo konfigurácie.

Okrem toho existuje starší klient, ktorý sa v 1C nazýva „bežná aplikácia“. Legacy is legacy, vitajte vo svete aplikácií v roku 2002, no stále hovoríme o aktuálnom stave ekosystému.

Serverová časť 1C podporuje klastrovanie a škálovanie pridaním nových strojov do klastra. Bolo tu rozbitých pomerne veľa kópií a v článku o tom bude samostatná sekcia. Stručne povedané, toto nie je úplne rovnaké ako pridanie niekoľkých presne rovnakých inštancií za HAProxy.

Aplikačný vývojový rámec využíva vlastný programovací jazyk, ktorý zhruba pripomína mierne vylepšený VB6 preložený do ruštiny. Pre ľudí, ktorí nenávidia všetko ruské, ktorí neveria, že „ak“ sa prekladá ako „ak“, sa ponúka druhá možnosť syntaxe. Tie. Ak chcete, môžete ho napísať v 1C tak, aby bol na nerozoznanie od VB.

1C - Dobro a zlo. Usporiadanie bodov v holivaroch okolo 1C

Práve tento programovací jazyk je hlavným dôvodom nenávisti prezývok 1C voči ich platforme. Priznajme si to, nie bezdôvodne. Jazyk bol koncipovaný čo najjednoduchšie, navrhnutý tak, aby spĺňal mantru „VÝVOJÁRI, VÝVOJÁRI“ v mierke aspoň v SNŠ. Komerčná podstata takéhoto riešenia je podľa mňa jasne viditeľná: viac developerov, väčšie pokrytie trhu. To sa splnilo podľa rôznych odhadov od 45 % do 95 %. Hneď poviem, že písanie v jazyku, o ktorom si myslíte, je skutočne jednoduchšie. A poznám pomerne veľa programovacích jazykov.

Začnime jazykom.

1C programovací jazyk

Zároveň silná a slabá stránka systému. Poskytuje ľahký vstup a čitateľnosť. Na druhej strane nebol aktualizovaný od vydania verzie 8 v roku 2002 a je morálne zastaraný. Niekto povie „hlavnou nevýhodou je, že neexistuje OOP“ a bude sa mýliť. Po prvé, OOP nemá rada nielen Nuralieva, ale ani Torvaldsa. A po druhé, OOP stále existuje.

Z pohľadu vývojára má k dispozícii framework so základnými triedami zobrazenými na DBMS. Vývojár môže prevziať základnú triedu „Adresár“ a zdediť z nej adresár „Klienti“. Môže do nej pridávať nové polia tried, napríklad INN a Address, a v prípade potreby tiež môže prepísať (prepísať) metódy základnej triedy, napríklad metódu OnWrite/AtRecord.

Framework je navrhnutý tak, že hlbšie dedičstvo je málokedy potrebné a obmedzenie v OOP má podľa mňa zmysel. 1C sa zameriava na vývoj riadený doménou a núti vás premýšľať predovšetkým o predmete riešenia, ktoré sa vyvíja, a to je dobré. Nie je to len žiadne pokušenie, ale ani potreba písať 10 rôznych DTO a ViewModelov len preto, aby ste niekde ukázali nejaké dáta z domény. Vývojár 1C vždy operuje s jednou entitou, bez toho, aby zahltil kontext vnímania tuctom tried s podobnými názvami, ktoré predstavujú tú istú entitu, no z inej strany. Akákoľvek aplikácia .NET bude napríklad nevyhnutne obsahovať päť alebo dva ViewModely a DTO na serializáciu do JSON a prenos údajov z klienta na server. A približne 10 – 15 % kódu vašej aplikácie sa minie na prenos údajov z jednej triedy do druhej pomocou pier alebo bariel, ako je AutoMapper. Tento kód musí byť napísaný a programátori musia byť platení za jeho vytváranie a údržbu.

Ukazuje sa, že jazyk 1C sa ťažko vyvíja bez toho, aby sa skomplikoval na úroveň bežných jazykov, čím sa stráca výhoda jednoduchosti. Čo sa v podstate rieši úlohou predajcu: vydať štandardné riešenie, ktoré si každý študent pristihnutý na ulici dokáže prispôsobiť s požadovanou úrovňou kvality (t. j. je dokončený prípad zakrytia stánku až po veľkú továreň). Ak ste stánok, vezmite študenta, ak ste továreň, vezmite si guru od svojho implementačného partnera. Skutočnosť, že implementujúci partneri predávajú študentov za cenu guru, nie je problémom rámca. Architektonicky musí framework vyriešiť problémy oboch, kód štandardných konfigurácií (ktorý sme predali firmám s prísľubom prispôsobenia) by mal byť zrozumiteľný pre študenta a guru by mal byť schopný pochopiť, čo chcete.

To, čo podľa mňa v jazyku naozaj chýba, čo vás núti písať viac, ako by ste mohli, je to, čo stráca čas platený zákazníkom.

  • Možnosť písania na úrovni, napríklad TypeScript (v dôsledku toho vyvinutejšie nástroje na analýzu kódu v IDE, refaktorovanie, menej útočných jambov)
    Dostupnosť funkcií ako prvotriednych objektov. Trochu zložitejší koncept, ale množstvo typického štandardného kódu by sa dalo výrazne znížiť. Študentovo porozumenie kódu by sa IMHO dokonca zvýšilo kvôli zníženiu objemu
  • Univerzálne zberné literály, inicializátory. To isté – zníženie množstva kódu, ktorý je potrebné napísať a/alebo sa naň pozrieť očami. Plnenie kolekcií zaberá viac ako 9000 % programovacieho času 1C. Písať to bez syntaktického cukru je dlhé, drahé a náchylné na chyby. Vo všeobecnosti množstvo LOC v riešeniach 1C prekračuje všetky mysliteľné limity v porovnaní s dostupnými otvorenými rámcami a vo všeobecnosti so všetkými vašimi podnikovými Java dohromady. Jazyk je podrobný a to sa zvrháva na množstvo údajov, pamäte, IDE bŕzd, času, peňazí...
  • konečne konštrukcie Mám hypotézu, že táto konštrukcia chýba kvôli tomu, že nenašli jej úspešný preklad do ruštiny :)
  • Vlastné dátové typy (bez OOP), analógy typu od VB6. Umožní vám to nepísať štruktúry pomocou komentárov v BSP a magických metód, ktoré tieto štruktúry vytvárajú. Získame: menej kódu, nápovedu cez bodku, rýchlejšie riešenie problému, menej chýb v dôsledku preklepov a chýbajúcich vlastností štruktúr. Teraz typovanie užívateľských štruktúr úplne spočíva na vývojovom tíme knižnice Standard Subsystem Library, ktorá, čo je jej zásluha, starostlivo píše komentáre k očakávaným vlastnostiam odovzdaných štruktúr parametrov.
  • Žiadny cukor pri práci s asynchrónnymi hovormi na webovom klientovi. callback-hell vo forme ProcessingNotifications je dočasná barlička spôsobená náhlou zmenou API hlavných prehliadačov, ale takto sa nedá žiť stále dookola viac a viac. Nepridávajte žiadnu podporu pre túto paradigmu v hlavnom IDE a veci sa ešte zhoršia.

Toto je jeden z naliehavých problémov, je jasné, že zoznam by mohol byť oveľa väčší, no netreba zabúdať, že to stále nie je univerzálny jazyk, nevyžaduje multithreading, lambda funkcie, prístup ku GPU a rýchly výpočty s pohyblivou rádovou čiarkou. Toto je skriptovací jazyk obchodnej logiky.

Programátora, ktorý už s týmto jazykom veľa pracoval, nakuká do js alebo c#, sa v rámci tohto jazyka začne nudiť. je to fakt. Potrebuje rozvoj. Na druhej strane stupnice pre dodávateľa sú náklady na implementáciu špecifikovaných funkcií v porovnaní so zvýšením príjmov po ich implementácii. Tu nemám žiadne informácie o tom, čo momentálne v očiach firmy prevažuje.

Vývojové prostredie

Ani tu nejde všetko hladko. Existujú dve vývojové prostredia. Prvým je Konfigurátor, ktorý je súčasťou dodávky. Druhým je prostredie Enterprise Development Tools, skrátene EDT, vyvinuté na báze Eclipse.

Konfigurátor poskytuje celý rad vývojových úloh, podporuje všetky funkcie a je hlavným prostredím na trhu. Je tiež morálne zastaraný, nevyvíja sa, podľa povestí - kvôli množstvu technického dlhu v sebe. Situáciu by mohlo zlepšiť otvorenie interného API (vo forme priateľstva s Snehuliak A. Orefkovej alebo na nezávislej báze), ale nie je to tak. Prax ukázala, že komunita bude písať svoje vlastné funkcie v IDE, pokiaľ do toho nebude zasahovať predajca. Ale máme to, čo máme. Konfigurátor bol skvelý v rokoch 2004-2005, veľmi pripomínal vtedajšie Visual Studio, miestami bol ešte chladnejší, no v tých časoch sa zasekol.

Navyše, objem priemerného štandardného riešenia odvtedy niekoľkonásobne vzrástol a dnes si IDE jednoducho nevie poradiť s množstvom kódu, ktorým je napájané. Využiteľnosť a možnosti refaktorovania nie sú ani nulové, sú v mínuse. To všetko vývojárom nepridáva nadšenie a snívajú o tom, že sa presunú do iných ekosystémov a budú tam naďalej kódovať sračky, no v príjemnom prostredí, ktoré vám svojim správaním nepľuje do tváre.

Ako alternatíva sa ponúka IDE napísané od začiatku, postavené na Eclipse. Tam sú zdroje, ako v každom inom softvéri, živé vo forme textových súborov, sú uložené v GIT, ťahajú vetvy požiadaviek, to všetko. Nevýhodou je, že už mnoho rokov neopustil stav beta, hoci sa každým vydaním zlepšuje. Nebudem písať o nevýhodách EDT, dnes je to mínus, zajtra je to pevná funkcia. Relevantnosť takéhoto popisu sa rýchlo stratí. Dnes je možné vyvíjať v EDT, ale je to nezvyčajné, musíte byť pripravení na určitý počet chýb IDE.

Ak sa na situáciu pozriete cez spomínaný „1C hranol“, dostanete niečo také: vydanie nového IDE nezvýši predaj krabičiek, ale môže sa znížiť odliv VÝVOJÁROV. Je ťažké povedať, čo čaká ekosystém z hľadiska komfortu vývojárov, ale Microsoft už pokazil mobilných vývojárov tým, že im svoje služby ponúkol príliš neskoro.

Manažment rozvoja

Všetko je tu výrazne lepšie ako pri písaní kódu, najmä nedávno, keď úsilie komunity vynieslo problémy s automatizáciou správy, spustili prototypy volajúce po vyhodení úložiska 1C do koša a pomocou git, rýchleho obviňovania, kontroly kódu , statická analýza, automatické nasadenie atď. Do platformy bolo pridaných mnoho funkcií, ktoré zvyšujú úroveň automatizácie vývojových úloh. Všetky tieto funkcie však boli pridané len a výlučne pre vývoj našich vlastných veľkých produktov, keď sa ukázalo, že bez automatizácie sa nezaobídeme. Boli tam automatické zlúčenie, trojstranné porovnanie s KDiffom a tak ďalej. Spustené na Github gitconverter, ktorý, úprimne povedané, bol ideologicky odtiahnutý od projektu gitsync, ale upravené tak, aby vyhovovali procesom dodávateľskej spoločnosti. Vďaka tvrdohlavým chlapíkom z open-source sa automatizácia vývoja v 1C rozbehla. Otvorené API pre konfigurátor, IMHO, by tiež posunulo morálnu zaostalosť hlavného IDE.

Dnes ukladanie zdrojov 1C v git s potvrdeniami spojenými s problémami v Jira, recenzie v Crucible, tlačidlo od Jenkins a Allure hlásia testovanie kódu v 1C a dokonca statická analýza v SonarQube - to je ďaleko od noviniek, ale skôr o mainstreame vo firmách, kde je veľa vývoja 1C.

Administrácia

Je tu toho veľa čo povedať. Po prvé, toto je samozrejme server (klaster serverov 1C). Nádherná vec, ale na to, že ide o úplne čiernu skrinku, dostatočne podrobne, ale špecificky zdokumentovanú - zvládnuť spustenie nepretržitej prevádzky v režime vysokej záťaže na viacerých serveroch je údelom pár vyvolených, ktorí nosia medailu s nápisom „Expert na technologické otázky“. Stojí za zmienku, že správa servera 1C sa v zásade nelíši od správy akéhokoľvek iného servera. Je to sieťová aplikácia s viacerými vláknami, ktorá spotrebúva pamäť, CPU a diskové zdroje. Poskytuje dostatok príležitostí pre telemetrický zber a diagnostiku.

Problém je v tom, že predajca neponúka nič špeciálne z hľadiska hotových riešení práve pre túto diagnostiku. Áno, existuje 1C: Instrumentation and Control Center, sú dokonca celkom dobré, ale sú veľmi drahé a nie každý ich má. V komunite existuje množstvo noviniek na prepojenie Grafana, Zabbix, ELK a ďalších vecí zo štandardnej sady administrátorov, ale neexistuje jediné riešenie, ktoré by vyhovovalo väčšine. Úloha čaká na svojho hrdinu. A ak ste podnik, ktorý plánuje spustiť klaster 1C, potrebujete odborníka. Svoje zvnútra alebo zvonku, ale potrebujete to. Je normálne, že existuje samostatná rola s kompetenciami na prevádzku servera, nie každý používateľ 1C by to mal vedieť, musíte len pochopiť, že takáto rola je potrebná. Vezmime si napríklad SAP. Tam programátor s najväčšou pravdepodobnosťou ani nevstane zo stoličky, ak ho požiadajú, aby niečo nakonfiguroval na aplikačnom serveri. Môže byť len hlúpy a nebude sa hanbiť. V metodike SAP na to existuje samostatná rola zamestnanca. Z nejakého dôvodu sa v priemysle 1C verí, že by sa to malo kombinovať u jedného zamestnanca za rovnaký plat. Je to klam.

Nevýhody servera 1C

Existuje presne jedno mínus - spoľahlivosť. Alebo, ak chcete, nepredvídateľnosť. O náhlom čudnom správaní servera sa už hovorí v meste. Univerzálny prostriedok - zastavenie servera a vymazanie všetkých vyrovnávacích pamätí - je dokonca popísaný v príručke pre odborníka a dokonca sa odporúča aj kniha dávok, ktorá to robí. Ak váš systém 1C začne robiť niečo, čo by ani teoreticky robiť nemal, je čas vymazať vyrovnávaciu pamäť údajov relácie. Podľa môjho odhadu sú v celej krajine len traja ľudia, ktorí vedia obsluhovať 1C server bez tohto postupu a nezdieľajú tajomstvá, pretože... žijú z toho. Možno je ich tajomstvom, že čistia údaje o reláciách, ale nikomu o tom nepovedia, kámo.

V opačnom prípade je server 1C rovnaká aplikácia ako ktorákoľvek iná a spravuje sa takmer rovnakým spôsobom, čítaním dokumentácie a klopaním na tamburínu.

prístavný robotník

Užitočnosť použitia kontajnerového 1C servera vo výrobe ešte nebola preukázaná. Server nie je klastrovaný jednoduchým pridávaním uzlov za balancerom, čo znižuje výhody produkčnej kontajnerizácie na minimum a prax úspešnej prevádzky v kontajneroch v režime vysokého zaťaženia nebola zavedená. Výsledkom je, že iba vývojári používajú Docker+1C na nastavenie testovacích prostredí. Tam je to veľmi užitočné, aplikované, umožňuje vám hrať sa s modernými technológiami a oddýchnuť si od skľúčenosti konfigurátora.

Komerčný komponent

Z investičného hľadiska vám 1C umožňuje vyriešiť problém rýchleho spustenia podnikateľských nápadov vďaka širokým možnostiam tried aplikácií. 1C out of the box dáva veľmi slušný Reporting, integráciu s čímkoľvek, webový klient, mobilný klient, mobilná aplikácia, podpora rôznych DBMS vr. bezplatné, multiplatformové serverové aj nainštalované klientske časti. Áno, používateľské rozhranie aplikácií bude žlté, niekedy je to mínus, ale nie vždy.
Výberom 1C firma získa sadu softvérových riešení, ktoré im umožňujú vytvárať veľmi širokú škálu aplikácií, ako aj veľa vývojárov na trhu, ktorí chcú menej peňazí ako Javaisti a zároveň rýchlejšie dosahujú výsledky.

Napríklad úloha poslať klientovi PDF faktúru sa dá vyriešiť za hodinu študentskej práce. Rovnaký problém v .NET možno vyriešiť zakúpením vlastnej knižnice alebo pár dní či týždňov kódovania prísnym, bradatým vývojárom. Niekedy oboje naraz. A áno, hovoril som len o generovaní PDF. Nepovedali sme, odkiaľ tento návrh zákona vôbec príde. Webový frontender musí vytvoriť formulár, kde operátor zadá údaje, backender bude musieť vytvoriť dto modely pre prenos JSON, modely pre uloženie do databázy, štruktúru samotnej databázy, migráciu do nej, vytvorenie grafického zobrazenie práve tohto účtu a až potom - PDF. Na 1C je celá úloha od začiatku dokončená presne za hodinu.

Plnohodnotný účtovný systém pre malý stánok s jedným obchodným procesom kúpený/predaný za 3 hodiny s vykazovaním predaja, účtovaním tovaru v nákupných a predajných cenách v členení podľa skladu, kontrolou prístupových práv, webového klienta a mobilnej aplikácie . Dobre, zabudol som na aplikáciu, s aplikáciou nie za 3 hodiny, za šesť.

Ako dlho bude táto úloha trvať vývojárovi .NET od inštalácie vizuálneho štúdia na čistý počítač až po jeho predvedenie zákazníkovi? A čo náklady na vývoj? Rovnaká vec.

Silné stránky 1C ako platformy

1C je silný nie preto, že je v ňom niečo špecifické, čo je najlepšie na svete. Naopak, v každom jednotlivom subsystéme nájdete zaujímavejší analóg vo svetovom softvéri. Na základe kombinácie faktorov však nevidím platformu podobnú 1C. V tom spočíva komerčný úspech. Výhody platformy sú rozptýlené po celej ploche a sú najzreteľnejšie viditeľné, keď vidíte, ako sa to robí na iných platformách. V podstate to NIE sú ani črty, ale naopak – odmietnutie čŕt v prospech jednej konkrétnej paradigmy. Niekoľko príkladov:

  1. Unicode. Čo do pekla môže byť jednoduchšie? V roku 2019 nie je potrebné používať jednobajtové kódovanie ASCII (okrem integrácie so starými staršími kódmi). Nikdy. Ale nie. Každopádne, niekto v nejakej tabuľke používa jednobajtový varchar a aplikácia bude mať problémy s kódovaním. V roku 2015 zlyhala autorizácia LDAP spoločnosti gitlab kvôli nesprávnej práci s kódovaním JetBrains IDE stále nefunguje s azbukou v názvoch súborov. 1C poskytuje vysokokvalitnú izoláciu kódu aplikácie od databázovej vrstvy. Tam nie je možné písať tabuľky na nízkej úrovni a nie sú tam možné hromady neschopných juniorov na úrovni databázy. Áno, s neschopnými juniormi môžu byť aj iné problémy, ale rôznorodosť problémov je oveľa menšia. Teraz mi poviete, že vaša aplikácia je navrhnutá správne a vrstva prístupu k databáze je izolovaná tak, ako by mala byť. Pozrite sa ešte raz na svoju firemnú vlastnú aplikáciu Java. Úprimne a úprimne. Trápi ťa svedomie? Potom mám z teba radosť.
  2. Číslovanie dokumentov/príručiek. V 1C to rozhodne nie je najflexibilnejšie a nie najlepšie. Ale to, čo robia v bankovom softvéri a v samostatne písaných účtovných systémoch - no, je to len tma. Buď sa zasekne identita (a potom „och, prečo máme diery“), alebo naopak vytvoria generátor, ktorý pracuje so zamykaním na úrovni DBMS (a stane sa prekážkou). V skutočnosti je dosť ťažké urobiť túto zdanlivo jednoduchú úlohu - end-to-end enumerátor entít, s časťou jedinečnosti založenou na určitej množine kľúčov, prefixácii, aby neblokoval databázu pri paralelnom zadávaní údajov .
  3. Identifikátory záznamov v databáze. 1C urobilo rázne rozhodnutie – všetky identifikátory odkazov sú absolútne syntetické a to je všetko. A nie sú žiadne problémy s distribuovanými databázami a výmenami. Vývojári iných systémov tvrdohlavo vytvárajú niečo ako identitu (je to kratšie!), preťahujú ich do GUI, kým nenastane čas na vytvorenie niekoľkých súvisiacich inštancií (a potom budú objavené). toto nemáš? úprimne?
  4. zoznamy. 1C má celkom úspešné mechanizmy na listovanie (veľkými) zoznamami a navigáciu v nich. Dovoľte mi urobiť rezerváciu ihneď - pri správnom použití mechanizmu! Vo všeobecnosti je téma dosť nepríjemná, nedá sa ideálne vyriešiť: je buď intuitívna a jednoduchá (ale riziko obrovských sád záznamov na klientovi), alebo je stránkovanie tak či onak krivé. Tí, ktorí stránkujú, to často robia krivo. Tí, ktorí robia poctivý posuvník, pridávajú databázu, kanál a klienta.
  5. Riadené formuláre. Niet pochýb o tom, že vo webovom klientovi rozhranie nefunguje dokonale. Ale funguje to. Ale pre mnohé iné účtovné a bankové systémy je vytvorenie vzdialeného pracoviska projektom na podnikovej úrovni. Zrieknutie sa zodpovednosti: našťastie pre tých, ktorí to pôvodne vytvorili na webe, to neovplyvní.
  6. Mobilná aplikácia. Nedávno môžete v rovnakom ekosystéme písať aj mobilné aplikácie. Je to tu trochu komplikovanejšie ako s webovým klientom, špecifiká zariadení vás nútia písať špeciálne pre ne, no napriek tomu si nenajímate samostatný tím mobilných vývojárov. Ak potrebujete aplikáciu pre interné potreby firmy (keď je mobilné riešenie firemného problému dôležitejšie ako žltý dizajn UI), jednoducho použijete rovnakú platformu hneď po vybalení.
  7. Nahlasovanie. Týmto slovom nemyslím BI systém s veľkými dátami a oneskorením ETL procesu. Ide o prehľady prevádzkových zamestnancov, ktoré umožňujú posúdiť stav účtovníctva tu a teraz. Zostatky, vzájomné vyrovnania, prehodnotenie atď. 1C prichádza z krabice s reportovacím systémom s flexibilnými nastaveniami pre zoskupenia, filtre a vizualizáciu na strane používateľa. Áno, na trhu sú analógy chladičov. Nie však v rámci all-in-one riešenia a za cenu niekedy vyššiu ako all-in-one riešenie. A častejšie je to dokonca naopak: iba reportovanie, ale drahšie ako celá platforma a horšia kvalita.
  8. Tlačiteľné formuláre. Využite .NET na vyriešenie problému posielania výplatných pások v PDF zamestnancom emailom. A teraz úloha tlače faktúr. Čo tak uložiť ich kópie do rovnakého PDF? Pre prezývku 1C je výstup akéhokoľvek rozloženia do PDF +1 riadok kódu. To znamená + 40 sekúnd pracovného času namiesto dní alebo týždňov v inom jazyku. Rozloženia tlačených formulárov v 1C sa neuveriteľne ľahko vyvíjajú a sú dostatočne výkonné, aby mohli konkurovať plateným náprotivkom. Áno, pravdepodobne nie je veľa interaktívnych príležitostí v tabuľkových dokumentoch 1C, nemôžete rýchlo získať 3D diagram so škálovaním pomocou OpenGL. Ale je to naozaj potrebné?

Toto je len hŕstka príkladov, kedy sa obmedzenie funkčnosti alebo implementácia kompromisov ukazuje ako dôležitý architektonický prínos v budúcnosti. Dokonca aj kompromis alebo nie najefektívnejšia možnosť - už je v krabici a považuje sa za samozrejmosť. Jeho nezávislá implementácia bude buď nemožná (pretože takéto rozhodnutia musia byť urobené na začiatku projektu a nie je na to čas a už vôbec nie architekt), alebo niekoľko drahých iterácií. V každom z uvedených bodov (a toto nie je úplný zoznam architektonických riešení) sa môžete posrať a zaviesť obmedzenia, ktoré blokujú škálovanie. V každom prípade sa ako obchodník musíte uistiť, že vaši programátori pri vytváraní „systému od nuly“ majú rovné ruky a okamžite urobia jemné systémové problémy.

Áno, ako v každom inom komplexnom systéme, aj samotný 1C má riešenia, ktoré blokujú škálovanie v určitých aspektoch. Opakujem však, na základe kombinácie faktorov, nákladov na vlastníctvo a množstva už vopred vyriešených problémov nevidím na trhu dôstojného konkurenta. Za rovnakú cenu získate finančný aplikačný framework, klastrovaný vyvážený server, s UI a webovým rozhraním, s mobilnou aplikáciou, s reportovaním, integráciou a kopou ďalších vecí. Vo svete Java si najmete front-end a back-end tím, odladíte nízkoúrovňové húfy doma napísaného serverového kódu a zaplatíte samostatne za 2 mobilné aplikácie pre 2 mobilné OS.

Nehovorím, že 1C vyrieši všetky prípady, ale pre internú firemnú aplikáciu, keď nie je potrebné označovať UI - čo ešte treba?

Pozrite sa na masť

Pravdepodobne ste nadobudli dojem, že 1C zachráni svet a že všetky ostatné spôsoby písania podnikových systémov sú nesprávne. Vôbec to tak nie je. Z pohľadu podnikateľa, ak si vyberiete 1C, musíte okrem rýchleho uvedenia na trh vziať do úvahy aj tieto nevýhody:

  • Spoľahlivosť servera. Požadujú sa skutočne kvalitní špecialisti, ktorí dokážu zabezpečiť jeho nepretržitú prevádzku. Neviem o pripravenom školiacom programe pre takýchto špecialistov od predajcu. Existujú kurzy na prípravu na skúšku Expert, ale to podľa mňa nestačí.
  • Podpora. Pozri predchádzajúci bod. Ak chcete mať podporu od predajcu, musíte si ho kúpiť. Z nejakého dôvodu to nie je akceptované v priemysle 1C. A so systémom SAP je to takmer nevyhnutná kúpa a nikoho to neobťažuje. Bez firemnej podpory a bez odborníka na personál môžete zostať sami so závadami 1C.
  • Napriek tomu nemôžete s 1C robiť úplne všetko. Toto je nástroj a ako každý nástroj má hranice použiteľnosti. V prostredí 1C je veľmi žiaduce mať architekta systému „non-1C“.
  • Dobré prezývky 1C nie sú lacnejšie ako dobrí programátori v iných jazykoch. Najať zlých programátorov je však drahé, bez ohľadu na jazyk, v ktorom píšu.

Urobme bodky

  • 1C je rámec pre rýchly vývoj aplikácií (RAD) pre podnikanie a je na to prispôsobený.
  • Trojvrstvové prepojenie s podporou hlavných DBMS, používateľským rozhraním klienta, veľmi dobrým ORM a reportingom
  • Široké možnosti integrácie so systémami, ktoré dokážu to, čo 1C nedokáže. Ak chcete strojové učenie, vezmite si Python a pošlite výsledok do 1C cez http alebo RabbitMQ
  • Nie je potrebné sa snažiť robiť všetko pomocou 1C, musíte pochopiť jeho silné stránky a použiť ich pre svoje vlastné účely
  • Vývojári, ktorí majú tendenciu hrabať sa v technologických pomôckach a každých N rokov prerábať na nový motor, 1C nudí. Všetko je tam veľmi konzervatívne.
  • Vývojári sa nudia aj preto, že zo strany výrobcu je o nich veľmi málo starostí. Nudný jazyk, slabé IDE. Vyžadujú modernizáciu.
  • Na druhej strane vývojári, ktorí nedokážu nájsť zábavu používaním a učením sa inej technológie, ktorá ich baví, sú zlí vývojári. Budú kňučať a presťahovať sa do iného ekosystému.
  • Zamestnávatelia, ktorí nedovolia svojim 1C nickom napísať niečo v Pythone, sú zlí zamestnávatelia. Stratia zamestnancov so zvedavou mysľou a na ich miesto prídu opičí kóderi, ktorí síce so všetkým súhlasia, ale zatiahnu firemný softvér do močiara. Bude sa musieť ešte prepísať, takže možno by bolo lepšie investovať trochu skôr do Pythonu?
  • 1C je komerčná spoločnosť a implementuje funkcie výlučne na základe vlastných záujmov a vhodnosti. Nemôžete ju za to viniť, podnikanie musí myslieť na zisk, taký je život
  • 1C zarába peniaze predajom riešení obchodných problémov, nie vývojárskych problémov Vasya. Tieto dva pojmy korelujú, ale prioritou je presne to, čo som povedal. Keď je vývojár Vasya pripravený zaplatiť za osobnú licenciu pre 1C: Resharper, objaví sa to pomerne rýchlo, „Resharper“ od A. Orefkovej je toho dôkazom. Ak by to predajca podporoval a nebojoval by proti tomu, objavil by sa trh so softvérom pre vývojárov. Teraz je na tomto trhu jeden a pol hráča s pochybnými výsledkami, a to všetko preto, že integrácia s IDE je negatívna a všetko sa robí o barličkách.
  • Prax obsluhy viacerých strojov zmizne do zabudnutia. Moderné aplikácie sú príliš veľké na to, aby si ich zapamätali zo strany kódu aj zo strany obchodného využitia. Server 1C sa tiež stáva zložitejším, nebude možné udržať všetky typy odborných znalostí u jedného zamestnanca. To by malo znamenať dopyt po špecialistoch, čo znamená atraktivitu profesie 1C a zvýšenie platov. Ak predtým Vasya pracoval tri v jednom za jeden plat, teraz musíte najať dvoch Vasyov a konkurencia medzi Vasyami môže podnietiť celkový rast ich úrovne.

Záver

1C je veľmi hodnotný produkt. V mojom cenovom rozpätí nepoznám vôbec žiadne analógy, napíšte do komentárov, ak nejaké existujú. Odliv vývojárov z ekosystému je však čoraz zreteľnejší a ide o „únik mozgov“, nech sa na to pozeráte akokoľvek. Priemysel je hladný po modernizácii.
Ak ste vývojár, nenechajte sa zavesiť na 1C a nemyslite si, že všetko je magické v iných jazykoch. Kým si junior, možno. Akonáhle bude treba riešiť niečo väčšie, bude treba dlhšie hľadať a intenzívnejšie dotvárať hotové riešenia. Pokiaľ ide o kvalitu „blokov“, z ktorých je možné postaviť riešenie, je 1C veľmi, veľmi dobrý.

A ešte jedna vec - ak si k vám príde najať prezývka 1C, potom môže byť prezývka 1C bezpečne vymenovaná do pozície vedúcich analytikov. Ich chápanie úlohy, predmetu a schopnosti rozkladu je vynikajúce. Som si istý, že je to práve kvôli nútenému používaniu DDD pri vývoji 1C. Človek je trénovaný v prvom rade premýšľať o zmysle úlohy, o súvislostiach medzi objektmi predmetnej oblasti a zároveň má technické vzdelanie v oblasti integračných technológií a formátov výmeny dát.

Uvedomte si, že ideálny rámec neexistuje a postarajte sa o seba.
Dobré pre všetkých!

PS: ďakujem pekne speshuric za pomoc pri príprave článku.

Do prieskumu sa môžu zapojiť iba registrovaní užívatelia. Prihlásiť saProsím.

Máte vo svojom podniku 1C?

  • 13,3%Vôbec nie.71

  • 30,3%Existuje, ale len niekde v účtovníctve. Základné systémy na iných platformách162

  • 41,4%Áno, fungujú na ňom hlavné obchodné procesy221

  • 15,0%1C musí zomrieť, budúcnosť patrí %technology_name%80

Hlasovalo 534 užívateľov. 99 užívateľov sa zdržalo hlasovania.

Zdroj: hab.com

Pridať komentár