{"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: Unternehmenssoftware\u201c \u2014 was steckt dahinter?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo, Habr! <br \/>\nIn diesem Artikel beginnen wir mit der Erz\u00e4hlung dar\u00fcber, wie die interne Struktur aussieht <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">der Plattform \u201e1C:Enterprise 8\u201c<\/a><\/noindex> und welche Technologien bei ihrer Entwicklung verwendet werden.<\/p>\n<p><img decoding=\"async\" alt=\"Die Plattform \u201e1C: Unternehmenssoftware\u201c \u2014 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 Anwendung (\u00fcber 10 Millionen Codezeilen) in C++ (Client, Server usw.), JavaScript (Web-Client) ist, 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 allein aufgrund ihres Umfangs interessant, denn Fragen, die in kleinen Codebasen unbemerkt bleiben, treten in solchen Projekten deutlich zutage. Zweitens ist \u201e1C:Enterprise\u201c ein skalierbares, \u201eBoxed\u201c-Produkt, und es gibt nur wenige Artikel \u00fcber solche Entwicklungen auf Habr\u00e9. Au\u00dferdem ist es immer spannend zu erfahren, wie es in anderen Teams und Firmen l\u00e4uft.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nLassen Sie uns also beginnen. In diesem Artikel geben wir einen \u00dcberblick \u00fcber einige Technologien, die in der Plattform verwendet werden, und skizzieren die Landschaft, ohne dabei tief in die Implementierung einzutauchen. Denn viele Mechanismen w\u00fcrden einen detaillierten Bericht erfordern, der eine eigene Artikelreihe oder sogar ein ganzes Buch nach sich ziehen k\u00f6nnte!<br \/>\nZun\u00e4chst einmal sollte man die Grundlagen kl\u00e4ren \u2013 was ist die Plattform \u201e1C:Unternehmen\u201c und aus welchen Komponenten besteht sie? Die Antwort auf diese Frage ist nicht ganz einfach, denn unter dem Begriff \u201ePlattform\u201c (zum Nennen abgek\u00fcrzt) versteht man sowohl ein Entwicklungswerkzeug f\u00fcr Gesch\u00e4ftsanwendungen, als auch eine Ausf\u00fchrungsumgebung und Verwaltungswerkzeuge. Grob unterteilen lassen sich folgende Bestandteile:<\/p>\n<ul>\n<li>Servercluster<\/li>\n<li>ein \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-Tier-Architektur mit einer Datenbank, die auf der Festplatte oder in einem Netzwerkordner gespeichert ist<\/li>\n<li>Web-Client<\/li>\n<li>Verwaltungsmittel f\u00fcr den Anwendungsserver<\/li>\n<li>Entwicklungsumgebung (bekannt als Konfigurator)<\/li>\n<li>Laufzeitumgebung 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 k\u00fcrzlich angek\u00fcndigte <noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=19821\">Konfigurator der n\u00e4chsten Generation<\/a><\/noindex>, geschrieben in Java.<\/p>\n<h3>Native Anwendungen<\/h3>\n<p>\nF\u00fcr die Entwicklung nativer Anwendungen wird C++03 verwendet. Unter Windows kommt als Compiler Microsoft Visual C++ 12 (Profil kompatibel mit Windows XP) zum Einsatz, w\u00e4hrend unter Linux und Android gcc 4.8 und f\u00fcr iOS clang 5.0 verwendet werden. Die Standardbibliothek ist f\u00fcr alle Betriebssysteme und Compiler einheitlich \u2014 STLPort. Diese L\u00f6sung reduziert die Wahrscheinlichkeit von fehlerhaften Implementierungen, die spezifisch f\u00fcr STL sind. Derzeit planen wir den \u00dcbergang zu der STL-Implementierung von CLang, da STLPort nicht mehr weiterentwickelt wird und nicht mit dem unterst\u00fctzten Modus f\u00fcr C++11 in gcc kompatibel ist.<br \/>\nDer Code-Basis des Servers betr\u00e4gt dabei 99 % gemeinsame Nutzung, beim Client sind es 95 %. Dar\u00fcber hinaus verwendet sogar die mobile Plattform denselben C++-Code wie die \u201egro\u00dfe\u201c, auch wenn dort der Grad der Vereinheitlichung etwas niedriger ist. <br \/>\nWie die meisten C++-Nutzer beanspruchen wir nicht, 100 % der Funktionen der Sprache und ihrer Bibliotheken zu nutzen. So verwenden wir praktisch kein Boost, und von den Sprachm\u00f6glichkeiten setzen wir dynamisches Typcasting kaum ein. Gleichzeitig wenden wir aktiv an:<\/p>\n<ul>\n<li>STL (insbesondere Strings, Container und Algorithmen)<\/li>\n<li>mehrfaches Vererben, einschlie\u00dflich mehrfacher Implementierungsvererbung<\/li>\n<li>Templates<\/li>\n<li>Ausnahmen<\/li>\n<li>intelligente Zeiger (eigene Implementierung)<\/li>\n<\/ul>\n<p>\nDurch den Einsatz von mehrfacher Schnittstellenerbschaft (vollst\u00e4ndig abstrakte Klassen) wird ein komponentenbasiertes Modell m\u00f6glich, \u00fcber das wir sp\u00e4ter sprechen werden.<\/p>\n<h3>Komponenten<\/h3>\n<p>\nUm die Modularit\u00e4t zu gew\u00e4hrleisten, wurde die gesamte Funktionalit\u00e4t in Komponenten unterteilt, die dynamischen Bibliotheken entsprechen (*.dll unter Windows, *.so unter Linux). Es gibt insgesamt mehr als anderthalb Hundert Komponenten; hier sind Beschreibungen einiger davon:<\/p>\n<p>backend<br \/>\nEnth\u00e4lt die Metadaten-Engine der Plattform<\/p>\n<p>accnt<br \/>\nObjekte, die von Anwendungsentwicklern zur Erstellung der Buchhaltung verwendet werden (Kontenpl\u00e4ne und Buchhaltungsregister)<\/p>\n<p>bsl<br \/>\nEngine f\u00fcr die Ausf\u00fchrung der eingebetteten Sprache<\/p>\n<p>nuke<br \/>\nEigene Implementierung eines Speichermanagers<\/p>\n<p>dbeng8<br \/>\nDateibase-Engine. Ein einfacher Datei-Server-Datenbankmaschine, die auf ISAM basiert und auch einen einfachen SQL-Prozessor umfasst.<\/p>\n<p>wbase<br \/>\nEnth\u00e4lt grundlegende Klassen und Funktionen zur Implementierung von Windows-Benutzeroberfl\u00e4chen \u2014 Fensterklassen, GDI-Zugriff usw.<\/p>\n<p>\nDie Aufteilung in mehrere Komponenten ist aus mehreren Perspektiven n\u00fctzlich:<\/p>\n<ul>\n<li>Die Trennung f\u00f6rdert eine bessere Gestaltung, insbesondere eine verbesserte Isolierung des Codes.<\/li>\n<li>Aus dem Komponenten-Set lassen sich flexibel verschiedene Liefervarianten zusammensetzen:\n<ul>\n<li>So wird beispielsweise die Installation eines Thin Clients wbase enthalten, aber kein Backend.<\/li>\n<li>Auf dem Server hingegen wird wbase nicht enthalten sein.<\/li>\n<li>Beide Varianten werden nat\u00fcrlich nuke und bsl enthalten.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\nAlle f\u00fcr diese Startvariante ben\u00f6tigten Komponenten werden beim Programmstart geladen. Dies ist insbesondere f\u00fcr die Registrierung von SCOM-Klassen erforderlich, die hier behandelt werden.<\/p>\n<h3>SCOM<\/h3>\n<p>\nF\u00fcr die Dekomposition auf einer niedrigeren Ebene wird das SCOM-System verwendet \u2013 ideologisch \u00e4hnlich der ATL-Bibliothek. F\u00fcr diejenigen, die mit ATL nicht gearbeitet haben, sind hier die wichtigsten Funktionen und Merkmale aufgef\u00fchrt. <br \/>\nF\u00fcr speziell gestaltete SCOM-Klassen:<\/p>\n<ul>\n<li>Bietet Fabrikmethoden, die es erm\u00f6glichen, eine Klasse aus einer anderen Komponente zu erstellen, indem nur deren Name bekannt ist (ohne Implementierungsdetails preiszugeben).<\/li>\n<li>Stellt die Infrastruktur f\u00fcr intelligente Zeiger mit Referenzz\u00e4hlung zur Verf\u00fcgung. Es ist nicht erforderlich, die Lebensdauer der SCOM-Klasse manuell zu \u00fcberwachen.<\/li>\n<li>Erlaubt die \u00dcberpr\u00fcfung, ob ein Objekt ein bestimmtes Interface implementiert, und wandelt den Zeiger auf das Objekt automatisch in einen Zeiger auf das Interface um.<\/li>\n<li>Ein Objekt-Service erstellen, der jederzeit \u00fcber die Methode get_service zug\u00e4nglich ist usw.<\/li>\n<\/ul>\n<p>\nZum Beispiel kann in der Komponente json.dll eine Klasse zum Lesen von JSON (z. B. JSONStreamReader) beschrieben werden.<br \/>\nKlassen und Instanzen k\u00f6nnen aus anderen Komponenten erstellt werden; diese m\u00fcssen 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 Registrierungs-Klasse, deren Konstruktor beim Laden der Komponente in den Arbeitsspeicher aufgerufen wird.<br \/>\nDanach kann in einer anderen Komponente eine Instanz davon erstellt werden:<\/p>\n<pre><code class=\"cpp\">IJSONStreamReaderPtr jsonReader = create_instance&lt;IJSONStreamReader&gt;(SCOM_CLSIDOF(JSONStreamReader));\n<\/code><\/pre>\n<p>\nZur Unterst\u00fctzung der Dienste bietet SCOM eine zus\u00e4tzliche, ziemlich komplexe Infrastruktur. Zentral in dieser ist das Konzept des SCOM-Prozesses, der als Container f\u00fcr die ausgef\u00fchrten Dienste fungiert (d.h. als Service Locator) und auch die Bindung an lokalisierten Ressourcen enth\u00e4lt. Der SCOM-Prozess ist an den OS-Thread gebunden. Dadurch k\u00f6nnen innerhalb der Anwendung die Dienste wie folgt abgerufen werden:<\/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>\nDar\u00fcber hinaus k\u00f6nnen durch das Umschalten von logischen (SCOM) Prozessen, die an den Datenfluss gebunden sind, praktisch unabh\u00e4ngige Anwendungen im Hinblick auf den Informationsraum erzeugt werden, die innerhalb eines einzigen Flusses ausgef\u00fchrt werden. So funktioniert unser schlanker Client, der mit einer Dateidatenbank arbeitet - innerhalb eines Betriebssystemprozesses befinden sich zwei SCOM-Prozesse, einer ist mit dem Client verbunden und der andere mit dem Server. Dieser Ansatz erm\u00f6glicht eine Vereinheitlichung der Codeerstellung, die sowohl mit der lokalen Dateidatenbank als auch in einer echten Client-Server-Umgebung funktioniert. Der Preis f\u00fcr diese Einheitlichkeit sind die Betriebskosten, aber die Praxis zeigt, dass sie es wert sind.<\/p>\n<p>Die Gesch\u00e4ftslogik und der Interface-Bereich von 1C: Enterprise basieren auf dem komponentenbasierten Modell von SCOM.<\/p>\n<h3>Benutzeroberfl\u00e4che<\/h3>\n<p>\nApropos Interfaces. Wir verwenden keine Standard-Controls von Windows; unsere Steuerelemente sind direkt \u00fcber die Windows API implementiert. F\u00fcr die Linux-Version wurde eine Schicht entwickelt, die \u00fcber die wxWidgets-Bibliothek arbeitet.<br \/>\nDie Bibliothek der Steuerelemente ist unabh\u00e4ngig von anderen Teilen von 1C: Enterprise und wird von uns auch in mehreren kleinen internen Tools verwendet.<\/p>\n<p>Im Laufe der Jahre hat sich das Aussehen der Steuerelemente von 1C:Enterprise ver\u00e4ndert, jedoch gab es nur einmal eine grundlegende \u00c4nderung der Prinzipien, und zwar 2009 mit der Ver\u00f6ffentlichung von Version 8.2 und der Einf\u00fchrung der \"verwalteten Formulare\". Neben der \u00c4nderung des Designs hat sich das Prinzip der Formanordnung grundlegend ge\u00e4ndert \u2014 die pixelgenaue Positionierung der Elemente wurde zugunsten der Flow-Anordnung aufgegeben. Dar\u00fcber hinaus arbeiten die Steuerelemente im neuen Modell nicht direkt mit Domainobjekten, sondern mit speziellen DTOs (<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DTO\">Data Transfer Objects<\/a><\/noindex>).<br \/>\nDiese \u00c4nderungen erm\u00f6glichten die Schaffung eines Webclients f\u00fcr \"1C:Enterprise\", der die C++-Logik der Steuerelemente in JavaScript nachbildet. Wir bem\u00fchen uns, die funktionale \u00c4quivalenz zwischen dem schlanken und dem Webclient aufrechtzuerhalten. Wenn dies nicht m\u00f6glich ist, zum Beispiel aufgrund von Einschr\u00e4nkungen der verf\u00fcgbaren JavaScript-APIs (wie beispielsweise stark eingeschr\u00e4nkten Dateioperationen), setzen wir h\u00e4ufig die ben\u00f6tigte Funktionalit\u00e4t mithilfe von Browsererweiterungen um, 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 verwalteten Formulare eingesetzt, um die Benutzeroberfl\u00e4che mobiler Anwendungen auf der 1C-Plattform zu erstellen. Auf mobilen Ger\u00e4ten erfolgt das Rendering der Steuerelemente mit den f\u00fcr das Betriebssystem typischen Technologien, w\u00e4hrend f\u00fcr die Logik der Formularlayout und die Reaktion der Benutzeroberfl\u00e4che derselbe Code verwendet wird wie auf der \u00bbgro\u00dfen\u00ab Plattform \u00bb1C:Enterprise\u00ab.<\/p>\n<p><img decoding=\"async\" alt=\"Die Plattform \u201e1C: Unternehmenssoftware\u201c \u2014 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: Unternehmenssoftware\u201c \u2014 was steckt dahinter?\" src=\"\/wp-content\/uploads\/2019\/04\/23f48ade4e28242104bfd4e9099800e2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>1C-Schnittstelle auf mobilen Ger\u00e4ten<\/i><\/p>\n<p><b class=\"spoiler_title\">1C-Schnittstelle auf anderen Plattformen<\/b> <img decoding=\"async\" alt=\"Die Plattform \u201e1C: Unternehmenssoftware\u201c \u2014 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: Unternehmenssoftware\u201c \u2014 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 standardisierten C++-Entwicklerbibliotheken f\u00fcr Windows (MFC, Steuerelemente aus WinAPI) verwenden, schreiben wir nicht alle Komponenten selbst. Bereits die Bibliothek <noindex><a rel=\"nofollow\" href=\"http:\/\/www.wxwidgets.org\/\">wxWidgets<\/a><\/noindex>, und au\u00dferdem nutzen wir:<\/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 Kryptografie und TLS-Verbindungen<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.xmlsoft.org\/\">libxml2 und libxslt<\/a><\/noindex> zum 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> zum Parsen von E-Mail-Nachrichten<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.sqlite.org\/\">sqllite<\/a><\/noindex> zum Speichern 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 k\u00f6nnte noch fortgesetzt werden.<br \/>\nAu\u00dferdem 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 dem SCOM-Modell der Komponentenorganisation kompatibel zu sein.<br \/>\nDie Verbreitung von 1C macht die Plattform zu einem hervorragenden Pr\u00fcfstand f\u00fcr die verwendeten Bibliotheken. Die Vielfalt der Nutzer und Szenarien deckt schnell Fehler selbst in den am wenigsten genutzten Teilen des Codes auf. Wir beheben diese und versuchen, sie an die Autoren der Bibliotheken zur\u00fcckzugeben. Die Erfahrungen mit der Zusammenarbeit sind sehr unterschiedlich.<br \/>\nDie Entwickler <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> reagieren schnell auf Pull-Requests, jedoch ist der Patch, zum Beispiel, in <noindex><a rel=\"nofollow\" href=\"http:\/\/openssl.org\/\">OpenSSL<\/a><\/noindex> uns ist es nicht gelungen, ihn zur\u00fcckzugeben.<\/p>\n<h3>Fazit<\/h3>\n<p>\nIm Artikel haben wir einige grundlegende Aspekte der Entwicklung der Plattform \u201e1C: Unternehmen\u201c angesprochen. Im Rahmen dieses Artikels haben wir nur einige interessante Aspekte behandelt, die wir f\u00fcr erw\u00e4hnenswert halten. <br \/>\nEine allgemeine Beschreibung der verschiedenen Mechanismen der Plattform finden Sie <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">hier<\/a><\/noindex>.<br \/>\nWelche Themen w\u00fcrden Sie in den n\u00e4chsten Artikeln interessieren?<\/p>\n<p>Wie ist die mobile 1C-Plattform umgesetzt?<br \/>\nEine Beschreibung des internen Aufbaus des Webclients? <br \/>\nOder sind Sie vielleicht am Auswahlprozess von Features f\u00fcr neue Releases sowie deren Entwicklung und Testung interessiert?<\/p>\n<p>Schreiben Sie in die 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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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\" \/>\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) 4.9.10\" \/>\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! \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\" \/>\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\udd47 Plattform \u201e1C:Enterprise\u201c \u2013 was steckt dahinter? | ProHoster","description":"Hallo, Habr! In diesem Artikel werfen wir einen Blick darauf, wie die Plattform \u201e1C:Enterprise 8\u201c aufgebaut ist und welche Technologien bei ihrer Entwicklung zum Einsatz kommen. Warum halten wir das f\u00fcr interessant? Erstens, weil die Plattform \u201e1C:Enterprise 8\u201c eine umfangreiche Anwendung mit \u00fcber 10 Millionen Codezeilen in C++ (Client, Server usw.), JavaScript (Web-Client) und seit Kurzem auch in...","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! \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","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"},"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}]}}