1C – gėris ir blogis. Taškų išdėstymas holivaruose apie 1C

1C – gėris ir blogis. Taškų išdėstymas holivaruose apie 1C

Draugai ir kolegos, pastaruoju metu vis dažniau pasigirdo straipsniai apie Habré su neapykanta 1C kaip kūrimo platformai ir jos gynėjų pasisakymai. Šiuose straipsniuose buvo įvardyta viena rimta problema: dažniausiai 1C kritikai ją kritikuoja iš pozicijos „neįvaldę“, bardami problemas, kurios de facto lengvai išsprendžiamos, ir, priešingai, neliečia problemų, kurios tikrai svarbios, vertos. aptariamas ir pardavėjas jų neišsprendžia. Manau, kad prasminga blaiviai ir subalansuotai peržiūrėti 1C platformą. Ką jis gali, ko negali, ką jis turėtų daryti, bet nedaro ir, desertui, ką jis daro su trenksmu, o jūsų %technology_name% kūrėjai padarys šimtą metų, išmesdami jį šalin. daugiau nei vienas metinis biudžetas.

Dėl to jūs, kaip vadovas ar architektas, galėsite aiškiai suprasti, kokiai užduočiai jums bus naudinga naudoti 1C, o kur jį reikia išdeginti karštu lygintuvu. Būdami kūrėjai „ne 1C“ pasaulyje, galėsite pamatyti, kas yra 1C versijoje, dėl kurios kyla triukšmo. O kaip 1C kūrėjas galėsite palyginti savo sistemą su kitų kalbų ekosistemomis ir suprasti savo vietą programinės įrangos kūrimo koordinačių sistemoje.

Po pjūviu daug storų atakų prieš 1C, 1C kritikus, Java, .NET ir apskritai... Ventiliatorius pilnas, sveiki atvykę!

Apie mane

Su pokalbio tema susipažinau maždaug nuo 2004 m. Programuoju turbūt nuo 6 metų, nuo tos akimirkos, kai gavau knygą apie profesorių Fortraną su komiksais apie katę, žvirblį ir vikšrą. Išanalizavau programas, kurias katė parašė iš paveikslėlių knygoje, ir sužinojau, ką jos padarė. Ir taip, aš tuo metu neturėjau tikro kompiuterio, bet buvo piešinys ant knygos sklaidos ir aš sąžiningai spaudžiau popierinius mygtukus, įvesdamas komandas, kurias šnipinėjau katę X.

Tada buvo BK0011 ir BASIC mokykloje, C++ ir surinkėjai universitete, tada 1C ir dar daugybė kitų dalykų, kuriuos tingiu prisiminti. Pastaruosius 15 metų daugiausia užsiimu 1C ne tik kodavimo prasme, bet ir apskritai 1C. Čia užduočių nustatymas, administravimas ir devops. Pastaruosius 5 metus užsiimu socialiai naudinga veikla, kuriant kitiems 1C vartotojams skirtus kūrimo ir automatizavimo įrankius, rašau straipsnius ir knygas.

Apsispręskime dėl diskusijos temos

Pirma, apibrėžkime, apie ką kalbėsime, nes raidės „1C“ gali reikšti daug dalykų. Šiuo atveju raidėmis „1C“ turėsime omenyje išskirtinai modernios, aštuntos versijos kūrimo sistemą „1C: Enterprise“. Mes daug nekalbėsime apie gamintoją ir jo politiką (tačiau turėsime šiek tiek padaryti). Technologijos yra atskiros, programos, dar žinomos kaip konfigūracijos, yra atskiros.

Aukšto lygio architektūra 1C: Enterprise

Ne veltui miniu žodį „karkasas“. Kūrėjo požiūriu, 1C platforma yra būtent sistema. Ir jūs turite su juo elgtis kaip su karkasu. Pagalvokite apie tai kaip apie „Spring“ arba „ASP.NET“, kurį vykdo tam tikras vykdymo laikas (atitinkamai JVM arba CLR). Taip atsitinka, kad įprasto programavimo („ne 1C“) pasaulyje skirstymas į karkasus, virtualias mašinas ir konkrečias programas yra natūralus, nes šiuos komponentus dažniausiai kuria skirtingi gamintojai. 1C pasaulyje nėra įprasta aiškiai atskirti kūrimo sistemą ir patį vykdymo laiką, be to, konkrečias programas, parašytas naudojant sistemą, daugiausia kuria pats 1C. Dėl to kyla tam tikra painiava. Todėl straipsnyje 1C turėsime apsvarstyti iš kelių pusių vienu metu ir klasifikuoti jį išilgai kelių koordinačių ašių. O į kiekvieną koordinačių ašį įdėsime po kastuvą rudos medžiagos ir pažvelgsime į esamo sprendimo ypatybes, privalumus ir trūkumus.

Požiūrio taškai ant 1C

1C pirkėjui

Pirkėjas įsigyja automatizavimo sistemą, su kuria gali greitai išspręsti savo verslo automatizavimo problemas. Verslas gali būti mažas prekystalis arba didelė holdingo įmonė. Akivaizdu, kad šių verslų poreikiai yra skirtingi, tačiau abu palaikomi vienos platformos kodų bazės.

1C pirkėjui tai yra greitas laikas patekti į rinką. Greitai. Greičiau nei Java, C# ar JS. Vidutinis. Aplink ligoninę. Akivaizdu, kad vizitinių kortelių svetainė, naudojanti „React“, pasirodys geresnė, tačiau WMS sistemos užpakalinė dalis bus paleista greičiau 1C.

1C kaip įrankis

