{"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\/it\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","title":{"rendered":"Piattaforma \u00ab1C: Impresa\u00bb \u2014 cosa c'\u00e8 sotto il cofano?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ciao, Habr! <br \/>\nIn questo articolo inizieremo a raccontare come \u00e8 strutturata all'interno <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">la piattaforma '1C:Enterprise 8'<\/a><\/noindex> e quali tecnologie vengono utilizzate per la sua realizzazione.<\/p>\n<p><img decoding=\"async\" alt=\"Piattaforma \u00ab1C: Impresa\u00bb \u2014 cosa c&#039;\u00e8 sotto il cofano?\" src=\"\/wp-content\/uploads\/2019\/04\/9375ea3be32979a7d8c72239dfd50f07.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPerch\u00e9 riteniamo che questo sia interessante? Innanzitutto, perch\u00e9 la piattaforma '1C:Enterprise 8' \u00e8 una grande applicazione (con oltre 10 milioni di righe di codice) scritta in C++ (client, server, ecc.), JavaScript (client web), e, da poco, anche <noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=19821\">Java<\/a><\/noindex>. I grandi progetti sono interessanti almeno per la loro scala, poich\u00e9 questioni nascoste in una piccola base di codice emergono in modo significativo in tali progetti. In secondo luogo, '1C:Enterprise' \u00e8 un prodotto replicabile, 'in scatola', e ci sono pochi articoli su questo tipo di sviluppo su Habr. Inoltre, \u00e8 sempre interessante scoprire come vivono in altri team e aziende.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nBene, cominciamo. In questo articolo daremo una panoramica di alcune tecnologie impiegate nella piattaforma, delineando il panorama senza immergerci troppo nella realizzazione. Infatti, per molti meccanismi, un racconto dettagliato richiederebbe un articolo a parte, e per alcuni, addirittura un intero libro!<br \/>\nPer iniziare, \u00e8 importante chiarire le cose di base: cos'\u00e8 la piattaforma '1C:Enterprise' e quali componenti la compongono. La risposta a questa domanda non \u00e8 cos\u00ec semplice, poich\u00e9 con il termine 'Piattaforma' (per brevit\u00e0 la chiameremo cos\u00ec) si intendono sia gli strumenti di sviluppo di applicazioni aziendali sia l'ambiente di esecuzione, oltre agli strumenti di amministrazione. Possiamo suddividerla in diverse componenti:<\/p>\n<ul>\n<li>cluster di server<\/li>\n<li>un 'client leggero' in grado di connettersi al server tramite http e un protocollo binario proprietario<\/li>\n<li>un client per lavorare in architettura a due livelli con un DB archiviato su disco rigido o in una cartella di rete<\/li>\n<li>client web<\/li>\n<li>strumenti di amministrazione del server delle applicazioni<\/li>\n<li>ambiente di sviluppo (conosciuto come Configuratore)<\/li>\n<li>ambiente di esecuzione per iOS, Android e Windows Phone (piattaforma mobile 1C)<\/li>\n<\/ul>\n<p>\nTutte queste parti, ad eccezione del client web, sono scritte in C++. Inoltre, \u00e8 stato recentemente annunciato <noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=19821\">il Configuratore di nuova generazione<\/a><\/noindex>, scritto in Java.<\/p>\n<h3>Applicazioni native<\/h3>\n<p>\nPer lo sviluppo di applicazioni native si utilizza C++03. Su Windows viene impiegato Microsoft Visual C++ 12 (profilo compatibile con Windows XP), mentre su Linux e Android si usa gcc 4.8; per iOS si utilizza clang 5.0. La libreria standard utilizzata \u00e8 unica per tutti i sistemi operativi e compilatori: STLPort. Questa soluzione riduce la probabilit\u00e0 di errori specifici dell'implementazione di STL. Attualmente stiamo pianificando il passaggio all'implementazione di STL fornita con CLang, poich\u00e9 STLPort ha interrotto il proprio sviluppo ed \u00e8 incompatibile con la modalit\u00e0 di supporto C++11 attivata in gcc.<br \/>\nLa base di codice del server \u00e8 comune per il 99%, mentre quella del client \u00e8 comune per circa il 95%. Inoltre, anche la piattaforma mobile utilizza lo stesso codice C++ della versione 'grande', sebbene l\u00ec la percentuale di unificazione sia leggermente inferiore. <br \/>\nCome la maggior parte degli utenti C++, non pretendeniamo di utilizzare il 100% delle potenzialit\u00e0 del linguaggio e delle sue librerie. Infatti, non utilizziamo praticamente Boost e, tra le possibilit\u00e0 del linguaggio, solo il cast di tipo dinamico \u00e8 raramente impiegato. D'altro canto, utilizziamo attivamente:<\/p>\n<ul>\n<li>STL (in particolare, stringhe, contenitori e algoritmi)<\/li>\n<li>ereditariet\u00e0 multipla, inclusa l'ereditariet\u00e0 multipla dell'implementazione<\/li>\n<li>template<\/li>\n<li>eccezioni<\/li>\n<li>puntatori intelligenti (implementazione proprietaria)<\/li>\n<\/ul>\n<p>\nGrazie all'uso dell'ereditariet\u00e0 multipla delle interfacce (classi completamente astratte) diventa possibile un modello a componenti, di cui parleremo pi\u00f9 avanti.<\/p>\n<h3>Componenti<\/h3>\n<p>\nPer garantire la modularit\u00e0, tutta la funzionalit\u00e0 \u00e8 suddivisa in componenti, che si presentano come librerie dinamiche (*.dll per Windows, *.so per Linux). Ci sono pi\u00f9 di cento componenti in totale; forniremo descrizioni di alcuni di essi:<\/p>\n<p>backend<br \/>\nContiene il 'motore' dei metadati della piattaforma<\/p>\n<p>accnt<br \/>\nOggetti che gli sviluppatori applicativi utilizzano per costruire contabilit\u00e0 (piani dei conti e registri contabili)<\/p>\n<p>bsl<br \/>\nMotore di esecuzione del linguaggio integrato<\/p>\n<p>nuke<br \/>\nImplementazione proprietaria di un allocatore di memoria<\/p>\n<p>dbeng8<br \/>\nMotore di database file-based. Un semplice file-server per basi di dati, basato su ISAM, che include anche un semplice processore SQL<\/p>\n<p>wbase<br \/>\nContiene classi di base e funzioni per l'implementazione di interfacce utente Windows - classi delle finestre, accesso a GDI, ecc.<\/p>\n<p>\nLa suddivisione in numerose componenti \u00e8 utile da diversi punti di vista:<\/p>\n<ul>\n<li>La separazione favorisce un migliore design, in particolare una migliore isolamento del codice<\/li>\n<li>Dal set di componenti \u00e8 possibile assemblare diverse varianti di fornitura:\n<ul>\n<li>Ad esempio, l'installazione del thin client conterr\u00e0 wbase, ma non conterr\u00e0 il backend<\/li>\n<li>mentre sul server wbase, al contrario, non ci sar\u00e0<\/li>\n<li>entrambi le varianti conterranno, ovviamente, nuke e bsl<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\nTutti i componenti necessari per questa variante di avvio vengono caricati all'avvio del programma. Questo \u00e8, in particolare, necessario per la registrazione delle classi SCOM, di cui si parler\u00e0 pi\u00f9 avanti.<\/p>\n<h3>SCOM<\/h3>\n<p>\nPer la decomposizione a un livello pi\u00f9 basso si utilizza il sistema SCOM, simile nella filosofia alla libreria ATL. Per coloro che non hanno lavorato con ATL, elencher\u00f2 brevemente le principali funzionalit\u00e0 e caratteristiche. <br \/>\nPer la classe SCOM appositamente formattata:<\/p>\n<ul>\n<li>Fornisce metodi factory che consentono di creare una classe a partire da un'altra componente conoscendo solo il suo nome (senza rivelare l'implementazione)<\/li>\n<li>Fornisce un'infrastruttura di smart pointer con conteggio dei riferimenti. Non \u00e8 necessario monitorare manualmente la durata di vita della classe SCOM<\/li>\n<li>Permette di verificare se un oggetto implementa un'interfaccia specifica e di convertire automaticamente un puntatore a oggetto in un puntatore all'interfaccia<\/li>\n<li>Creare un oggetto-servizio, sempre accessibile tramite il metodo get_service e cos\u00ec via.<\/li>\n<\/ul>\n<p>\nAd esempio, \u00e8 possibile descrivere nella componente json.dll una classe per la lettura di JSON (ad esempio, JSONStreamReader).<br \/>\nLe classi, gli oggetti possono essere creati da altre componenti devono essere registrati nella macchina SCOM:<\/p>\n<pre><code class=\"cpp\">SCOM_CLASS_ENTRY(JSONStreamReader)\n<\/code><\/pre>\n<p>\nQuesta macro descriver\u00e0 una speciale classe statica registratore, il cui costruttore sar\u00e0 chiamato al caricamento della componente in memoria.<br \/>\nDopo ci\u00f2, \u00e8 possibile creare la sua istanza in un'altra componente:<\/p>\n<pre><code class=\"cpp\">IJSONStreamReaderPtr jsonReader = create_instance&lt;IJSONStreamReader&gt;(SCOM_CLSIDOF(JSONStreamReader));\n<\/code><\/pre>\n<p>\nPer il supporto dei servizi, SCOM offre un'infrastruttura aggiuntiva, abbastanza complessa. Il concetto centrale \u00e8 quello del processo SCOM, che funge da contenitore per i servizi in esecuzione (cio\u00e8 funge da Service Locator) e include anche il collegamento alle risorse localizzabili. Il processo SCOM \u00e8 legato al thread del sistema operativo. Grazie a ci\u00f2, all'interno dell'applicazione \u00e8 possibile ottenere i servizi in questo modo:<\/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>\nInoltre, imparando a commutare i processi logici (SCOM) legati al flusso, \u00e8 possibile ottenere applicazioni praticamente indipendenti dal punto di vista dello spazio informativo, che operano all'interno di un unico flusso. Questo \u00e8 il funzionamento del nostro thin client che lavora con il database file-based: all'interno di un processo del sistema operativo sono presenti due processi SCOM, uno legato al client e l'altro al server. Questo approccio consente di uniformare la scrittura del codice, che funzioner\u00e0 sia con un database file locale che nella vera variante client-server. Il prezzo di tale uniformit\u00e0 sono i costi generali, ma la pratica dimostra che ne vale la pena.<\/p>\n<p>La logica di business e la parte dell'interfaccia di 1C: Enterprise sono implementate sulla base del modello a componenti SCOM.<\/p>\n<h3>Interfaccia utente<\/h3>\n<p>\nA proposito di interfacce. Non utilizziamo i controlli standard di Windows, i nostri elementi di controllo sono implementati direttamente sull'API di Windows. Per la versione Linux \u00e8 stata creata un'interfaccia che funziona attraverso la libreria wxWidgets.<br \/>\nLa libreria di elementi di controllo non dipende da altre parti di \"1C:Enterprise\" ed \u00e8 utilizzata anche in altre piccole utility interne.<\/p>\n<p>Nel corso degli anni di sviluppo di 1C:Enterprise, l'aspetto dei controlli \u00e8 cambiato, ma un cambiamento significativo nei principi si \u00e8 verificato solo una volta, nel 2009, con il rilascio della versione 8.2 e l'introduzione delle \"form controllate\". Oltre al cambiamento dell'aspetto, il principio di composizione dei moduli \u00e8 stato fondamentalmente rivisitato: si \u00e8 abbandonata la posizionamento pixel-per-pixel delle componenti a favore della composizione a flusso. Inoltre, nel nuovo modello gli elementi di controllo non interagiscono direttamente con gli oggetti di dominio, ma con speciali DTO (<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DTO\">Data Transfer Objects<\/a><\/noindex>).<br \/>\nQuesti cambiamenti hanno permesso di creare il client web di \"1C:Enterprise\", che replica la logica dei controlli C++ su JavaScript. Ci sforziamo di mantenere l'equivalenza funzionale tra il thin client e il web client. Nei casi in cui ci\u00f2 non sia possibile, ad esempio a causa delle limitazioni nell'API di JavaScript (ad esempio, le possibilit\u00e0 di lavorare con file sono molto limitate), spesso realizziamo la funzionalit\u00e0 necessaria tramite estensioni del browser scritte in C++. Attualmente supportiamo Internet Explorer e Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows e Linux) e Safari (MacOS).<\/p>\n<p>Inoltre, la tecnologia delle forme gestite viene utilizzata per creare l'interfaccia delle applicazioni mobili sulla piattaforma 1C. Su dispositivi mobili, il rendering dei controlli viene implementato utilizzando tecnologie \"native\" per il sistema operativo, ma gi\u00e0 per la logica di composizione della forma e per la reazione dell'interfaccia viene utilizzato lo stesso codice della \"grande\" piattaforma \"1C:Enterprise\".<\/p>\n<p><img decoding=\"async\" alt=\"Piattaforma \u00ab1C: Impresa\u00bb \u2014 cosa c&#039;\u00e8 sotto il cofano?\" src=\"\/wp-content\/uploads\/2019\/04\/a4a87ca99cef465e82429739a8845300.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Interfaccia 1C su OS Linux<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Piattaforma \u00ab1C: Impresa\u00bb \u2014 cosa c&#039;\u00e8 sotto il cofano?\" src=\"\/wp-content\/uploads\/2019\/04\/23f48ade4e28242104bfd4e9099800e2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Interfaccia 1C su dispositivo mobile<\/i><\/p>\n<p><b class=\"spoiler_title\">Interfaccia 1C su altre piattaforme<\/b> <img decoding=\"async\" alt=\"Piattaforma \u00ab1C: Impresa\u00bb \u2014 cosa c&#039;\u00e8 sotto il cofano?\" src=\"\/wp-content\/uploads\/2019\/04\/d04d2431d8c5240d44acce675d837018.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Interfaccia 1C su OS Windows<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Piattaforma \u00ab1C: Impresa\u00bb \u2014 cosa c&#039;\u00e8 sotto il cofano?\" src=\"\/wp-content\/uploads\/2019\/04\/a443f6e2d1cb95e256e0dcff4fe139d2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Interfaccia 1C \u2014 client web<\/i><\/p>\n<p><\/p>\n<h3>Open source<\/h3>\n<p>\nAnche se non utilizziamo le librerie standard per sviluppatori C++ su Windows (MFC, controlli di WinAPI), non scriviamo tutti i componenti da soli. \u00c8 stata gi\u00e0 menzionata la libreria <noindex><a rel=\"nofollow\" href=\"http:\/\/www.wxwidgets.org\/\">wxWidgets<\/a><\/noindex>, e usiamo anche:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/curl.haxx.se\/libcurl\/\">cURL<\/a><\/noindex> per lavorare con HTTP e FTP. <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/openssl.org\/\">OpenSSL<\/a><\/noindex> per lavorare con la crittografia e stabilire connessioni TLS<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.xmlsoft.org\/\">libxml2 e libxslt<\/a><\/noindex> per l'analisi XML<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dinhviethoa\/libetpan\">libetpan<\/a><\/noindex> per lavorare con i protocolli e-mail (POP3, SMTP, IMAP)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.codesink.org\/mimetic_mime_library.html\">mimetic<\/a><\/noindex> per l'analisi dei messaggi di posta elettronica<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.sqlite.org\/\">sqllite<\/a><\/noindex> per memorizzare i log delle attivit\u00e0 degli utenti<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/site.icu-project.org\/\">ICU<\/a><\/noindex> per l'internazionalizzazione<\/li>\n<\/ul>\n<p>\nLa lista pu\u00f2 continuare.<br \/>\nInoltre, utilizziamo versioni fortemente modificate di <noindex><a rel=\"nofollow\" href=\"http:\/\/code.google.com\/p\/googletest\/\">Google Test<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"http:\/\/code.google.com\/p\/googlemock\/\">Google Mock<\/a><\/noindex> per sviluppare unit test.<br \/>\nLe librerie hanno richiesto un'adattamento per essere compatibili con il modello SCOM dell'organizzazione dei componenti.<br \/>\nLa diffusione di 1C rende la piattaforma un ottimo banco di prova per le librerie utilizzate. La variet\u00e0 di utenti e scenari individua rapidamente gli errori anche nelle parti di codice pi\u00f9 raramente usate. Li correggiamo internamente e cerchiamo di restituirli agli autori delle librerie. L'esperienza di interazione \u00e8 molto varia.<br \/>\nSviluppatori <noindex><a rel=\"nofollow\" href=\"http:\/\/curl.haxx.se\/libcurl\/\">cURL<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dinhviethoa\/libetpan\">libetpan<\/a><\/noindex> rispondono rapidamente ai pull request, ma il patch, ad esempio, in <noindex><a rel=\"nofollow\" href=\"http:\/\/openssl.org\/\">OpenSSL<\/a><\/noindex> non siamo riusciti a restituirlo.<\/p>\n<h3>Conclusione<\/h3>\n<p>\nNell'articolo abbiamo toccato alcuni aspetti principali dello sviluppo della piattaforma \"1C: Enterprise\". In uno spazio limitato, abbiamo toccato solo alcuni aspetti che riteniamo interessanti. <br \/>\nUna panoramica sui vari meccanismi della piattaforma pu\u00f2 essere vista <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">qui<\/a><\/noindex>.<br \/>\nQuali temi sarebbero interessanti per voi nei prossimi articoli?<\/p>\n<p>Come \u00e8 stata realizzata la piattaforma mobile 1C?<br \/>\nDescrizione della struttura interna del client web? <br \/>\nOppure, forse, vi interessa il processo di selezione delle funzionalit\u00e0 per i nuovi rilasci, sviluppo e testing?<\/p>\n<p>Scrivete nei commenti!<br \/>\n<br \/>Fonte: <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\/it\/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=\"it_IT\" \/>\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\/it\/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\udd47Piattaforma \"1C: Enterprise\" \u2014 cosa c'\u00e8 sotto il cofano? | ProHoster","description":"Ciao, Habr!","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/32475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=32475"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/32475\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/24279"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=32475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=32475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=32475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}