{"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\/cs\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","title":{"rendered":"Platforma \u201e1C: Podnik\u00e1n\u00ed\u201c \u2013 co se skr\u00fdv\u00e1 pod kapotou?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ahoj, Habr! <br \/>\nV tomto \u010dl\u00e1nku za\u010dneme vypr\u00e1v\u011bt o tom, jak je to uvnit\u0159 <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">platformy \u201e1C:Enterprise 8\u201c<\/a><\/noindex> a jak\u00e9 technologie jsou p\u0159i jej\u00edm v\u00fdvoji pou\u017eity.<\/p>\n<p><img decoding=\"async\" alt=\"Platforma \u201e1C: Podnik\u00e1n\u00ed\u201c \u2013 co se skr\u00fdv\u00e1 pod kapotou?\" src=\"\/wp-content\/uploads\/2019\/04\/9375ea3be32979a7d8c72239dfd50f07.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPro\u010d si mysl\u00edme, \u017ee je to zaj\u00edmav\u00e9? Za prv\u00e9, proto\u017ee platforma \u201e1C:Enterprise 8\u201c je velk\u00e1 (v\u00edce ne\u017e 10 milion\u016f \u0159\u00e1dk\u016f k\u00f3du) aplikace napsan\u00e1 v C++ (klient, server atd.), JavaScriptu (webov\u00fd klient) a, od ned\u00e1vna, i <noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=19821\">Javy<\/a><\/noindex>. Velk\u00e9 projekty b\u00fdvaj\u00ed zaj\u00edmav\u00e9 u\u017e jen kv\u016fli rozsahu, proto\u017ee ot\u00e1zky, kter\u00e9 v mal\u00e9 k\u00f3dov\u00e9 z\u00e1kladn\u011b z\u016fst\u00e1vaj\u00ed bez pov\u0161imnut\u00ed, se v takov\u00fdch projektech dost\u00e1vaj\u00ed do pop\u0159ed\u00ed. Za druh\u00e9, \u201e1C:Enterprise\u201c je replikovateln\u00fd, \u201ekrabicov\u00fd\u201c produkt, a \u010dl\u00e1nk\u016f o takov\u00fdch v\u00fdvoj\u00edch na Habru nen\u00ed mnoho. A nav\u00edc je v\u017edy zaj\u00edmav\u00e9 dozv\u011bd\u011bt se, jak \u017eij\u00ed v jin\u00fdch t\u00fdmech a firm\u00e1ch.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nTak\u017ee, poj\u010fme na to. V tomto \u010dl\u00e1nku poskytneme p\u0159ehled n\u011bkter\u00fdch technologi\u00ed pou\u017e\u00edvan\u00fdch na platform\u011b, na\u010drtneme krajinu, ani\u017e bychom se hluboce pono\u0159ili do implementace. V\u017edy\u0165 pro mnoh\u00e9 mechanismy by podrobn\u00e9 vypr\u00e1v\u011bn\u00ed zasluhovalo samostatn\u00fd \u010dl\u00e1nek, u n\u011bkter\u00fdch dokonce celou knihu!<br \/>\nNe\u017e za\u010dneme, je dobr\u00e9 si ujasnit z\u00e1kladn\u00ed v\u011bci \u2014 co je platforma \u201e1C:Enterprise\u201c a z jak\u00fdch komponent se skl\u00e1d\u00e1. Odpov\u011b\u010f na tuto ot\u00e1zku nen\u00ed tak jednoduch\u00e1, proto\u017ee pod term\u00ednem \u201ePlatforma\u201c (pro stru\u010dnost ji budeme naz\u00fdvat pr\u00e1v\u011b tak) se rozum\u00ed jak n\u00e1stroj pro v\u00fdvoj obchodn\u00edch aplikac\u00ed, tak prost\u0159ed\u00ed pro prov\u00e1d\u011bn\u00ed a administraci. Zjednodu\u0161en\u011b lze vy\u010dlenit n\u00e1sleduj\u00edc\u00ed sou\u010d\u00e1sti:<\/p>\n<ul>\n<li>klastr server\u016f<\/li>\n<li>\u201etenk\u00fd\u201c klient schopn\u00fd se p\u0159ipojit k serveru p\u0159es http a vlastn\u00edm bin\u00e1rn\u00edm protokolem<\/li>\n<li>klient pro pr\u00e1ci v dvoustup\u0148ov\u00e9 architektu\u0159e s DB um\u00edst\u011bnou na pevn\u00e9m disku nebo s\u00ed\u0165ov\u00e9 slo\u017ece<\/li>\n<li>webov\u00fd klient<\/li>\n<li>n\u00e1stroje pro administraci aplika\u010dn\u00edho serveru<\/li>\n<li>v\u00fdvojov\u00e9 prost\u0159ed\u00ed (zn\u00e1m\u00e9 jako Konfigur\u00e1tor)<\/li>\n<li>prov\u00e1d\u011bc\u00ed prost\u0159ed\u00ed pro iOS, Android a Windows Phone (mobiln\u00ed platforma 1C)<\/li>\n<\/ul>\n<p>\nV\u0161echny tyto \u010d\u00e1sti, s v\u00fdjimkou webov\u00e9ho klienta, jsou naps\u00e1ny v C++. Krom\u011b toho byl ned\u00e1vno ozn\u00e1men <noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=19821\">Konfigur\u00e1tor nov\u00e9 generace<\/a><\/noindex>, napsan\u00fd v Jav\u011b.<\/p>\n<h3>Nativn\u00ed aplikace<\/h3>\n<p>\nPro v\u00fdvoj nativn\u00edch aplikac\u00ed se pou\u017e\u00edv\u00e1 C++03. Pod Windows je kompil\u00e1tor Microsoft Visual C++ 12 (profil kompatibiln\u00ed s Windows XP), zat\u00edmco pro Linux a Android se pou\u017e\u00edv\u00e1 gcc 4.8, pro iOS pak clang 5.0. Standardn\u00ed knihovna je jednotn\u00e1 pro v\u0161echny OS a kompil\u00e1tory \u2014 STLPort. Toto \u0159e\u0161en\u00ed sni\u017euje pravd\u011bpodobnost chyb specifick\u00fdch pro implementaci STL. V sou\u010dasnosti pl\u00e1nujeme p\u0159echod na implementaci STL dod\u00e1vanou s CLang, proto\u017ee STLPort p\u0159estal b\u00fdt vyv\u00edjen a nen\u00ed kompatibiln\u00ed s re\u017eimem podpory C++11 v gcc.<br \/>\nK\u00f3dov\u00e1 z\u00e1kladna serveru je spole\u010dn\u00e1 z 99 %, klienta z 95 %. Nav\u00edc i mobiln\u00ed platforma pou\u017e\u00edv\u00e1 stejn\u00fd C++ k\u00f3d jako \u201evelk\u00e1\u201c, i kdy\u017e s ni\u017e\u0161\u00edm procentem unifikace. <br \/>\nStejn\u011b jako v\u011bt\u0161ina u\u017eivatel\u016f C++ nem\u00e1me ambici vyu\u017e\u00edvat 100 % mo\u017enost\u00ed jazyka a jeho knihoven. Tak prakticky v\u016fbec nepou\u017e\u00edv\u00e1me Boost a z mo\u017enost\u00ed jazyka \u2014 dynamick\u00e9 p\u0159etypov\u00e1n\u00ed. Na druhou stranu aktivn\u011b vyu\u017e\u00edv\u00e1me:<\/p>\n<ul>\n<li>STL (zejm\u00e9na \u0159et\u011bzce, kontejnery a algoritmy)<\/li>\n<li>v\u00edcen\u00e1sobn\u00e9 d\u011bdi\u010dnosti, v\u010detn\u011b v\u00edcen\u00e1sobn\u00e9 d\u011bdi\u010dnosti implementace<\/li>\n<li>\u0161ablony<\/li>\n<li>v\u00fdjimky<\/li>\n<li>chytr\u00e9 ukazatele (vlastn\u00ed implementace)<\/li>\n<\/ul>\n<p>\nD\u00edky vyu\u017eit\u00ed v\u00edcen\u00e1sobn\u00e9 d\u011bdi\u010dnosti rozhran\u00ed (zcela abstraktn\u00ed t\u0159\u00eddy) je mo\u017en\u00e1 komponentn\u00ed model, o kter\u00e9m bude \u0159e\u010d n\u00ed\u017ee.<\/p>\n<h3>Komponenty<\/h3>\n<p>\nPro zaji\u0161t\u011bn\u00ed modul\u00e1rnosti je cel\u00e1 funkcionalita rozd\u011blena na komponenty, kter\u00e9 p\u0159edstavuj\u00ed dynamick\u00e9 knihovny (*.dll pod Windows, *.so pod Linux). Celkem je komponent v\u00edce ne\u017e sto pades\u00e1t, p\u0159i\u010dem\u017e uvedeme popisy n\u011bkter\u00fdch z nich:<\/p>\n<p>backend<br \/>\nObsahuje \u201emotor\u201c metadat platformy<\/p>\n<p>accnt<br \/>\nObjekty, kter\u00e9 aplika\u010dn\u00ed v\u00fdvoj\u00e1\u0159i pou\u017e\u00edvaj\u00ed k tvorb\u011b \u00fa\u010detnictv\u00ed (pl\u00e1ny \u00fa\u010dt\u016f a registrace \u00fa\u010detnictv\u00ed)<\/p>\n<p>bsl<br \/>\nMotor prov\u00e1d\u011bn\u00ed vestav\u011bn\u00e9ho jazyka<\/p>\n<p>nuke<br \/>\nVlastn\u00ed implementace alok\u00e1toru pam\u011bti<\/p>\n<p>dbeng8<br \/>\nMotor souborov\u00e9 datab\u00e1ze. Jednoduch\u00fd souborov\u00fd server datab\u00e1z\u00ed zalo\u017een\u00fd na ISAM, zahrnuj\u00edc\u00ed tak\u00e9 jednoduch\u00fd SQL procesor<\/p>\n<p>wbase<br \/>\nObsahuje z\u00e1kladn\u00ed t\u0159\u00eddy a funkce pro implementaci u\u017eivatelsk\u00e9ho rozhran\u00ed Windows \u2014 oknov\u00e9 t\u0159\u00eddy, p\u0159\u00edstup k GDI atd.<\/p>\n<p>\nRozd\u011blen\u00ed do mnoha komponent je u\u017eite\u010dn\u00e9 z n\u011bkolika pohled\u016f:<\/p>\n<ul>\n<li>Rozd\u011blen\u00ed p\u0159isp\u00edv\u00e1 k lep\u0161\u00edmu n\u00e1vrhu, zejm\u00e9na k lep\u0161\u00ed izolaci k\u00f3du.<\/li>\n<li>Z komponentn\u00edho setu lze flexibiln\u011b sestavovat r\u016fzn\u00e9 varianty dod\u00e1vek:\n<ul>\n<li>Nap\u0159\u00edklad instalace tenk\u00e9ho klienta bude obsahovat wbase, ale nebude m\u00edt backend<\/li>\n<li>na serveru wbase, naopak, nebude<\/li>\n<li>oba varianty budou samoz\u0159ejm\u011b obsahovat nuke a bsl<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\nV\u0161echny pot\u0159ebn\u00e9 komponenty pro tuto variantu spu\u0161t\u011bn\u00ed se na\u010d\u00edtaj\u00ed p\u0159i startu programu. To je zejm\u00e9na d\u016fle\u017eit\u00e9 pro registraci t\u0159\u00edd SCOM, o kter\u00fdch bude \u0159e\u010d n\u00ed\u017ee.<\/p>\n<h3>SCOM<\/h3>\n<p>\nPro dekompozici na ni\u017e\u0161\u00ed \u00farovni se pou\u017e\u00edv\u00e1 syst\u00e9m SCOM \u2014 ideologicky podobn\u00fd knihovn\u011b ATL. Pro ty, kte\u0159\u00ed s ATL nepracovali, stru\u010dn\u011b vyjmenuji hlavn\u00ed mo\u017enosti a vlastnosti. <br \/>\nPro speci\u00e1ln\u011b definovanou t\u0159\u00eddu SCOM:<\/p>\n<ul>\n<li>Poskytuje tov\u00e1rn\u00ed metody, kter\u00e9 umo\u017e\u0148uj\u00ed vytvo\u0159it t\u0159\u00eddu z jin\u00e9 komponenty, p\u0159i\u010dem\u017e se zn\u00e1 pouze jej\u00ed n\u00e1zev (bez odhalen\u00ed implementace)<\/li>\n<li>Poskytuje infrastrukturu chytr\u00fdch ukazatel\u016f s po\u010d\u00edt\u00e1n\u00edm referenc\u00ed. O dobu \u017eivotnosti t\u0159\u00eddy SCOM se nen\u00ed t\u0159eba starat ru\u010dn\u011b<\/li>\n<li>Umo\u017e\u0148uje zjistit, zda objekt implementuje konkr\u00e9tn\u00ed rozhran\u00ed a automaticky p\u0159ev\u00e9st ukazatel na objekt na ukazatel na rozhran\u00ed<\/li>\n<li>Vytvo\u0159it objekt-servis, kter\u00fd je v\u017edy dostupn\u00fd prost\u0159ednictv\u00edm metody get_service atd.<\/li>\n<\/ul>\n<p>\nNap\u0159\u00edklad lze v komponent\u011b json.dll popsat t\u0159\u00eddu pro \u010dten\u00ed JSON (nap\u0159\u00edklad JSONStreamReader).<br \/>\nT\u0159\u00eddy, instance lze vytv\u00e1\u0159et z jin\u00fdch komponent a je nutn\u00e9 je zaregistrovat v SCOM-stroji:<\/p>\n<pre><code class=\"cpp\">SCOM_CLASS_ENTRY(JSONStreamReader)\n<\/code><\/pre>\n<p>\nTento makro pop\u00ed\u0161e speci\u00e1ln\u00ed statickou t\u0159\u00eddu-registra\u010dn\u00ed, jej\u00ed\u017e konstruktor bude zavol\u00e1n p\u0159i na\u010dten\u00ed komponenty do pam\u011bti.<br \/>\nPot\u00e9 lze vytvo\u0159it jej\u00ed instanci v jin\u00e9 komponent\u011b:<\/p>\n<pre><code class=\"cpp\">IJSONStreamReaderPtr jsonReader = create_instance&lt;IJSONStreamReader&gt;(SCOM_CLSIDOF(JSONStreamReader));\n<\/code><\/pre>\n<p>\nPro podporu slu\u017eeb SCOM nab\u00edz\u00ed dodate\u010dnou, pom\u011brn\u011b slo\u017eitou infrastrukturu. Centr\u00e1ln\u00edm pojmem je zde SCOM-proces, kter\u00fd slou\u017e\u00ed jako kontejner pro spu\u0161t\u011bn\u00e9 slu\u017eby (tzn. pln\u00ed roli Service Locator) a tak\u00e9 obsahuje vazbu na lokalizovan\u00e9 zdroje. SCOM proces se v\u00e1\u017ee na vl\u00e1kno OS. D\u00edky tomu lze uvnit\u0159 aplikace takto z\u00edsk\u00e1vat slu\u017eby:<\/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>\nNav\u00edc, p\u0159ep\u00edn\u00e1n\u00edm logick\u00fdch (SCOM) proces\u016f spojen\u00fdch s tokem je mo\u017en\u00e9 dos\u00e1hnout prakticky nez\u00e1visl\u00fdch aplikac\u00ed z pohledu informa\u010dn\u00edho prostoru, kter\u00e9 b\u011b\u017e\u00ed v r\u00e1mci jednoho vl\u00e1kna. Tak je navr\u017een n\u00e1\u0161 tenk\u00fd klient, kter\u00fd pracuje s datab\u00e1z\u00ed soubor\u016f - uvnit\u0159 jednoho procesu OS se nach\u00e1zej\u00ed dva SCOM procesy, jeden spojen\u00fd s klientem a druh\u00fd se serverem. Tento p\u0159\u00edstup umo\u017e\u0148uje zjednodu\u0161en\u00ed psan\u00ed k\u00f3du, kter\u00fd funguje jak na m\u00edstn\u00ed datab\u00e1zi soubor\u016f, tak v \"skute\u010dn\u00e9\" variant\u011b klient-server. Cena za tuto jednotnost jsou re\u017eijn\u00ed n\u00e1klady, ale praxe ukazuje, \u017ee za to stoj\u00ed.<\/p>\n<p>Na z\u00e1klad\u011b komponentn\u00edho modelu SCOM je realizov\u00e1na jak obchodn\u00ed logika, tak rozhran\u00ed 1C: Podnik\u00e1n\u00ed.<\/p>\n<h3>U\u017eivatelsk\u00e9 rozhran\u00ed<\/h3>\n<p>\nMimochodem, o rozhran\u00edch. Nepou\u017e\u00edv\u00e1me standardn\u00ed ovl\u00e1dac\u00ed prvky Windows, na\u0161e ovl\u00e1dac\u00ed prvky jsou implementov\u00e1ny p\u0159\u00edmo pomoc\u00ed Windows API. Pro verzi pro Linux byla vytvo\u0159ena mezivrstva, kter\u00e1 pracuje prost\u0159ednictv\u00edm knihovny wxWidgets.<br \/>\nKnihovna ovl\u00e1dac\u00edch prvk\u016f nen\u00ed z\u00e1visl\u00e1 na jin\u00fdch \u010d\u00e1stech \"1C: Podnik\u00e1n\u00ed\" a pou\u017e\u00edv\u00e1me ji i v n\u011bkolika dal\u0161\u00edch drobn\u00fdch intern\u00edch utilit\u00e1ch.<\/p>\n<p>B\u011bhem let v\u00fdvoje 1C: Podnik\u00e1n\u00ed se vzhled ovl\u00e1dac\u00edch prvk\u016f m\u011bnil, ale z\u00e1sadn\u00ed zm\u011bna princip\u016f nastala pouze jednou, v roce 2009, s vyd\u00e1n\u00edm verze 8.2 a zaveden\u00edm \"\u0159\u00edzen\u00fdch formul\u00e1\u0159\u016f\". Krom\u011b zm\u011bny vzhledu se z\u00e1sadn\u011b zm\u011bnil princip uspo\u0159\u00e1d\u00e1n\u00ed formul\u00e1\u0159e - do\u0161lo k opu\u0161t\u011bn\u00ed pixelov\u00e9ho um\u00edst\u011bn\u00ed prvk\u016f ve prosp\u011bch flow uspo\u0159\u00e1d\u00e1n\u00ed prvk\u016f. Nav\u00edc v nov\u00e9m modelu ovl\u00e1dac\u00ed prvky nepracuj\u00ed p\u0159\u00edmo s dom\u00e9nov\u00fdmi objekty, ale se speci\u00e1ln\u00edmi DTO (<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DTO\">Data Transfer Objects<\/a><\/noindex>).<br \/>\nTyto zm\u011bny umo\u017enily vytvo\u0159en\u00ed webov\u00e9ho klienta \"1C: Podnik\u00e1n\u00ed\", kter\u00fd replikuje C++ logiku ovl\u00e1dac\u00edch prvk\u016f v JavaScriptu. Sna\u017e\u00edme se udr\u017eovat funk\u010dn\u00ed ekvivalentnost mezi tenk\u00fdm a webov\u00fdm klientem. V p\u0159\u00edpad\u011b, \u017ee to nen\u00ed mo\u017en\u00e9, nap\u0159\u00edklad kv\u016fli omezen\u00edm dostupn\u00fdm v JavaScript API (nap\u0159\u00edklad mo\u017enosti pr\u00e1ce se soubory jsou velmi omezen\u00e9), \u010dasto implementujeme pot\u0159ebnou funk\u010dnost pomoc\u00ed roz\u0161\u00ed\u0159en\u00ed pro prohl\u00ed\u017ee\u010d napsan\u00fdch v C++. V sou\u010dasnosti podporujeme Internet Explorer a Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows a Linux) a Safari (MacOS).<\/p>\n<p>Krom\u011b toho se technologie \u0159\u00edzen\u00fdch formul\u00e1\u0159\u016f pou\u017e\u00edv\u00e1 k vytvo\u0159en\u00ed rozhran\u00ed mobiln\u00edch aplikac\u00ed na platform\u011b 1C. Na mobiln\u00edch za\u0159\u00edzen\u00edch je vykreslov\u00e1n\u00ed ovl\u00e1dac\u00edch prvk\u016f realizov\u00e1no s vyu\u017eit\u00edm \"nativn\u00edch\" technologi\u00ed opera\u010dn\u00edho syst\u00e9mu, ale pro logiku uspo\u0159\u00e1d\u00e1n\u00ed formul\u00e1\u0159e a reakce rozhran\u00ed se pou\u017e\u00edv\u00e1 stejn\u00fd k\u00f3d, jak\u00fd je ve \"velk\u00e9\" platform\u011b \"1C:Enterprise\".<\/p>\n<p><img decoding=\"async\" alt=\"Platforma \u201e1C: Podnik\u00e1n\u00ed\u201c \u2013 co se skr\u00fdv\u00e1 pod kapotou?\" src=\"\/wp-content\/uploads\/2019\/04\/a4a87ca99cef465e82429739a8845300.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Rozhran\u00ed 1C na OS Linux<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Platforma \u201e1C: Podnik\u00e1n\u00ed\u201c \u2013 co se skr\u00fdv\u00e1 pod kapotou?\" src=\"\/wp-content\/uploads\/2019\/04\/23f48ade4e28242104bfd4e9099800e2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Rozhran\u00ed 1C na mobiln\u00edm za\u0159\u00edzen\u00ed<\/i><\/p>\n<p><b class=\"spoiler_title\">Rozhran\u00ed 1C na jin\u00fdch platform\u00e1ch<\/b> <img decoding=\"async\" alt=\"Platforma \u201e1C: Podnik\u00e1n\u00ed\u201c \u2013 co se skr\u00fdv\u00e1 pod kapotou?\" src=\"\/wp-content\/uploads\/2019\/04\/d04d2431d8c5240d44acce675d837018.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Rozhran\u00ed 1C na OS Windows<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Platforma \u201e1C: Podnik\u00e1n\u00ed\u201c \u2013 co se skr\u00fdv\u00e1 pod kapotou?\" src=\"\/wp-content\/uploads\/2019\/04\/a443f6e2d1cb95e256e0dcff4fe139d2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Rozhran\u00ed 1C \u2014 webov\u00fd klient<\/i><\/p>\n<p><\/p>\n<h3>Open source<\/h3>\n<p>\nI kdy\u017e nepou\u017e\u00edv\u00e1me standardn\u00ed knihovny pro v\u00fdvoj\u00e1\u0159e C++ pod Windows (MFC, ovl\u00e1dac\u00ed prvky z WinAPI), ne v\u0161echny komponenty vytv\u00e1\u0159\u00edme sami. Ji\u017e byla zm\u00edn\u011bna knihovna <noindex><a rel=\"nofollow\" href=\"http:\/\/www.wxwidgets.org\/\">wxWidgets<\/a><\/noindex>, a nav\u00edc pou\u017e\u00edv\u00e1me:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/curl.haxx.se\/libcurl\/\">cURL<\/a><\/noindex> pro pr\u00e1ci s HTTP a FTP. <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/openssl.org\/\">OpenSSL<\/a><\/noindex> pro pr\u00e1ci s kryptografi\u00ed a vytv\u00e1\u0159en\u00ed TLS spojen\u00ed<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.xmlsoft.org\/\">libxml2 a libxslt<\/a><\/noindex> pro anal\u00fdzu XML<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dinhviethoa\/libetpan\">libetpan<\/a><\/noindex> pro pr\u00e1ci s po\u0161tovn\u00edmi protokoly (POP3, SMTP, IMAP)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.codesink.org\/mimetic_mime_library.html\">mimetic<\/a><\/noindex> pro anal\u00fdzu e-mailov\u00fdch zpr\u00e1v<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.sqlite.org\/\">sqllite<\/a><\/noindex> pro ukl\u00e1d\u00e1n\u00ed z\u00e1znam\u016f o \u010dinnosti u\u017eivatel\u016f<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/site.icu-project.org\/\">ICU<\/a><\/noindex> pro internacionalizaci<\/li>\n<\/ul>\n<p>\nSeznam lze je\u0161t\u011b pokra\u010dovat.<br \/>\nKrom\u011b toho pou\u017e\u00edv\u00e1me siln\u011b modifikovanou verzi <noindex><a rel=\"nofollow\" href=\"http:\/\/code.google.com\/p\/googletest\/\">Google Test<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"http:\/\/code.google.com\/p\/googlemock\/\">Google Mock<\/a><\/noindex> p\u0159i v\u00fdvoji unit test\u016f.<br \/>\nKnihovny si vy\u017e\u00e1daly \u00fapravy pro kompatibilitu se SCOM modelem organizace komponent.<br \/>\nRoz\u0161\u00ed\u0159enost 1C \u010din\u00ed platformu vynikaj\u00edc\u00edm testem odolnosti pro knihovny, kter\u00e9 v n\u00ed pou\u017e\u00edv\u00e1me. Rozmanitost u\u017eivatel\u016f a sc\u00e9n\u00e1\u0159\u016f rychle odhaluje chyby i v nejm\u00e9n\u011b pou\u017e\u00edvan\u00fdch \u010d\u00e1stech k\u00f3du. Opravy prov\u00e1d\u00edme sami a sna\u017e\u00edme se je vracet autor\u016fm knihoven. Zku\u0161enosti ze spolupr\u00e1ce jsou velmi rozd\u00edln\u00e9.<br \/>\nV\u00fdvoj\u00e1\u0159i <noindex><a rel=\"nofollow\" href=\"http:\/\/curl.haxx.se\/libcurl\/\">cURL<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dinhviethoa\/libetpan\">libetpan<\/a><\/noindex> rychle reaguj\u00ed na pull-request, ale patch, nap\u0159\u00edklad v <noindex><a rel=\"nofollow\" href=\"http:\/\/openssl.org\/\">OpenSSL<\/a><\/noindex> se n\u00e1m zat\u00edm nepoda\u0159ilo vr\u00e1tit.<\/p>\n<h3>Z\u00e1v\u011br<\/h3>\n<p>\nV \u010dl\u00e1nku jsme se dotkli n\u011bkolika hlavn\u00edch aspekt\u016f v\u00fdvoje platformy \"1C: Enterprise\". V r\u00e1mci omezen\u00e9ho objemu \u010dl\u00e1nku jsme se zm\u00ednili pouze o n\u011bkter\u00fdch zaj\u00edmav\u00fdch, podle na\u0161eho n\u00e1zoru, aspektech. <br \/>\nObecn\u00fd popis r\u016fzn\u00fdch mechanism\u016f platformy lze naj\u00edt <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">tady<\/a><\/noindex>.<br \/>\nJak\u00e1 t\u00e9mata by v\u00e1s zaj\u00edmala v n\u00e1sleduj\u00edc\u00edch \u010dl\u00e1nc\u00edch?<\/p>\n<p>Jak je realizov\u00e1na mobiln\u00ed platforma 1C?<br \/>\nPopis vnit\u0159n\u00ed struktury webov\u00e9ho klienta? <br \/>\nNebo mo\u017en\u00e1 v\u00e1s zaj\u00edm\u00e1 proces v\u00fdb\u011bru funkc\u00ed pro nov\u00e9 verze, v\u00fdvoj a testov\u00e1n\u00ed?<\/p>\n<p>P\u0159ipom\u00ednky pi\u0161te do koment\u00e1\u0159\u016f!<br \/>\n<br \/>Zdroj: <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\/cs\/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=\"cs_CZ\" \/>\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\/cs\/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\u201c \u2014 co je pod kapotou? | ProHoster","description":"Ahoj, Habr!","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/32475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=32475"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/32475\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/24279"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=32475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=32475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=32475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}