Kiekvienas technologinis sprendimas turi pritaikomumo ribas. 1C nėra bendrosios paskirties kalba, ji negyvena atskirai nuo savo sistemos. Patartina naudoti 1C, kai reikia:

  • serverio programa
  • programa, kurioje atsiranda finansai
  • su paruošta vartotojo sąsaja, ORM, ataskaitų teikimu, XML/JSON/COM/PDF/YourDataTransferingFormat
  • su parama foniniams procesams ir darbams
  • su vaidmenimis pagrįstu saugumu
  • su scenarijaus verslo logika
  • su galimybe greitai sukurti prototipą ir trumpą laiką patekti į rinką

Jums nereikia 1C, jei norite:

  • mašininis mokymasis
  • GPU skaičiavimai
  • Kompiuterinė grafika
  • matematiniai skaičiavimai
  • CAD sistema
  • signalo apdorojimas (garsas, vaizdas)
  • highload http skambučiai su šimtais tūkstančių rps

1C kaip gamybos įmonė

Verta suprasti, koks yra 1C, kaip programinės įrangos gamintojo, verslas. 1C įmonė parduoda verslo problemų sprendimus automatizuodamas. Įvairios įmonės, didelės ar mažos, bet tai ji parduoda. Priemonės šiam tikslui pasiekti yra verslo programos. Apskaitai, darbo užmokesčio apskaitai ir kt. Šioms programoms rašyti įmonė naudoja savo verslo aplikacijų kūrimo platformą. Specialiai pritaikyta bendroms tų pačių verslo programų užduotims:

  • finansinė apskaita
  • lengvas verslo logikos pritaikymas
  • plačios integravimo galimybės nevienalytėse IT aplinkose

Kaip gamintojas, 1C mano, kad tai yra strategija, leidžianti dirbti su partneriais ir klientais abipusiai naudingu režimu. Galite ginčytis su tuo, bet maždaug taip įmonė save reklamuoja: paruošti verslo problemų sprendimai, kuriuos partneriai gali greitai pritaikyti individualiems poreikiams ir integruoti į bet kokį IT aplinką.

Visos pretenzijos ar pageidavimai dėl 1C kaip sistemos turėtų būti vertinami tik per šią prizmę. „Mes norime OOP 1C“, – sako kūrėjai. „Kiek mums kainuos palaikyti OOP platformoje, ar tai padės padidinti dėžių pardavimą?“ – sako 1C. Atveria savo „prizmę“ parduoti verslo problemų sprendimus:

- Ei, versle, ar nori OOP savo 1C?
– Ar tai padės man išspręsti savo problemas?
- Kas žino...
– Tada nereikia

Šis požiūris gali būti geras arba blogas, priklausomai nuo to, kas į jį žiūri, bet taip yra. Kalbant apie tai, kad 1C nėra funkcijos X, turite suprasti, kad ji yra ne dėl priežasties, o pasirinkimo „diegimo sąnaudos prieš pelno sumą“ kontekste.

Technologinė klasifikacija

„Tiesą sakant, „Odinesniks“ daro viską, kad naudotų geriausius modelius, kuriuos kruopščiai atrinko rūpestingi metodininkai ir 1C platformos kūrėjai.
Kai rašote savo kvailą paprastos valdomos formos kodą, iš tikrųjų naudojate modelio vaizdo valdiklis с dvipusis duomenų įrišimas в trijų sluoksnių duomenų programos variklis, pagardintas aukšto lygio objektų santykių kartografavimas ant pagrindo deklaratyvus metaduomenų aprašymasturintis savo nuo platformos nepriklausoma užklausų kalba, C deklaratyvi duomenimis pagrįsta vartotojo sąsaja, pilnas skaidrus serializavimas ir į domeną orientuota programų kalba.

1C kūrėjai skiriasi nuo savo kolegų iš Vakarų viešųjų ryšių srityje. Jie mėgsta bet kokiai nesąmonei suteikti didelį vardą ir lakstyti su ja kaip nešvariu maišu.
A. Orefkovas

1C platforma turi klasikinę 3 pakopų architektūrą, kurios centre yra programų serveris (arba jo emuliacija už nedidelius pinigus mažiems parduotuvių savininkams). MS SQL arba Postgres naudojama kaip DBVS. Taip pat yra Oracle ir IBM DB2 palaikymas, tačiau tai gana ezoteriška, niekas nežino, kas nutiks, jei įdiegsite 1C šiose duomenų bazėse esant vidutinei ir didelei apkrovai. Manau, kad pats 1C to nežino.

Kliento dalis yra plonasis klientas, įdiegtas vartotojo kompiuteryje, arba žiniatinklio klientas. Pagrindinis bruožas yra tai, kad programuotojai nerašo 2 skirtingų kodų, jie rašo vieną programą, viena kalba, o jei yra noras ar poreikis, galite ją parodyti naršyklėje. Kas ten norėjo tikro pilno krūvos ir vienos kalbos priekinei ir galinei sistemai, node.js? Jiems niekada nepavyko padaryti to paties iki galo. Egzistuoja tikras pilnas krūvas, bet turėsite jį parašyti 1C. Likimo ironija, tokie dalykai :)

Debesis SaaS sprendimas 1C:Fresh taip pat veikia naršyklės režimu, kuriame negalite nusipirkti 1C, o išsinuomoti nedidelę duomenų bazę ir ten sekti shawarma pardavimus. Tiesiog naršyklėje, nieko neįdiegę ir nekonfigūruodami.

Be to, yra senas klientas, kuris 1C vadinamas „įprasta programa“. Palikimas yra palikimas, sveiki atvykę į programų pasaulį 2002 m., tačiau mes vis dar kalbame apie dabartinę ekosistemos būklę.

1C serverio dalis palaiko grupavimą ir mastelį, įtraukdama į klasterį naujų mašinų. Čia buvo sulaužyta gana daug kopijų ir apie tai bus atskira straipsnio dalis. Trumpai tariant, tai nėra visiškai tas pats, kas už HAProxy pridėti keletą lygiai tų pačių atvejų.

