{"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\/hr\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","title":{"rendered":"Platforma '1C: Poduze\u0107e' - \u0161to se krije ispod haube?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Bok, Habr! <br \/>\nU ovom \u010dlanku zapo\u010dinjemo pri\u010du o tome kako je unutra\u0161nje strukturirana <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">platforma \u201e1C:Preduze\u0107e 8\u201c<\/a><\/noindex> i koje se tehnologije koriste pri njenom razvoju.<\/p>\n<p><img decoding=\"async\" alt=\"Platforma &#039;1C: Poduze\u0107e&#039; - \u0161to se krije ispod haube?\" src=\"\/wp-content\/uploads\/2019\/04\/9375ea3be32979a7d8c72239dfd50f07.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZa\u0161to smatramo da je ovo zanimljivo? Prvo, zato \u0161to je platforma \u201e1C:Preduze\u0107e 8\u201c velika (vi\u0161e od 10 miliona redova koda) aplikacija napisana u C++ (klijent, server itd.), JavaScript (web-klijent), i, od nedavno, jo\u0161 i <noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=19821\">Java<\/a><\/noindex>. Veliki projekti su zanimljivi bar zbog svog obima, jer se pitanja koja su neprimetna u maloj bazi koda u takvim projektima pojavljuju u punom svetlu. Drugo, \u201e1C:Preduze\u0107e\u201c je reproduktivni, \u201ekutijski\u201c proizvod, a \u010dlanaka o takvim razvojnim projektima na Habru ima veoma malo. A uvek je zanimljivo saznati kako \u017eivot ide u drugim timovima i firmama.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDakle, krenimo. U ovom \u010dlanku da\u0107emo pregled nekih tehnologija koje se primenjuju u platformi, ocrta\u0107emo pejza\u017e, bez dubokog uranjanja u implementaciju. Jer za mnoge mehanizme detaljno obja\u0161njenje zahteva poseban \u010dlanak, a za neke \u2013 celu knjigu!<br \/>\nZa po\u010detak treba definisati osnovne stvari \u2013 \u0161ta je to platforma \u201e1C:Preduze\u0107e\u201c i od kojih se komponenti ona sastoji. Odgovor na ovo pitanje nije tako jednostavan, jer pod terminom \u201ePlatforma\u201c (za skra\u0107enje \u0107emo je tako zvati) podrazumevamo i sredstvo za razvoj poslovnih aplikacija, i okru\u017eenje za izvr\u0161enje, i alate za administraciju. Usmereno mo\u017eemo izdvojiti slede\u0107e delove:<\/p>\n<ul>\n<li>klaster servera<\/li>\n<li>\u201etanki\u201c klijent sposoban da se pove\u017ee na server putem http i sopstvenog binarnog protokola<\/li>\n<li>klijent za rad u dvostepenoj arhitekturi s BDP-om sme\u0161tenim na hard disku ili mre\u017enoj mapi<\/li>\n<li>web-klijent<\/li>\n<li>alat za administraciju servera aplikacija<\/li>\n<li>okru\u017eenje za razvoj (poznato kao Konfigurator)<\/li>\n<li>okru\u017eenje za izvr\u0161enje za iOS, Android i Windows Phone (mobilna platforma 1C)<\/li>\n<\/ul>\n<p>\nSve ove delove, osim web-klijenta, napisane su u C++. Pored toga, postoji nedavno najavljen <noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=19821\">Konfigurator nove generacije<\/a><\/noindex>, napisan u Javi.<\/p>\n<h3>Nativne aplikacije<\/h3>\n<p>\nZa razvoj nativnih aplikacija koristi se C++03. Pod Windows se kao kompajler koristi Microsoft Visual C++ 12 (profil kompatibilan s Windows XP), a pod Linux i Android \u2014 gcc 4.8, za iOS \u2014 clang 5.0. Standardna biblioteka je jedinstvena za sve operativne sisteme i kompajlere \u2014 STLPort. Ovo re\u0161enje smanjuje verovatno\u0107u gre\u0161aka specifi\u010dnih za implementaciju STL. Trenutno planiramo prelazak na implementaciju STL koja se isporu\u010duje s CLang, budu\u0107i da je STLPort prestao sa razvojem i nije kompatibilan s uklju\u010denim re\u017eimom podr\u0161ke za C++11 u gcc.<br \/>\nBaza koda servera je zajedni\u010dka 99%, a klijenta 95%. \u0160tavi\u0161e, \u010dak i mobilna platforma koristi isti C++ kod kao i \"velika\", iako je tamo procenat unifikacije ne\u0161to ni\u017ei. <br \/>\nKao i ve\u0107ina korisnika C++, ne pretendujemo na kori\u0161\u0107enje 100% mogu\u0107nosti jezika i njegovih biblioteka. Tako, prakti\u010dno ne koristimo Boost, a od mogu\u0107nosti jezika \u2014 dinami\u010dko prevo\u0111enje tipova. U me\u0111uvremenu aktivno primenjujemo:<\/p>\n<ul>\n<li>STL (konkretno, stringove, kontejneri i algoritmi)<\/li>\n<li>vi\u0161estruko nasle\u0111ivanje, uklju\u010duju\u0107i vi\u0161estruko nasle\u0111ivanje implementacije<\/li>\n<li>\u0161ablone<\/li>\n<li>iznimke<\/li>\n<li>pametni pokaziva\u010di (vlastita implementacija)<\/li>\n<\/ul>\n<p>\nZbog upotrebe vi\u0161estrukog nasle\u0111ivanja interfejsa (potpuno apstraktnih klasa) postaje mogu\u0107a komponentna model, o kojoj \u0107emo govoriti u nastavku.<\/p>\n<h3>Komponente<\/h3>\n<p>\nKako bi se osigurala modularnost, sva funkcionalnost je podeljena na komponente, koje predstavljaju dinami\u010dke biblioteke (*.dll pod Windows, *.so \u2014 pod Linux). Svega ima vi\u0161e od stotinu pedeset komponenti, a evo opisa nekih od njih:<\/p>\n<p>backend<br \/>\nSadr\u017ei \"motor\" metapodataka platforme<\/p>\n<p>accnt<br \/>\nObjekti koje aplikativni programeri koriste za izgradnju ra\u010dunovodstva (planovi ra\u010duna i registri ra\u010dunovodstva)<\/p>\n<p>bsl<br \/>\nMotor izvr\u0161avanja ugra\u0111enog jezika<\/p>\n<p>nuke<br \/>\nVlastita implementacija alokatora memorije<\/p>\n<p>dbeng8<br \/>\nMotor datote\u010dne baze. Jednostavna fajl-server ma\u0161ina baza podataka, zasnovana na ISAM, koja tako\u0111e uklju\u010duje jednostavni SQL procesor<\/p>\n<p>wbase<br \/>\nSadr\u017ei osnovne klase i funkcije za implementaciju korisni\u010dkog interfejsa Windows \u2014 prozorske klase, pristup GDI i sl.<\/p>\n<p>\nPodela na vi\u0161e komponenti je korisna iz nekoliko aspekata:<\/p>\n<ul>\n<li>Podela doprinosi boljem projektovanju, posebno boljoj izolaciji koda<\/li>\n<li>Iz seta komponenti mo\u017eete fleksibilno sastavljati razne opcije isporuke:\n<ul>\n<li>Na primjer, instalacija tankog klijenta \u0107e sadr\u017eavati wbase, ali ne\u0107e imati backend<\/li>\n<li>dok na serveru wbase, naprotiv, ne\u0107e biti<\/li>\n<li>oba varijante \u0107e, naravno, sadr\u017eavati nuke i bsl<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\nSve potrebne komponente za ovu varijantu pokretanja u\u010ditavaju se pri startu programa. To je, izme\u0111u ostalog, potrebno za registraciju SCOM klasa, o kojima \u0107e biti re\u010di u nastavku.<\/p>\n<h3>SCOM<\/h3>\n<p>\nZa dekompoziciju na ni\u017eem nivou koristi se SCOM sistem \u2014 sli\u010dan ideolo\u0161ki ATL biblioteci. Za one koji nisu radili s ATL-om, ukratko navodim osnovne mogu\u0107nosti i karakteristike. <br \/>\nZa posebno oblikovanu klasu SCOM:<\/p>\n<ul>\n<li>Pru\u017ea fabr\u010dke metode koje omogu\u0107uju stvaranje klase iz druge komponente znaju\u0107i samo njeno ime (bez otkrivanja implementacije)<\/li>\n<li>Pru\u017ea infrastrukturu pametnih pokaziva\u010da s brojanjem referenci. Za vreme \u017eivota SCOM klase nije potrebno ru\u010dno pratiti<\/li>\n<li>Omogu\u0107ava da saznate implementira li objekat odre\u0111eni interfejs i automatski pretvara pokaziva\u010d na objekat u pokaziva\u010d na interfejs<\/li>\n<li>Kreirati servisni objekat, koji je uvek dostupan putem metode get_service itd.<\/li>\n<\/ul>\n<p>\nNa primjer, mo\u017eete opisati u komponenti json.dll klasu za \u010ditanje JSON-a (na primjer, JSONStreamReader).<br \/>\nKlase, instance se mogu kreirati iz drugih komponenti potrebno je registrovati u SCOM ma\u0161ini:<\/p>\n<pre><code class=\"cpp\">SCOM_CLASS_ENTRY(JSONStreamReader)\n<\/code><\/pre>\n<p>\nOvaj makro \u0107e opisati posebnu stati\u010dku klasu-registar, \u010diji \u0107e konstruktor biti pozvan prilikom u\u010ditavanja komponente u memoriju.<br \/>\nNakon toga mo\u017ee se stvoriti njen instanca u drugoj komponenti:<\/p>\n<pre><code class=\"cpp\">IJSONStreamReaderPtr jsonReader = create_instance&lt;IJSONStreamReader&gt;(SCOM_CLSIDOF(JSONStreamReader));\n<\/code><\/pre>\n<p>\nZa podr\u0161ku servisima, SCOM nudi dodatnu, prili\u010dno slo\u017eenu infrastrukturu. Centralna u njoj je pojam SCOM procesa, koji slu\u017ei kao kontejner za pokrenute servise (tj. obavlja ulogu Service Locator-a), kao i sadr\u017ei vezu sa lokalizovanim resursima. SCOM proces se vezuje za OS nit. Zbog toga unutar aplikacije mo\u017eete ovako dobijati servise:<\/p>\n<pre><code class=\"cpp\">SCOM_Process* process = core::current_process();\nif (process)\n         return get_service&lt;IMyService&gt;(process);\n<\/code><\/pre>\n<p>\n\u0160tovi\u0161e, prebacivanjem logi\u010dkih (SCOM) procesa povezanih s tokom, mo\u017ee se dobiti prakti\u010dki neovisne aplikacije s obzirom na informacijski prostor, koje rade unutar jednog toka. Tako je osmi\u0161ljen na\u0161 tanki klijent, koji radi s datote\u010dnom bazom \u2014 unutar jednog procesa OS-a nalaze se dva SCOM-procesa, jedan povezan s klijentom, a drugi s poslu\u017eiteljem. Ovaj pristup omogu\u0107ava unifikaciju pisanja koda koji \u0107e raditi i na lokalnoj datote\u010dnoj bazi i u 'pravom' klijent-poslu\u017eiteljskom varijanti. Cijena za takvu uskla\u0111enost su tro\u0161kovi, no praksa pokazuje da se isplati.<\/p>\n<p>Na temelju komponentne \u043c\u043e\u0434\u0435\u043b\u0438 SCOM implementirana je i poslovna logika i su\u010delje 1C: Poduze\u0107a.<\/p>\n<h3>Korisni\u010dko su\u010delje<\/h3>\n<p>\nUsput, o su\u010deljima. Ne koristimo standardne Windows kontrole, na\u0161i kontrolni elementi su implementirani izravno na Windows API-ju. Za verziju za Linux napravljena je sloj koji radi preko wxWidgets biblioteke.<br \/>\nBiblioteka kontrolnih elemenata ne ovisi o drugim dijelovima '1C: Poduze\u0107a' i koristimo je i u nekoliko manjih unutarnjih alata.<\/p>\n<p>Tijekom godina razvoja 1C: Poduze\u0107e izgled kontrola se mijenjao, ali ozbiljna promjena principa dogodila se samo jednom, 2009. godine, s izlaskom verzije 8.2 i uvo\u0111enjem 'upravljanih formi'. Osim promjene izgleda, fundamentalno se promijenio na\u010din slaganja forme \u2014 odustalo se od pozicioniranja elemenata po pikselima u korist flow-slaganja elemenata. Dodatno, u novoj modelu kontrolni elementi ne rade izravno s domenama objekata, ve\u0107 sa specijalnim DTO (<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DTO\">Data Transfer Objects<\/a><\/noindex>).<br \/>\nOve promjene omogu\u0107ile su izradu web-klijenta '1C: Poduze\u0107a', koji ponavlja C++ logiku kontrola u JavaScript-u. Nastojimo odr\u017eati funkcionalnu ekvivalentnost izme\u0111u tankih i web klijenata. U slu\u010daju kada to nije mogu\u0107e, na primjer, zbog ograni\u010denja dostupnih iz JavaScript API-ja (na primjer, mogu\u0107nosti rada s datotekama su vrlo ograni\u010dene), \u010desto implementiramo potrebnu funkcionalnost putem pro\u0161irenja preglednika napisanih u C++. Trenutno podr\u017eavamo Internet Explorer i Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows i Linux) i Safari (MacOS).<\/p>\n<p>Osim toga, tehnologija upravljanih obrazaca koristi se za izradu su\u010delja mobilnih aplikacija na platformi 1C. Na mobilnim ure\u0111ajima crtanje kontrola ostvaruje se kori\u0161tenjem \u201eizvornih\u201c tehnologija za operacijski sustav, ali se za logiku rasporeda obrasca i reakciju su\u010delja koristi isti kod kao i na \u201evelikoj\u201c platformi \u201e1C:Poduzetni\u0161tvo\u201c.<\/p>\n<p><img decoding=\"async\" alt=\"Platforma &#039;1C: Poduze\u0107e&#039; - \u0161to se krije ispod haube?\" src=\"\/wp-content\/uploads\/2019\/04\/a4a87ca99cef465e82429739a8845300.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Su\u010delje 1C na OS Linux<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Platforma &#039;1C: Poduze\u0107e&#039; - \u0161to se krije ispod haube?\" src=\"\/wp-content\/uploads\/2019\/04\/23f48ade4e28242104bfd4e9099800e2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Su\u010delje 1C na mobilnom ure\u0111aju<\/i><\/p>\n<p><b class=\"spoiler_title\">Su\u010delje 1C na drugim platformama<\/b> <img decoding=\"async\" alt=\"Platforma &#039;1C: Poduze\u0107e&#039; - \u0161to se krije ispod haube?\" src=\"\/wp-content\/uploads\/2019\/04\/d04d2431d8c5240d44acce675d837018.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Su\u010delje 1C na OS Windows<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Platforma &#039;1C: Poduze\u0107e&#039; - \u0161to se krije ispod haube?\" src=\"\/wp-content\/uploads\/2019\/04\/a443f6e2d1cb95e256e0dcff4fe139d2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Su\u010delje 1C \u2014 web-klijent<\/i><\/p>\n<p><\/p>\n<h3>Open source<\/h3>\n<p>\nIako ne koristimo standardne biblioteke za C++ programere pod Windowsom (MFC, kontrole iz WinAPI), ne pi\u0161emo sve komponente sami. Ve\u0107 je spomenuta biblioteka <noindex><a rel=\"nofollow\" href=\"http:\/\/www.wxwidgets.org\/\">wxWidgets<\/a><\/noindex>, a tako\u0111er koristimo:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/curl.haxx.se\/libcurl\/\">cURL<\/a><\/noindex> za rad s HTTP i FTP. <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/openssl.org\/\">OpenSSL<\/a><\/noindex> za rad s kriptografijom i uspostavu TLS veza<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.xmlsoft.org\/\">libxml2 i libxslt<\/a><\/noindex> za parsiranje XML-a<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dinhviethoa\/libetpan\">libetpan<\/a><\/noindex> za rad s mail protokolima (POP3, SMTP, IMAP)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.codesink.org\/mimetic_mime_library.html\">mimetic<\/a><\/noindex> za parsiranje poruka e-po\u0161te<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.sqlite.org\/\">sqllite<\/a><\/noindex> za pohranu dnevnika rada korisnika<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/site.icu-project.org\/\">ICU<\/a><\/noindex> za internacionalizaciju<\/li>\n<\/ul>\n<p>\nPopis se mo\u017ee nastaviti.<br \/>\nOsim toga, koristimo jako modificirane verzije <noindex><a rel=\"nofollow\" href=\"http:\/\/code.google.com\/p\/googletest\/\">Google Test<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"http:\/\/code.google.com\/p\/googlemock\/\">Google Mock<\/a><\/noindex> prilikom izrade jedini\u010dnih testova.<br \/>\nBiblioteke su zahtijevale prilagodbu za kompatibilnost s SCOM-modelom organizacije komponenti.<br \/>\nRa\u0161irenost 1C \u010dini platformu odli\u010dnom provjerom \u010dvrsto\u0107e za kori\u0161tene u njoj biblioteke. Raznolikost korisnika i scenarija brzo otkriva gre\u0161ke \u010dak i u najrijetko kori\u0161tenim dijelovima koda. Ispravljamo ih kod nas i trudimo se vra\u0107ati ih autorima biblioteka. Iskustvo suradnje je vrlo razli\u010dito.<br \/>\nRazvija\u010di <noindex><a rel=\"nofollow\" href=\"http:\/\/curl.haxx.se\/libcurl\/\">cURL<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dinhviethoa\/libetpan\">libetpan<\/a><\/noindex> brzo odgovaraju na pull-request, ali patch, na primjer, u <noindex><a rel=\"nofollow\" href=\"http:\/\/openssl.org\/\">OpenSSL<\/a><\/noindex> nam nije uspjelo predati.<\/p>\n<h3>Zaklju\u010dak<\/h3>\n<p>\nU \u010dlanku smo se dotaknuli nekoliko osnovnih aspekata razvoja platforme \u201e1C: Poduzetni\u0161tvo\u201c. U ograni\u010denju ovog \u010dlanka, dotaknuli smo se samo nekih zanimljivih, po na\u0161em mi\u0161ljenju, aspekata. <br \/>\nOpis razli\u010ditih mehanizama platforme mo\u017eete pogledati <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">ovdje<\/a><\/noindex>.<br \/>\nKoje bi teme bile zanimljive za vas u sljede\u0107im \u010dlancima?<\/p>\n<p>Kako je izvedena mobilna platforma 1C?<br \/>\nOpis unutarnje strukture web-klijenta? <br \/>\nIli, mo\u017eda, vas zanima proces odabira funkcionalnosti za nove verzije, razvoj i testiranje?<\/p>\n<p>Pi\u0161ite u komentarima!<br \/>\n<br \/>Izvor: <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.4 - 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\/hr\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"hr_HR\" \/>\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\/hr\/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\udd47 Platforma \u00ab1C: Poduze\u0107e\u00bb \u2014 \u0161to se krije unutra? | ProHoster","description":"Bok, Habr!","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/32475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=32475"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/32475\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/24279"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=32475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=32475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=32475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}