1C - U bè è u male. Disposizione di punti in holivars intornu à 1C

1C - U bè è u male. Disposizione di punti in holivars intornu à 1C

Amici è culleghi, recentemente ci sò stati articuli più frequenti nantu à Habré cù l'odiu versu 1C cum'è una piattaforma di sviluppu, è discorsi da i so difensori. Questi articuli identificanu un prublema seriu: a maiò spessu, i critichi di 1C criticanu da a pusizione di "ùn maestrallu", scolding prublemi chì sò de facto facilmente risolti, è, à u cuntrariu, ùn toccanu micca i prublemi chì sò veramente impurtanti, valenu a pena. discutendu è ùn sò micca risolti da u venditore. Credu chì hè sensu di fà una rivista sobria è equilibrata di a piattaforma 1C. Ciò chì pò fà, ciò chì ùn pò fà, ciò chì duverebbe fà, ma ùn face, è, per a dessert, ciò chì face cù un bang, è i vostri sviluppatori à %technology_name% farà centu anni, scacciendu. più di un budgetu annuale.

In u risultatu, voi, cum'è un manager o un architettu, puderà capisce chjaramente ciò chì u compitu serà benefiziu per voi di utilizà 1C, è induve deve esse brusgiatu cù un ferru caldu. Cum'è un sviluppatore in u mondu "non-1C", puderete vede ciò chì ci hè in 1C chì hè causatu fussi. È cum'è sviluppatore 1C, puderà paragunà u vostru sistema cù l'ecosistemi di altre lingue è capisce a vostra situazione in u sistema di coordenate di sviluppu di software.

Sottu u tagliu ci sò assai attacchi grossi à 1C, à critichi di 1C, à Java, .NET è in generale... U fan hè pienu, benvenutu!

À mè stessu

Sò familiarizatu cù u sughjettu di cunversazione da circa 2004. Aghju programatu prubabilmente dapoi l'età di 6 anni, da u mumentu ch'e aghju avutu un libru nantu à u prufessore Fortran cù fumetti nantu à un gattu, un passeru è una bruca. Aghju analizatu i prugrammi chì u ghjattu hà scrittu da l'imaghjini in u libru è hà scupertu ciò chì anu fattu. È iè, ùn aghju micca un veru computer in quellu tempu, ma ci era un disegnu nantu à a diffusione di u libru è aghju onestamente appughjà i buttoni di carta, inserendu i cumandamenti chì aghju spiatu à u cat X.

Allora ci era BK0011 è BASIC à a scola, C++ è assemblers à l'università, dopu 1C, è tandu tante altre cose chì sò troppu pigro per ricurdà. Per l'ultimi anni 15, aghju participatu principarmenti in 1C, micca solu in termini di codificazione, ma in 1C in generale. Stabbilimentu di i travaglii, amministrazione è devops quì. Per l'ultimi anni 5 sò impegnatu in attività suciali utili in quantu à sviluppà strumenti di sviluppu è automatizazione per altri utilizatori 1C, scrive articuli è libri.

Decidemu nantu à u sughjettu di discussione