Programų kūrimo sistema naudoja savo programavimo kalbą, kuri maždaug primena šiek tiek patobulintą VB6, išverstą į rusų kalbą. Žmonėms, kurie nekenčia visko rusiškai, kurie netiki, kad „jei“ verčiamas kaip „jei“, siūlomas antrasis sintaksės variantas. Tie. Jei norite, galite parašyti 1C taip, kad jis nesiskirtų nuo VB.

1C – gėris ir blogis. Taškų išdėstymas holivaruose apie 1C

Ši programavimo kalba yra pagrindinė neapykantos 1C slapyvardžiams jų platformai priežastis. Pripažinkime, ne be priežasties. Kalba buvo sumanyta kuo paprastesnė, skirta bent jau NVS mastu įvykdyti mantrą „KŪRĖJAI, KŪRĖJAI“. Komercinė tokio sprendimo esmė, mano nuomone, aiškiai matoma: daugiau kūrėjų, didesnė rinkos aprėptis. Tai išsipildė, įvairiais vertinimais nuo 45% iki 95%. Iš karto pasakysiu, kad rašyti ta kalba, kuri tau atrodo, tikrai lengviau. Ir aš žinau daug programavimo kalbų.

Pradėkime nuo kalbos.

1C programavimo kalba

Kartu stiprioji ir silpnoji sistemos vieta. Užtikrina lengvą įvedimą ir skaitomumą. Kita vertus, jis nebuvo atnaujintas nuo 8 versijos išleidimo 2002 m. ir yra morališkai pasenęs. Kažkas pasakys: „Pagrindinis trūkumas yra tai, kad nėra OOP“, ir jie bus neteisūs. Pirma, PLO nemėgsta ne tik Nuralijevų, bet ir Torvaldų. Antra, OOP vis dar egzistuoja.

Kūrėjo požiūriu, jis turi sistemą su bazinėmis klasėmis, rodomomis DBVS. Kūrėjas gali paimti bazinę klasę „Katalogas“ ir paveldėti iš jos katalogą „Klientai“. Jis gali pridėti naujų klasės laukų, pavyzdžiui, INN ir Adresas, taip pat, jei reikia, gali nepaisyti (nepaisyti) bazinės klasės metodų, pavyzdžiui, OnWrite/AtRecord metodą.

Karkasas sukurtas taip, kad gilesnio paveldėjimo retai reikia, o OOP apribojimas, mano nuomone, yra prasmingas. 1C daugiausia dėmesio skiria domenu pagrįstam vystymuisi ir verčia susimąstyti, visų pirma, apie kuriamo sprendimo temą, ir tai yra gerai. Nėra ne tik pagundos, bet ir nereikia rašyti 10 skirtingų DTO ir ViewModels vien tam, kad kur nors parodytų kai kuriuos duomenis iš domeno. 1C kūrėjas visada dirba su vienu subjektu, neužgriozdydamas suvokimo konteksto tuzinu klasių panašiais pavadinimais, atstovaujančiomis tą patį subjektą, bet iš kitos pusės. Pvz., bet kurioje .NET programoje būtinai turi būti penki arba du „ViewModels“ ir DTO, skirti serializuoti į JSON ir perduoti duomenis iš kliento į serverį. Ir maždaug 10–15 % jūsų programos kodo bus išleista perkeliant duomenis iš vienos klasės į kitą naudojant rašiklius ar ramentus, pvz., „AutoMapper“. Šis kodas turi būti parašytas, o programuotojams turi būti mokama už jo sukūrimą ir priežiūrą.

Pasirodo, 1C kalbą sunku išvystyti, jos neapsunkinant iki pagrindinių kalbų lygio, taip prarandant paprastumo pranašumą. Kokia pardavėjo užduotis iš esmės sprendžiama: išleisti standartinį sprendimą, kurį bet kuris gatvėje užkluptas studentas galėtų pritaikyti reikiamu kokybės lygiu (t. y. užbaigiamas dėklas, apimantis nuo prekystalio iki didelės gamyklos). Jei esate kioskas, pasiimkite studentą, jei esate gamykla, pasiimkite guru iš savo įgyvendinimo partnerio. Tai, kad įgyvendinantys partneriai parduoda studentus už guru kainą, nėra sistemos problema. Architektūriniu požiūriu karkasas turi išspręsti abiejų problemas, standartinių konfigūracijų kodą (kurį pardavėme verslui pažadėdami pritaikyti) turėtų suprasti studentas, o guru turėtų suprasti, ką tik norite.

