Attraverso lo specchio 1s. "Alice nel paese delle meraviglie e attraverso lo specchio": un interessante libro interattivo da "1C"

Oggi al lettore viene proposta la recensione di una pubblicazione non nuova, ma meritevole di attenzione, se non altro perché rimane ancora oggi un modello di vera e propria didattica interattiva. Programmi in cui il testo stampato è spiritoso e professionale combinato con le possibilità di audio, animazione 3D, animazione, grafica. L'editore era una nota azienda russa "1C" .

La pubblicazione appartiene alla collana "1C: Cognitive Collection". Il cofanetto comprende due dischi.

  1. Il mondo di Alice basato su Le avventure di Alice nel paese delle meraviglie di Lewis Carroll.
  2. Attraverso lo specchio di Lewis Carroll.


I revisori sono stati: Elena Belyaeva, critico d'arte, editore di T / O "M-studio" Kirov, e Vera Buldakova, filologo, insegnante di altissima categoria. L'esperto è stato invitato Lyubov Georgievna Zubareva, insegnante di inglese della massima categoria (Kirov Regional College of Culture)

"Libro magico del computer"

Sulla copertina del disco siamo informati (tra le altre cose, tra le altre osservazioni sul prodotto): "Questo è un magico libro di computer". E questo è vero! Il viaggio che intraprendi non con Alice, ma completamente da solo, diventa più interessante ad ogni nuovo passo. Lo spazio si dispiega, ogni nuovo che incontri è davvero nuovo e non assomiglia affatto agli altri che vivono in questo paese. Le scoperte sono ad ogni angolo, le aspetti con gioia nascosta. Pensa, tutto questo è stato inventato nel secolo scorso e il requisito della novità per l'arte del postmodernismo è assolutamente soddisfatto! Il libro, la condizione per la lettura che era la capacità della mente di giocare intellettualmente, ispira le persone alla creatività per il secondo secolo. Ma la creatività è magia.