Prima, definiscemu ciò chì avemu da parlà, postu chì e lettere "1C" ponu significà assai cose. In questu casu, cù e lettere "1C" intendemu solu u framework di sviluppu "1C: Enterprise" di a versione muderna, ottava. Ùn parlemu micca assai di u fabricatore è di e so pulitiche (ma avemu da fà un pocu, ùn discuteremu micca l'applicazioni specifiche scritte cù stu framework). A tecnulugia hè separata, l'applicazioni aka cunfigurazioni sò separati.

Architettura di altu livellu 1C: Enterprise

Ùn hè per nunda ch'e aghju citatu a parolla "quadru". Da u puntu di vista di u sviluppatore, a piattaforma 1C hè precisamente un quadru. È avete bisognu à trattà esattamente cum'è un quadru. Pensate à questu Spring o ASP.NET, eseguitu da qualchì runtime (JVM o CLR rispettivamente). Hè cusì chì in u mondu di a prugrammazione cunvinziunali ("micca 1C"), a divisione in frameworks, macchine virtuali è applicazioni specifiche hè naturali, per via di u fattu chì sti cumpunenti sò generalmente sviluppati da diversi fabricatori. In u mondu 1C, ùn hè micca abitudine di distingue esplicitamente u framework di sviluppu è u runtime stessu, in più, l'applicazioni specifiche scritte cù u framework sò ancu sviluppati principalmente da 1C stessu. In u risultatu, una certa cunfusione nasce. Dunque, in u quadru di l'articulu, avemu da cunsiderà 1C da parechji lati à una volta è classificà in parechji assi di coordenada. È in ogni assi di coordenada mettemu una pala di sustanza marrone è fighjemu e caratteristiche, vantaghji è disadvantages di a suluzione esistente.

Punti di vista nantu à 1C

1C per u cumpratore

U cumpratore compra un sistema d'automatizazione cù quale puderà risolve rapidamente i prublemi di automatizà a so propria attività. Un affari pò esse una piccula stalla, o pò esse una grande cumpagnia di holding. Hè chjaru chì i bisogni di sti negozii sò diffirenti, ma i dui sò supportati da una sola basa di codice di piattaforma.

Per u cumpratore 1C questu hè un tempu rapidu per u mercatu. Rapidu. Più veloce di Java, C# o JS. Media. Intornu à l'uspidale. Hè chjaru chì un situ web di carta di visita chì utilizeghja React serà megliu, ma u backend di un sistema WMS lanciarà più veloce in 1C.

1C cum'è strumentu

Ogni suluzione tecnologica hà limiti di applicabilità. 1C ùn hè micca una lingua generale, ùn campa micca separatamente da u so quadru. Hè cunsigliatu di utilizà 1C quandu avete bisognu:

  • applicazione di u servitore
  • applicazione induve e finanze appariscenu
  • cù UI pronta, ORM, Reporting, XML/JSON/COM/PDF/YourDataTransferingFormat
  • cù supportu per i prucessi di fondo è i travaglii
  • cù a sicurità basata nantu à u rolu
  • cù logica cummerciale scriptable
  • cù a capacità di creà rapidamente un prototipu è pocu tempu di mercatu

Ùn avete bisognu di 1C se vulete:

  • machine learning
  • Calculi GPU
  • grafica di computer
  • calculi matematichi
  • sistema CAD
  • Trattamentu di signali (sonu, video)
  • Highload http chiamate cù centinaie di millaie di rps

1C cum'è una cumpagnia di fabricazione

Vale a pena capisce ciò chì l'affari di 1C hè un fabricatore di software. A cumpagnia 1C vende suluzioni à i prublemi di l'affari attraversu l'automatizazione. Diverse imprese, grande o chjuca, ma hè ciò chì vende. I mezi per ottene stu scopu sò l'applicazioni cummerciale. Per a cuntabilità, a cuntabilità di a paga, etc. Per scrive queste applicazioni, a cumpagnia usa a so propria piattaforma di sviluppu di l'applicazioni cummerciale. Spécialmente adattatu per i travaglii cumuni di sti stessi applicazioni cummerciale:

  • contabilità finanziaria
  • persunalizazione faciule di a logica cummerciale
  • ampie possibilità di integrazione in paisaghji IT eterogenei

Cum'è un fabricatore, 1C crede chì questa hè a strategia chì vi permette di travaglià cù i partenarii è i clienti in un modu win-win. Pudete argumentà cun questu, ma questu hè quasi cumu si prumove a cumpagnia: suluzioni pronti per i prublemi di l'affari chì ponu esse rapidamente persunalizate da i partenarii è integrate in ogni paisaghju IT.

Tutte e rivendicazioni o desideri per 1C cum'è un quadru deve esse vistu solu per questu prisma. "Vulemu OOP in 1C", dicenu i sviluppatori. "Quantu ci costarà per sustene l'OOP in a piattaforma, questu ci aiuterà à aumentà a vendita di scatuli?", dice 1C. Apre u so "prisma" di vende suluzioni à i prublemi di cummerciale:

- Ehi, affari, vulete OOP in u vostru 1C?
- Questu m'aiuterà à risolve i mo prublemi ?
- Chi sà...
- Allora ùn ci hè bisognu

Stu approcciu pò esse bonu o cattivu sicondu quellu chì l'hà guardatu, ma hè cusì cusì. Parlendu di u fattu chì ùn ci hè micca una funzione X in 1C, avete bisognu di capisce chì ùn hè micca per una ragione, ma in u cuntestu di a scelta "costu di implementazione vs quantità di prufittu".

Classificazione tecnologica

"In fattu, Odinesniks facenu u so megliu per utilizà i migliori mudelli, selezziunati currettamente da i metodologi è i sviluppatori di a piattaforma 1C.
Quandu scrivite u vostru còdice stupidu per una forma gestita simplice, in realtà site aduprate model-view-controller с legame di dati a doppia via в App-engine di trè strati di dati, aromatizzati altu livellu oggettu-relazione-mapping nantu à a basa descrizzione di metadata dichjarazioneavè u so propiu lingua di dumanda indipendente da a piattaforma, c interfaccia d'utilizatore dichjarativa guidata da dati, serializazione cumpleta trasparente è lingua di prugramma orientata à u duminiu.

Induve i sviluppatori 1C differenu da i so culleghi occidentali hè in PR. Li piace à dà un grande nome à qualsiasi stronzata è correre cun ella cum'è un saccu bruttu ".
A. Orefkov

A piattaforma 1C hà una architettura classica di 3 livelli, in u centru di quale hè u servitore di l'applicazione (o a so emulazione per pocu soldi per i picculi cummercianti). O MS SQL o Postgres sò usati cum'è DBMS. Ci hè ancu un supportu per Oracle è IBM DB2, ma questu hè piuttostu esotericu, nimu ùn sapi ciò chì succederà se implementate 1C nantu à queste basa di dati sottu una carica media è alta. Credu chì 1C stessu ùn cunnosci micca questu.

A parte di u cliente hè o un cliente thin installatu nantu à a macchina di l'utilizatore o un cliente web. A funzione chjave hè chì i programatori ùn scrivenu micca 2 codici diffirenti, scrivenu una applicazione, in una lingua, è pudete vede in u navigatore s'ellu ci hè un desideriu o bisognu. Quale ci vulia una vera pila piena è una sola lingua per u fronte è u backend, node.js? Ùn anu mai riesciutu à fà esattamente a stessa cosa finu à a fine. Una vera pila piena esiste, ma avete da scrive in 1C. L'ironia di u destinu, cose cusì :)

A suluzione SaaS nuvola 1C: Fresh funziona ancu in modu di navigatore, in quale ùn pudete micca cumprà 1C, ma affittu una piccula basa di dati è seguite a vendita di shawarma. Solu in u navigatore, senza installà o cunfigurà nunda.

Inoltre, ci hè un cliente legatu, chì in 1C hè chjamatu "applicazione regular". Legacy hè legatu, benvenutu à u mondu di l'applicazioni in u 2002, ma parlemu sempre di u statu attuale di l'ecosistema.

A parte di u servitore 1C sustene u clustering è scale aghjunghjendu novi macchine à u cluster. Molte copie sò state rotte quì è ci sarà una sezione separata in l'articulu nantu à questu. In corta, questu ùn hè micca uguale à aghjunghje un coppiu di esattamente i stessi casi daretu à HAProxy.

U quadru di sviluppu di l'applicazioni usa u so propiu linguaghju di prugrammazione, chì s'assumiglia à pocu pressu à un VB6 ligeramente migliuratu traduttu in Russu. Per e persone chì odianu tuttu u russu, chì ùn crede micca chì "se" hè traduttu cum'è "se", a seconda opzione di sintassi hè offerta. Quelli. Se vulete, pudete scrive in 1C in tale manera chì hè indistinguibile da VB.

1C - U bè è u male. Disposizione di punti in holivars intornu à 1C

Questa lingua di prugrammazione hè u mutivu principale di l'odiu di i nicknames 1C versu a so piattaforma. Facemu a faccia, micca senza ragione. A lingua hè stata cuncipita quant'è simplice pussibule, cuncepita per cumpiendu u mantra "Sviluppatori, Sviluppatori" à una scala almenu in u CIS. L'essenza cummerciale di una tale suluzione, in my opinion, hè chjaramente visibile: più sviluppatori, una più grande cobertura di u mercatu. Questu hè ghjuntu veru, secondu diverse stimi da 45% à 95%. Dicu subitu chì scrive in a lingua chì pensate hè veramente più faciule. È cunnoscu assai lingue di prugrammazione.

Cuminciamu cù a lingua.

lingua di prugrammazione 1C

À u listessu tempu u puntu forte è debule di u sistema. Fornisce entrata faciule è leghjibilità. Per d 'altra banda, ùn hè micca stata aghjurnata da a liberazione di a versione 8 in u 2002 è hè moralmente obsoleta. Qualchissia dicerà "u principal inconveniente hè chì ùn ci hè micca OOP" è seranu sbagliati. Prima, l'OLP ùn piace micca solu Nuraliev, ma ancu Torvalds. È in segundu, OOP esiste sempre.

Da u puntu di vista di u sviluppatore, hà à a so dispusizione un quadru cù classi basi affissate nantu à u DBMS. U sviluppatore pò piglià a classa base "Directory" è eredite u repertoriu "Clienti" da ellu. Puderà aghjunghje novi campi di classi, per esempiu, INN è Indirizzu, è ancu, se ne necessariu, pò annullà i metudi di a classa base, per esempiu, u metu OnWrite / AtRecord.

U quadru hè cuncepitu in tale manera chì l'eredità più profonda hè raramente necessaria, è a restrizione in OOP, in my opinion, hà sensu. 1C si cuncentra nantu à u Sviluppu Guidatu di Dominiu è vi face pensà, prima di tuttu, nantu à u sughjettu di a suluzione sviluppata, è questu hè bonu. Ùn ci hè micca solu tentazione, ma ancu micca bisognu di scrive 10 DTO è ViewModels diffirenti solu per vede qualchi dati da u duminiu in qualchì locu. U sviluppatore 1C opera sempre cù una entità, senza cluttering u cuntestu di percepzioni cù una decina di classi cù nomi simili, chì rapprisentanu a listessa entità, ma da un latu sfarente. Ogni applicazione .NET, per esempiu, cuntene necessariamente cinque o dui ViewModels è DTO per a serializazione in JSON è u trasferimentu di dati da u cliente à u servitore. È circa u 10-15% di u vostru codice di l'applicazione serà spesu trasfirendu dati da una classe à l'altru usendu penne o crutches cum'è AutoMapper. Stu codice deve esse scrittu è i programatori devenu esse pagati per creà è mantene.

Risulta chì a lingua 1C hè difficiule di sviluppà senza cumplicà à u livellu di e lingue mainstream, perdendu cusì u vantaghju di a simplicità. Chì ghjè u compitu di u venditore essenzialmente risoltu: emette una suluzione standard chì ogni studiente catturatu in a strada pò persunalizà cù u livellu di qualità necessariu (vale à dì, un casu chì copre da una stalla à una grande fabbrica hè cumpletata). Sè vo site una stalla, pigliate un studiente sè vo site una fabbrica, pigliate un guru da u vostru cumpagnu di implementazione. U fattu chì i partenarii di implementazione vendenu studienti à u prezzu di un guru ùn hè micca un prublema cù u quadru. Architecturally, u quadru deve risolve i prublemi di i dui, u codice di cunfigurazioni standard (chì avemu vindutu à l'imprese cù a prumessa di persunalizazione) deve esse capace di esse capitu da un studiente, è un guru deve esse capace di capisce ciò chì vulete.

Ciò chì, in u mo parè, hè veramente mancatu in a lingua, ciò chì vi forza à scrive più di ciò chì puderebbe, hè ciò chì perde u tempu pagatu da u cliente.

  • Possibilità di scrive à u livellu, per esempiu, TypeScript (per via di u risultatu, strumenti di analisi di codice più sviluppati in l'IDE, refactoring, menu jambs offensivi)
    Disponibilità di funzioni cum'è oggetti di prima classe. Un cuncettu un pocu più cumplessu, ma a quantità di codice tipicu di boilerplate puderia esse ridutta assai. A capiscitura di u studiente di u codice, IMHO, puderia ancu aumentà per via di a riduzione di u voluminu
  • Litterali di cullezzione universale, inizializzatori. A stessa cosa - riducendu a quantità di codice chì deve esse scrittu è / o guardatu cù i vostri ochji. U riempimentu di cullezzione occupa più di 9000% di u tempu di prugrammazione 1C. Scrivite questu senza zuccaru sintatticu hè longu, caru è propensu à l'errore. In generale, a quantità di LOC in soluzioni 1C supera tutti i limiti cuncepibili paragunatu à i frameworks aperti dispunibili è, in generale, tutti i vostri Javas d'impresa cumminati. A lingua hè verbose, è questu degenera in quantità di dati, memoria, freni IDE, tempu, soldi...
  • infine e custruzzioni aghju l'ipotesi chì sta custruzzione manca per via di u fattu chì ùn anu micca truvatu una traduzzione riescita in russo :)
  • Tipi di dati propiu (senza OOP), analoghi di Type da VB6. Permetterà micca di scrive strutture cù cumenti in u BSP è i metudi magichi chì custruiscenu sti strutture. Avemu: menu codice, un suggerimentu à traversu un puntu, suluzione più veloce à u prublema, menu errori per via di typos è proprietà mancanti di strutture. Avà u typing di strutturi di l'utilizatori hè solu cù u squadra di sviluppu di a Biblioteca di u Subsistema Standard, chì, à u so creditu, scrive currettamente i cumenti nantu à e proprietà previste di e strutture di parametri passati.
  • Nisun zuccaru quandu travaglia cù chjama asincrona nantu à u cliente web. callback-hell in a forma di ProcessingNotifications hè una crutch pruvisoriu causata da un cambiamentu bruscu in l'API di i navigatori principali, ma ùn pudete micca campà cusì tuttu u tempu u vantaghju di "intelligenza di i studienti" di u codice asincronu hè persu sempre di più. Ùn aghjunghje micca supportu per questu paradigma in l'IDE principale è e cose sò ancu peggiu.

Questu hè unu di i prublemi pressanti, hè chjaru chì a lista puderia esse assai più grande, ma ùn deve micca scurdate chì questu ùn hè micca sempre una lingua generale, ùn hè micca bisognu di multithreading, funzioni lambda, accessu à a GPU è veloce. calculs à virgule flottante. Questa hè una lingua di scrittura di logica cummerciale.

Un programatore chì hà digià travagliatu assai cù sta lingua, sguardi in js o c#, si annoia in u quadru di sta lingua. Hè un fattu. Hà bisognu di sviluppu. À l'altra parte di a scala per u venditore hè u costu di implementà e funzioni specificate versus l'aumentu di i rivenuti dopu a so implementazione. Quì ùn aghju micca infurmazione nantu à ciò chì hè attualmente sopra à l'ochji di a cumpagnia.

Ambiente di sviluppu

E cose ùn vanu bè ancu quì. Ci sò dui ambienti di sviluppu. U primu hè u Configuratore inclusu in a consegna. U sicondu hè l'ambiente di Strumenti di sviluppu di l'impresa, o EDT in breve, sviluppatu nantu à a basa di Eclipse.

U cunfiguratore furnisce una gamma completa di attività di sviluppu, sustene tutte e funzioni è hè l'ambiente principale in u mercatu. Hè ancu moralmente obsoletu, micca sviluppatu, sicondu i rumuri - per via di a quantità di debitu tecnicu in sè stessu. A situazione puderia esse migliurata aprendu una API interna (in forma di amicizia cù pupu di neve A. Orefkova o nantu à una basa indipendente), ma questu hè micca u casu. A pratica hà dimustratu chì a cumunità scriverà e so funziunalità in l'IDE, sempre chì u venditore ùn interferiscenu micca. Ma avemu ciò chì avemu. U cunfiguratore era grande in 2004-2005, assai reminiscente di Visual Studio di quelli tempi, in certi lochi era ancu più frescu, ma era stuck in quelli tempi.

Inoltre, u voluminu di a suluzione standard media hè cresciutu parechje volte da tandu, è oghje l'IDE simpricimenti ùn pò micca affruntà a quantità di codice cù quale hè alimentatu. L'usabilità è e capacità di refactoring ùn sò ancu cero, sò in rossu. Tuttu chistu ùn aghjunghje micca entusiasmu à i sviluppatori è sò sognu di trasfurmà in altri ecosistemi è cuntinueghjanu à codificà a merda quì, ma in un ambiente piacevule chì ùn sputa micca in faccia cù u so cumpurtamentu.

In alternativa, un IDE scrittu da zero, custruitu nantu à Eclipse, hè offertu. Quì, i fonti, cum'è in ogni altru software, vivenu in forma di schedarii di testu, sò almacenati in GIT, pull request branch, tuttu questu. À u latu, ùn hà micca lasciatu u status beta dapoi parechji anni, ancu s'ellu hè megliu cù ogni versione. Ùn scriveraghju micca nantu à i disadvantages di EDT, oghje hè un minus, dumane hè una funzione fissa. A rilevanza di una tale descrizzione svanisce rapidamente. Oghje hè pussibule di sviluppà in EDT, ma hè inusual chì deve esse preparatu per un certu numaru di bugs IDE.

Se guardate a situazione attraversu u "prisma 1C" sopra citatu, avete qualcosa cusì: a liberazione di u novu IDE ùn aumenta micca a vendita di scatuli, ma u flussu di DEVELOPERS pò esse ridutta. Hè difficiuli di dì ciò chì aspetta à l'ecosistema in quantu à u cunfortu di u sviluppatore, ma Microsoft hà digià sbulicatu i sviluppatori mobili offrenduli i so servizii troppu tardi.

Gestione di u sviluppu

Tuttu quì hè significativamente megliu cà in u codice di scrittura, soprattuttu di pocu tempu, quandu i sforzi di a cumunità anu purtatu à a luce i prublemi di l'automatizazione di l'amministrazione, lanciatu prototipi chì chjamanu à scaccià u repository 1C in a basura è utilizendu git, quick blame, code-review. , analisi statica, implementazione automatica è etc. Parechje caratteristiche sò state aghjunte à a piattaforma chì aumentanu u livellu di l'automatizazione di i travaglii di sviluppu. In ogni casu, tutte queste caratteristiche sò state aghjunte solu è solu per u sviluppu di i nostri prudutti grandi, quandu hè diventatu evidenti chì ùn pudemu micca fà senza automatizazione. Ci sò stati auto-fusioni, paraguni à trè vie cù KDiff è tuttu ciò. Lanciatu nantu à Github gitconverter, chì, francamente, hè statu trascinatu ideologicamente da u prugettu gitsync, ma mudificatu per adattà à i prucessi di a cumpagnia di u venditore. Grazie à i picciotti stubborn da open-source, l'automatizazione di u sviluppu in 1C hè ghjunta in terra. Una API aperta per u configuratore, IMHO, cambiassi ancu l'arrettu morale di l'IDE principale.

Oghje, almacenà fonti 1C in git cù commits ligati à prublemi in Jira, recensioni in Crucible, push button da Jenkins è rapporti Allure nantu à teste di codice in 1C è ancu analisi statica in SonarQube - questu hè luntanu da a nutizia, ma piuttostu u mainstream in cumpagnie induve ci hè assai di sviluppu 1C.

Amministrazione

Ci hè assai da dì quì. Prima, questu hè, sicuru, un servitore (cluster di servitori 1C). Una cosa maravigliosa, ma per u fattu chì hè una scatula completamente nera, documentata in abbastanza dettagliu, ma in un modu specificu - maestru di u lanciamentu di l'operazione ininterrotta in modalità highload in parechji servitori hè u lottu di uni pochi selezziunati chì portanu un medaglia cù l'iscrizione "Espertu nantu à i prublemi tecnologichi". Hè da nutà chì, in principiu, l'amministrazione di un servitore 1C ùn hè micca sfarente di l'amministrazione di qualsiasi altru servitore. Hè una applicazione basata in rete, multi-threaded chì cunsuma memoria, CPU è risorse di discu. Fornisce ampie opportunità per a raccolta di telemetria è diagnostichi.

U prublema quì hè chì u venditore ùn offre nunda di spiciali in quantu di suluzioni pronti per questu diagnosticu assai. Iè, ci hè 1C: Instrumentation and Control Center, sò ancu abbastanza boni, ma sò assai caru è micca tutti l'anu. Ci hè una quantità di sviluppi in a cumunità per cunnette Grafana, Zabbix, ELK è altre cose da u set di amministratore standard, ma ùn ci hè micca una solu suluzione chì si adatta à a maiuranza. U compitu aspetta u so eroe. È sì un affari chì pensa à lancià nantu à un cluster 1C, avete bisognu di un Expert. U vostru propiu internu o da l'esternu, ma avete bisognu. Hè normale chì ci hè un rolu separatu cù cumpetenze per u funziunamentu di u servitore, micca tutti l'utilizatori 1C deve sapè questu, avete bisognu di capisce chì un tali rolu hè necessariu. Pighemu SAP per esempiu. Quì, un programatore, assai prubabilmente, ùn si alzarà ancu da a so sedia s'ellu hè dumandatu à cunfigurà qualcosa in u servitore di l'applicazione. Pò esse solu stupidu è ùn sarà micca vergogna. In a metodulugia SAP ci hè un rolu di l'impiegatu separatu per questu. Per una certa ragione, in l'industria 1C si crede chì questu deve esse cumminatu in un impiigatu per u stessu salariu. Hè una illusione.

Svantaghji di u servitore 1C

Ci hè esattamente un minus - affidabilità. O, se preferite, imprevisibilità. Cumportamentu stranu subitu di u servitore hè digià diventatu a parolla di a cità. Un rimediu universale - piantà u servitore è sguassà tutte e cache - hè ancu descrittu in u manual di l'espertu, è ancu un libru di batch hè cunsigliatu chì faci questu. Se u vostru sistema 1C cumencia à fà qualcosa chì ùn deve mancu teoricamente fà, hè ora di sguassà a cache di dati di sessione. Sicondu a mo stima, ci sò solu trè persone in tuttu u paese chì sà cumu uperà un servitore 1C senza sta prucedura è ùn sparte micca sicreti, perchè ... campanu da questu. Forsi u so sicretu hè chì puliscenu e dati di sessione, ma ùn ne dicenu à nimu, omu.

Altrimenti, u servitore 1C hè a listessa applicazione cum'è qualsiasi altru è hè amministratu in u stessu modu, leghjendu a documentazione è pichjendu u tamburinu.

Docker

L'utilità di utilizà un servitore 1C cuntainerizatu in a produzzione ùn hè micca stata pruvata. U servitore ùn hè micca raggruppatu solu per aghjunghje nodi daretu à l'equilibriu, chì riduce i beneficii di a cuntainerizazione di a produzzione à u minimu, è a pratica di l'operazione riescita in cuntenituri in u modu highload ùn hè micca stata stabilita. In u risultatu, solu i sviluppatori utilizanu Docker + 1C per stabilisce ambienti di prova. Ci hè assai utile, appiicatu, vi permette di ghjucà cù tecnulugii muderni è piglià una pausa da u disprezzu di u cunfiguratore.

Cumpunente cummerciale

Da un puntu di vista di l'investimentu, 1C permette di risolve u prublema di lancià rapidamente idee di cummerciale per via di e capacità larga di e classi di applicazione. 1C fora di a scatula dà un rapportu assai decentu, integrazione cù qualcosa, cliente web, cliente mobile, applicazione mobile, supportu per diversi DBMS, incl. gratuitu, cross-platform sia servitore è parti di cliente installate. Iè, l'UI di l'applicazioni serà gialla, qualchì volta questu hè un minus, ma micca sempre.
Sceglie 1C, un affari riceve un inseme di suluzioni di software chì li permettenu di custruisce una gamma assai larga di applicazioni, è ancu assai sviluppatori nantu à u mercatu chì volenu menu soldi cà i Javaisti è à u stessu tempu pruduce risultati più veloce.

Per esempiu, u compitu di mandà una fattura PDF à un cliente pò esse risolta in una ora di travagliu studiente. U listessu prublema in .NET pò esse risolta per cumprà una biblioteca di pruprietà, o un paru di ghjorni o settimane di codificazione da un sviluppatore severu è barbutu. Calchì volta, tramindui in una volta. È iè, parlava solu di generazione PDF. Ùn avemu micca dettu da induve venerà ancu questu billu. U frontender web deve creà un furmulariu induve l'operatore entre in i dati, u backender duverà creà mudelli dto per u trasferimentu di JSON, mudelli per almacenà in a basa di dati, a struttura di a basa di dati stessu, a migrazione à questu, a furmazione di una gràfica. visualizazione di stu contu assai, è solu dopu - PDF. In 1C, tuttu u compitu, da zero, hè cumpletu in esattamente una ora.

Un sistema di cuntabilità cumpletu per una piccula stalla cù un prucessu cummerciale / vindutu hè fattu in 3 ore cù rapportu di vendita, cuntabilità di merchenzie à i prezzi di compra è di vendita, suddivisu per magazzinu, cuntrollu di diritti d'accessu, cliente web è applicazione mobile. . Va bè, aghju scurdatu di l'applicazione, cù l'applicazione micca in 3 ore, in sei.

Quantu tempu durarà questu compitu à un sviluppatore .NET da installà u studio visuale nantu à un urdinatore pulitu per dimustrà à u cliente? Chì ci hè u costu di u sviluppu? Stessa cosa.

Punti di forza di 1C cum'è piattaforma

1C hè forte micca perchè ci hè qualcosa di specificu chì hè u megliu in u mondu. À u cuntrariu, in ogni subsistema individuale pudete truvà un analogu più interessante in u software di u mondu. Tuttavia, basatu annantu à una cumminazione di fatturi, ùn vecu micca una piattaforma simili à 1C. Questu hè induve u successu cummerciale. I vantaghji di a piattaforma sò spargugliati in tuttu è sò più chjaramente visibili quandu vi vede cumu questu hè fattu in altre plataforme. In fondu, questi ùn sò mancu funziunalità, ma à u cuntrariu - un rifiutu di e caratteristiche in favore di un paradigma specificu. Uni pochi esempi:

  1. Unicode. Chì l'infernu puderia esse più simplice? Ùn ci hè bisognu di utilizà codificazioni ASCII à un byte in 2019 (eccettu per l'integrazione cù l'antichi legacy). Mai. Ma nò. In ogni casu, qualcunu in qualchì tavula usa un varchar di un byte è l'applicazione avarà prublemi cù codificazioni. In 2015, l'autorizazione LDAP di gitlab hà fallutu per via di u travagliu incorrectu cù e codificazioni JetBrains IDE ùn viaghja micca cù Cyrillic in i nomi di schedari in ogni locu. 1C furnisce un isolamentu di alta qualità di u codice di l'applicazione da a capa di basa di dati. Ci hè impussibile di scrive tavule à un livellu bassu è i jambs di juniors incompetenti à u livellu di basa di dati sò impussibili. Iè, pò esse altri prublemi cù juniors incompetenti, ma a varietà di prublemi hè assai più chjuca. Avà mi dicerete chì a vostra applicazione hè cuncepita currettamente è a capa d'accessu à a basa di dati hè isolata cum'è deve esse. Fate un altru sguardu à a vostra applicazione Java customizata corporativa. Da vicinu è onestamente. A vostra cuscenza vi disturba ? Allora sò felice per voi.
  2. Numerazione di ducumenti / libri di riferimentu. In 1C ùn hè definitu micca u più flexible è micca u megliu. Ma ciò chì facenu in u software bancariu è in i sistemi di cuntabilità autoscritti - bè, hè solu bughjura. Sia l'identità serà chjappata (è dopu "oh, perchè avemu i buchi"), o à u cuntrariu, facenu un generatore chì travaglia cù chjusi à u livellu DBMS (è diventerà un collu di buttiglia). In fatti, hè abbastanza difficiuli di fà stu compitu apparentemente simplice - un enumeratore end-to-end di entità, cù una sezione di unicità basatu annantu à un certu settore di chjavi, prefissazione, per ùn impedisce micca a basa di dati durante l'ingressu di dati paralleli. .
  3. Identificatori di registri in a basa di dati. 1C hà fattu una decisione forte - tutti l'identificatori di ligame sò assolutamente sintetici è questu hè. È ùn ci sò micca prublemi cù basa di dati distribuiti è scambii. I sviluppatori di altri sistemi creanu stubbornly qualcosa cum'è l'identità (hè più corta!), Trascinate in a GUI finu à u tempu di creà parechji casi rilativi (è allora seranu scuperti). Ùn avete micca questu? Onestamente?
  4. Listi. 1C hà meccanismi abbastanza riesciuti per a paginazione di listi (grandi) è di navigazione per elli. Lasciami fà una riservazione subitu - cù l'usu currettu di u mecanismu! In generale, u tema hè abbastanza dispiacevule, ùn pò micca esse risoltu idealmente: hè intuitivu è simplice (ma u risicu di enormi recordsets nantu à u cliente), o paginazione hè di una o una altra crookedness. Quelli chì facenu paging spessu u facenu in modu stortu. Quelli chì facenu un scrollbar onestu aghjunghjenu una basa di dati, un canale è un cliente.
  5. Forme gestite. Senza dubbitu, in u cliente web l'interfaccia ùn funziona micca perfettamente. Ma travaglia. Ma per parechji altri sistemi di cuntabilità è banca, a creazione di un locu di travagliu remoto hè un prughjettu à livellu di l'impresa. Disclaimer: per furtuna per quelli chì l'anu fattu originalmente in u web, questu ùn hà micca affettatu.
  6. App mobile. Ricertamenti, pudete ancu scrive applicazioni mobili mentre in u stessu ecosistema. Hè un pocu più cumplicatu quì chì cù un cliente web i specifichi di i dispositi vi forzanu à scrive specificamente per elli, ma, in ogni modu, ùn avete micca un squadra separata di sviluppatori mobili. Sè avete bisognu di una applicazione per i bisogni interni di una cumpagnia (quandu una suluzione mobile à un prublema corporativu hè più impurtante chè un disignu UI giallu), simpricimenti utilizate a stessa piattaforma fora di a scatula.
  7. Rapportu. Per questa parolla ùn vogliu micca dì un sistema BI cù big data è un lag in u prucessu ETL. Questu si riferisce à i rapporti di u persunale operativu chì permettenu di valutà u statu di a cuntabilità quì è avà. Bilanci, liquidazioni mutuali, re-grading, etc. 1C esce da a scatula cun un sistema di rapportu cù paràmetri flessibili per raggruppamenti, filtri è visualizazione da u latu di l'utilizatori. Iè, ci sò analoghi più freschi nantu à u mercatu. Ma micca in u quadru di una suluzione all-in-one è à un prezzu qualchì volta più altu ch'è una suluzione all-in-one. È più spessu hè ancu l'inversu: solu rappurtazioni, ma più caru chè tutta a piattaforma, è peghju in qualità.
  8. Forme stampate. Ebbè, aduprate .NET per risolve u prublema di l'inviu di i salarii in PDF à l'impiegati per email. È avà u compitu di stampà fatture. Chì ci hè di salvà e so copie in u stessu PDF? Per u nickname 1C, l'emissione di qualsiasi layout in PDF hè +1 linea di codice. Questu significa + 40 seconde di tempu di travagliu, invece di ghjorni o settimane in una altra lingua. I layout di forma stampata in 1C sò incredibbilmente facili da sviluppà è abbastanza putenti per cumpete cù i contraparti pagati. Iè, prubabilmente, ùn ci sò parechje opportunità interattive in i ducumenti di spreadsheet 1C ùn pudete micca ottene rapidamente un diagramma 3D cù scala cù OpenGL. Ma hè veramente necessariu?

Quessi sò solu una manciata d'esempi induve a limitazione di a funziunalità o l'implementazione di cumprumessi risultanu esse un benefiziu architettonicu impurtante in u futuru. Ancu un cumprumissu o micca l'opzione più efficau - hè digià in a scatula è hè pigliatu per cuncessu. A so implementazione indipendente serà impussibile (perchè tali decisioni deve esse fatta à u principiu di u prugettu, è ùn ci hè micca tempu per quessa, è ùn ci hè micca un architettu), o parechje iterazioni caru. In ognuna di i punti listati (è questu ùn hè micca una lista cumpleta di suluzioni architettoniche), pudete sfondate è intruduce restrizioni chì bloccanu a scala. In ogni casu, voi, cum'è un omu d'affari, avete bisognu di assicurà chì i vostri programatori, quandu facenu un "sistema da zero", anu mani dritte è farà subitu prublemi di sistema suttili.

Iè, cum'è in ogni altru sistema cumplessu, 1C stessu hà ancu suluzioni chì bloccanu a scala in certi aspetti. In ogni casu, ripetu, basatu annantu à una cumminazione di fatturi, u costu di pruprietà, è u nùmeru di prublemi digià risolti in anticipu, ùn vecu micca un competitore degnu in u mercatu. Per u listessu prezzu, avete un quadru di l'applicazione finanziaria, un servitore equilibratu raggruppatu, cù una UI è una interfaccia web, cù una applicazione mobile, cun rapportu, integrazione è una mansa di altre cose. In u mondu Java, ingaghjate una squadra di front-end è back-end, debug banchetti di livellu bassu di codice di u servitore scrittu in casa è paghe separatamente per 2 applicazioni mobili per 2 OS mobili.

Ùn dicu micca chì 1C risolverà tutti i casi, ma per una applicazione corporativa interna, quandu ùn ci hè micca bisognu di marca l'UI - chì altru hè necessariu?

Vola in l'ingudu

Probabilmente avete l'impressione chì 1C salverà u mondu è chì tutti l'altri modi di scrive sistemi corporativi sò sbagliati. Ùn hè micca cusì cusì. Da u puntu di vista di un omu d'affari, se sceglite 1C, allora in più di u tempu di vendita veloce, duvete piglià in contu i seguenti svantaghji:

  • affidabilità di u servitore. Hè bisognu di specialisti veramente d'alta qualità chì ponu assicurà u so funziunamentu ininterrottu. Ùn sò micca cunnisciutu di un prugramma di furmazione pronta per tali specialisti da u venditore. Ci sò corsi per preparà per l'esame Expert, ma questu, in my opinion, ùn hè micca abbastanza.
  • Supportu. Vede u puntu precedente. Per avè supportu da u venditore, avete bisognu di cumprà. Per qualchì mutivu questu ùn hè micca accettatu in l'industria 1C. È cù SAP, hè guasi una compra obbligatoria è ùn disturba à nimu. Senza supportu corporativu è senza un espertu di u persunale, pudete esse lasciatu solu cù glitches 1C.
  • Eppuru, ùn pudete micca fà assolutamente tuttu cù 1C. Questu hè un strumentu è cum'è ogni strumentu hà limiti di applicabilità. In u paisaghju 1C, hè assai desideratu avè un architettu di sistema "non-1C".
  • I boni soprannomi 1C ùn sò micca più prezzu di i boni programatori in altre lingue. Ancu s'è, i mali programatori sò caru per ingaghjà, indipendentemente da a lingua chì scrivenu.

Ponemu i punti

  • 1C hè un framework di sviluppu rapidu di applicazioni (RAD) per l'affari è hè adattatu per questu.
  • Link à trè livelli cù supportu per i DBMS maiò, UI di u cliente, un ORM assai bonu è rapportu
  • Ampiu pussibulità di integrazione cù sistemi chì ponu fà ciò chì 1C ùn pò micca. Se vulete apprendimentu automaticu, pigliate Python è mandate u risultatu à 1C via http o RabbitMQ
  • Ùn ci hè bisognu di sforzà di fà tuttu cù 1C, avete bisognu di capiscenu i so punti di forza è l'utilizanu per i vostri scopi.
  • I sviluppatori chì gravitanu à scavà in i gadgets di marcu tecnulugichi è riprogettate ogni N anni à un novu mutore sò stanchi di 1C. Tuttu hè assai cunservatore quì.
  • I sviluppatori sò ancu annoiati perchè ci hè assai poca preoccupazione per elli da u fabricatore. Lingua noiosa, IDE debule. Hanu bisognu di mudernizazione.
  • Per d 'altra banda, i sviluppatori chì ùn ponu micca truvà divertimentu cù l'usu è l'apprendimentu di una altra tecnulugia chì piacenu sò i sviluppatori cattivi. Chiagneranu è si movenu in un altru ecosistema.
  • I patroni chì ùn permettenu micca i so nicknames 1C per scrive qualcosa in Python sò cattivi patroni. Perderanu l'impiegati cù menti curiose, è in u so locu vinaranu codificatori di scimmia chì, mentre accunsenu cù tuttu, trascinaranu u software corporativu in u palude. Avarà ancu esse riscritta, allora forse saria megliu investisce un pocu in Python un pocu prima ?
  • 1C hè una sucietà cummerciale è implementa funzioni basate solu nantu à i so interessi è a convenienza. Ùn pudete micca culpisce per questu, l'affari deve pensà à u prufittu, questu hè a vita
  • 1C face soldi vendendu suluzioni à i prublemi di cummerciale, micca à i prublemi di sviluppatori di Vasya. Questi dui cuncetti correlate, ma a priorità hè esattamente ciò chì aghju dettu. Quandu u sviluppatore Vasya hè prontu à pagà per una licenza persunale per 1C: Resharper, apparirà abbastanza rapidamente, "Resharper" da A. Orefkova hè a prova di questu. Se u venditore l'hà supportatu, è ùn hà micca battutu contru à questu, un mercatu per u software per i sviluppatori apparisce. Avà ci sò un ghjucadore è mezu in questu mercatu cù risultati discutibili, è tuttu perchè l'integrazione cù l'IDE hè negativa è tuttu hè fattu nantu à crutches.
  • A pratica di un operatore multi-machine sparirà in l'obliu. L'applicazioni muderne sò troppu grande per ricurdà sia da u latu di u codice sia da u latu di l'usu cummerciale. U servitore 1C hè ancu diventatu più cumplessu, serà impussibile di mantene tutti i tipi di sapè in un impiigatu. Questu deve esse una dumanda di specialisti, chì significa l'attrattiva di a professione 1C è un aumentu di i salarii. Se prima Vasya hà travagliatu trè in unu per un salariu, avà avete bisognu di impiegà dui Vasyas è a cumpetizione trà Vasyas pò stimulà a crescita generale di u so livellu.

cunchiusioni

1C hè un pruduttu assai degnu. In u mo prezzu, ùn cunnoscu micca analogi à tutti, scrivite in i cumenti s'ellu ci sò. In ogni casu, u flussu di sviluppatori da l'ecosistema hè diventatu più è più notevuli, è questu hè un "fuga di u cervellu", ùn importa micca cumu si vede. L'industria hè affamata di mudernizazione.
Sè vo site un sviluppatore, ùn avete micca appiccicatu nantu à 1C è ùn pensate micca chì tuttu hè magicu in altre lingue. Mentre site junior, forse. Appena qualcosa più grande deve esse risolta, suluzioni pronti deve esse cercatu più longu è cumpletu più intensivamente. In quantu à a qualità di i "blocchi" da quale una suluzione pò esse custruitu, 1C hè assai, assai bonu.

È una cosa più - se un soprannomu 1C vene à voi per impiegà, allura u soprannomu 1C pò esse designatu in modu sicuru à a pusizione di analisti principali. A so capiscitura di u compitu, u sughjettu è e cumpetenze di descomposizione hè eccellente. Sò sicuru chì questu hè precisamente per via di l'usu forzatu di DDD in u sviluppu 1C. Una persona hè furmatu per pensà à u significatu di un compitu prima di tuttu, nantu à e ligami trà l'uggetti di l'area di u sughjettu, è à u stessu tempu hà un fondu tecnicu in tecnulugia d'integrazione è formati di scambiu di dati.

Siate cuscenti chì u quadru ideale ùn esiste micca è cura di sè stessu.
Bon à tutti!

PS: ti ringraziu assai speshuric per aiutu à a preparazione di l'articulu.

Solu l'utilizatori registrati ponu participà à l'indagine. Firmà lu, per piacè.

Avete 1C in a vostra impresa?

  • 13,3%Nunda.71

  • 30,3%Ci hè, ma solu in u dipartimentu di cuntabilità in qualchì locu. Sistemi core nantu à altre piattaforme162

  • 41,4%Iè, i principali prucessi di cummerciale travaglianu nantu à questu221

  • 15,0%1C deve more, u futuru appartene à %technology_name%80

534 utilizatori anu vutatu. 99 utilizatori si sò astenuti.

Source: www.habr.com

Add a comment