Ko, mano nuomone, tikrai trūksta kalboje, kas verčia rašyti daugiau nei galėtum, tai gaištamas užsakovo mokamas laikas.

  • Galimybė įvesti tekstą lygiu, pvz., „TypeScript“ (dėl to labiau išplėtoti kodo analizės įrankiai IDE, pertvarkymas, mažiau įžeidžiančių jambų)
    Funkcijų, kaip pirmos klasės objektų, prieinamumas. Šiek tiek sudėtingesnė koncepcija, tačiau tipinio pagrindinio kodo kiekį būtų galima žymiai sumažinti. Studento supratimas apie kodą, IMHO, net padidėtų dėl apimties mažinimo
  • Universalios kolekcijos literalai, iniciatoriai. Tas pats – sumažinti kodo kiekį, kurį reikia parašyti ir/ar pažiūrėti akimis. Kolekcijų pildymas užima daugiau nei 9000 % 1C programavimo laiko. Rašyti tai be sintaksinio cukraus yra ilgas, brangus ir dažnai pasitaiko klaidų. Apskritai, LOC kiekis 1C sprendimuose viršija visas įmanomas ribas, palyginti su turimomis atviromis sistemomis ir apskritai su visomis jūsų įmonės „Java“ versijomis. Kalba yra daugiažodinė, o tai išsigimsta į duomenų kiekį, atmintį, IDE stabdžius, laiką, pinigus...
  • pagaliau konstrukcijos Turiu hipotezę, kad šios konstrukcijos trūksta dėl to, kad jie nerado sėkmingo jos vertimo į rusų kalbą :)
  • Nuosavi duomenų tipai (be OOP), tipo analogai iš VB6. Tai leis neįvesti struktūrų naudojant komentarus BSP ir magiškus metodus, kurie sukuria šias struktūras. Gauname: mažiau kodo, užuominą per tašką, greitesnį problemos sprendimą, mažiau klaidų dėl rašybos klaidų ir trūkstamų struktūrų savybių. Dabar vartotojų struktūrų įvedimas visiškai priklauso standartinės posistemės bibliotekos kūrimo komandai, kuri, savo nuopelnais, kruopščiai rašo komentarus apie laukiamas perduodamų parametrų struktūrų savybes.
  • Jokio cukraus dirbant su asinchroniniais skambučiais žiniatinklio kliente. „Callback-hell“ ProcessingNotifications forma yra laikinas ramentas, kurį sukelia staigus pagrindinių naršyklių API pasikeitimas, tačiau jūs negalite taip gyventi visą laiką, prarandamas „studentų supratimas“ apie asinchroninį kodą daugiau ir daugiau. Nepridėkite šios paradigmos palaikymo pagrindinėje IDE ir viskas dar labiau pablogės.

Tai viena iš aktualių problemų, aišku, kad sąrašas galėtų būti daug didesnis, tačiau nereikia pamiršti, kad tai vis dar nėra bendros paskirties kalba, jai nereikia kelių gijų, lambda funkcijų, prieigos prie GPU ir greito. slankiojo kablelio skaičiavimai. Tai verslo logikos scenarijų kalba.

Programuotojui, kuris jau daug dirbo su šia kalba, žiūri į js arba c#, šios kalbos rėmuose tampa nuobodu. Tai faktas. Jam reikia tobulėjimo. Kitoje pardavėjo skalės pusėje yra nurodytų funkcijų įdiegimo išlaidos, palyginti su pajamų padidėjimu jas įdiegus. Čia aš neturiu jokios informacijos apie tai, kas šiuo metu įmonės akimis nusveria.

Plėtros aplinka

Čia irgi ne viskas sklandžiai. Yra dvi kūrimo aplinkos. Pirmasis yra konfigūratorius, įtrauktas į pristatymą. Antroji yra Enterprise Development Tools aplinka arba trumpiau EDT, sukurta Eclipse pagrindu.

Konfigūratorius suteikia visą spektrą kūrimo užduočių, palaiko visas funkcijas ir yra pagrindinė aplinka rinkoje. Ji taip pat morališkai pasenusi, nevystanti, anot gandų – dėl savyje esančios techninės skolos dydžio. Situaciją būtų galima pagerinti atidarius vidinę API (draugystės su Sniego senis A. Orefkova arba savarankiškai), tačiau taip nėra. Praktika parodė, kad bendruomenė įrašys savo funkcijas į IDE, jei pardavėjas netrukdys. Bet mes turime tai, ką turime. Konfigūratorius buvo puikus 2004-2005 metais, labai priminė anų laikų Visual Studio, vietomis net šaunesnis, bet tais laikais užstrigo.

Be to, nuo to laiko vidutinio standartinio sprendimo apimtis išaugo kelis kartus, o šiandien IDE tiesiog negali susidoroti su jam tiekiamo kodo kiekiu. Naudojimo ir pertvarkymo galimybės net nėra nulis, jos yra neigiamos. Visa tai kūrėjams entuziazmo neprideda ir jie svajoja persikelti į kitas ekosistemas ir ten toliau koduoti šūdas, bet malonioje aplinkoje, kuri savo elgesiu nespjauna į veidą.

Kaip alternatyva siūloma nuo nulio parašyta IDE, sukurta naudojant „Eclipse“. Ten šaltiniai, kaip ir bet kurioje kitoje programinėje įrangoje, gyvena tekstinių failų pavidalu, yra saugomi GIT, ištraukite užklausų šakas, visa tai. Neigiama yra tai, kad jis jau daugelį metų nepalieka beta versijos būsenos, nors su kiekvienu leidimu vis gerėja. Apie EDT trūkumus nerašysiu, šiandien minusas, rytoj fiksuota funkcija. Tokio aprašymo aktualumas greitai išnyks. Šiandien EDT galima kurti, tačiau tai neįprasta, kad reikia pasiruošti tam tikram IDE klaidų skaičiui.

Jei pažvelgsite į situaciją per minėtą „1C prizmę“, gautumėte maždaug taip: naujojo IDE išleidimas nepadidina dėžučių pardavimų, tačiau gali sumažėti DEVELOPERS nutekėjimas. Sunku pasakyti, kas laukia ekosistemos, kalbant apie kūrėjų patogumą, tačiau „Microsoft“ jau išmušė mobiliųjų įrenginių kūrėjus, siūlydama jiems savo paslaugas per vėlai.

Plėtros valdymas

Viskas čia žymiai geriau nei rašant kodą, ypač pastaruoju metu, kai bendruomenės pastangomis išryškėjo administravimo automatizavimo problemos, buvo išleisti prototipai, raginantys mesti 1C saugyklą į šiukšlių krūvą ir naudoti git, greitą kaltinimą, kodo peržiūrą. , statinė analizė, automatinis diegimas ir kt. Platformoje buvo pridėta daug funkcijų, kurios padidina kūrimo užduočių automatizavimo lygį. Tačiau visos šios funkcijos buvo įtrauktos tik ir išskirtinai mūsų pačių didelių produktų kūrimui, kai tapo akivaizdu, kad be automatikos neapsieisime. Buvo automatinis sujungimas, trijų krypčių palyginimas su KDiff ir visa kita. Paleista Github platformoje gitkonverteris, kuris, atvirai kalbant, ideologiškai buvo atitrauktas nuo projekto gitsync, bet modifikuotas, kad atitiktų tiekėjo įmonės procesus. Užsispyrusių atvirojo kodo vaikinų dėka 1C kūrimo automatizavimas išaugo. Atvira konfigūratoriaus API, IMHO, taip pat pakeistų moralinį pagrindinės IDE atsilikimą.

