{"id":32475,"date":"2019-10-31T21:47:15","date_gmt":"2019-10-31T18:47:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/platforma-1s-predpriyatie-chto-pod-kapotom\/"},"modified":"2019-10-31T21:47:15","modified_gmt":"2019-10-31T18:47:15","slug":"platforma-1s-predpriyatie-chto-pod-kapotom","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","title":{"rendered":"Platforma \u201e1C: Enterprise\u201d \u2014 ce se afl\u0103 sub capot\u0103?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Salut, Habr! <br \/>\n\u00cen acest articol, vom \u00eencepe povestea despre cum este structurat interior <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">platforma \u201e1C:Enterprise 8\u201d<\/a><\/noindex> \u0219i ce tehnologii sunt folosite \u00een dezvoltarea sa.<\/p>\n<p><img decoding=\"async\" alt=\"Platforma \u201e1C: Enterprise\u201d \u2014 ce se afl\u0103 sub capot\u0103?\" src=\"\/wp-content\/uploads\/2019\/04\/9375ea3be32979a7d8c72239dfd50f07.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe ce consider\u0103m c\u0103 este interesant? \u00cen primul r\u00e2nd, pentru c\u0103 platforma \u201e1C:Enterprise 8\u201d este o aplica\u021bie vast\u0103 (peste 10 milioane de linii de cod) scris\u0103 \u00een C++ (client, server etc.), JavaScript (client web) \u0219i, de cur\u00e2nd, \u0219i <noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=19821\">Java<\/a><\/noindex>. Proiectele mari sunt interesante m\u0103car prin prisma dimensiunii lor, deoarece problemele care trec neobservate \u00een o baz\u0103 de cod mic\u0103 devin evidente \u00een astfel de proiecte. \u00cen al doilea r\u00e2nd, \u201e1C:Enterprise\u201d este un produs replicabil, \u201eboxat\u201d, iar articolele despre astfel de dezvolt\u0103ri pe Habr sunt destul de pu\u021bine. De asemenea, este \u00eentotdeauna interesant s\u0103 afli cum se descurc\u0103 alte echipe \u0219i firme.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nA\u0219adar, s\u0103 \u00eencepem. \u00cen acest articol, vom face un rezumat al unor tehnologii care sunt utilizate \u00een platform\u0103, contur\u00e2nd peisajul, f\u0103r\u0103 a ne ad\u00e2nci prea mult \u00een implementare. Deoarece pentru multe mecanisme, o poveste detaliat\u0103 ar necesita un articol separat, iar pentru altele \u2013 o \u00eentreag\u0103 carte!<br \/>\nPentru \u00eenceput, este important s\u0103 ne stabilim lucrurile de baz\u0103 \u2013 ce este platforma \u201e1C:Enterprise\u201d \u0219i din ce componente este format\u0103. R\u0103spunsul la aceast\u0103 \u00eentrebare nu este simplu, deoarece prin termenul \u201ePlatform\u0103\u201d (pentru scurtare ne vom referi la ea \u00een acest mod) se \u00een\u021belege at\u00e2t instrumentul de dezvoltare a aplica\u021biilor de afaceri, c\u00e2t \u0219i mediul de execu\u021bie, precum \u0219i instrumentele de administrare. \u00cen mod arbitrar, putem distinge urm\u0103toarele componente:<\/p>\n<ul>\n<li>cluster de servere<\/li>\n<li>client \u201esub\u021bire\u201d capabil s\u0103 se conecteze la server prin http \u0219i propriul s\u0103u protocol binar<\/li>\n<li>client pentru lucrul \u00eentr-o arhitectur\u0103 cu dou\u0103 niveluri cu baza de date, plasat\u0103 pe un hard disk sau pe un folder de re\u021bea<\/li>\n<li>client web<\/li>\n<li>instrumente de administrare a serverului de aplica\u021bii<\/li>\n<li>mediul de dezvoltare (cunoscut ca Configurator)<\/li>\n<li>mediu de execu\u021bie pentru iOS, Android \u0219i Windows Phone (platforma mobil\u0103 1C)<\/li>\n<\/ul>\n<p>\nToate aceste p\u0103r\u021bi, cu excep\u021bia clientului web, sunt scrise \u00een C++. \u00cen plus, exist\u0103 recent anun\u021batul <noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=19821\">Configurator de nou\u0103 genera\u021bie<\/a><\/noindex>, scris \u00een Java.<\/p>\n<h3>Aplica\u021bii native<\/h3>\n<p>\nPentru dezvoltarea aplica\u021biilor native se folose\u0219te C++03. Pe Windows se utilizeaz\u0103 compilatorul Microsoft Visual C++ 12 (profil compatibil cu Windows XP), iar pe Linux \u0219i Android \u2014 gcc 4.8, pentru iOS \u2014 clang 5.0. Biblioteca standard utilizat\u0103 este comun\u0103 pentru toate sistemele de operare \u0219i compilatoare \u2014 STLPort. Aceast\u0103 solu\u021bie permite reducerea probabilit\u0103\u021bii de erori specifice implement\u0103rii STL. \u00cen prezent, planific\u0103m tranzi\u021bia c\u0103tre implementarea STL furnizat\u0103 cu CLang, deoarece STLPort a \u00eencetat s\u0103-\u0219i dezvolte suportul \u0219i este incompatibil cu modul de suport C++11 activat \u00een gcc.<br \/>\nCodul surs\u0103 al serverului este comun \u00een propor\u021bie de 99%, iar al clientului \u2014 \u00een propor\u021bie de 95%. Mai mult, chiar \u0219i platforma mobil\u0103 folose\u0219te acela\u0219i cod C++ ca \u0219i cea \u201emare\u201d, de\u0219i acolo procentul de unificare este ceva mai mic. <br \/>\nCa majoritatea utilizatorilor de C++, nu pretindem s\u0103 folosim 100% din capacit\u0103\u021bile limbajului \u0219i bibliotecilor sale. Astfel, practic nu folosim Boost, iar dintre capacit\u0103\u021bile limbajului \u2014 realizarea dinamic\u0103 a tipurilor. Totu\u0219i, aplic\u0103m activ:<\/p>\n<ul>\n<li>STL (\u00een special, \u0219iruri, containere \u0219i algoritmi)<\/li>\n<li>mo\u0219tenire multipl\u0103, inclusiv mo\u0219tenire multipl\u0103 a implement\u0103rii<\/li>\n<li>\u0219abloane<\/li>\n<li>excep\u021bii<\/li>\n<li>puncte de inteligen\u021b\u0103 (implementare proprie)<\/li>\n<\/ul>\n<p>\nPrin utilizarea mo\u0219tenirii multiple a interfe\u021belor (clase complet abstracte), devine posibil\u0103 modelul componentelor, despre care vom discuta mai jos.<\/p>\n<h3>Componente<\/h3>\n<p>\nPentru asigurarea modularit\u0103\u021bii, toat\u0103 func\u021bionalitatea este \u00eemp\u0103r\u021bit\u0103 \u00een componente, care sunt biblioteci dinamice (*.dll pe Windows, *.so \u2014 pe Linux). Exist\u0103 \u00een total peste o sut\u0103 cincizeci de componente, iat\u0103 descrierile unora dintre ele:<\/p>\n<p>backend<br \/>\nCon\u021bine \u201emotorul\u201d de metadate al platformei<\/p>\n<p>accnt<br \/>\nObiecte pe care dezvoltatorii aplica\u021biilor le folosesc pentru a construi contabilitatea (planuri contabile \u0219i registre de contabilitate)<\/p>\n<p>bsl<br \/>\nMotorul de execu\u021bie al limbajului \u00eencorporat<\/p>\n<p>nuke<br \/>\nImplementare proprie a aloc\u0103rii memoriei<\/p>\n<p>dbeng8<br \/>\nMotorul bazei de date fi\u0219ier. O ma\u0219in\u0103 de baze de date simpl\u0103 tip fi\u0219ier-server, bazat\u0103 pe ISAM, care include \u0219i un procesor SQL simplu.<\/p>\n<p>wbase<br \/>\nCon\u021bine clase de baz\u0103 \u0219i func\u021bii pentru implementarea interfe\u021bei utilizator Windows \u2014 clase de feronerie, acces la GDI etc.<\/p>\n<p>\n\u00cemp\u0103r\u021birea \u00een mai multe componente este benefic\u0103 din mai multe puncte de vedere:<\/p>\n<ul>\n<li>\u00cemp\u0103r\u021birea faciliteaz\u0103 o mai bun\u0103 proiectare, \u00een special o mai bun\u0103 izolare a codului<\/li>\n<li>Din setul de componente se pot asambla \u00een mod flexibil diferite op\u021biuni de livrare:\n<ul>\n<li>De exemplu, instalarea unui client sub\u021bire va con\u021bine wbase, dar nu va avea backend<\/li>\n<li>iar pe server, wbase nu va fi prezent, dimpotriv\u0103<\/li>\n<li>ambele op\u021biuni vor con\u021bine, desigur, nuke \u0219i bsl<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\nToate componentele necesare pentru aceast\u0103 variant\u0103 de pornire sunt \u00eenc\u0103rcate la startul programului. Aceasta este, printre altele, necesar\u0103 pentru \u00eenregistrarea claselor SCOM, despre care vom vorbi mai jos.<\/p>\n<h3>SCOM<\/h3>\n<p>\nPentru decompunerea la un nivel mai mic se folose\u0219te sistemul SCOM \u2014 similar din punct de vedere ideologic cu biblioteca ATL. Pentru cei care nu au lucrat cu ATL, s\u0103 enumer\u0103m pe scurt principalele capacit\u0103\u021bi \u0219i caracteristici. <br \/>\nPentru o clas\u0103 SCOM special conceput\u0103:<\/p>\n<ul>\n<li>Ofer\u0103 metode factory care permit crearea unei clase dintr-o alt\u0103 component\u0103 cunosc\u00e2nd doar numele acesteia (f\u0103r\u0103 a dezv\u0103lui implementarea)<\/li>\n<li>Ofer\u0103 infrastructura de pointere inteligente cu num\u0103rarea referin\u021belor. Nu este necesar s\u0103 urm\u0103ri\u021bi manual durata de via\u021b\u0103 a clasei SCOM<\/li>\n<li>Permite verificarea dac\u0103 un obiect implementeaz\u0103 un anumit interfa\u021b\u0103 \u0219i aduce automat pointerul pe obiect la pointerul pe interfa\u021b\u0103<\/li>\n<li>Creaz\u0103 un obiect-serviciu, \u00eentotdeauna disponibil prin metoda get_service etc.<\/li>\n<\/ul>\n<p>\nDe exemplu, se poate descrie \u00eentr-o component\u0103 json.dll o clas\u0103 pentru citirea JSON (de exemplu, JSONStreamReader).<br \/>\nClasele, instan\u021bele pot fi create din alte componente trebuie \u00eenregistrate \u00een ma\u0219ina SCOM:<\/p>\n<pre><code class=\"cpp\">SCOM_CLASS_ENTRY(JSONStreamReader)\n<\/code><\/pre>\n<p>\nAceast\u0103 macrocomand\u0103 va descrie o clas\u0103-static\u0103 special\u0103 de \u00eenregistrare, al c\u0103rei constructor va fi apelat la \u00eenc\u0103rcarea componentei \u00een memorie.<br \/>\nDup\u0103 aceasta, se poate crea instan\u021ba sa \u00eentr-o alt\u0103 component\u0103:<\/p>\n<pre><code class=\"cpp\">IJSONStreamReaderPtr jsonReader = create_instance(SCOM_CLSIDOF(JSONStreamReader));\n<\/code><\/pre>\n<p>\nPentru suportul serviciilor, SCOM ofer\u0103 o infrastructur\u0103 suplimentar\u0103, destul de complex\u0103. Central \u00een aceasta este conceptul de proces SCOM, care serve\u0219te ca un container pentru serviciile pornite (adic\u0103 \u00eendepline\u0219te rolul de Service Locator) \u0219i con\u021bine, de asemenea, leg\u0103tura cu resursele localizabile. Procesul SCOM se leag\u0103 de firul OS. Datorit\u0103 acestui lucru, \u00een cadrul aplica\u021biei se pot ob\u021bine serviciile astfel:<\/p>\n<pre><code class=\"cpp\">SCOM_Process* process = core::current_process();\nif (process)\n         return get_service(process);\n<\/code><\/pre>\n<p>\n\u00cen plus, prin comutarea proceselor logice (SCOM) asociate cu fluxul, este posibil s\u0103 ob\u021binem aplica\u021bii practic independente din punct de vedere al spa\u021biului informa\u021bional, care se desf\u0103\u0219oar\u0103 \u00een cadrul unui singur flux. A\u0219a func\u021bioneaz\u0103 clientul nostru sub\u021bire, care lucreaz\u0103 cu o baz\u0103 de date pe fi\u0219iere - \u00een interiorul unui proces de sistem de operare exist\u0103 dou\u0103 procese SCOM, unul asociat cu clientul \u0219i cel\u0103lalt cu serverul. Aceast\u0103 abordare permite unificarea codului, care va func\u021biona at\u00e2t pe baza de date local\u0103 pe fi\u0219iere, c\u00e2t \u0219i \u00een varianta \u201ereal\u0103\u201d client-server. Pre\u021bul acestei uniformit\u0103\u021bi este reprezentat de cheltuielile indirecte, dar practica arat\u0103 c\u0103 acestea \u00ee\u0219i merit\u0103 costul.<\/p>\n<p>Pe baza modelului componentelor SCOM sunt implementate at\u00e2t logica de afaceri, c\u00e2t \u0219i partea interfe\u021bei pentru 1C:Enterprise.<\/p>\n<h3>Interfa\u021ba utilizatorului<\/h3>\n<p>\nApropo de interfe\u021be. Nu folosim controale standard Windows, elementele noastre de control sunt implementate direct pe API-ul Windows. Pentru versiunea Linux, a fost creat\u0103 o interfa\u021b\u0103 care func\u021bioneaz\u0103 prin biblioteca wxWidgets.<br \/>\nBiblioteca elementelor de control nu depinde de alte p\u0103r\u021bi ale \u00ab1C:Enterprise\u00bb \u0219i o folosim \u0219i \u00een alte c\u00e2teva utilitare interne mici.<\/p>\n<p>De-a lungul anilor, aspectul controalelor 1C:Enterprise s-a schimbat, dar o schimbare semnificativ\u0103 a principiilor a avut loc doar o singur\u0103 dat\u0103, \u00een 2009, odat\u0103 cu lansarea versiunii 8.2 \u0219i apari\u021bia \u00abformelor gestionate\u00bb. Pe l\u00e2ng\u0103 schimbarea aspectului, principiul fundamental de aranjare a formelor s-a schimbat - s-a renun\u021bat la pozi\u021bionarea pixel cu pixel \u00een favoarea aranjamentului flow al elementelor. \u00cen plus, \u00een noul model, elementele de control nu lucreaz\u0103 direct cu obiectele din domeniu, ci cu DTO speciale (<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DTO\">Data Transfer Objects<\/a><\/noindex>).<br \/>\nAceste modific\u0103ri au permis crearea clientului web \u00ab1C:Enterprise\u00bb, care replic\u0103 logica controalelor C++ \u00een JavaScript. Ne str\u0103duim s\u0103 men\u021binem echivalen\u021ba func\u021bional\u0103 \u00eentre clientul sub\u021bire \u0219i cel web. \u00cen cazul \u00een care acest lucru nu este posibil, de exemplu, din cauza constr\u00e2ngerilor impuse de API-ul JavaScript disponibil (de exemplu, capacitatea de a lucra cu fi\u0219iere este foarte limitat\u0103), adesea implement\u0103m func\u021bionalitatea necesar\u0103 cu extensii de browser scrise \u00een C++. \u00cen prezent, sus\u021binem Internet Explorer \u0219i Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows \u0219i Linux) \u0219i Safari (MacOS).<\/p>\n<p>\u00cen plus, tehnologia formularelor gestionate este utilizat\u0103 pentru a crea interfa\u021ba aplica\u021biilor mobile pe platforma 1C. Pe dispozitivele mobile, randarea controalelor este realizat\u0103 folosind tehnologii \u201enative\u201d pentru sistemul de operare, dar pentru logica de aranjare a formularului \u0219i reac\u021bia interfe\u021bei se folose\u0219te acela\u0219i cod ca \u0219i \u00een \u201emarele\u201d platform\u0103 \u201e1C:Enterprise\u201d.<\/p>\n<p><img decoding=\"async\" alt=\"Platforma \u201e1C: Enterprise\u201d \u2014 ce se afl\u0103 sub capot\u0103?\" src=\"\/wp-content\/uploads\/2019\/04\/a4a87ca99cef465e82429739a8845300.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Interfa\u021ba 1C pe sistemul de operare Linux<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Platforma \u201e1C: Enterprise\u201d \u2014 ce se afl\u0103 sub capot\u0103?\" src=\"\/wp-content\/uploads\/2019\/04\/23f48ade4e28242104bfd4e9099800e2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Interfa\u021ba 1C pe dispozitivul mobil<\/i><\/p>\n<p><b class=\"spoiler_title\">Interfa\u021ba 1C pe alte platforme<\/b> <img decoding=\"async\" alt=\"Platforma \u201e1C: Enterprise\u201d \u2014 ce se afl\u0103 sub capot\u0103?\" src=\"\/wp-content\/uploads\/2019\/04\/d04d2431d8c5240d44acce675d837018.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Interfa\u021ba 1C pe sistemul de operare Windows<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Platforma \u201e1C: Enterprise\u201d \u2014 ce se afl\u0103 sub capot\u0103?\" src=\"\/wp-content\/uploads\/2019\/04\/a443f6e2d1cb95e256e0dcff4fe139d2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Interfa\u021ba 1C \u2014 client web<\/i><\/p>\n<p><\/p>\n<h3>Open source<\/h3>\n<p>\nDe\u0219i nu folosim biblioteci standard pentru dezvoltatorii C++ pe Windows (MFC, controale din WinAPI), nu toate componentele sunt scrise de noi. A fost men\u021bionat\u0103 deja biblioteca <noindex><a rel=\"nofollow\" href=\"http:\/\/www.wxwidgets.org\/\">wxWidgets<\/a><\/noindex>, \u0219i folosim, de asemenea:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/curl.haxx.se\/libcurl\/\">cURL<\/a><\/noindex> pentru a lucra cu HTTP \u0219i FTP. <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/openssl.org\/\">OpenSSL<\/a><\/noindex> pentru a lucra cu criptografia \u0219i a stabili conexiuni TLS<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.xmlsoft.org\/\">libxml2 \u0219i libxslt<\/a><\/noindex> pentru analizarea XML-ului<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dinhviethoa\/libetpan\">libetpan<\/a><\/noindex> pentru a lucra cu protocoalele po\u0219tale (POP3, SMTP, IMAP)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.codesink.org\/mimetic_mime_library.html\">mimetic<\/a><\/noindex> pentru a analiza mesajele de po\u0219t\u0103 electronic\u0103<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.sqlite.org\/\">sqllite<\/a><\/noindex> pentru a stoca jurnalele activit\u0103\u021bii utilizatorilor<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/site.icu-project.org\/\">ICU<\/a><\/noindex> pentru interna\u021bionalizare<\/li>\n<\/ul>\n<p>\nLista poate continua.<br \/>\n\u00cen plus, folosim versiuni foarte modificate <noindex><a rel=\"nofollow\" href=\"http:\/\/code.google.com\/p\/googletest\/\">Google Test<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"http:\/\/code.google.com\/p\/googlemock\/\">Google Mock<\/a><\/noindex> \u00een timpul dezvolt\u0103rii testelor unitare.<br \/>\nBibliotecile au necesitat adapt\u0103ri pentru a fi compatibile cu modelul SCOM al organiza\u021biei componentelor.<br \/>\nR\u0103sp\u00e2ndirea platformei 1C face ca aceasta s\u0103 fie o verificare excelent\u0103 pentru bibliotecile utilizate. Diversitatea utilizatorilor \u0219i scenariilor descoper\u0103 rapid erorile chiar \u0219i \u00een cele mai rar utilizate p\u0103r\u021bi ale codului. Le corect\u0103m la noi \u0219i \u00eencerc\u0103m s\u0103 le return\u0103m autorilor bibliotecilor. Experien\u021ba interac\u021biunii variaz\u0103 foarte mult.<br \/>\nDezvoltatori <noindex><a rel=\"nofollow\" href=\"http:\/\/curl.haxx.se\/libcurl\/\">cURL<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dinhviethoa\/libetpan\">libetpan<\/a><\/noindex> reac\u021bioneaz\u0103 rapid la pull-request-uri, dar patch-ul, de exemplu, \u00een <noindex><a rel=\"nofollow\" href=\"http:\/\/openssl.org\/\">OpenSSL<\/a><\/noindex> nu am reu\u0219it s\u0103-l trimitem.<\/p>\n<h3>Concluzie<\/h3>\n<p>\n\u00cen acest articol, am abordat c\u00e2teva aspecte esen\u021biale ale dezvolt\u0103rii platformei \u201e1C: Enterprise\u201d. \u00cen paginile limitate ale articolului, am discutat doar despre unele aspecte interesante, din punctul nostru de vedere. <br \/>\nO descriere general\u0103 a diferitelor mecanisme ale platformei poate fi vizualizat\u0103 <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">aici<\/a><\/noindex>.<br \/>\nCe teme ar fi interesante pentru tine \u00een urm\u0103toarele articole?<\/p>\n<p>Cum este realizat\u0103 platforma mobil\u0103 1C?<br \/>\nDescrierea structurii interne a clientului web? <br \/>\nSau, poate, e\u0219ti interesat de procesul de selec\u021bie a func\u021bionalit\u0103\u021bilor pentru noile versiuni, dezvoltare \u0219i testare?<\/p>\n<p>Scrie \u00een comentarii!<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/269611\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043d\u0430\u0447\u043d\u0435\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u00ab1\u0421:\u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 8\u00bb \u0438 \u043a\u0430\u043a\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0435\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e? \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u00ab1\u0421:\u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 8\u00bb \u2014 \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 (\u0431\u043e\u043b\u0435\u0435 10 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430) \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 C++ (\u043a\u043b\u0438\u0435\u043d\u0442, \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0442.\u0434.), JavaScript (\u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442), \u0438, \u0441 \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24279,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32475","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u00ab1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435\u00bb \u2014 \u0447\u0442\u043e \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:47:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:47:15+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Platforma \u201e1C: Enterprise\u201d \u2014 ce se afl\u0103 sub capot\u0103? | ProHoster","description":"Salut, Habr!","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u00ab1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435\u00bb \u2014 \u0447\u0442\u043e \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c? | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:47:15+00:00","article:modified_time":"2019-10-31T18:47:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32475","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 11:03:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:58:23","updated":"2026-01-21 11:03:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/32475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=32475"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/32475\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/24279"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=32475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=32475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=32475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}