L'introduzione alla prima parte di "Alice's World" è stata fatta dal traduttore più popolare di "Alice nel paese delle meraviglie" in russo - Boris Zakhoder, il quale ammette che il testo "Alice`s Adventures in Wonderland" appartiene alla categoria dei fondamentalmente intraducibili . Questo lo ha spinto una volta a creare la sua versione della rivisitazione del libro. Sul disco, Boris Zakhoder ti parla, e puoi scegliere se leggere la sua prefazione o vedere e ascoltare l'autore. Ad Andrei Tarkovsky piaceva ripetere che il cinema è un tempo fisso. Fai clic sul pulsante del mouse e il vaso magico del tempo si apre!

L'idea della traduzione multivariante diventa quella principale per gli sviluppatori di questo programma educativo. L'intera gamma di autori-traduttori è presentata qui: V. Nabokov, V. Orel, B. Balter, B. Zakhoder - nella prima parte; V. Orel, L. Yakhnin, V. Azov - nel secondo. L'immagine è completata da un sistema di citazioni da traduzioni classiche di N. Demurova, O. Sedakova, D. Orlovskaya, A. Shcherbakov, S. Marshak. Le opzioni di traduzione risvegliano l'immaginazione del lettore-viaggiatore, compaiono involontariamente idee della propria interpretazione non del testo, ma di situazioni, eroi ed eventi.

Il principio di funzionamento è semplice. Davanti a noi ci sono due finestre con testo in inglese e russo che si muovono in modo sincrono (in "Attraverso lo specchio" qualsiasi traduzione è facilmente sostituita da un'altra). Sotto ogni parola inglese, si apre il suo equivalente russo.

Puoi attivare la colonna sonora: il testo viene letto in un inglese perfetto. Se lo si desidera, ogni paragrafo può essere ripetuto fino all'assimilazione o all'infinito.

Durante la configurazione, puoi lasciare il testo in una pagina in inglese o in russo.

Il sistema di transizioni da strato a strato è multivariante e funzionale allo stesso tempo. Quindi, puoi sostituire il testo della traduzione sotto l'immagine, oppure puoi scegliere un altro autore di illustrazioni per questa traduzione. A proposito, tra illustratori e classici da J. Tenniel allo stesso Carroll...

Il libro può essere letto in inglese o russo (o ascoltato in inglese) capitolo per capitolo, oppure puoi lasciarti trasportare dalle note (si sa che in termini di numero di parole ingannevoli dette su di lui, Carroll è inferiore solo a Shakespeare).

Qui l'integrità del testo non viene violata e numerosi commenti e interpretazioni sono nascosti dietro un arguto sistema di riferimenti, osservazioni linguistiche, ragionamenti e riflessioni, fatti e spiegazioni e persino un commento di un giocatore di scacchi.

Puoi studiare la "Biografia del professore dell'Università di Oxford, insegnante di matematica Charles Lutwidge Dodgson" o la "Biografia dello scrittore Lewis Carroll - il creatore di Alice" speculare.

E puoi subito andare a una pagina con una bibliografia sintetica ma selettiva delle pubblicazioni e dei libri di Carroll su di lui.

Inoltre, il disco "Attraverso lo specchio" consente di copiare qualsiasi parte del testo negli appunti.

Gioco per tutte le età

Puoi vagare a lungo per le strade secondarie di questo gioco, ma è impossibile perdersi.

Lo studio della navigazione fa parte del viaggio attraverso Wonderland e Through the Looking Glass proposto dagli autori.

Troverai molte sciocchezze divertenti e dettagli precisi e divertenti qui: da pentole e piatti che volano lungo la pagina (possono essere rotti con un clic del mouse), insetti volanti e gatti che possono essere usati per spostare le pagine, a bambini che grugniscono e bruchi che diventano crisalidi farfalla, ecc. d. I passaggi dei cartoni animati inseriti non sono solo un'illustrazione, ma parte di uno spazio multidimensionale nello spirito di Carroll.

Qui ogni dettaglio fa parte di una costruzione multistrato, in cui la cosa principale sono i libri di Lewis Carroll. Immersi in un contesto visibile e udibile, diventano voluminosi. Giocare con la PAROLA, giocare con la PAROLA stessa risveglia l'immaginazione del lettore e provoca ulteriori passi verso un lavoro indipendente con il TESTO. Questo è un vero programma educativo, entusiasmante e ti consente di prendere decisioni indipendenti; ricco di dettagli interessanti e accurati, commenti storici e filosofici. Puoi lavorarci da solo, oppure puoi lavorare insieme o con un'intera azienda. Il programma, come il libro, è fatto, come si suol dire, "per la crescita", più impari, più interessante.

"Regalo molto utile!"

Se hai un computer, questo CD sarà il fiore all'occhiello della tua collezione di CD. Non importa che età hai, che tu sappia o meno l'inglese, non importa in che campo lavori. Ottimo se sei ancora a scuola. Questo buon vecchio libro, letto in modo nuovo, vi regalerà momenti di relax e divertimento, conoscenze quasi infinite, poiché il testo è talmente denso da poter essere letto all'infinito. E giocaci. Dopotutto, è noto che qualsiasi testo è interattivo, in generale, la penetrazione nella profondità del testo corrisponde al livello del tuo sviluppo e la ricerca della perfezione è infinita. Oggi molti insegnanti, scolari, genitori hanno appena accesso a un computer. Il laboratorio didattico del sito vede il suo compito non solo nel presentare gli ultimi prodotti elettronici, ma anche nel rivelare all'utente le migliori pubblicazioni che non diventano obsolete con il tempo e con lo sviluppo delle tecnologie di telecomunicazione. Non ci sono molte di queste pubblicazioni. Un libro per computer su Alice in uno dei primi posti. Un fantastico esempio di non rivalità, ma di connessione della "galassia Gutenberg" con le nuove invenzioni dell'uomo!

Abbiamo ripetutamente presentato ai nostri lettori i prodotti dell'azienda "1C". Questa è un'occasione per vedere ancora una volta quanto sia alto il livello dei prodotti elettronici educativi pubblicati da questa azienda. "Alice nel paese delle meraviglie e Attraverso lo specchio" ha ricevuto molti meritati premi e riconoscimenti.

La redazione ringrazia l'azienda "1C" per il programma fornito.

Cari e amati clienti, ci sforziamo di diventare migliori per voi!

A questo proposito, iniziamo la trasformazione Centro bellezza su Tulskaya dal 15 luglio. La ristrutturazione richiederà 2 settimane. Il centro rinnovato e modernizzato aprirà le sue porte il 29 luglio.

Per questo periodo saremo lieti di vederti anche al Centro di Kantemirovskayavogliamo informarvi che alcuni specialisti di Tulskaya lavoreranno a Kantemirovskaya durante la riparazione.

Ci scusiamo per il disagio causato.

Maggiori informazioniPuoi chiarirein un unico CALL Center+7 495 134 22 22.

Iscriviti al nostro Instagram e segui il processo, sarà interessante!

Criolipolisi - NOVITÀ!!!

VANTAGGI A 54 400*!

COLPO ASSOLUTO CLINICHE EUROPEE -CRIOLIPOLI COCCON :

✔️ INDOLORE;

✔️ RISULTATO RAPIDO;

✔️ RIDUZIONE UNIFORME DEL TESSUTO ADIPOSO;
✔️ SENZA EFFETTI COLLATERALI;
✔️ AMPIA AREA DI APPLICAZIONE - DALL'ADDOME E DALLA COSCIA AL MENTO.

*Per ulteriori informazioni sulla promozione, chiedi agli amministratori o chiama.

Emulsione rivoluzionaria PRX-T33 ORA CON NOI!

PRX-T33 è un prodotto brevettato unico che ha rivoluzionato la cosmetologia in Italia e dopo 10 anni di test clinici è entrato nel mercato russo. PRX-T33 - peeling chimico per la rivitalizzazione della pelle (ringiovanimento). Procedura per il danno cutaneo controllato per stimolarlo e ripristinarlo, senza danneggiare l'epidermide, senza provocare desquamazione. Si consiglia di eseguire la maggior parte delle bucce nel periodo autunno-inverno, ma PRX-T33 - per tutta la stagione.

NUOVO BARBIERE!

Ora nei centri di rete la bellezza "Attraverso lo specchio" (metro Kantemirovskaya, metro Tulskaya) è apparsa Barbieri: questi sono maestri a cui un uomo moderno può tranquillamente affidare la sua immagine: un taglio di capelli, baffi, modellatura della barba o regalarsi una rasatura regale. Il barbiere ti aiuterà a scegliere la cura dei capelli e lo styling, consigliando uno styling adatto al tipo di aspetto e la barba perfetta. Le acconciature per uomo hanno un'ampia varietà. Un giovane con un taglio di capelli può esprimere il suo carattere, stato d'animo, immagine!Scegli il tuo stile di vita!

Babor - "L'arte della purificazione"

Nei centri estetici "Attraverso lo specchio" è apparsa una nuova linea di cosmetici per la cura della casa - "The Art of Cleansing", dell'azienda tedesca Babor.
La linea comprende:
Polvere enzimatica purificante, set trio detergente per la pelle, peeling delicato, essenza tonica all'acqua termale, essenza tonica all'acqua di rose, latte detergente.

La manicure perfetta con Luxio è ora nello Specchio su Kantemirovskaya

Salone di bellezza attraverso lo specchio presenta una linea moderna per manicure e pedicure - LUXIO.

Recentemente, gli articoli su 1C hanno cominciato ad apparire sempre più spesso su Habré. ambiente di sviluppo dell'applicazione. Gli articoli sono più concettuali che applicati; Gli autori esaminano la piattaforma 1C:Enterprise 8 nel suo complesso, cercando di capire se la tecnologia per la creazione di applicazioni aziendali offerta da 1C sia buona o cattiva.

Non discuterò se ciascuno degli autori ha ragione o no; La piattaforma 1C, come qualsiasi tecnologia, ha i suoi vantaggi e svantaggi. E ha le sue caratteristiche interessanti, i suoi sviluppi e meccanismi. È di questo che voglio parlare. Inoltre, voglio scrivere un articolo su 1C per le persone che non hanno familiarità con 1C, un articolo che mostra quale posto occupa 1C tra prodotti software simili. Personalmente mi mancava davvero un articolo di recensione così introduttivo quando non conoscevo ancora 1C, ma conoscevo una serie di altri prodotti ERP.

Quindi, cominciamo!

Cosa produce l'azienda 1C?

Penso che il grande pubblico risponderà a questa domanda: "1C: Contabilità". Qualcuno ricorderà i tutorial o la famosa serie di giochi IL-2 Sturmovik.

I partecipanti a Habr, ovviamente, sono consapevoli che 1C non è solo 1C: Contabilità, che esiste un intero sistema di 1C: programmi aziendali che include strumenti di sviluppo di applicazioni aziendali e applicazioni aziendali create utilizzando questi strumenti. E con l'aiuto degli strumenti di sviluppo 1C, sono stati scritti contabilità, CRM ed ERP (con implementazioni per migliaia e decine di migliaia di utenti) e molto altro.

I sistemi ERP sono le applicazioni aziendali più interessanti e funzionali; diamo un'occhiata al loro esempio, che posto occupano le tecnologie 1C:Enterprise tra gli analoghi.

Cosa sono gli ERP

Qual è la proprietà più preziosa dei sistemi ERP (e di qualsiasi applicazione aziendale)? Secondo me questa è flessibilità, la capacità di adattarsi ai processi aziendali dell'utente finale al minor costo possibile.

È chiaro che durante la programmazione di un sistema ERP è impossibile prevedere tutte le opzioni per i processi aziendali. La parametrizzazione viene in soccorso; Introducendo parametri nel sistema che possono essere modificati nelle impostazioni di sistema dall'utente (consulente, amministratore), aumentiamo la flessibilità del sistema a un costo relativamente basso. I primi sistemi ERP erano basati su parametri. configurabile tramite parametri.

Non tutti i business case possono essere previsti nei sistemi parametrizzabili. Quando l'impostazione di un parametro non è sufficiente, è necessario modificare il codice sorgente. In questo caso, il produttore dell'ERP deve affrontare la questione della modifica del codice per soddisfare le esigenze dei consumatori e del rilascio di aggiornamenti o della fornitura del sistema in codici sorgente in modo che gli utenti possano riscrivere il sistema in base alle proprie esigenze (il che, tra l'altro, non esenta il produttore dal rilascio di aggiornamenti - il sistema deve svilupparsi, supportare la nuova funzionalità per essere competitivo).

Un problema a parte è la scelta di un linguaggio di programmazione per scrivere un sistema ERP. La maggior parte del sistema ERP è logica aziendale, per la quale i linguaggi di programmazione convenzionali come C++ non sono sempre i più adatti. Idealmente, sarebbe bene programmare la logica aziendale in un linguaggio di alto livello che possa fornire al programmatore aziendale il massimo comfort durante la scrittura della logica aziendale, astraendola da dettagli di basso livello (caratteristiche del database, file I/O e sottosistema di stampa, il sottosistema della finestra dell'interfaccia utente e così via). Naturalmente, in questo caso, è necessario creare anche un compilatore/interprete per questo linguaggio e un ambiente di sviluppo.

Abbiamo una matrice di possibili combinazioni:

  • codice applicativo aperto o chiuso (qui non intendo open source nel suo senso usuale, ma la possibilità di fornire il codice sorgente dell'applicazione, anche a pagamento).
  • linguaggio di programmazione di business logic – “normale” (С/Java/Perl/…) o appositamente sviluppato, proprietario.

Applicazioni aziendali create utilizzando 1C: le tecnologie aziendali sono sistemi con codice sorgente dell'applicazione aperto scritto in un linguaggio proprietario che non ha un nome breve; ufficialmente si chiama "Linguaggio di programmazione integrato 1C: Enterprise", ufficiosamente e brevemente - "linguaggio 1C".

La maggior parte dei leader del moderno mercato ERP sono sistemi open source. La capacità di modificare il codice sorgente "sul posto" offre un'enorme flessibilità e un vantaggio competitivo. I prodotti closed-source sono costretti a usare altri trucchi; La mossa più comune è un analogo di CallBack, la possibilità di allegare codice personalizzato a eventi predefiniti, sia visivi (apertura e chiusura di un modulo, selezione da un elenco di valori, ...), sia eventi aziendali (elaborazione dell'ordine, inserimento di un fattura di vendita, ...). Alcuni sistemi hanno la capacità di scrivere i propri gestori in C# (o altri linguaggi comuni), altri hanno Visual Basic, Applications Edition concesso in licenza da Microsoft e così via.

Come sono organizzati gli ERP?

I sistemi ERP con applicazioni open source sono costituiti dal codice sorgente vero e proprio che implementa la logica aziendale e dall'ambiente di esecuzione per questo codice aziendale (la cosiddetta piattaforma).

La piattaforma è solitamente scritta in un linguaggio di basso livello (C, C++), spesso il codice sorgente della piattaforma è chiuso agli utenti finali. Il compito della piattaforma è consentire al programmatore di astrarre da dettagli di basso livello (caratteristiche del sistema operativo e del DBMS, ecc.) e concentrarsi sulla scrittura della vera logica aziendale. La piattaforma viene spesso definita anche strumenti di sviluppo di applicazioni aziendali e strumenti di amministrazione del sistema (e sono d'accordo con questo approccio). A proposito, non fanno a meno di una piattaforma e di un sistema in cui la logica aziendale è scritta in linguaggi di programmazione "ordinari". Non è necessario interpretare lì il codice dell'applicazione, ma rimane la necessità di funzionalità della piattaforma (ad esempio, "wrapper" attorno al database o accesso unificato all'elenco degli utenti e ai loro diritti).

La piattaforma come ambiente di esecuzione delle applicazioni aziendali può essere descritta come una macchina virtuale. Di norma, la piattaforma dovrebbe emulare tre cose principali per ERP:

  • Ambiente di esecuzione della logica aziendale.
  • Banca dati.
  • Sottosistema grafico per la visualizzazione dell'applicazione client. L'applicazione client può essere grafica resa da strumenti del sistema operativo standard (incluso un sistema operativo mobile) oppure può essere un'applicazione web. Nel caso di un'applicazione Web, la piattaforma implementa il proprio server Web o fornisce supporto per server Web standard (IIS, Apache, ecc.)
In linea di principio, modificando la piattaforma, è possibile far funzionare un ERP scritto in un linguaggio proprietario su qualsiasi sistema operativo e archiviare i dati in quasi tutti i DBMS. In genere, i fornitori ERP sono limitati a uno o due sistemi operativi e uno o due DBMS. Il supporto per ulteriori sistemi operativi e DBMS significa un aumento dei costi di sviluppo e test; molto spesso i fornitori di ERP nelle nuove versioni dei prodotti annunciano la cessazione del supporto di qualsiasi DBMS.

La piattaforma 1C in termini di supporto OS e DBMS offre quanto segue:

  • Ambiente di esecuzione della logica aziendale: cluster di failover di application server con bilanciamento del carico; Sistema operativo: Windows o Linux
  • Database: proprio file DBMS (consigliato per sviluppo e piccole installazioni), MS SQL, Oracle, IBM DB2, PostgreSQL
  • Cliente:
    • thin client (solo visualizzazione e immissione di informazioni sul client) - Windows e Linux. Può funzionare con un server applicativo tramite una rete locale o tramite servizi Web (in questo caso, Microsoft IIS o Apache devono essere distribuiti sul lato server)
    • Client Web - sul lato server di Microsoft IIS o Apache, sul lato client - uno qualsiasi dei quattro browser: Internet Explorer, Chrome, Firefox, Safari
    • thick client (con la possibilità di eseguire parte della logica aziendale sul client) - Windows e Linux. Ha una serie di limitazioni (ad esempio, può funzionare solo all'interno della stessa rete locale con il server delle applicazioni). È considerato obsoleto, 1C non prevede di svilupparlo ulteriormente.
    • Client mobile offline (con possibilità di sincronizzazione periodica) - iOS e Android.
Se utilizziamo la tecnologia dell'applicazione gestita (disponibile dal 2008) durante la scrittura di un programma 1C, da un codice dell'applicazione otteniamo sia un thin client per Windows / Linux che un client Web.

Lingua dell'applicazione ERP

Un argomento separato è la lingua in cui è scritta la logica aziendale. Affinché un programmatore aziendale funzioni in modo efficace, questo linguaggio dovrebbe essere il più vicino possibile al dominio aziendale (idealmente, DSL, linguaggio specifico del dominio) e lontano dai dettagli tecnici del sistema operativo e del DBMS.

Prendiamo una tipica attività aziendale: dobbiamo aggiungere nel sistema la possibilità di inserire ed elaborare un nuovo tipo di documento (ad esempio un ordine di lavoro). In un sistema scritto in un linguaggio di programmazione "normale", ciò richiede:

  1. Creare tabelle nel database in cui verranno archiviate le informazioni sul documento.
  2. Scrivete una o più classi che implementino la logica di business per lavorare con un documento. Oltre alla logica aziendale, le classi devono anche implementare l'interazione con il database, ovvero leggere e scrivere i dati del documento.
  3. Creare un'interfaccia utente per la modifica di un nuovo tipo di documento. Spesso è anche necessario creare un modulo che visualizzi un elenco di documenti con la possibilità di cercare in diversi campi, ecc.
Se stiamo lavorando su C# in Visual Studio, tutti i passaggi possono essere eseguiti all'interno dello stesso ambiente di sviluppo (inclusa la progettazione del database).
In un certo numero di sistemi ERP che utilizzano linguaggi proprietari, è inoltre necessario eseguire tutti e tre i passaggi sopra descritti, di norma, all'interno dello stesso ambiente di sviluppo.

Questi 3 passaggi forniranno il minimo indispensabile; ma è comunque necessario creare un'interfaccia utente per lavorare con un documento, renderlo disponibile nei report, essere in grado di registrare le modifiche apportate dagli utenti in documenti di un nuovo tipo, nel journal (log) del sistema, ecc.

In 1C è necessario descrivere nel grafico i campi di un nuovo tipo di documento e scrivere un codice che implementi la logica aziendale specifica del documento (ad esempio, su quali conti scrivere gli importi di denaro che passano nel documento). Tutto il resto necessario per il lavoro a tutti gli effetti con un documento nel sistema sarà svolto dalla piattaforma:

  • Crea strutture nel DBMS per memorizzare i dati.
  • Crea moduli per modificare un documento, visualizzare un elenco di documenti di questo tipo, ecc. Se i moduli creati automaticamente non ci soddisfano, puoi crearne uno tuo espandendo e / o modificando quelli standard.
  • Il documento sarà disponibile nei report.
  • Il documento ei suoi campi diventeranno disponibili per la distribuzione dei diritti di lettura/scrittura nel sistema di sicurezza dell'applicazione.
  • I campi del documento diventeranno disponibili per la ricerca full-text in tutto il sistema (tenendo conto dei sinonimi, del supporto alla traslitterazione, della ricerca fuzzy, ecc.).
  • Tutte le modifiche ai documenti del nuovo tipo verranno registrate nel registro dell'applicazione.
  • I metodi verranno creati automaticamente per salvare e leggere il documento in/da XML e JSON.
  • Il documento sarà disponibile tramite l'interfaccia REST (tramite il protocollo OData).
  • E altro ancora

Una caratteristica dello sviluppo in 1C è che ci sono circa 20 tipi di oggetti incorporati nel sistema e tutti i nuovi oggetti creati dallo sviluppatore devono appartenere a uno di questi tipi. La maggior parte di questi tipi descrive oggetti dall'ambito delle attività contabili dell'impresa: elenchi, documenti, piani dei conti, ecc. L'altra parte dei tipi di oggetti sono tecnologici, come i servizi Web e HTTP; consentono ai programmi 1C di comunicare con il mondo esterno.


Configuratore 1C: in esso vengono create soluzioni applicate. A sinistra - un albero di tipi incorporati 1C; sotto ogni ramo - oggetti applicati di questo tipo.

Lo sviluppo delle soluzioni applicate avviene nel Configurator (Designer nella versione inglese). Recentemente è stata rilasciata una versione di prova dello strumento 1C:Enterprise Development Tools, che consente di sviluppare soluzioni 1C nel popolare ambiente Eclipse. Lo sviluppo industriale in "1C: Enterprise Development Tools" non è ancora possibile, ma è del tutto possibile capire dove si sta muovendo l'azienda in termini di tecnologia, secondo questa versione. In particolare, lo sviluppo in team è supportato utilizzando i sistemi di controllo delle versioni più diffusi (Git, SVN e altri per i quali sono disponibili plug-in per Eclipse); è anche possibile scrivere i propri plug-in per l'IDE Eclipse che espandono le capacità dell'ambiente di sviluppo per lavorare con 1C.


Strumenti di sviluppo aziendale: sviluppo di applicazioni 1C in Eclipse IDE

In realtà, il linguaggio di programmazione 1C nella sintassi ricorda soprattutto JavaScript. Il linguaggio, in senso stretto, non è orientato agli oggetti. Non ha eredità; ma, poiché tutti gli oggetti del programma 1C appartengono a uno dei tipi di oggetto incorporati, questo può essere chiamato ereditarietà semplificata: i tipi di oggetto incorporati implementano funzionalità predefinite che un programmatore dell'applicazione può ridefinire nei propri oggetti figlio. Tale ereditarietà è a livello singolo, non è più possibile ereditare da oggetti applicativi; un approccio simile all'ereditarietà è adottato nel concetto di programmazione prototipo (programmazione basata su prototipo); JavaScript è uno dei rappresentanti più popolari di questo concetto.

Questo approccio limita deliberatamente la libertà dello sviluppatore di soluzioni applicate, costringendolo a scegliere il tipo di oggetto richiesto da una tavolozza ragionevolmente limitata di tipi incorporati per implementare i suoi compiti. In cambio, lo sviluppatore ottiene ricche funzionalità implementate dalla piattaforma e uno sviluppo davvero veloce. I vantaggi di questo approccio sono evidenti: i sistemi contabili su 1C sono facili e veloci da creare. Ci sono anche degli svantaggi: se devi implementare qualcosa per cui non ci sono tipi incorporati nella piattaforma (ad esempio, lavorare con SFTP), allora devi aspettare una nuova versione della piattaforma in cui questa funzionalità sarà essere implementato o scrivere la propria implementazione in un linguaggio "normale" e chiamarlo da 1C attraverso la tecnologia dei componenti esterni.

Alcuni fatti sul linguaggio di programmazione 1C integrato:

  • La sintassi inglese (if…then) e russa (if…then) è supportata.
  • Il linguaggio è Turing completo.
  • È un linguaggio tipizzato dinamicamente. Una variabile è associata a un tipo nel momento in cui le viene assegnato un valore, non nel momento in cui la variabile viene dichiarata. Quando si dichiara una variabile, non è possibile specificarne il tipo.
    È possibile così: var e; un = 1;
    È impossibile così: var a as Int; un = 1;
  • Per leggere i dati dal DBMS, 1C ha il proprio linguaggio di query, simile a SQL. In realtà, viene tradotto in SQL durante l'esecuzione di programmi 1C.

Come funziona tutto

In che modo le soluzioni 1C vengono fornite agli utenti finali? E come funzionano per questi stessi utenti finali?

Per rispondere in modo più completo a questa domanda, dobbiamo ricordare un tratto caratteristico di 1C.
Un progetto in 1C è chiamato configurazione. Una configurazione è un programma autonomo completo, come contabilità o ERP; include tutti gli oggetti e il codice necessari per il pieno funzionamento di un'applicazione aziendale. La particolarità di 1C è che la configurazione è memorizzata nel database, nello stesso che contiene i dati dell'applicazione stessa (pubblicazioni, dati di elenchi e documenti, ecc.), ovvero il programma viene memorizzato insieme ai dati. Un database con una configurazione (e dati dell'applicazione) nella terminologia 1C è chiamato infobase (abbreviato come infobase).

La configurazione può essere caricata su un file; sotto forma di file, di solito viene inviato dallo sviluppatore agli utenti finali; sul sistema client, questo file viene importato nell'infobase. Dopodiché, la soluzione è pronta per l'uso.


Architettura della soluzione 1C

Dove è installato il software:

  • Server DBMS: uno o più DBMS supportati da 1C (MS SQL, Oracle, IBM DB2, PostgreSQL). Se sul server 1C sono installate più applicazioni 1C, le applicazioni possono utilizzare DBMS diversi; ad esempio, la contabilità è MS SQL e ERP è Oracle.
  • Server: uno o più server di un cluster di failover scalabile. Il prodotto software 1C Server (un insieme di librerie e file eseguibili) deve essere installato qui. La tolleranza ai guasti e la scalabilità del cluster, nonché il bilanciamento del carico tra i server del cluster sono forniti mediante il software 1C. Un singolo cluster può includere server che eseguono Windows e Linux e nel sistema può essere fornito un cluster di backup.
  • Client: OS Windows o Linux, deve essere installato thin client (1cv8c.exe/1cv8) o thick client 1C (1Cv8.exe per Windows, 1cv8 per Linux).
    • Il thin client è in grado di eseguire un insieme limitato di funzionalità del linguaggio 1C integrato. Funziona su un set limitato di tipi di lingua incorporati, destinati solo alla visualizzazione e alla modifica dei dati in memoria. Tutto funziona con il database, i dati oggetto, l'esecuzione della query viene eseguita sul lato server. Il thin client riceve solo dati già pronti preparati per la visualizzazione.
    • Un thick client può eseguire quasi tutte le funzionalità fornite dal linguaggio 1C integrato stesso, ricorrendo al server solo quando è necessario scrivere o leggere dati dal database. Limiti: richiede una notevole quantità di risorse hardware e può "comunicare" con un cluster di server 1C solo tramite una rete locale. Considerato obsoleto, supportato per compatibilità con le versioni precedenti.
  • Server Web: IIS o Apache. Da 1C: viene installato un set di estensioni per i server Web.
  • Client Web: uno dei quattro browser supportati: Internet Explorer, Chrome, Firefox, Safari.
  • Client mobile: iOS o Android e qualsiasi applicazione mobile 1C. Il modo in cui l'applicazione mobile 1C comunica con il server dipende dall'applicazione specifica; più comunemente utilizzati sono i servizi Web o HTTP.

Tra di loro, i componenti 1C - il server, i thin e thick client e le estensioni web - comunicano utilizzando il proprio protocollo (implementato su TCP) o tramite http.

Cosa c'è di speciale in 1C

Cosa contraddistingue la tecnologia 1C:Enterprise? Grazie all'approccio innovativo all'organizzazione dello sviluppo (ne parleremo più avanti), 1C:Enterprise rende facile fare due cose: creare soluzioni aziendali da zero e personalizzare le soluzioni esistenti per soddisfare le esigenze degli utenti finali.

Sviluppo

È facile creare soluzioni da zero, grazie agli oggetti integrati che implementano le funzionalità di base dei sistemi di contabilità. È il sistema ben congegnato di oggetti integrati (e non un linguaggio che è, in generale, un normale linguaggio di scripting) che rende 1C:Enterprise un potente strumento per la creazione di applicazioni aziendali. Lo sviluppatore non ha bisogno di scrivere un livello di accesso ai dati, un'interfaccia utente di base, ecc. - puoi concentrarti immediatamente sulla risoluzione di un problema aziendale. Per risolvere i problemi aziendali, molto è già stato implementato negli oggetti integrati (lettura - librerie di base), ad esempio supporto per directory gerarchiche, macchine contabili per l'implementazione della contabilità e della contabilità delle merci, meccanismi per calcoli periodici complessi (ad esempio buste paga ) e altro ancora.

Out of the box, lo sviluppatore riceve oggetti integrati (directory, documenti, registri, ecc.) implementati dalla piattaforma; questi sono modelli del mondo dei sistemi contabili. Nella soluzione applicata (configurazione), lo sviluppatore implementa questi modelli, riempiendoli con una logica aziendale specifica.

Una soluzione applicata in 1C:Enterprise non è letteralmente scritta in un linguaggio di programmazione. I due capisaldi dell'ideologia dello sviluppo sono lo sviluppo dai metadati (sviluppo guidato dai metadati) e la creazione di un'applicazione basata su un modello (sviluppo guidato dai modelli).

Un'applicazione aziendale si basa sui metadati, ovvero una descrizione dichiarativa dell'applicazione stessa. La soluzione applicata non è descritta in termini di tabelle relazionali, classi di linguaggio di programmazione a oggetti, ecc., come nella maggior parte dei sistemi. Una soluzione in 1C:Enterprise è descritta dai metadati sotto forma di un insieme di oggetti applicativi selezionati da un certo insieme di modelli prototipo (directory, documenti, piani dei conti, ...).

I metadati formano una gerarchia di oggetti da cui sono formati tutti i componenti del sistema applicativo e che determinano tutti gli aspetti del suo comportamento. Quando si esegue un'applicazione aziendale, la piattaforma interpreta i metadati, fornendo tutte le funzionalità necessarie.

I metadati descrivono le strutture dei dati, la composizione dei tipi, le relazioni tra gli oggetti, le caratteristiche del loro comportamento e la rappresentazione visiva, il sistema di differenziazione dei diritti di accesso, l'interfaccia utente, ecc. I metadati contengono informazioni non solo su ciò che è memorizzato nel database, ma anche sul perché questo o quali informazioni sono memorizzate, qual è il loro ruolo nel sistema e come gli array di informazioni sono interconnessi. L'utilizzo di un linguaggio di programmazione si limita principalmente alla risoluzione di quei problemi che richiedono realmente una descrizione algoritmica (calcolo delle imposte, verifica della correttezza dei dati inseriti, ecc.). Possiamo formulare brevemente il principio di base dello sviluppo in 1C:Enterprise come segue: "Programmiamo solo dove è veramente necessario e lasciamo che la piattaforma faccia tutto il lavoro di routine".

1C:Enterprise era inizialmente orientata alla costruzione di una soluzione applicata basata su un modello specifico. Il modello è inteso come l'intera ideologia della costruzione di una soluzione applicata. Questi sono modi per costruire strutture di dati, tipi di relazioni tra dati, principi per manipolarli, moduli per descrivere la logica aziendale, modi per collegare i dati con oggetti di interfaccia, separare le funzionalità per livelli di sistema e molto altro.

Tutte le applicazioni aziendali seguono il modello accettato e questo garantisce uniformità e prevedibilità del loro comportamento. Uno sviluppatore che desidera riflettere le specifiche di una particolare area tematica in una soluzione applicata ha una serie ben definita di modi per risolvere questo problema utilizzando gli strumenti incorporati nella piattaforma. Da un lato, questo approccio limita (significativamente!) la libertà dello sviluppatore, ma dall'altro lo protegge da molti errori e consente di ottenere rapidamente una soluzione praticabile che può essere ulteriormente sviluppata e supportata sia da lui stesso che , se necessario, da altri specialisti.

La presenza di un unico modello ha un effetto positivo sulla facilità di padronanza del sistema. Tutto lo sviluppo viene eseguito nell'ambito di un sistema di concetti end-to-end, in un unico spazio di tipi di dati. La descrizione nei metadati di determinati oggetti (entità) determina immediatamente sia i tipi corrispondenti del linguaggio di programmazione incorporato sia le strutture di database necessarie per la loro memorizzazione. Tutte le successive manipolazioni di questi oggetti, sia in memoria che nel database, vengono eseguite in modo uniforme, senza richiedere il superamento delle barriere tra le varie notazioni utilizzate quando si lavora con DBMS e linguaggi di programmazione universali.

Un'applicazione già pronta (configurazione) fornita in codici open source (ad esempio, contabilità o ERP), per un programmatore lato client, è quasi un DSL (Domain Specific Language, linguaggio specifico del dominio). Il programmatore può utilizzare oggetti di configurazione già pronti (rubrica controparti, piano dei conti, paghe) per modificare il comportamento del sistema in base alle esigenze del cliente.

Personalizzazione e supporto

Brevemente sulla logica aziendale della soluzione applicata, possiamo dire quanto segue: è in fase di modifica. Viene modificato dai dipendenti dei reparti IT del cliente, adattando la soluzione ai processi aziendali dell'azienda. Ed è modificato dal fornitore della soluzione, aggiungendo nuove funzionalità, supportando i cambiamenti nella legislazione e rilasciando periodicamente aggiornamenti.

La procedura per l'installazione di un aggiornamento in cui la logica di business è stata modificata "sul campo" per soddisfare le esigenze del cliente è spesso un'operazione non banale, a volte irta di errori. In generale, si tratta di una fusione dei codici sorgente di una nuova applicazione del fornitore con un'applicazione client modificata (rispetto alla versione precedente del fornitore). Da un lato, è necessario ottenere la nuova funzionalità fornita con l'aggiornamento; d'altra parte, non perdere i tuoi risultati.

Questa attività è familiare a chiunque abbia dovuto lavorare in team sulla stessa applicazione e unire (unire) le proprie modifiche al codice sorgente con le modifiche di altri membri del team. Anche se tutti gli sviluppatori fanno parte dello stesso team e aderiscono allo stesso insieme di regole per lo sviluppo e la codifica del codice, il compito di unire le fonti a volte può essere un compito difficile. Ebbene, nel caso dei sistemi ERP, è complicato dal fatto che gli sviluppatori del fornitore e del cliente lavorano in organizzazioni diverse e non sempre hanno la possibilità di comunicare in caso di difficoltà di comprensione del codice.

Tenere presente che se le modifiche apportate dal client sono eccessive, il fornitore dell'applicazione potrebbe ritenere di non fornire ulteriore supporto per la soluzione presso il client.

Quanto sopra è una delle maggiori sfide nel ciclo di vita di quasi tutti i sistemi aziendali open source. Il successo dell'applicazione sul mercato dipende in gran parte dal modo in cui il produttore del software risolve questo problema. Nel caso di 1C, l'unione di due configurazioni (provider e utente) durante l'aggiornamento non è solo una fusione dei codici sorgente di due applicazioni, è, prima di tutto, una fusione di modelli applicativi, che devono seguire determinate regole .

Per risolvere questo problema, 1C ha sviluppato un meccanismo di supporto (parte della piattaforma 1C: Enterprise) che consente al fornitore di soluzioni di determinare quali oggetti di configurazione (directory, documenti, ecc.) Il client può modificare e quali no, ad es. la loro modifica interromperà il sistema o renderà impossibile un ulteriore supporto centralizzato da parte del fornitore.

A sua volta, il cliente, utilizzando questo meccanismo, può determinare le regole per supportare gli oggetti della sua configurazione - ad esempio, può rifiutare di supportare un particolare oggetto da parte del fornitore se si assume la responsabilità di ulteriori modifiche di questo oggetto o se questo oggetto è non necessario nel suo lavoro. Oppure, al contrario, puoi vietare la modifica dell'oggetto della "tua" configurazione (anche se il fornitore lo consente) per assicurarti da modifiche accidentali.

Idealmente, sarebbe auspicabile che le modifiche dell'utente esistessero, per così dire, "a parte" dalla configurazione standard del provider e fossero incluse nel lavoro solo al momento dell'esecuzione diretta del codice. In questo caso, il processo di installazione degli aggiornamenti dal fornitore diventerà un processo automatico che non richiede l'intervento umano. 1C offre due approcci che coprono una percentuale significativa di scenari di personalizzazione.

Il primo approccio è l'uso di elaborazioni esterne e report esterni. Questi meccanismi consentono di aggiungere funzionalità aggiuntive "in cima" al sistema senza modificare il codice sorgente della configurazione. Si tratta infatti di script con un'interfaccia grafica progettati per essere eseguiti su una specifica soluzione applicativa. Questi meccanismi hanno dato origine alla loro controparte "App Store", un negozio online in cui i programmatori indipendenti pubblicano e gli utenti finali acquistano i componenti aggiuntivi necessari per vari programmi.

Il secondo approccio, apparso relativamente di recente, sono le estensioni. La strategia offerta dalle estensioni è che non è necessario modificare la configurazione predefinita. Tutte le modifiche vengono apportate nella cosiddetta estensione, che, di fatto, è anche una configurazione (ma utente, separata dalla configurazione del provider). Allo stesso tempo, l'installazione dell'aggiornamento da parte del fornitore sarà automatica: dal punto di vista del meccanismo di supporto, la configurazione standard non è cambiata. E durante il funzionamento della configurazione finale (che è una combinazione di una configurazione tipica e di un'estensione), saranno coinvolti quegli oggetti che vengono aggiunti (o modificati) nell'estensione.

Cos'altro?

Cos'altro è interessante / importante nella linea tecnologica 1C? L'elenco include i meccanismi più significativi, ciascuno dei quali può essere trattato in un articolo separato (o più):

  • Soluzione cloud 1cFresh è un "cloud out of the box", un ambiente scalabile orizzontalmente per lavorare con soluzioni applicative 1C (e aziende partner) in un modello di servizio (SaaS). Il prodotto contiene tutte le funzioni necessarie per il funzionamento SaaS: registrazione e gestione degli utenti, possibilità di pubblicare rapidamente nuove soluzioni applicative, creare copie di backup dei dati degli utenti, ecc. La stessa società 1C utilizza il prodotto 1cFresh per fornire i propri prodotti a noleggio (http://1cfresh.com) e vende anche la soluzione 1cFresh come prodotto confezionato, consentendo a partner e clienti di implementare i propri cloud per soluzioni applicative basate su 1C : Tecnologie aziendali.
  • Piattaforma mobile 1C (menzionata sopra), che consente di creare applicazioni per sistemi operativi mobili (iOS, Android) da un codice sorgente utilizzando la stessa metodologia e ambiente di sviluppo (Configuratore) delle applicazioni 1C "normali".
  • Sistema di reportistica potente e flessibile. Le segnalazioni sono un meccanismo estremamente importante in qualsiasi sistema aziendale; molti ERP utilizzano generatori di report esterni di altri fornitori perché la creazione di un buon generatore di report non è un compito facile con specifiche speciali. In 1C i report vengono sviluppati nello stesso ambiente (Configuratore) dell'applicazione stessa; Il meccanismo di segnalazione si basa sul sistema di composizione dei dati (DCS), un meccanismo per la descrizione dichiarativa delle segnalazioni. Una delle caratteristiche importanti dei report in 1C è che l'utente finale può modificare il report creato dallo sviluppatore "per se stesso", utilizzando le stesse funzionalità di progettazione del report dello sviluppatore.
  • Meccanismo di scambio dati che consente di creare sistemi informativi geograficamente distribuiti che scambiano dati offline, senza una connessione permanente. Lo scambio di dati è possibile sia tra 1C: applicazioni Enterprise che tra 1C: applicazioni Enterprise e sistemi di terze parti.
  • E molte altre cose interessanti


1C:Impresa - tecnologie e strumenti

Invece di una conclusione

Spero che i lettori che non hanno familiarità con 1C abbiano un quadro più o meno chiaro: cos'è 1C, come funziona e quali opportunità offre agli sviluppatori. Molti argomenti interessanti rimangono al di fuori dell'ambito della rassegna; su di loro la prossima volta.

Un approccio orientato alla piattaforma all'architettura dell'applicazione è stato scelto da 1C a metà degli anni '90. Questa peculiare combinazione di una potente piattaforma e un linguaggio applicativo ragionevolmente limitato si è dimostrata efficace: sono state create più di 1000 soluzioni 1C ufficialmente certificate su tecnologie 1C per varie aree di business, dall'automazione delle piccole imprese ai sistemi di gestione aziendale con migliaia di utenti simultanei. Aggiungere etichette

L'articolo è incluso nel ciclo "Primi passi nello sviluppo su 1C". Prosegue il tema trattato nel precedente articolo e copre in dettaglio le novità apparse nel configuratore della piattaforma 1C:Enterprise 8.

Dopo aver letto l'articolo, saprai:

  • Che cos'è l'aiuto contestuale e in che modo aiuta durante la scrittura del codice?
  • A cosa servono i modelli di testo e come applicarli nella pratica?
  • Perché utilizzare il raggruppamento delle righe di codice?
  • In che modo l'evidenziazione può migliorare l'usabilità dell'editor di codice?
  • Qual è la comodità della nuova ricerca nell'albero di configurazione?
  • Come visualizzare rapidamente gli oggetti del sottosistema desiderato?
  • Quali strumenti di refactoring e modalità di deprecazione ci sono e come li usi?

Applicabilità

L'articolo discute le funzionalità del configuratore utilizzando l'esempio della piattaforma 1C:Enterprise, edizioni 1C 8.3.5 - 8.3.11, quindi tutte le informazioni sono aggiornate.

Miglioramenti nel configuratore della piattaforma 1C:Enterprise 8.3

Con il rilascio della nuova versione della piattaforma 1C:Enterprise 8.3, gli sviluppatori hanno aggiunto diverse innovazioni interessanti e utili per semplificare il lavoro quotidiano di centinaia di sviluppatori in tutto il paese.

Ora, quando si scrive il codice di programma di un modulo nell'editor del configuratore, il tooltip del contesto mostra non solo i nomi delle variabili e delle procedure consentite nel contesto dato, ma anche i parametri della procedura o della funzione che si sta modificando al momento.

La nuova funzionalità è disponibile sia per le procedure incorporate che per quelle dello sviluppatore.

Una descrizione comandi con un elenco di opzioni ha il seguente aspetto:

Il parametro della procedura da inserire ora è in grassetto. Sotto la linea orizzontale c'è la descrizione del parametro corrente. Se è obbligatorio, viene evidenziato con il testo tra parentesi.

Se sono disponibili più opzioni di sintassi per una procedura inline, nell'intestazione sono disponibili delle frecce per passare da un'opzione all'altra.

Il suggerimento contestuale per i parametri di procedura e funzione viene richiamato premendo Ctrl + Maiusc + Spazio. Può anche essere richiamato automaticamente quando si digitano i caratteri “(“ e “, ”. Questo comportamento può essere abilitato nella finestra di dialogo delle impostazioni del configuratore (voce di menu Strumenti - Opzioni, scheda Moduli - Suggerimento di contesto):

Un'altra caratteristica utile del nuovo suggerimento contestuale è la possibilità di visualizzare i parametri delle procedure e delle funzioni definite dall'utente.

Clicca sull'immagine per ingrandirla.

Ricordiamo che esiste un documento "Sistema di standard e metodi per lo sviluppo di configurazioni per la piattaforma 1C: Enterprise 8", che descrive le raccomandazioni dell'azienda 1C per il codice del programma sviluppato.

Pertanto, la sezione "Parametri" descrive i parametri di una procedura (funzione). Se non sono presenti, la sezione viene saltata.

È preceduto dalla riga "Parametri:", quindi le descrizioni di tutti i parametri vengono inserite in una nuova riga. La descrizione del parametro inizia su una nuova riga, seguita dal nome del parametro, seguito da un trattino e da un elenco di tipi, seguito da un trattino e da una descrizione testuale del parametro.

Per esempio:

// Prepara un modulo di risposta per un'e-mail esistente.
// Opzioni:
// IncomingMail - DirectoryLink.IncomingMails - la lettera a cui rispondere.
// OutgoingMail - DirectoryLink.OutgoingMail - dati del modulo per il tipo DirectoryLink.OutgoingMail,
// situato nella forma dell'editor di lettere in uscita.
// Text - FormattedDocument - il campo dell'editor di testo della lettera, situato nel modulo
// editor di posta in uscita.
Procedura Compilare la risposta alla lettera (lettera in arrivo, lettera in uscita, testo) Export

E il configuratore analizza i commenti scritti secondo tali regole e li utilizza per visualizzare un suggerimento contestuale!

Clicca sull'immagine per ingrandirla.

Per evitare di scrivere manualmente un commento secondo il formato dato, la piattaforma fornisce modelli di testo, che possono essere visualizzati premendo la combinazione di tasti Ctrl + Maiusc + T.

Il modello con il nome "Procedura (con titolo)" costituisce solo il commento corretto.

Affinché questo modello funzioni, è sufficiente digitare i caratteri "Proc" nell'editor, premere Ctrl + Q e selezionare il modello desiderato dall'elenco offerto dal sistema.

Raggruppamento di righe di codice

I moduli delle soluzioni standard sulla piattaforma 1C:Enterprise 8 sono piuttosto grandi e contengono un numero piuttosto elevato di righe di codice.

Per migliorare la leggibilità e l'analisi del codice del programma, sono state implementate le funzioni di raggruppamento delle istruzioni condizionali e cicliche, nonché le procedure.

La piattaforma 8.3 offre un'altra possibilità: raggruppare linee di modulo arbitrarie in un gruppo in modo logico, quindi comprimerlo in modo che occupi meno spazio sullo schermo per migliorare la leggibilità del testo.

Per selezionare un'area di testo sono state introdotte due nuove istruzioni di preprocessore #Area e #EndArea.

Durante l'esecuzione del codice del programma, queste istruzioni vengono ignorate. Sono necessari solo per indicare le righe di codice che vengono piegate.

Clicca sull'immagine per ingrandirla.

Devi assicurarti che le aree raggruppate non si intersechino tra loro, perché in questo caso non collasseranno sullo schermo.

Al configuratore è stato aggiunto un modello di testo per abbreviare #Area, che aggiungerà automaticamente al testo del modulo le istruzioni per la creazione di una nuova area.

Nella finestra di dialogo delle impostazioni del configuratore (voce di menu Strumenti - Opzioni, scheda Moduli - Raggruppamento) è possibile configurare il raggruppamento e la piegatura delle aree di testo.

Evidenziazione del colore del design

Ora, nell'editor di testo del linguaggio 1C:Enterprise, i costrutti di sintassi su cui è attualmente posizionato il cursore sono evidenziati a colori. Ad esempio, l'inizio e la fine di una procedura (funzione), un'istruzione condizionale e un'istruzione di ciclo:

Clicca sull'immagine per ingrandirla.

Un'altra innovazione della piattaforma è l'evidenziazione delle parentesi di apertura e chiusura. Questo è molto utile quando si scrivono espressioni lunghe quando il controllo della sintassi segnala un errore e lo sviluppatore deve trovare la parentesi extra o mancante.

Clicca sull'immagine per ingrandirla.

Nella finestra di dialogo dei parametri del configuratore (voce di menu Strumenti - Opzioni, scheda Moduli - Modifica) è possibile impostare l'evidenziazione di molte altre costruzioni utili.

Se si seleziona il parametro “Current ID” e si assegna ad esso un colore diverso dal colore dello sfondo di editing (bianco per impostazione predefinita), quando si posiziona il cursore su un qualsiasi identificatore del codice del programma, questo verrà evidenziato in il colore selezionato e, inoltre, verranno evidenziati tutti gli stessi identificatori, presenti nel modulo, e costanti stringa con lo stesso identificatore racchiuse tra virgolette:

Clicca sull'immagine per ingrandirla.

Interessante anche il parametro "ID selezionato". Se è impostato un colore che non corrisponde al colore di sfondo della modifica, facendo doppio clic su un identificatore lo si evidenzierà insieme a tutti gli identificatori corrispondenti nel testo del modulo.

Clicca sull'immagine per ingrandirla.

Quando si esegue una ricerca nel testo del modulo utilizzando la barra di ricerca o dopo aver premuto la combinazione di tasti Ctrl + F, la parola trovata viene evidenziata e tutte le stesse parole trovate vengono evidenziate.

Clicca sull'immagine per ingrandirla.

Unione delle celle del documento del foglio di calcolo

In precedenza, le celle dei documenti del foglio di calcolo potevano essere unite solo utilizzando una voce di menu o il pulsante della barra dei comandi corrispondente.

Ora è apparsa la scorciatoia da tastiera Ctrl + M, quando viene premuta, le celle del documento del foglio di calcolo vengono unite. L'operazione "Unisci" è disponibile anche nel menu contestuale di un foglio di calcolo.

Ci auguriamo che nelle prossime versioni della piattaforma 1C:Enterprise 8, gli sviluppatori prestino attenzione a migliorare la comodità di lavorare con il configuratore.

Nuove opportunità per gli sviluppatori in 1C:Enterprise 8.3.5

Cerca nel configuratore

Devi usare costantemente la ricerca durante la configurazione. Finché la configurazione contiene un numero relativamente piccolo di oggetti di metadati, è possibile eseguire ricerche visivamente, con gli occhi, scorrendo l'albero di configurazione.

Tuttavia, le configurazioni tipiche sono piuttosto voluminose e con questo approccio la ricerca richiederà molto tempo.

Prima della piattaforma 8.3.5, potevi cercare nell'albero dei metadati in questo modo:

  • digitare da tastiera il nome dell'oggetto, mentre il sistema cercherà abbinando il nome alla prima lettera del nome, ma solo nelle righe espanse dell'albero di configurazione;
  • utilizzando la scorciatoia da tastiera Ctrl + F per aprire la finestra di ricerca:

Gli oggetti trovati verranno visualizzati nella finestra Risultati della ricerca, dalla quale è possibile fare doppio clic per accedere all'oggetto dei metadati richiesto nell'albero di configurazione.

La piattaforma 8.3.5 ha un nuovo campo di ricerca sopra l'albero di configurazione:

La ricerca viene effettuata dall'occorrenza di una stringa, analizzata dalle proprietà degli oggetti di configurazione Nome, Sinonimo e Commento.

Inoltre, l'albero di configurazione viene filtrato “al volo”: in esso rimangono solo gli oggetti che soddisfano il filtro inserito.

Consideriamo cosa significano i colori per gli oggetti che rimangono nell'albero dopo aver applicato il filtro.

Se la stringa di ricerca è stata trovata, il nome di tale oggetto viene evidenziato in nero nell'albero di configurazione.

Se, inoltre, la stringa di ricerca è presente nel nome dell'oggetto (non in un sinonimo, non in un commento), allora tali occorrenze sono evidenziate in rosso.

Gli oggetti sono evidenziati in grigio che non corrispondono di per sé al filtro immesso, ma hanno oggetti subordinati (figli) nella loro composizione che soddisfano il filtro specificato.

Nella foto sopra oggetti di scena ID utenteIB directory Utenti viene visualizzato nell'albero perché il suo sinonimo contiene la sottostringa “post”:

È consentito inserire diverse sottostringhe per la ricerca, separate da spazi:

Una stringa di ricerca simile è apparsa nella finestra contenente l'insieme delle proprietà dell'oggetto selezionato (palette delle proprietà):

Le proprietà trovate verranno visualizzate come un elenco generale, senza categorizzazione.

La ricerca verrà effettuata in base ai nomi delle proprietà o alle viste delle proprietà (la differenza è mostrata nelle due schermate sopra).

Puoi alternare tra le modalità nome/visualizzazione utilizzando il comando "Mostra nomi proprietà" del menu contestuale:

La stessa stringa di ricerca è stata aggiunta alla finestra di selezione del tipo di dati:

E nella finestra per la selezione di un oggetto metadati (ad esempio, selezionando un registro informazioni che verrà utilizzato come grafico per il registro di calcolo):

Per visualizzare rapidamente gli oggetti inclusi in uno specifico sottosistema, nel menu contestuale è apparsa una nuova voce “Oggetti del sottosistema”:

Ricorda come questo potrebbe essere ottenuto nelle versioni precedenti della piattaforma.

Era necessario aprire la finestra per la selezione per sottosistemi, selezionare la casella per il sottosistema richiesto al suo interno, deselezionare tutti gli altri sottosistemi:

Ora puoi ottenere lo stesso risultato più velocemente. Inoltre, la selezione è più spesso utilizzata e più richiesta per un solo sottosistema.

E, quindi, questa piccola innovazione conveniente farà risparmiare tempo allo sviluppatore.

Visualizzazione rapida degli oggetti catturati in deposito

Se la configurazione è connessa al repository, il pulsante Oggetti acquisiti è disponibile nel pannello di comando sopra l'albero di configurazione stesso:

Ora il filtraggio viene eseguito direttamente nell'albero di configurazione, non è necessario aprire una finestra separata per lavorare con il repository, è necessario impostare i filtri per gli oggetti acquisiti al suo interno.

Strumenti di refactoring

Quando un gruppo di più sviluppatori sta lavorando su una configurazione, è necessario monitorare la comprensibilità del codice, seguendo standard comuni.

Non è sempre possibile controllarlo costantemente, pertanto periodicamente si lavora per migliorare la leggibilità del codice, per rivedere frammenti già implementati.

Tali azioni sono chiamate refactoring del codice. Questo è il processo di modifica della struttura interna di un programma, senza influenzarne il comportamento esterno, e con l'obiettivo di rendere più facile la comprensione del suo funzionamento.

Inoltre, gli sviluppatori devono lavorare nelle loro configurazioni per abbandonare la modalità: l'eliminazione delle chiamate modali.

Pertanto, nel configuratore della piattaforma 8.3.5, sono comparsi meccanismi e strumenti di refactoring del codice per lavorare con le chiamate modali.

Sono disponibili nel menu contestuale dell'editor di testo del configuratore in un menu Refactoring separato.

Clicca sull'immagine per ingrandirla.

Diamo un'occhiata più da vicino agli strumenti di refactoring implementati.

1. Seleziona un frammento

Questo comando converte la sezione di codice selezionata in una procedura o funzione separata.

Se la procedura all'interno della quale si trova la selezione contiene una direttiva di compilazione (&OnClient, &OnServer, ecc.), allora la procedura o la funzione che si sta creando avrà la stessa direttiva di compilazione.

Se la sezione di codice evidenziata può trovarsi sul lato destro dell'istruzione di assegnazione, verrà creata una funzione. Considera un esempio. Facciamo uno snippet di codice:

&AlCliente
Procedura MerceArticolo in cambio(Elemento)
Stra = ;
Prezzo pagina = Ottieni prezzo articolo(Object.Date , Str.Product );

FineProcedura

Se si applica il comando "Seleziona frammento" alla sezione di codice selezionata, il sistema genererà il seguente codice di programma (crea una nuova funzione):

&AlCliente
Procedura MerceArticolo in cambio(Elemento)
Stra = Articoli.Prodotti.Dati correnti;
Prezzo pagina = Ottieni prezzo articolo(Object.Date , Str.Product );
Str.Sum = Calcola somma(Pagina);
FineProcedura
&AlCliente
Funzione Calcola somma(Valore Str )
Pagina di reso Quantità * Prezzo pagina ;
Funzioni finali

Inoltre, la funzione verrà creata se una variabile viene assegnata nella sezione di codice selezionata, che viene utilizzata di seguito nel codice. Per esempio:

&AlCliente
Procedura MercePrezzoQuandoCambiato(Elemento)
Stra = Articoli.Prodotti.Dati correnti;
Str.Amount = Str.Quantity * Str.Price ;
FineProcedura

L'area selezionata verrà trasformata come segue:

&AlCliente
Procedura MercePrezzoQuandoCambiato(Elemento)
Stra = CurrentLineProdotti();
Str.Amount = Str.Quantity * Str.Price ;
FineProcedura
&AlCliente
Funzione CurrentLineProdotti()
Variabile Str ;
Stra = Articoli.Prodotti.Dati correnti
Pagina di ritorno ;
Funzioni finali

2. Rinomina

Questo comando consente di modificare il nome di una variabile o di una procedura (funzione) in tutti i luoghi in cui vengono effettivamente utilizzate.

Se tutte le occorrenze di una variabile o di un metodo sono definite in modo univoco, il sistema richiederà un nuovo nome e lo sostituirà ovunque ricorra quell'identificatore.

Se non è possibile identificare in modo univoco tutti gli usi di una variabile o di un metodo, il sistema visualizza la domanda e visualizza le occorrenze:

Si consideri una situazione in cui il sistema non può sostituire automaticamente il nome della procedura.

Lascia che ci sia una procedura nel modulo documento:

Procedura Ricalcola () Esporta
Per ciascuno Prodotti TekString Dal Ciclo Merci
TekRowProducts.Amount= TekStringProducts.Quantity* TekStringProducts.Prezzo;
Fine Ciclo ;
FineProcedura

E nel modulo modulo di questo documento - il seguente gestore:

&Sul server
Procedura RicalcolaSuServer()
Documento = PropsFormVValue("Un oggetto" );
Documento.Ricalcola();
ValueVPropsForm(Documento, “Oggetto”);
//ulteriore elaborazione...

FineProcedura

Un'icona con un punto esclamativo rosso nella finestra dei risultati della ricerca indica che è possibile identificare in modo univoco e preciso l'utilizzo nella riga del codice della procedura Ricalcola() il sistema è fallito.

Questo perché il sistema non è in grado di determinare automaticamente il tipo di variabile. Documento dopo aver eseguito la funzione FormAttributeToValue().

Anche in questo caso il meccanismo del tooltip del contesto non offre possibili opzioni quando si preme il punto dopo la variabile Documento o premendo la combinazione di tasti Ctrl+Spazio.

Clicca sull'immagine per ingrandirla.

La ridenominazione di una procedura in un modulo del modulo utilizzando un comando di refactoring modifica anche il riferimento al gestore nelle proprietà e nei comandi dell'elemento del modulo.

3. Creare una descrizione della funzione

Il comando crea un commento prima della procedura o della funzione, che sarà correttamente percepito dal meccanismo di context help.

// Procedura - Compila una lettera secondo il modello
// Opzioni:
// Posta in uscita - -
// Testo - -
Procedura Riempi il modello LetterBy(Posta in uscita, Testo ) Esporta
//…
FineProcedura

Il sistema crea un modello di commento in cui è necessario inserire i tipi di parametro e le spiegazioni.

Quindi sarà possibile utilizzare il suggerimento esteso durante la scrittura del codice.

4. Creare un'elaborazione degli avvisi

Questo comando diventa disponibile nel menu contestuale quando il cursore è posizionato su un nome di metodo seguito da una parentesi aperta.

Inoltre, questi metodi sono MostraDomanda(),Mostra avviso(), MostraNumeriInput() e altri analoghi bloccanti dei metodi modali.

Considera un esempio. Iniziamo a scrivere un gestore di comandi client, impostiamo il cursore sul metodo incontrato MostraDomanda(), chiama il comando "Crea gestore di notifica":

&AlCliente
Procedura CompilaMateriali(Squadra )
Mostra domanda (
FineProcedura
Di conseguenza, il sistema genererà il seguente codice di programma:
&AlCliente
Procedura CompilaMateriali(Squadra )
Mostra domanda (nuovo DescrizioneAvvisi(“RiempimentoMaterialiFinitura”, ThisObject ));
FineProcedura
&AlCliente
Procedura CompilaMaterialiFinitura(RisultatoDomanda, Opzioni aggiuntive) Esportare
FineProcedura

5. Convertire la chiamata modale

Questo comando converte il frammento di codice contenente il metodo modale nella sua controparte asincrona. Diamo un'occhiata ad alcuni esempi.

Trasformiamo la chiamata al metodo Warning():

&AlCliente
Procedura NewHandler()
LA = 1;
Attenzione("Testo" );
LA = 2;
FineProcedura // Nuovo gestore()

Dopo aver applicato il comando specificato, il codice del programma assumerà la seguente forma:

&AlCliente
Procedura NewHandler()
LA = 1;
Mostra avviso(Nuovo DescrizioneAvvisi("NewHandlerCompletion", QuestoOggetto ),
"Testo" );
FineProcedura
&AlCliente
Procedura NewHandlerCompletion(Opzioni aggiuntive) Esportare
LA = 2;
FineProcedura

Complichiamo l'esempio. Prendi in considerazione l'utilizzo di una funzione modale e di un operatore condizionale:

&AlCliente
Procedura NewHandler()
risposta = domanda(,
Modalità dialogoDomanda.SìNo);
Se Risposta = DialogReturnCode.Sì Poi
//algoritmo di riempimento
Finisci se ;
FineProcedura

Dopo aver trasformato la chiamata modale, otteniamo:

&AlCliente
Procedura NewHandler()
Risposta = Non definito;
Mostra domanda (nuovo DescrizioneAvvisi("NewHandlerCompletion", QuestoOggetto ),
“La sezione tabulare verrà cancellata. Continua?", Modalità dialogoDomanda.SìNo);
FineProcedura
&AlCliente
Procedura NewHandlerCompletion(RisultatoDomanda, Opzioni aggiuntive) Esportare
Risposta = RisultatoDomanda;
Se Risposta = DialogReturnCode.Sì Poi
//algoritmo di riempimento
Finisci se ;
FineProcedura

Va sottolineata nel frammento risultante l'inizializzazione della variabile Response.

6. Convertire in una procedura asincrona

Negli esempi sopra discussi, i metodi che hanno le loro controparti asincrone sono stati sottoposti a trasformazione. Per esempio, Domanda() E MostraDomanda(), Avvertimento() E Mostra avviso().

Tuttavia, se una chiamata modale si trova all'interno di una procedura, che a sua volta si trova all'interno di un'altra procedura, l'intera chiamata di procedura con un metodo modale all'interno sarà modale.

Ciò significa che deve essere sostituito con un "analogo asincrono", solo non quello che esiste nel linguaggio integrato, ma con il nostro metodo sviluppato.

Per questo, è previsto un altro comando del sottomenu "Refactoring": "Converti in una procedura asincrona". Spieghiamo utilizzando l'esempio di una procedura che chiama un'altra procedura con una funzione modale all'interno:

&AlCliente
Procedura NewHandler()
LA = 1;
Procedura nidificata();
LA = 2;
EndProcedure &AtClient
Procedura Procedura nidificata()
Attenzione("Testo" );
FineProcedura

Imposta il cursore sulla dichiarazione della procedura Procedura nidificata(), convertiamo in una procedura asincrona. Il sistema ci compila il seguente codice:&AtClient
Procedura NewHandlerCompletion(Risultato, Opzioni aggiuntive) Esportare
Avviso = ;
LA = 2;
ExecuteProcessingAlerts(Mettere in guardia );
EndProcedure &AtClient
Procedura Procedura nidificata(Valore di avviso)
Attenzione("Testo" );
ExecuteProcessingAlerts(Mettere in guardia );
FineProcedura

Prestare attenzione al metodo aggiunto dal sistema ExecuteNotificationProcessing(), utilizzato nell'implementazione di procedure che possono aprire finestre bloccanti internamente, ma devono restituire il risultato alle procedure chiamanti.

Tenere presente che l'attività immediata della conversione in una procedura asincrona consiste nel convertire la sequenza di chiamate alla procedura selezionata in forma asincrona, ma le chiamate che si trovano nella procedura stessa non vengono modificate.

Ecco perché il metodo Avvertimento() non è stato sostituito. Questa operazione deve essere eseguita dopo la conversione in una procedura asincrona chiamando separatamente il comando "Converti chiamata modale".

Se nello snippet di codice originale sulla riga contenente Avvertimento(), eseguire il comando "Trasforma chiamata modale", quindi il sistema chiederà:

Il risultato sarà il seguente:

&AlCliente
Procedura NewHandler(Valore di avviso)
LA = 1;
Procedura nidificata(Nuovo DescrizioneAvvisi("NewHandlerCompletion",
ThisObject, New Structure("Notification", Notification)));
EndProcedure &AtClient
Procedura NewHandlerCompletion(Risultato, Opzioni aggiuntive) Esportare
Avviso = Opzioni aggiuntive. Avviso;
LA = 2;
ExecuteProcessingAlerts(Mettere in guardia );
EndProcedure &AtClient
Procedura Procedura nidificata(Valore di avviso)
Mostra avviso(Nuovo DescrizioneAvvisi("Completamento della procedura nidificata",
ThisObject , Nuova struttura (“Alert” , Alert )), “Text” );
FineProcedura
&AlCliente
Procedura Procedura nidificata completamento ( Opzioni aggiuntive) Esportare
Avviso = Opzioni aggiuntive. Avviso;
ExecuteProcessingAlerts(Mettere in guardia );
FineProcedura

7. Allocare a una procedura asincrona

Questo comando converte la parte di codice selezionata in una procedura o funzione, mentre converte il metodo selezionato in una forma asincrona.

A differenza del paragrafo precedente, questo comando è “composito”: prima, la sezione di codice selezionata viene trasferita in una nuova procedura, il cui nome viene inserito dall'utente nella finestra di dialogo.

Quindi esegue le stesse azioni come se l'utente avesse fatto clic con il pulsante destro del mouse sul titolo della procedura appena creata e quindi fatto clic su Converti in procedura asincrona.

8. Trova le chiamate del modulo modale

I comandi sopra descritti funzionano con un singolo metodo o una sezione di codice selezionata.

Sono state implementate procedure che elaborano il modulo nel suo insieme, ad esempio ricercando le chiamate modali all'interno dell'intero modulo.

Le righe di codice trovate verranno visualizzate nella finestra dei risultati della ricerca:

Clicca sull'immagine per ingrandirla.

9. Convertire le chiamate del modulo modale

Questo comando esegue trasformazioni nel modulo aperto, ma solo quelle chiamate che non richiedono la partecipazione dello sviluppatore.

Anche nel menu principale è presente il comando (Configurazione - Refactoring - Analizza le chiamate modali di configurazione).

Cerca anche le chiamate modali, solo all'interno dell'intera configurazione, controlla se le chiamate modali possono essere convertite automaticamente.

Clicca sull'immagine per ingrandirla.

Conclusione

In conclusione, in ordine cronologico, notiamo brevemente quali altre utili funzionalità aggiuntive ha acquisito il configuratore:

  • Aggiunti elenchi di segnalibri nei testi dei moduli che possono essere salvati tra le sessioni di lavoro (8.3.6+)
  • In caso di aggiornamento dinamico, non è necessario riavviare il configuratore quando si lavora nella versione client-server dell'infobase (8.3.7+)
  • Implementata la capacità di sviluppare configurazioni per OS X 10.8 e versioni successive (8.3.7+). Ora sia il configuratore che l'applicazione client (thick e thin client) sono disponibili in questo sistema operativo
  • Operazioni notevolmente ampliate che possono essere eseguite in modalità batch (8.3.8+). Ciò semplifica notevolmente il processo di aggiornamento automatico della configurazione.
  • È stata implementata l'utilità della console di amministrazione, con l'aiuto della quale è stato possibile risolvere alcuni dei problemi che si presentano con l'infobase senza avviare il configuratore (8.3.8+)
  • Aggiunta funzionalità per verificare la presenza di problemi di connessione dell'estensione alla configurazione. In precedenza, non esisteva tale funzionalità e la diagnostica veniva visualizzata nella finestra dei messaggi quando l'estensione era connessa (8.3.9+)
  • Supporto implementato per configuratore a 64 bit. Questa funzione ha eliminato i problemi di carenza di memoria per le operazioni di confronto e unione durante gli aggiornamenti della configurazione e altre operazioni ad alta intensità di risorse (8.3.9+)
  • Accelerazione significativa della prima apertura di un modulo gestito nel configuratore (8.3.9+)
  • Ora puoi caricare parzialmente la configurazione modificata in file XML. Ora puoi scaricare solo quegli oggetti che sono cambiati dall'ultimo scaricamento. Ciò ha notevolmente accelerato il processo di esportazione in file XML, nel caso in cui vengano apportate modifiche a configurazioni di grandi dimensioni (8.3.10+)
  • Migliorata la capacità di combinare i moduli tenendo conto della posizione dei metodi nelle aree specificate dalle istruzioni del preprocessore (8.3.10+)
  • Maggiore velocità delle operazioni utilizzate di frequente durante lo sviluppo (8.3.11).

Inoltre, gli sviluppatori della piattaforma di rilascio in rilascio migliorano le prestazioni e l'ergonomia del configuratore, quindi ti consigliamo, se possibile, di sviluppare sulla piattaforma delle versioni correnti.

Quindi, andiamo avanti: nel prossimo articolo torneremo alla programmazione e analizzeremo il concetto di contesto del codice del programma.


Questo articolo è un annuncio di nuove funzionalità.
Non è consigliabile utilizzare il contenuto di questo articolo per apprendere nuove funzionalità.
Una descrizione completa della nuova funzionalità sarà fornita nella documentazione per la rispettiva versione.
L'elenco completo delle modifiche apportate alla nuova versione è riportato nel file v8Update.htm.

Implementato nella versione8.3.12.64 piattaforma mobile.

Abbiamo implementato una nuova tecnologia: un client mobile. Ti consente di creare applicazioni per dispositivi mobili che combinano un'interfaccia user-friendly di una piattaforma mobile e il lavoro online con un'infobase, simile a un thin client.

Scenari di lavoro in mobilità

Fino a poco tempo fa, la piattaforma 1C:Enterprise offriva l'unica tecnologia con cui era possibile lavorare con le sue applicazioni utilizzando dispositivi mobili. Questa è una piattaforma mobile.

Questa tecnologia consente di creare applicazioni mobili offline specializzate con un'interfaccia mobile comoda e funzionale. Le applicazioni mobili sono sviluppate per risolvere specifiche attività mobili, ottimizzate per loro il più possibile in termini di architettura e interfaccia. Tali applicazioni implementano esattamente scenari di lavoro mobile, è conveniente lavorare con loro sia su tablet che su smartphone.

Per la loro architettura, tali applicazioni sono molto simili alla versione file del sistema 1C:Enterprise. Il dispositivo mobile ha il proprio database, "all'interno" dell'applicazione mobile c'è sia un client che fornisce l'interazione con l'utente, sia un server che fornisce l'interazione con il database.

Tali applicazioni mobili possono interagire con l'applicazione "principale" installata in ufficio. Ma non si tratta di un'interazione online, bensì di uno scambio periodico di dati con il back office. Il lavoro principale nell'applicazione mobile viene svolto offline. E quando viene visualizzata una connessione Internet, i dati vengono sincronizzati.

Pertanto, la piattaforma mobile è adatta per lo sviluppo di postazioni di lavoro autonome per i dipendenti che si trovano al di fuori dell'azienda e non dispongono di una connessione Internet affidabile con l'ufficio. Tuttavia, queste workstation tendono ad avere funzionalità limitate, inferiori a quelle dell'applicazione "principale". Inoltre, non forniscono interazione online con l'infobase.

Si scopre che una gamma significativa di compiti non è coperta, che presenta le seguenti caratteristiche:

  • L'interazione con l'infobase deve avvenire online;
  • Su un dispositivo mobile dovrebbero essere disponibili tutte le funzionalità della soluzione applicativa "principale", anche di grandi dimensioni come, ad esempio, "1C: ERP Enterprise Management";
  • L'interfaccia dovrebbe fornire un lavoro confortevole su qualsiasi dispositivo mobile con qualsiasi dimensione e posizione dello schermo.

Cliente mobile

Per risolvere questa classe di problemi, abbiamo sviluppato un client mobile. Un client mobile è un thin client per dispositivi mobili dotato di un'interfaccia simile a una piattaforma mobile. Il kit di distribuzione del client mobile contiene tutti i file eseguibili necessari da cui uno sviluppatore può creare un'applicazione per un dispositivo mobile nello stesso modo in cui le applicazioni mobili vengono create da una piattaforma mobile.

Tale applicazione, da un lato, può interagire direttamente con un cluster di server 1C:Enterprise allo stesso modo di un thin client. Il client mobile prevede invece la trasformazione automatica delle forme dichiarativamente descritte nella configurazione in un'interfaccia simile a quella della piattaforma mobile.


I moduli sviluppati per la versione desktop di 1C:Enterprise sono disposti automaticamente in modo tale da garantire la comodità di lavorare con essi su piccoli schermi di telefoni cellulari a un livello accettabile.


Naturalmente, affinché questa trasformazione venga eseguita ancora meglio, è necessario specificare alcune nuove proprietà degli elementi del modulo appositamente per il client mobile, eliminare alcune soluzioni di interfaccia speciali e non standard. In altre parole, è richiesta un'elaborazione della soluzione applicata specificatamente per un client mobile. Ma questa riprogettazione è molto più semplice rispetto alla creazione di un'app mobile dedicata con funzionalità complete.

Potenziali Utenti

A nostro avviso, questa tecnologia sarà richiesta in quelle implementazioni che richiedono l'accesso online al sistema da dispositivi mobili. In modo che i dati inseriti sul dispositivo mobile arrivino direttamente nel database "comune", scavalcando i passaggi intermedi di sincronizzazione.

Inoltre, il client mobile sarà richiesto nelle piccole aziende che non hanno né il budget né il tempo per sviluppare applicazioni mobili specializzate. In effetti, secondo le nostre stime, la fase più difficile nello sviluppo di applicazioni mobili è la creazione di un sistema di scambio di dati.


Inoltre, il client mobile sarà utile per gli utenti di servizi basati sulla tecnologia 1Сfresh. Questi sono 1Cfresh.com e i servizi di contabilità supportati da 1C, nonché qualsiasi altro servizio distribuito utilizzando questa tecnologia.

Funzionalità

Se confrontiamo la funzionalità di un client mobile con ciò che "può fare" un thin client, allora non ci sono solo limitazioni, ma anche vantaggi.

Un vantaggio importante del client mobile è che contiene tutte le funzionalità della piattaforma mobile, determinate dai dispositivi stessi. Cioè, consente, ad esempio, di scattare foto, comporre il numero di un abbonato, ricevere messaggi PUSH e molto altro.

Un altro vantaggio del client mobile è che funziona non solo con la versione del server per cui è stato creato. Funzionerà con quasi tutte le versioni del server fino a quando non ci saranno cambiamenti significativi nel protocollo di scambio o nell'architettura della piattaforma. Lo abbiamo fatto perché la pubblicazione di applicazioni mobili è un processo piuttosto laborioso e lungo, quasi impossibile da eseguire contemporaneamente al trasferimento di un cluster di server a una nuova versione della piattaforma.

Se parliamo di limitazioni, la più ovvia è che il client mobile interagisce con il cluster di server solo tramite il protocollo HTTP (HTTPS).

Un altro limite, invece, come per la piattaforma mobile, è l'inaccessibilità di alcuni oggetti del linguaggio integrato e di alcuni elementi dell'interfaccia. Ma cercheremo di ridurre al minimo queste differenze man mano che il client mobile si sviluppa.

Automatizzare la costruzione dell'interfaccia del modulo

Durante la creazione del client mobile, abbiamo prestato molta attenzione a garantire che l'adattamento della configurazione per il client mobile richieda uno sforzo minimo. Abbiamo sviluppato diverse tecnologie e approcci per garantire che i grandi moduli progettati per la versione desktop si adattino automaticamente ai piccoli schermi dei dispositivi mobili.

Ad esempio, abbiamo scoperto che le forme grandi tendono ad avere pochi elementi importanti. Cioè, tali elementi, il cui lavoro è in corso. E allo stesso tempo, ci sono molti elementi meno importanti in essi, lavoro con cui si lavora di volta in volta.

Ad esempio, elementi importanti sono una tabella a elenco dinamico sotto forma di elenco, un foglio di calcolo sotto forma di report. Colonne importanti sono, ad esempio, le colonne "Nome" e "Data".

Di conseguenza, al fine di fornire un livello sufficiente di praticità per lavorare con il modulo, il client mobile assegna più spazio agli elementi importanti sul modulo e meno spazio agli elementi meno importanti, rimuovendoli, ad esempio, in un gruppo comprimibile.

In secondo luogo, il client mobile espande verticalmente i gruppi orizzontali se non si adattano alla larghezza dello schermo. Sui dispositivi mobili non è consuetudine e scomodo scorrere il modulo in orizzontale, quindi questa soluzione è abbastanza comoda e giustificata.

Adattamento delle configurazioni al client mobile

Nonostante tutta l'automazione, sarà comunque necessario uno sforzo da parte dello sviluppatore della configurazione per adattare la soluzione applicativa al client mobile.

Senza entrare nei dettagli, possiamo dire che tutti questi miglioramenti si inseriscono in due direzioni principali.

Il primo è sbarazzarsi di soluzioni di interfaccia speciali e specifiche, affidandosi maggiormente al layout automatico dei moduli eseguito dalla piattaforma in base alle informazioni sul tipo di dati. Tali soluzioni specifiche possono essere dimensioni di campo fisse, raggruppamenti orizzontali di elementi rigidamente impostati e simili.

Un'altra direzione è richiedere al client mobile ulteriori informazioni sugli elementi del modulo. Abbiamo insegnato al client mobile a riconoscere facilmente elementi in forme standard o piccole e determinarne l'importanza. Ma se il modulo è non standard o di grandi dimensioni, sarà utile indicare manualmente quali dei suoi elementi sono più e meno importanti. Per fare ciò, puoi utilizzare la nuova proprietà dell'elemento - ImportanceOnDisplay: high, normal, low, ecc.

Inoltre, sarà probabilmente necessario analizzare quei punti nella soluzione applicativa in cui gli algoritmi operativi per il thin client e per il web client differiscono. Questo deve essere fatto per specificare quale degli algoritmi verrà utilizzato quando si lavora nel client mobile. Per fare ciò, abbiamo aggiunto una nuova direttiva di compilazione MobileClient.

Distribuzione, creazione e pubblicazione

Un client mobile, infatti, è una sorta di "shell" che può lanciare l'una o l'altra soluzione applicativa. Allo stesso tempo, la funzionalità delle soluzioni applicative lanciate può differire notevolmente l'una dall'altra. Allo stesso tempo, l'AppStore richiede che un'applicazione pubblicata nello store non modifichi in modo significativo la sua funzionalità dopo la pubblicazione.

Pertanto, non pubblichiamo il client mobile come app universale autonoma. Il client mobile viene fornito insieme alla piattaforma mobile come un insieme di file eseguibili. Sulla base di questi file, lo sviluppatore deve creare un'applicazione che verrà eseguita su un dispositivo mobile. Le procedure per la creazione e la pubblicazione delle applicazioni, sia per la piattaforma mobile che per il client mobile, sono simili. Viene utilizzato lo stesso strumento: l'assemblatore di applicazioni mobili.

Affinché un client per dispositivi mobili pubblicato nell'app store disponga di funzionalità fisse, è necessario specificare le configurazioni specifiche con cui funzionerà l'app al momento della creazione. Durante il funzionamento, il client mobile verifica che venga utilizzata solo una delle configurazioni specificate e senza modifiche significative. Questa è una protezione speciale in modo che un client mobile pubblicato per determinate configurazioni non possa funzionare con altre configurazioni. Come dimostra la pratica, è conveniente per gli utenti che un'applicazione mobile corrisponda a una qualsiasi configurazione o configurazioni simili.

Condividere