Šiandien 1C šaltiniai saugomi „git“ su įsipareigojimais, susijusiais su „Jira“ problemomis, apžvalgomis „Crucible“, „Jenkins“ mygtuku ir „Allure“ praneša apie kodo testavimą 1C ir net statinė analizė „SonarQube“. - tai toli gražu ne naujiena, o įprasta įmonėse, kuriose yra daug 1C plėtros.

Administravimas

Čia yra daug ką pasakyti. Pirma, tai, žinoma, yra serveris (1C serverių klasteris). Nuostabus dalykas, bet dėl ​​to, kad tai visiškai juoda dėžė, dokumentuota pakankamai išsamiai, bet specifiniu būdu – įvaldyti nepertraukiamo darbo paleidimą didelės apkrovos režimu keliuose serveriuose yra keleto išrinktųjų, kurie nešioja medalis su užrašu „Technologinių klausimų ekspertas“. Verta paminėti, kad iš esmės 1C serverio administravimas nesiskiria nuo bet kurio kito serverio administravimo. Tai tinkle veikianti kelių gijų programa, sunaudojanti atminties, procesoriaus ir disko išteklius. Suteikia daug galimybių telemetrijai rinkti ir diagnostikai.

Problema ta, kad pardavėjas nesiūlo nieko ypatingo, kalbant apie paruoštus šios diagnostikos sprendimus. Taip, yra 1C: Instrumentation and Control Center, jie net visai neblogi, bet labai brangūs ir ne visi juos turi. Bendruomenėje yra daug patobulinimų, skirtų prijungti Grafana, Zabbix, ELK ir kitus dalykus iš standartinio administratoriaus rinkinio, tačiau nėra vieno sprendimo, kuris tiktų daugumai. Užduotis laukia savo herojaus. Ir jei esate verslas, kuris planuoja pradėti veiklą 1C klasteryje, jums reikia eksperto. Savas viduje ar iš išorės, bet tau to reikia. Normalu, kad yra atskiras vaidmuo su serverio veikimo kompetencijomis, ne kiekvienas 1C vartotojas turėtų tai žinoti, tereikia suprasti, kad toks vaidmuo reikalingas. Paimkime, pavyzdžiui, SAP. Ten programuotojas, greičiausiai, net nepakils nuo kėdės, jei jo paprašys ką nors sukonfigūruoti programų serveryje. Jis gali būti tiesiog kvailas ir jam nebus gėda. SAP metodikoje tam yra atskiras darbuotojo vaidmuo. Dėl tam tikrų priežasčių manoma, kad 1C pramonėje tai turėtų būti sujungta į vieną darbuotoją už tą patį atlyginimą. Tai kliedesys.

1C serverio trūkumai

Yra lygiai vienas minusas – patikimumas. Arba, jei norite, nenuspėjamumas. Staigus keistas serverio elgesys jau tapo miesto kalba. Universali priemonė – serverio stabdymas ir visų talpyklų išvalymas – aprašyta net eksperto vadove, ir net rekomenduojama paketų knyga, kuri tai daro. Jei jūsų 1C sistema pradeda daryti tai, ko ji net teoriškai neturėtų daryti, laikas išvalyti seanso duomenų talpyklą. Mano vertinimu, visoje šalyje yra tik trys žmonės, kurie moka valdyti 1C serverį be šios procedūros ir paslapčių nesidalina, nes... jie gyvena iš to. Galbūt jų paslaptis ta, kad jie išvalo seanso duomenis, bet niekam apie tai nesako, bičiuli.

Kitu atveju 1C serveris yra tokia pati programa kaip ir bet kuri kita ir yra administruojamas beveik taip pat, skaitant dokumentaciją ir paspaudus tamburiną.

dokininkas

Konteinerinio 1C serverio naudojimo gamyboje naudingumas dar neįrodytas. Serveris nėra sugrupuotas tiesiog pridedant mazgus už balansyro, o tai sumažina gamybos konteinerių naudą iki minimumo, o sėkmingo veikimo konteineriuose didelės apkrovos režimu praktika nėra nustatyta. Todėl tik kūrėjai naudoja „Docker+1C“ bandymo aplinkoms nustatyti. Ten tai labai naudinga, pritaikoma, leidžia žaisti su šiuolaikinėmis technologijomis ir pailsėti nuo konfigūratoriaus nevilties.

Komercinis komponentas

Investiciniu požiūriu 1C leidžia išspręsti greito verslo idėjų paleidimo problemą dėl plačių taikymo klasių galimybių. 1C iš dėžutės suteikia labai tinkamą ataskaitų teikimą, integraciją su bet kuo, žiniatinklio klientu, mobiliuoju klientu, mobiliąja programa, įvairių DBVS palaikymą, įskaitant. nemokama, kelių platformų tiek serverio, tiek įdiegtos kliento dalys. Taip, programų vartotojo sąsaja bus geltona, kartais tai yra minusas, bet ne visada.
Pasirinkęs 1C, verslas gauna aibę programinės įrangos sprendimų, leidžiančių sukurti labai platų programų spektrą, taip pat rinkoje gausu kūrėjų, kurie nori mažiau pinigų nei javaistai ir tuo pačiu greičiau duoda rezultatus.

