{"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\/de\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","title":{"rendered":"Die Plattform \u201e1C:Enterprise\u201c \u2013 was steckt dahinter?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo, Habra! <br \/>\nIn diesem Artikel beginnen wir mit der Beschreibung, wie die Plattform aufgebaut ist <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">\u201e1C:Enterprise 8\u201c<\/a><\/noindex> und welche Technologien bei ihrer Entwicklung verwendet werden.<\/p>\n<p><img decoding=\"async\" alt=\"Die Plattform \u201e1C:Enterprise\u201c \u2013 was steckt dahinter?\" src=\"\/wp-content\/uploads\/2019\/04\/9375ea3be32979a7d8c72239dfd50f07.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWarum halten wir das f\u00fcr interessant? Erstens, weil die Plattform \u201e1C:Enterprise 8\u201c eine gro\u00dfe (\u00fcber 10 Millionen Zeilen Code) Anwendung in C++ (Client, Server usw.), JavaScript (Web-Client) und seit Kurzem auch <noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=19821\">Java<\/a><\/noindex>. Gro\u00dfe Projekte sind interessant, auch wegen ihrer Gr\u00f6\u00dfe, denn Probleme, die in kleinen Codebasen unauff\u00e4llig sind, treten in solchen Projekten deutlich hervor. Zweitens ist \u201e1C:Enterprise\u201c ein reproduzierbares, \u201eBox\u201c-Produkt, und es gibt nicht viele Artikel \u00fcber solche Entwicklungen auf dem Habr. Und au\u00dferdem ist es immer interessant zu erfahren, wie es in anderen Teams und Firmen l\u00e4uft.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAlso, fangen wir an. In diesem Artikel geben wir einen \u00dcberblick \u00fcber einige Technologien, die in der Plattform verwendet werden, und skizzieren die Landschaft, ohne tief in die Implementierung einzutauchen. Denn f\u00fcr viele Mechanismen w\u00fcrde eine detaillierte Beschreibung einen eigenen Artikel erfordern, und f\u00fcr einige sogar ein ganzes Buch!<br \/>\nZun\u00e4chst sollten wir uns mit den grundlegenden Dingen befassen \u2013 was ist die Plattform \u201e1C:Enterprise\u201c und aus welchen Komponenten besteht sie? Die Antwort auf diese Frage ist nicht so einfach, denn mit dem Begriff \u201ePlattform\u201c (aus Gr\u00fcnden der K\u00fcrze werden wir sie so nennen) bezeichnet man sowohl die Entwicklungsumgebung f\u00fcr Gesch\u00e4ftsanwendungen als auch die Ausf\u00fchrungsumgebung und die Administrationsmittel. Man kann grob folgende Teile unterscheiden:<\/p>\n<ul>\n<li>Servercluster<\/li>\n<li>\u201eD\u00fcnner\u201c Client, der sich \u00fcber HTTP und ein eigenes bin\u00e4res Protokoll mit dem Server verbinden kann<\/li>\n<li>Client f\u00fcr die Arbeit in einer zwei- schichtigen Architektur mit einer auf der Festplatte oder im Netzwerkordner gespeicherten Datenbank<\/li>\n<li>Web-Client<\/li>\n<li>Administrationsmittel f\u00fcr den Anwendungsserver<\/li>\n<li>Entwicklungsumgebung (bekannt als Konfigurator)<\/li>\n<li>Ausf\u00fchrungsumgebung f\u00fcr iOS, Android und Windows Phone (mobile Plattform 1C)<\/li>\n<\/ul>\n<p>\nAlle diese Teile, mit Ausnahme des Web-Clients, sind in C++ geschrieben. Dar\u00fcber hinaus gibt es einen neu angek\u00fcndigten <noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=19821\">Konfigurator der neuen Generation<\/a><\/noindex>, der in Java geschrieben ist.<\/p>\n<h3>Native Anwendungen<\/h3>\n<p>\nF\u00fcr die Entwicklung nativer Anwendungen wird C++03 verwendet. Unter Windows wird Microsoft Visual C++ 12 (Profil kompatibel mit Windows XP) als Compiler eingesetzt, w\u00e4hrend unter Linux und Android gcc 4.8 und f\u00fcr iOS clang 5.0 verwendet wird. Die Standardbibliothek ist f\u00fcr alle Betriebssysteme und Compiler einheitlich \u2013 STLPort. Diese L\u00f6sung verringert die Wahrscheinlichkeit von fehlerhaften Implementierungen, die spezifisch f\u00fcr STL sind. Derzeit planen wir den \u00dcbergang zur STL-Implementierung, die mit CLang geliefert wird, da STLPort seine Entwicklung eingestellt hat und nicht mit dem aktivierten C++11-Unterst\u00fctzungsmodus in gcc kompatibel ist.<br \/>\nDer Code-Bestand des Servers betr\u00e4gt dabei 99 % und des Clients 95 %. Dar\u00fcber hinaus verwendet sogar die mobile Plattform denselben C++-Code wie die \"gro\u00dfe\", obwohl der Grad der Vereinheitlichung dort etwas geringer ist. <br \/>\nWie die meisten C++-Benutzer beanspruchen wir nicht, 100 % der Funktionen der Sprache und ihrer Bibliotheken zu nutzen. So verwenden wir praktisch kein Boost, und von den Spracheigenschaften nutzen wir die dynamische Typumwandlung nicht. Dabei setzen wir aktiv Folgendes ein:<\/p>\n<ul>\n<li>STL (insbesondere Strings, Container und Algorithmen)<\/li>\n<li>mehrfache Vererbung, einschlie\u00dflich mehrfacher Vererbung von Implementierungen<\/li>\n<li>Templates<\/li>\n<li>Ausnahmen<\/li>\n<li>intelligente Zeiger (eigene Implementierung)<\/li>\n<\/ul>\n<p>\nDurch die Verwendung mehrerer Vererbung von Schnittstellen (vollst\u00e4ndig abstrakte Klassen) wird ein komponentenbasierter Ansatz m\u00f6glich, \u00fcber den sp\u00e4ter gesprochen wird.<\/p>\n<h3>Komponenten<\/h3>\n<p>\nUm Modularit\u00e4t zu gew\u00e4hrleisten, wird die gesamte Funktionalit\u00e4t in Komponenten unterteilt, die dynamische Bibliotheken repr\u00e4sentieren (*.dll unter Windows, *.so unter Linux). Insgesamt gibt es mehr als 150 Komponenten; hier sind einige davon beschrieben:<\/p>\n<p>backend<br \/>\nEnth\u00e4lt die \"Engine\" der Metadaten der Plattform<\/p>\n<p>accnt<br \/>\nObjekte, die von Anwendungsentwicklern zur Erstellung der Buchhaltung (Kontenpl\u00e4ne und Buchhaltungsregister) verwendet werden<\/p>\n<p>bsl<br \/>\nEngine zur Ausf\u00fchrung der eingebetteten Sprache<\/p>\n<p>nuke<br \/>\nEigene Implementierung eines Speicher-Allocators<\/p>\n<p>dbeng8<br \/>\nEngine einer Dateibasierten Datenbank. Eine einfache Datei-Server-Datenbankmaschine, die auf ISAM basiert und auch einen einfachen SQL-Prozessor enth\u00e4lt<\/p>\n<p>wbase<br \/>\nEnth\u00e4lt grundlegende Klassen und Funktionen zur Implementierung von Benutzeroberfl\u00e4chen in Windows \u2013 Fensterklassen, Zugriff auf GDI usw.<\/p>\n<p>\nDie Aufteilung in mehrere Komponenten ist aus mehreren Blickwinkeln vorteilhaft:<\/p>\n<ul>\n<li>Die Aufteilung f\u00f6rdert ein besseres Design, insbesondere eine bessere Isolation des Codes.<\/li>\n<li>Aus der Komponentensammlung k\u00f6nnen verschiedene Lieferoptionen flexibel zusammengestellt werden:\n<ul>\n<li>Zum Beispiel enth\u00e4lt die Installation des Thin Clients wbase, aber keinen Backend<\/li>\n<li>w\u00e4hrend auf dem Server wbase hingegen nicht vorhanden sein wird<\/li>\n<li>Beide Varianten werden nat\u00fcrlich nuke und bsl enthalten<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\nAlle ben\u00f6tigten Komponenten f\u00fcr diese Startoption werden beim Programmstart geladen. Dies ist insbesondere notwendig f\u00fcr die Registrierung von SCOM-Klassen, \u00fcber die wir sp\u00e4ter sprechen werden.<\/p>\n<h3>SCOM<\/h3>\n<p>\nF\u00fcr eine niedrigere Dekomposition wird das SCOM-System verwendet - \u00e4hnlich in der Ideologie wie die ATL-Bibliothek. F\u00fcr diejenigen, die nicht mit ATL gearbeitet haben, hier eine kurze Aufz\u00e4hlung der Hauptfunktionen und -merkmale. <br \/>\nF\u00fcr eine speziell gestaltete SCOM-Klasse:<\/p>\n<ul>\n<li>Stellt Fabrikmethoden bereit, die es erm\u00f6glichen, eine Klasse aus einer anderen Komponente zu erstellen, nur indem man ihren Namen kennt (ohne die Implementierung preiszugeben)<\/li>\n<li>Bietet eine Infrastruktur f\u00fcr intelligente Zeiger mit Referenzz\u00e4hlung. Die Lebensdauer der SCOM-Klasse muss nicht manuell \u00fcberwacht werden<\/li>\n<li>Erm\u00f6glicht zu erkennen, ob ein Objekt ein bestimmtes Interface implementiert und automatisch den Zeiger auf das Objekt in einen Zeiger auf das Interface zu konvertieren<\/li>\n<li>Ein Dienstobjekt zu erstellen, das immer \u00fcber die Methode get_service verf\u00fcgbar ist, usw.<\/li>\n<\/ul>\n<p>\nZum Beispiel kann in der Komponente json.dll eine Klasse f\u00fcr das Lesen von JSON (zum Beispiel JSONStreamReader) beschrieben werden.<br \/>\nKlassen, Instanzen k\u00f6nnen aus anderen Komponenten erstellt werden, m\u00fcssen jedoch in der SCOM-Maschine registriert werden:<\/p>\n<pre><code class=\"cpp\">SCOM_CLASS_ENTRY(JSONStreamReader)\n<\/code><\/pre>\n<p>\nDieses Makro beschreibt eine spezielle statische Registrierklasse, dessen Konstruktor beim Laden der Komponente in den Speicher aufgerufen wird.<br \/>\nDanach kann eine Instanz in einer anderen Komponente erstellt werden:<\/p>\n<pre><code class=\"cpp\">IJSONStreamReaderPtr jsonReader = create_instance(SCOM_CLSIDOF(JSONStreamReader));\n<\/code><\/pre>\n<p>\nF\u00fcr die Unterst\u00fctzung von Diensten bietet SCOM eine zus\u00e4tzliche, recht komplexe Infrastruktur. Zentral darin ist das Konzept des SCOM-Prozesses, der als Container f\u00fcr gestartete Dienste dient (also die Rolle des Service Locators erf\u00fcllt) und auch Bindungen an lokalisiert Ressourcen enth\u00e4lt. Der SCOM-Prozess wird an den OS-Thread gebunden. Dadurch k\u00f6nnen innerhalb der Anwendung die Dienste folgenderma\u00dfen abgerufen werden:<\/p>\n<pre><code class=\"cpp\">SCOM_Process* process = core::current_process();\nif (process)\n         return get_service(process);\n<\/code><\/pre>\n<p>\nDar\u00fcber hinaus erm\u00f6glicht das Umschalten von logischen (SCOM) Prozessen, die mit dem Stream verbunden sind, nahezu unabh\u00e4ngige Anwendungsumgebungen im Hinblick auf den Informationsraum, die innerhalb eines einzigen Streams ausgef\u00fchrt werden. So funktioniert unser schlanker Client, der mit einer Dateidatenbank arbeitet \u2013 innerhalb eines Prozesses des Betriebssystems gibt es zwei SCOM-Prozesse, einer ist mit dem Client verbunden, der andere mit dem Server. Dieser Ansatz erm\u00f6glicht die Vereinheitlichung des Codes, der sowohl mit der lokalen Dateidatenbank als auch in der \"echten\" Client-Server-Variante funktioniert. Der Preis f\u00fcr diese Einheitlichkeit sind zus\u00e4tzliche Kosten, aber die Praxis zeigt, dass sie gerechtfertigt sind.<\/p>\n<p>Auf der Grundlage des Komponentenmodells SCOM sind sowohl die Gesch\u00e4ftslogik als auch der Benutzeroberfl\u00e4chenbereich von 1C:Unternehmen umgesetzt.<\/p>\n<h3>Benutzeroberfl\u00e4che<\/h3>\n<p>\n\u00dcbrigens, was die Schnittstellen angeht. Wir verwenden keine Standardsteuerelemente von Windows; unsere Steuerelemente sind direkt auf der Windows-API implementiert. F\u00fcr die Linux-Version wurde eine Schicht entwickelt, die \u00fcber die Bibliothek wxWidgets funktioniert.<br \/>\nDie Steuerungselementbibliothek ist unabh\u00e4ngig von anderen Teilen von \"1C:Unternehmen\" und wird von uns auch in mehreren kleinen internen Dienstprogrammen verwendet.<\/p>\n<p>Im Laufe der Entwicklung von 1C:Unternehmen hat sich das Aussehen der Steuerelemente ver\u00e4ndert, aber eine wesentliche \u00c4nderung der Prinzipien gab es nur einmal, im Jahr 2009, mit der Ver\u00f6ffentlichung von Version 8.2 und der Einf\u00fchrung \"verwalteter Formen\". Neben dem ge\u00e4nderten Aussehen hat sich das Grundprinzip der Formsetzung grundlegend ge\u00e4ndert \u2013 es gab einen Verzicht auf die pixelgenaue Positionierung der Elemente zugunsten einer Flow-Anordnung. Dar\u00fcber hinaus arbeiten in diesem neuen Modell die Steuerelemente nicht direkt mit Dom\u00e4nenobjekten, sondern mit speziellen DTO (<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DTO\">Data Transfer Objects<\/a><\/noindex>).<br \/>\nDiese \u00c4nderungen erm\u00f6glichten die Erstellung eines Web-Clients f\u00fcr \"1C:Unternehmen\", der die C++-Logik der Steuerelemente in JavaScript nachahmt. Wir bem\u00fchen uns, die funktionale \u00c4quivalenz zwischen dem schlanken Client und dem Web-Client aufrechtzuerhalten. Wenn dies aufgrund von Einschr\u00e4nkungen des \u00fcber JavaScript-API verf\u00fcgbaren Zugriffs (zum Beispiel sind die M\u00f6glichkeiten zur Arbeit mit Dateien sehr eingeschr\u00e4nkt) nicht m\u00f6glich ist, implementieren wir oft die notwendige Funktionalit\u00e4t mithilfe von Browsererweiterungen, die in C++ geschrieben sind. Derzeit unterst\u00fctzen wir Internet Explorer und Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows und Linux) und Safari (MacOS).<\/p>\n<p>Dar\u00fcber hinaus wird die Technologie der gesteuerten Formate zur Erstellung von Benutzeroberfl\u00e4chen f\u00fcr mobile Anwendungen auf der 1C-Plattform verwendet. Auf mobilen Ger\u00e4ten erfolgt die Zeichnung der Steuerelemente mit \u201enativ\u201c f\u00fcr das Betriebssystem verwendeten Technologien, jedoch wird der gleiche Code, der auch auf der \u201egro\u00dfen\u201c Plattform \u201e1C:Unternehmen\u201c verwendet wird, f\u00fcr die Logik der Formanordnung und die Reaktion der Benutzeroberfl\u00e4che genutzt.<\/p>\n<p><img decoding=\"async\" alt=\"Die Plattform \u201e1C:Enterprise\u201c \u2013 was steckt dahinter?\" src=\"\/wp-content\/uploads\/2019\/04\/a4a87ca99cef465e82429739a8845300.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>1C-Schnittstelle unter Linux<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Die Plattform \u201e1C:Enterprise\u201c \u2013 was steckt dahinter?\" src=\"\/wp-content\/uploads\/2019\/04\/23f48ade4e28242104bfd4e9099800e2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>1C-Schnittstelle auf einem mobilen Ger\u00e4t<\/i><\/p>\n<p><b class=\"spoiler_title\">1C-Schnittstelle auf anderen Plattformen<\/b> <img decoding=\"async\" alt=\"Die Plattform \u201e1C:Enterprise\u201c \u2013 was steckt dahinter?\" src=\"\/wp-content\/uploads\/2019\/04\/d04d2431d8c5240d44acce675d837018.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>1C-Schnittstelle unter Windows<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Die Plattform \u201e1C:Enterprise\u201c \u2013 was steckt dahinter?\" src=\"\/wp-content\/uploads\/2019\/04\/a443f6e2d1cb95e256e0dcff4fe139d2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>1C-Schnittstelle \u2013 Web-Client<\/i><\/p>\n<p><\/p>\n<h3>Open Source<\/h3>\n<p>\nObwohl wir keine f\u00fcr C++-Entwickler typischen Bibliotheken unter Windows (MFC, Steuerelemente aus WinAPI) verwenden, schreiben wir nicht alle Komponenten selbst. Die Bibliothek wurde bereits erw\u00e4hnt <noindex><a rel=\"nofollow\" href=\"http:\/\/www.wxwidgets.org\/\">wxWidgets<\/a><\/noindex>, und wir verwenden auch:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/curl.haxx.se\/libcurl\/\">cURL<\/a><\/noindex> f\u00fcr die Arbeit mit HTTP und FTP. <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/openssl.org\/\">OpenSSL<\/a><\/noindex> f\u00fcr die Arbeit mit Kryptographie und die Einrichtung von TLS-Verbindungen<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.xmlsoft.org\/\">libxml2 und libxslt<\/a><\/noindex> f\u00fcr das Parsen von XML<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dinhviethoa\/libetpan\">libetpan<\/a><\/noindex> f\u00fcr die Arbeit mit E-Mail-Protokollen (POP3, SMTP, IMAP)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.codesink.org\/mimetic_mime_library.html\">mimetic<\/a><\/noindex> f\u00fcr das Parsen von E-Mail-Nachrichten<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.sqlite.org\/\">sqllite<\/a><\/noindex> f\u00fcr die Speicherung von Benutzerprotokollen<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/site.icu-project.org\/\">ICU<\/a><\/noindex> f\u00fcr die Internationalisierung<\/li>\n<\/ul>\n<p>\nDie Liste kann weiterhin fortgesetzt werden.<br \/>\nDar\u00fcber hinaus verwenden wir stark modifizierte Versionen von <noindex><a rel=\"nofollow\" href=\"http:\/\/code.google.com\/p\/googletest\/\">Google Test<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"http:\/\/code.google.com\/p\/googlemock\/\">Google Mock<\/a><\/noindex> bei der Entwicklung von Unit-Tests.<br \/>\nDie Bibliotheken mussten angepasst werden, um mit der SCOM-Modellorganisation der Komponenten kompatibel zu sein.<br \/>\nDie Verbreitung von 1C macht die Plattform zu einem gro\u00dfartigen Test f\u00fcr die darin verwendeten Bibliotheken. Die Vielfalt der Benutzer und Szenarien bringt Fehler schnell ans Licht, selbst in den am wenigsten genutzten Codeabschnitten. Wir beheben sie bei uns und versuchen, sie den Bibliotheksautoren zur\u00fcckzugeben. Die Erfahrungen sind sehr unterschiedlich.<br \/>\nEntwickler <noindex><a rel=\"nofollow\" href=\"http:\/\/curl.haxx.se\/libcurl\/\">cURL<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dinhviethoa\/libetpan\">libetpan<\/a><\/noindex> respondieren schnell auf Pull-Requests, aber den Patch zum Beispiel in <noindex><a rel=\"nofollow\" href=\"http:\/\/openssl.org\/\">OpenSSL<\/a><\/noindex> konnten wir nicht zur\u00fcckgeben.<\/p>\n<h3>Fazit<\/h3>\n<p>\nIn dem Artikel haben wir einige grundlegende Aspekte der Entwicklung der Plattform \u201e1C: Unternehmen\u201c angesprochen. Im Rahmen des Artikels haben wir nur einige interessante, unserer Meinung nach, Aspekte angesprochen. <br \/>\nEine allgemeine Beschreibung der verschiedenen Mechanismen der Plattform kann angesehen werden <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">hier<\/a><\/noindex>.<br \/>\nWelche Themen w\u00e4ren f\u00fcr Sie in den n\u00e4chsten Artikeln interessant?<\/p>\n<p>Wie ist die mobile Plattform 1C implementiert?<br \/>\nBeschreibung der internen Struktur des Web-Clients? <br \/>\nOder interessiert Sie vielleicht der Prozess der Auswahl von Funktionen f\u00fcr neue Releases, Entwicklung und Tests?<\/p>\n<p>Hinterlassen Sie Ihre Kommentare!<br \/>\n<br \/>Quelle: <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.1.1 - 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\/de\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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\udd47Plattform \u201e1C:Unternehmen\u201c \u2013 was steckt dahinter? | ProHoster","description":"Hallo, Habra!","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/32475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=32475"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/32475\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/24279"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=32475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=32475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=32475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}