Pavyzdžiui, PDF sąskaitos faktūros išsiuntimo klientui užduotį galima išspręsti per valandą mokinio darbo. Tą pačią .NET problemą galima išspręsti įsigijus patentuotą biblioteką arba porą dienų ar savaičių kodavimą, kurį atlieka griežtas barzdotas kūrėjas. Kartais abu iš karto. Ir taip, aš kalbėjau tik apie PDF generavimą. Mes net nesakėme, iš kur bus gauta ši sąskaita. Žiniatinklio frontender turi sukurti formą, kurioje operatorius įves duomenis, backender turės sukurti dto modelius JSON perkėlimui, modelius saugojimui duomenų bazėje, pačios duomenų bazės struktūrą, migraciją į ją, grafinio formato formavimą. rodyti šią paskyrą ir tik tada - PDF. 1C visa užduotis nuo nulio atliekama lygiai per valandą.

Visavertė buhalterinė apskaita mažam prekystaliui su vienu perkamu/parduotu verslo procesu atliekama per 3 valandas Su pardavimų ataskaitomis, prekių apskaita pirkimo-pardavimo kainomis, suskirstytas pagal sandėlius, prieigos teisių kontrolę, web klientą ir mobiliąją aplikaciją. . Gerai, pamiršau apie prašymą, su paraiška ne per 3 valandas, per šešias.

Kiek laiko užtruks .NET kūrėjas nuo „Visual Studio“ įdiegimo švariame kompiuteryje iki jos demonstravimo klientui? O kaip su plėtros kaina? Tas pats dalykas.

1C, kaip platformos, stipriosios pusės

1C yra stiprus ne todėl, kad jame yra kažkas konkretaus, kuris yra geriausias pasaulyje. Priešingai, kiekviename atskirame posistemyje galite rasti įdomesnį pasaulio programinės įrangos analogą. Tačiau, remiantis daugelio veiksnių deriniu, nematau platformos, panašios į 1C. Čia ir slypi komercinė sėkmė. Platformos privalumai yra išsibarstę po ją ir aiškiausiai matosi, kai matai, kaip tai daroma kitose platformose. Iš esmės tai net NE bruožai, o priešingai – ypatybių atmetimas vienos konkrečios paradigmos naudai. Keli pavyzdžiai:

  1. Unikodas. Kas po velnių gali būti paprasčiau? 2019 m. nereikia naudoti vieno baito ASCII kodavimo (išskyrus integraciją su senosiomis senosiomis). Niekada. Bet ne. Bet kokiu atveju, kažkas kokioje nors lentelėje naudoja vieno baito varcharą ir programa turės problemų su kodavimu. 2015 m. „gitlab“ LDAP autorizacija nepavyko dėl netinkamo darbo su koduotėmis „JetBrains“ IDE vis dar neveikia su kirilica failų pavadinimuose. 1C suteikia aukštos kokybės programos kodo izoliaciją nuo duomenų bazės sluoksnio. Ten neįmanoma įvesti lentelių žemu lygiu, o nekompetentingų jaunesniųjų jambų duomenų bazės lygiu ten neįmanoma. Taip, gali būti ir kitų problemų su nekompetentingais jaunesniais, bet problemų įvairovė yra daug mažesnė. Dabar jūs man pasakysite, kad jūsų programa sukurta teisingai, o duomenų bazės prieigos sluoksnis yra izoliuotas taip, kaip turėtų būti. Dar kartą pažvelkite į savo įmonės tinkintą Java programą. Glaudžiai ir nuoširdžiai. Ar jus vargina sąžinė? Tada aš džiaugiuosi už tave.
  2. Dokumentų/žinynų numeravimas. 1C jis tikrai nėra pats lankstiausias ir ne pats geriausias. Bet tai, ką jie daro bankininkystės programinėje įrangoje ir savarankiškai parašytose apskaitos sistemose, yra tik tamsa. Arba tapatybė bus įstrigusi (o tada „o, kodėl mes turime skyles“), arba priešingai, jie pagamins generatorių, kuris dirbs su užraktu DBMS lygiu (ir taps kliūtimi). Tiesą sakant, atlikti šią iš pažiūros paprastą užduotį yra gana sunku – objektų skaitiklis nuo galo iki galo, turintis unikalumo skyrių, pagrįstą tam tikru raktų rinkiniu, prefiksacija, kad lygiagrečiai įvedant duomenis neužblokuotų duomenų bazės. .
  3. Įrašų duomenų bazėje identifikatoriai. 1C priėmė tvirtą sprendimą – visi nuorodų identifikatoriai yra visiškai sintetiniai ir viskas. O su paskirstytomis duomenų bazėmis ir mainais problemų nėra. Kitų sistemų kūrėjai atkakliai kuria kažką panašaus į tapatybę (jis trumpesnis!), tempia jas į GUI, kol ateis laikas sukurti kelis susijusius egzempliorius (o tada jie bus atrasti). Ar tu šito neturi? Sąžiningai?
  4. Sąrašai. 1C turi gana sėkmingų (didelių) sąrašų peržiūros ir naršymo mechanizmus. Leiskite man iš karto rezervuoti - tinkamai naudojant mechanizmą! Apskritai tema gana nemaloni, idealiai neišspręsta: arba intuityvi ir paprasta (tačiau gresia didžiuliai įrašų rinkiniai klientui), arba puslapiavimas yra vienokio ar kitokio kreivamedžio. Tie, kurie atlieka puslapius, dažnai tai daro kreivai. Tie, kurie kuria sąžiningą slinkties juostą, prideda duomenų bazę, kanalą ir klientą.
  5. Tvarkomos formos. Be abejo, žiniatinklio kliento sąsaja neveikia idealiai. Bet tai veikia. Tačiau daugeliui kitų apskaitos ir bankininkystės sistemų nuotolinės darbo vietos kūrimas yra įmonės lygio projektas. Atsisakymas: laimei, tiems, kurie iš pradžių tai padarė internete, tai neturės įtakos.
  6. Mobilioji programėlė. Neseniai taip pat galite rašyti programas mobiliesiems būdami toje pačioje ekosistemoje. Čia yra šiek tiek sudėtingiau nei naudojant žiniatinklio klientą, dėl įrenginių specifikos rašyti būtent jiems, tačiau vis dėlto nesamdote atskiros mobiliųjų kūrėjų komandos. Jei jums reikia programos vidiniams įmonės poreikiams (kai mobilusis įmonės problemos sprendimas yra svarbesnis nei geltonas vartotojo sąsajos dizainas), tiesiog naudokite tą pačią platformą.
  7. Ataskaitų teikimas. Šiuo žodžiu aš neturiu omenyje BI sistemos su dideliais duomenimis ir ETL proceso vėlavimu. Tai reiškia operatyvinio personalo ataskaitas, kurios leidžia įvertinti apskaitos būklę čia ir dabar. Likučiai, tarpusavio atsiskaitymai, pergrupavimas ir kt. 1C pristatomas kartu su ataskaitų teikimo sistema su lanksčiais grupavimo, filtrų ir vizualizavimo nustatymais naudotojo pusėje. Taip, rinkoje yra vėsesnių analogų. Tačiau ne pagal „viskas viename“ sprendimą ir už kainą, kartais didesnę nei „viskas viename“ sprendimo. O dažniau netgi atvirkščiai: tik ataskaitų teikimas, bet brangesnis nei visa platforma, o kokybė prastesnė.
  8. Spausdinamos formos. Na, naudokite .NET, kad išspręstumėte atlyginimų lapelių PDF formatu siuntimo darbuotojams el. paštu problemą. O dabar sąskaitų faktūrų spausdinimo užduotis. O kaip išsaugoti jų kopijas tame pačiame PDF faile? Jei naudojate 1C slapyvardį, bet kokio maketo išvedimas į PDF yra +1 kodo eilutė. Tai reiškia + 40 sekundžių darbo laiko, o ne dienų ar savaičių kita kalba. 1C atspausdintų formų maketus yra neįtikėtinai lengva sukurti ir jie pakankamai galingi, kad galėtų konkuruoti su mokamais kolegomis. Taip, tikriausiai, 1C skaičiuoklės dokumentuose nėra daug interaktyvių galimybių, naudodamiesi OpenGL negalite greitai gauti 3D diagramos. Bet ar tai tikrai būtina?

Tai tik keletas pavyzdžių, kai funkcionalumo ribojimas ar kompromisų įgyvendinimas yra svarbi architektūrinė nauda ateityje. Netgi kompromisas ar ne pats efektyviausias variantas – jis jau yra dėžutėje ir laikomas savaime suprantamu dalyku. Savarankiškas jo įgyvendinimas bus arba neįmanomas (nes tokius sprendimus reikia priimti projekto pradžioje, o tam nėra laiko, o ir architekto visai nėra), arba kelios brangios iteracijos. Kiekviename iš išvardytų punktų (ir tai nėra visas architektūrinių sprendimų sąrašas) galite sugadinti ir įvesti apribojimus, kurie blokuoja mastelio keitimą. Bet kokiu atveju jūs, kaip verslininkas, turite įsitikinti, kad jūsų programuotojai, kurdami „sistemą nuo nulio“, turi tiesias rankas ir iš karto gerai atliks subtilius sistemos klausimus.

Taip, kaip ir bet kurioje kitoje sudėtingoje sistemoje, pati 1C taip pat turi sprendimų, kurie tam tikrais aspektais blokuoja mastelio keitimą. Tačiau kartoju, kad, remdamasis veiksnių deriniu, nuosavybės kaina ir jau iš anksto išspręstų problemų skaičiumi, nematau verto konkurento rinkoje. Už tą pačią kainą gausite finansinių programų sistemą, subalansuotą grupinį serverį su vartotojo sąsaja ir žiniatinklio sąsaja, su mobiliąja programa, su ataskaitų teikimu, integravimu ir daugybe kitų dalykų. „Java“ pasaulyje samdote priekinę ir užpakalinę komandą, derinate žemo lygio namuose parašyto serverio kodo rinkinius ir mokate atskirai už 2 mobiliąsias programas už 2 mobiliąsias OS.

Nesakau, kad 1C išspręs visus atvejus, bet vidinei korporacinei programai, kai nereikia žymėti vartotojo sąsajos – ko dar reikia?

Laidu kojų

Tikriausiai susidarėte įspūdį, kad 1C išgelbės pasaulį ir kad visi kiti įmonių sistemų rašymo būdai yra neteisingi. Tai visai ne taip. Verslininko požiūriu, jei pasirinksite 1C, be greito pateikimo į rinką, turite atsižvelgti į šiuos trūkumus:

  • Serverio patikimumas. Reikalingi tikrai kokybiški specialistai, galintys užtikrinti nepertraukiamą jo veikimą. Nežinau apie paruoštą pardavėjo mokymo programą tokiems specialistams. Yra kursų, kaip pasiruošti Eksperto egzaminui, bet to, mano nuomone, neužtenka.
  • Palaikymas. Žiūrėti ankstesnį punktą. Norėdami gauti pardavėjo paramą, turite jį nusipirkti. Dėl tam tikrų priežasčių tai nepriimtina 1C pramonėje. O naudojant SAP tai beveik privaloma įsigyti ir tai niekam netrukdo. Be įmonės palaikymo ir be personalo ekspertų galite likti vienas su 1C trikdžiais.
  • Vis dėlto, jūs negalite padaryti absoliučiai visko su 1C. Tai yra įrankis ir, kaip ir kiekvienas įrankis, jis turi pritaikomumo ribas. 1C kraštovaizdyje labai pageidautina turėti „ne 1C“ sistemos architektą.
  • Geri 1C slapyvardžiai nėra pigesni už gerus programuotojus kitomis kalbomis. Nors blogus programuotojus samdyti brangu, nepaisant kalbos, kuria jie rašo.

Pažymėkime taškus

  • 1C yra sparčiojo taikomųjų programų kūrimo (RAD) sistema verslui ir skirta tam.
  • Trijų pakopų ryšys su pagrindinių DBVS, kliento vartotojo sąsaja, labai geru ORM ir ataskaitų teikimu
  • Didelės galimybės integruoti su sistemomis, kurios gali padaryti tai, ko 1C negali. Jei norite mašininio mokymosi, pasiimkite Python ir išsiųskite rezultatą į 1C per http arba RabbitMQ
  • Nereikia stengtis daryti visko naudojant 1C, reikia suprasti jo stipriąsias puses ir panaudoti jas savo tikslams
  • Kūrėjams, kurie linkę gilintis į technologinės sistemos įtaisus ir kas N metų perkurti naujus variklius, nuobodu 1C. Ten viskas labai konservatyvu.
  • Kūrėjai taip pat nuobodu, nes gamintojas jiems labai mažai rūpinasi. Nuobodi kalba, silpnas IDE. Jie reikalauja modernizavimo.
  • Kita vertus, kūrėjai, kurie negali pasilinksminti naudodami ir mokydamiesi kitos jiems patinkančios technologijos, yra blogi kūrėjai. Jie verkšlens ir persikels į kitą ekosistemą.
  • Darbdaviai, kurie neleidžia savo 1C slapyvardžiams ką nors rašyti Python, yra blogi darbdaviai. Jie praras smalsaus proto darbuotojus, o į jų vietą ateis beždžionių programuotojai, kurie, nors ir sutiks su viskuo, įmonės programinę įrangą temps į pelkę. Vis tiek teks perrašyti, tad gal vertėtų į Python investuoti šiek tiek anksčiau?
  • 1C yra komercinė įmonė ir diegia funkcijas tik atsižvelgdama į savo interesus ir tikslingumą. Negalite jos dėl to kaltinti, verslas turi galvoti apie pelną, toks yra gyvenimas
  • 1C uždirba pinigus parduodant verslo problemų sprendimus, o ne Vasya kūrėjų problemas. Šios dvi sąvokos koreliuoja, bet prioritetas yra būtent tai, ką sakiau. Kai kūrėjas Vasya bus pasirengęs sumokėti už asmeninę 1C: Resharper licenciją, ji pasirodys gana greitai, A. Orefkovos „Resharper“ yra to įrodymas. Jei pardavėjas tai palaikytų, o ne prieš tai kovotų, atsirastų programinės įrangos rinka kūrėjams. Dabar šioje rinkoje yra pusantro žaidėjo su abejotinais rezultatais ir viskas dėl to, kad integracija su IDE yra neigiama ir viskas daroma ant ramentų.
  • Kelių mašinų operatoriaus praktika išnyks į užmarštį. Šiuolaikinės programos yra per didelės, kad būtų galima prisiminti tiek iš kodo, tiek iš verslo pusės. 1C serveris taip pat tampa vis sudėtingesnis, todėl vienas darbuotojas negali turėti visų rūšių patirties. Tai turėtų reikšti specialistų paklausą, o tai reiškia 1C profesijos patrauklumą ir atlyginimų padidėjimą. Jei anksčiau Vasya dirbo trys viename už vieną atlyginimą, dabar reikia samdyti du Vasyus ir konkurencija tarp Vasijų gali paskatinti bendrą jų lygio augimą.

išvada

1C yra labai vertas produktas. Mano kainų diapazone aš išvis nežinau analogų, rašykite komentaruose, jei tokių yra. Tačiau kūrėjų nutekėjimas iš ekosistemos darosi vis labiau pastebimas ir tai yra „protų nutekėjimas“, kad ir kaip žiūrėtum. Pramonė trokšta modernizacijos.
Jei esate kūrėjas, neužkabinkite 1C ir nemanykite, kad kitomis kalbomis viskas yra stebuklinga. Galbūt kol esi jaunesnis. Kai tik reikės spręsti ką nors didesnio, gatavų sprendimų teks ieškoti ilgiau ir intensyviau juos užbaigti. Kalbant apie „blokų“, iš kurių galima pastatyti sprendimą, kokybę, 1C yra labai, labai geras.

Ir dar vienas dalykas - jei 1C slapyvardis ateina pas jus į darbą, tada 1C slapyvardį galima saugiai paskirti į vadovaujančių analitikų pareigas. Jie puikiai supranta užduotį, dalykinę sritį ir skaidymo įgūdžius. Esu tikras, kad taip yra būtent dėl ​​priverstinio DDD naudojimo kuriant 1C. Asmuo yra išmokytas mąstyti pirmiausia apie užduoties prasmę, apie ryšius tarp dalykinės srities objektų, o kartu turi techninį integravimo technologijų ir duomenų mainų formatų pagrindą.

Žinokite, kad idealios sistemos nėra, ir pasirūpinkite savimi.
Gera visiems!

PS: labai ačiū speshuric už pagalbą rengiant straipsnį.

Apklausoje gali dalyvauti tik registruoti vartotojai. Prisijungti, Prašau.

Ar jūsų įmonėje yra 1C?

  • 13,3%Visai ne.71

  • 30,3%Yra, bet tik buhalterijoje kažkur. Pagrindinės sistemos kitose platformose162

  • 41,4%Taip, pagrindiniai verslo procesai veikia su juo221

  • 15,0%1C turi mirti, ateitis priklauso %technology_name%80

Balsavo 534 vartotojai. 99 vartotojų susilaikė.

Šaltinis: www.habr.com

Добавить комментарий