Casa / Tutorial Windows / Cos'è il linguaggio di programmazione 1c. Diagramma della sintassi della descrizione dell'elemento del linguaggio

Cos'è il linguaggio di programmazione 1c. Diagramma della sintassi della descrizione dell'elemento del linguaggio

Linguaggio di programmazione integrato 1C:Enterprise- linguaggio di programmazione, utilizzato nella famiglia di programmi 1C: Enterprise. Lingua dataè un linguaggio specifico del dominio di alto livello precompilato.

L'ambiente di esecuzione del linguaggio è la piattaforma software 1C:Enterprise. L'ambiente di sviluppo visivo ("Configuratore") è parte integrante del pacchetto software 1C:Enterprise.

I dialetti linguistici per le versioni 1C 7 delle piattaforme (7.0, 7.5, 7.7) sono compatibili "dal basso verso l'alto" con piccole eccezioni. I linguaggi per le piattaforme 1C:7x e 1C:8x sono compatibili in termini di operatori di base, ma differiscono in modo significativo nel lavorare con gli oggetti dell'applicazione, per cui il trasferimento del codice da 1C:7x a 1C:8x non ha senso.

Il linguaggio integrato 1C: 8 è molto simile nella sua sintassi al linguaggio Visual Basic.

La piattaforma fornisce un insieme fisso di classi di base incentrate sulla risoluzione di problemi tipici nell'area applicativa:

  • Costante,
  • Elenco,
  • Documento,
  • Diario documento,
  • enumerazione,
  • Rapporto,
  • Trattamento
  • Piano dei conti, ecc.

Sulla base delle classi di base, gli strumenti di configurazione visiva possono creare un numero qualsiasi di classi derivate (non è possibile definire una nuova classe a livello di codice). È consentita solo una fase esplicita di ereditarietà di classe. Di norma, gli oggetti delle classi derivate rappresentano i record (o alcuni insiemi di record) nel database. Tali classi formano l'"albero dei metadati". In termini di linguaggio di programmazione 1C integrato, tali classi sono chiamate oggetti metadati.

Le principali tipologie di oggetti metadati sono: Repertori, Documenti, Report, Elaborazioni, Piani dei tipi di caratteristiche, Piani dei conti, Piani dei tipi di calcolo, Registri informativi, Registri di accumulazione, Registri di calcolo, Processi aziendali, Compiti.

La sintassi dei comandi in russo e inglese è supportata.

I progetti nel linguaggio integrato 1C:Enterprise sono chiamati configurazioni. La distribuzione (vendita) e l'implementazione di tali configurazioni è la principale attività commerciale delle aziende partner 1C.

Il nome di lavoro della lingua - "1Sik" ("onesik") - è scomparso molto rapidamente dalle fonti ufficiali. Ora, quando si menziona questa lingua nei documenti scritti, è necessario scrivere 1C Linguaggio di programmazione. Ora la lingua non ha alcun nome che possa essere pronunciato oralmente. Tuttavia, questo linguaggio viene spesso definito "linguaggio incorporato" nel contesto della discussione di 1C:Enterprise.

Dialetti orientati agli oggetti

Ci sono diversi componenti aggiuntivi che estendono le classi principali, la loro aggiunta e modifica gratuita; non sono raccomandati per l'uso da parte dello sviluppatore. Ciò significa che 1C e i suoi affiliati rifiutano qualsiasi supporto tecnico configurazioni che utilizzano tali componenti.

Inoltre, esiste un progetto 2C completamente gratuito che non utilizza moduli proprietari di 1C o di altri produttori. Questo è un riscritto "da zero", distribuito liberamente sotto licenza GPL, un nucleo estensibile di un sistema simile a 1C, in cui anche tali "oggetti incorporati" 1C come directory e registri sono classi ridefinite dal programmatore dell'applicazione.

Il linguaggio della piattaforma 2C è stato progettato con l'obiettivo della massima continuità con gli sviluppi esistenti per 1C, ed è un'estensione del linguaggio 1C di base. Scrivendo le classi di base appropriate, il linguaggio 2C può essere avvicinato sia a 1C 7.7 che a 1C 8.0, sebbene 2C:Platform non possa fornire il trasferimento automatico al 100% delle configurazioni da una o un'altra versione di 1C:Enterprise.

1C.Net:impresa

Per facilitare l'uso di 1C.Net:Enterprise, sono stati preparati molti esempi che coprono quasi l'intero framework .NET, inclusi esempi di integrazione di controlli .NET nativi in ​​moduli 1C.

Esempio di programma

Un classico esempio di output di una stringa di testo nel linguaggio integrato 1C:Enterprise 7.7:

Mostra("Ciao Mondo!");

Un esempio di una funzione che restituisce il quadrato di un numero:

Funzione SquareNumber (prNumber)

Ritorna prNumero * prNumero ;

Funzioni finali

Guarda anche

  • RSL è un linguaggio di programmazione integrato in RS-Balance.

Appunti

Collegamenti


Fondazione Wikimedia. 2010 .

Guarda cos'è "Linguaggio di programmazione integrato 1C: Enterprise" in altri dizionari:

    Linguaggio di programmazione integrato 1C:Enterprise Classe di linguaggio: procedurale, specifico del dominio Tipo di esecuzione: precompilato Autore/i: 1C ultima versione: 1C: Impresa 8.2 Digitazione dei dati: digitazione dinamica Di base ... ... Wikipedia

    linguaggio di programmazione un sistema di caratteri formale progettato per essere scritto programmi per computer. Un linguaggio di programmazione definisce un insieme di regole lessicali, sintattiche e semantiche che definiscono aspetto esteriore programmi e azioni, ... ... Wikipedia

    language sono linguaggi di programmazione che, a differenza dei linguaggi più comuni, non si usano parole chiave tratto dal vocabolario inglese. Contenuti 1 La prevalenza dei linguaggi di programmazione basati sull'inglese ... Wikipedia

    I linguaggi di programmazione non basati sull'inglese sono linguaggi di programmazione che, a differenza della maggior parte dei linguaggi comuni, non utilizzano parole chiave prese dal vocabolario inglese. Indice 1 La predominanza dei linguaggi del software Wikipedia

    I linguaggi di programmazione non basati sull'inglese sono linguaggi di programmazione che, a differenza della maggior parte dei linguaggi comuni, non utilizzano parole chiave prese dal vocabolario inglese. Contenuti 1 La predominanza delle lingue ... ... Wikipedia

    Un linguaggio di programmazione è un sistema di segni formale per la scrittura di programmi. Il programma è solitamente un algoritmo in una forma comprensibile all'esecutore (ad esempio, un computer). Il linguaggio di programmazione definisce un insieme... ... Wikipedia

    Controlla la neutralità. La pagina di discussione dovrebbe contenere dettagli... Wikipedia

    - (ing. Tipo mutabile) un tipo di dati complesso nella programmazione orientata agli oggetti, i cui valori (solitamente oggetti) dopo la loro creazione consentono di modificarne le proprietà. Indice 1 Esempi ... Wikipedia

    Classe di linguaggio: procedurale, orientato agli oggetti Tipo di esecuzione: interpretato Apparso nel: 1994 Autore/i: Sergey Kubrin Estensione del file: mac ... Wikipedia

Libri

  • 1C: Impresa 7.7. Lezioni di programmazione. Self-tutor45 , Postovalov Sergey Nikolaevich , Postovalov Anastasia Yuryevna , Vengono descritti l'amministrazione del sistema 1C: Enterprise 7.7, un'introduzione alla contabilità, il linguaggio integrato e i principali oggetti di base del sistema. Le specifiche del lavoro con gli oggetti sono considerate ... Categoria: Software applicativo Serie: Tutorial Editore: BHV-Pietroburgo, Produttore:

Se scrivi in ​​SI
Sii almeno tre volte più debole
Dicono di questo:
"È un bravo programmatore!"
(Canzoni di Fidosh - "Cos'è Suxxx e cos'è Rulezzz")

Prefazione

Il motivo per cui è stato scritto questo articolo è stato l'atteggiamento negativo della comunità professionale nei confronti della piattaforma e dei programmatori specificati.

Come programmatore che ha scelto 1C, considero questa opinione irragionevole. La piattaforma 1C è tutt'altro che ideale, ma, secondo me, è il migliore e, soprattutto, un prodotto domestico!

E ancora di più: è inadeguato giudicare le capacità di un programmatore dalla lingua in cui scrive.

In questo articolo, descriverò i benefici che ho trovato per me stesso nel programma. L'articolo risulterà quasi una pubblicità, quindi subito un disclaimer:

  • Non ho alcun rapporto diretto con la società 1C;
  • Questo articolo non è fatto su misura ed è scritto esclusivamente su base volontaria;
  • In alcuni casi viene espressa un'opinione personale, che potrebbe non coincidere...;
  • L'intero articolo, ad eccezione del prologo, è dell'autore, ogni coincidenza è un incidente;
  • Parleremo della piattaforma 1C Enterprise 8.2 (attualmente la versione 8.3 è rilevante, ma non l'ho ancora studiata - c'è molto lavoro su 1C 8.2). Tuttavia, molto di quanto detto vale per la piattaforma 8.3 e oltre. prime versioni e alcuni - e alla versione 7.7.
Quindi iniziamo.

Di cosa stiamo parlando?

La piattaforma 1C Enterprise 8 è:
  • Funziona in due versioni - file e server (tre collegamenti) - ognuna ha i suoi vantaggi e svantaggi;
  • Sistema di contabilità indipendente facile da installare e configurare;
  • Un potente ecosistema per programmatori con tutti gli oggetti e gli strumenti necessari;
  • Bella interfaccia ergonomica;
  • Soluzione aziendale relativamente economica;
  • Rete di franchising, formazione iniziale;
  • Una potente base di sviluppi e conoscenze accumulate nel corso degli anni;
  • Una piattaforma a volte problematica per gli amministratori di sistema;
  • Non l'esecuzione più veloce degli algoritmi (sebbene non la più lenta) è un tributo al contenuto informativo (in caso di errori vengono indicati il ​​​​numero di riga e il suo contenuto);
  • Non ci sono classi nel linguaggio di programmazione (ereditarietà, incapsulamento, polimorfismo), non ci sono funzioni anonime e altre caratteristiche moderne. Ma per la maggior parte delle attività, questo non è necessario!
Per l'organizzazione della contabilità, una piattaforma non è sufficiente. La piattaforma è una sorta di "motore", un collegamento intermedio tra il programma e il database. I programmi per questo "motore" sono chiamati configurazioni. La configurazione descrive la struttura del database sotto forma di oggetti, i testi delle procedure memorizzati in moduli separati (ci sono molti moduli, sia ogni oggetto che il sistema nel suo insieme li hanno, e ci sono anche moduli comuni). La piattaforma fornisce un livello di astrazione che non richiede l'accesso diretto al database e consente anche di astrarre da sistema operativo e tipo di banca dati.

Database di file e server

La piattaforma è composta da più parti e può funzionare in versione file o server.

Nella versione file, l'intero database è contenuto in un file (con estensione "1cd"): la piattaforma è installata su ciascun computer e legge / scrive direttamente nel database.

Vantaggi dell'opzione file - prezzo basso e facilità di implementazione.

Contro - La struttura del file "1cd" è chiusa, no sistema unificato interagire con la banca dati. Di conseguenza, è difficile da utilizzare con un numero elevato di utenti (provato per più di 20 utenti: puoi lavorare). Inoltre, quando la dimensione del database è di circa 15 GB (o più), gli aggiornamenti dinamici non riescono. Risolvere tali guasti è un compito difficile e l'utilità per riparare la base non sempre ripara efficacemente e talvolta addirittura paralizza la base.

C'è una soluzione: questa è, prima di tutto, creare un quotidiano Prenota copia Banca dati. Inoltre, gli artigiani non solo pubblicano il formato di file 1cd, ma hanno anche sviluppato utilità per lavorare con tali file e una serie di metodi per risolvere tali problemi.

Nella versione server, la piattaforma di archiviazione del database utilizza un server SQL (di solito è MS SQL, ma a partire da 8.2.14 è possibile utilizzarne altri, ad esempio Firebird PostgreSQL, IBM DB2, Oracle Database) e la piattaforma stesso utilizza un'architettura a tre livelli:

Parte del codice viene eseguito sul client, parte sul server. In questo caso, solo il server interagisce con il database. Allo stesso tempo, a partire dalla versione 8.2, oltre alla modalità operativa standard, denominata modalità "thick client", sono apparse due nuove modalità operative: "thin client" e "web client"; apparso anche forme gestite”, il cui aspetto è costruito sotto forma di un albero astratto di elementi. La programmazione per moduli gestiti e un'architettura a tre livelli è più difficile, ma ciò consente di trasferire quasi l'intero carico sul server (ovvero è possibile acquistare un server potente e un centinaio di computer per ufficio più economici).

Vantaggi della piattaforma: "tre collegamenti" - distribuzione del carico, apertura del database (ufficialmente, la società 1C rifiuta la responsabilità per eventuali danni ai dati, se banca dati SQL sono state apportate modifiche se non tramite la loro piattaforma o server, ma questo ferma poche persone), mancanza di restrizioni.

Contro - prezzo: dovrai acquistare separatamente le licenze client per ogni computer client, separatamente - una licenza per il server 1C, separatamente una licenza per il server SQL, se non ne usi una gratuita. Inoltre, a volte ci sono difficoltà nel funzionamento del database. Vengono risolti molto più velocemente grazie alla disponibilità di dati e alla disponibilità di strumenti esterni per lavorare con il database. Inoltre, in questo caso, dovresti eseguire un backup del database.

Un vantaggio comune è l'universalità del codice di configurazione: con alcune eccezioni, una configurazione progettata per un database di file funzionerà su un database di server e viceversa. Un esempio di eccezione è il trasferimento di un valore mutabile al server o dal server al client (nella versione file questo non causerà eccezioni, ma nella versione client-server è proibito).

Un altro vantaggio: la piattaforma è molto facile da installare, qualcosa del genere: "Next-Next-Next-OK", non è richiesta alcuna messa a punto o installazione di alcun componente.

Per la versione server, ci sono alcune impostazioni in più, ma tutto viene eseguito nella finestra di dialogo di installazione e non richiede di scrivere nulla in file separati. L'installazione di un server SQL può essere alquanto difficile, perché in questo caso, ci sono molte più impostazioni (e per mettere a punto, devi studiare istruzioni addizionali). Ma questo non si applica ai problemi della piattaforma 1C. Inoltre, se installi, ad esempio, un server MS SQL con tutte le impostazioni predefinite, 1C sarà in grado di lavorarci.

È più della contabilità

Quando si tratta della piattaforma 1C, appare, prima di tutto, come un programma di contabilità. In effetti, questa è l'area di utilizzo più popolare della piattaforma 1C. Ma 1C non vive solo di contabilità!
Coloro che hanno familiarità con la piattaforma affermano che si tratta di un sistema di contabilità (automazione contabile). Questo è più vicino alla verità: ci sono molte configurazioni, sia da 1C che da sviluppatori di terze parti. Alcuni sono solo indirettamente correlati alla contabilità, altri non sono affatto correlati.

In generale, è più corretto rappresentare la piattaforma 1C come una shell per la modellazione, l'interfaccia e la programmazione di database di oggetti nel linguaggio 1C. L'unica limitazione è che ogni configurazione ha il proprio database e solo uno (tuttavia, è possibile connettersi in aggiunta fonti esterne dati, ad es. altre basi).

Ecosistema per programmatori

Consideriamo ora il linguaggio e la piattaforma 1C dal punto di vista dello sviluppatore:
Il modello a oggetti del database. Innanzitutto, non lavoriamo direttamente con i database. Non è necessario. Per nostra comodità, tutti i dati sono presentati sotto forma di oggetti correlati (directory, documenti, registri di informazioni, registri di accumulazione, ...) e la piattaforma "tira fuori" automaticamente questi dati dal database.
Ad esempio, a condizione che la variabile "Nomenclature Element" contenga un riferimento all'elemento dell'elenco "Nomenclature", l'elenco "Nomenclature" ha l'attributo "MainSupplier", di tipo "Directory.Contractors", e l'attributo "Contractors" directory ha l'attributo "FullName", quindi il codice:

Nomenclatura Element.MainSupplier.FullName
... farà in modo che la piattaforma 1C, utilizzando meccanismi interni, trovi un record nella tabella corrispondente alla directory "Controparti" dall'identificatore dal campo "Fornitore principale" dell'elemento della nomenclatura e restituisca i valori di il campo corrispondente al campo "FullName" nel modello a oggetti della directory "Counterparties".

Possono esserci molte dereferenze di questo tipo: il sistema ce la farà. L'unica avvertenza è che il sistema non è in grado di ottimizzare i dereference, quindi dovresti sforzarti di eliminarli da tutti i tipi di loop.

Oltre agli oggetti che descrivono i dati, esiste un numero enorme di oggetti di sistema, per una varietà di funzioni. Ne evidenzierò alcuni:

Negozi di valore
Vettore- un oggetto che memorizza un insieme di dati, in contrasto con la rappresentazione classica degli array. Potrebbero essere dati vari tipi(numero, stringa, riferimento, altro oggetto). Ha funzionalità minime e viene utilizzato principalmente come contenitore temporaneo per il trasferimento di valori tra altri archivi.

Elenco dei valori- un oggetto, principalmente per lavorare con l'interfaccia utente. Oltre ai dati, ogni elemento può contenere anche una vista, un segno di bandiera e un'immagine (pittogramma). Ha anche i metodi "SelectElement()" e "MarkElements()" - quando viene chiamato, viene mostrata all'utente una finestra di dialogo dell'interfaccia (il che è conveniente - non è necessario creare questa finestra di dialogo nella configurazione).

Struttura e Conformità- memorizzazione dei valori accoppiati "Key&Value". Nella struttura "Chiave", questa è una stringa che obbedisce alle regole per nominare le variabili in 1C (niente spazi, non inizia con un numero, consiste solo di lettere, numeri e un trattino basso). Secondo - "Chiave" è qualsiasi valore. La ricerca di oggetti più veloce è in accordo (più veloce che in un array e in una tabella di valori indicizzata).

Tabella dei valori- un oggetto molto conveniente e abbastanza veloce per l'archiviazione e l'elaborazione dei dati. Le colonne nella tabella dei valori possono essere aggiunte e rimosse, indipendentemente dal numero di voci. In questo caso, i dati nelle righe non vengono persi (oppure vengono eliminati solo i dati delle celle corrispondenti alle colonne in fase di eliminazione). Inoltre, ha il metodo "Select String ()", che chiama la finestra di selezione delle stringhe. Ci sono indici.

Albero dei valori- un oggetto che rappresenta i dati gerarchici. Contiene colonne, il set di colonne è lo stesso per tutti i record a tutti i livelli. Rimuovere/aggiungere colonne in un albero dei valori è facile come in una tabella dei valori. Inoltre, ha un metodo "SelectRow()".

Oggetti di interfaccia e oggetti per lavorare con vari dati TextDocument, SpreadsheetDocument, Web Browser, ReadFile, WriteFile, ReadZIPFile, WriteZIPFile, ReadXML, WriteXML, HTTPRequest e molti altri oggetti, e per tutti c'è un aiuto integrato nel configuratore. Lo scopo degli oggetti elencati si vede dai loro nomi, e tutto questo è immediatamente disponibile nella piattaforma.

Separatamente, va notato che esiste un oggetto "Metadati", con l'aiuto del quale è possibile studiare la struttura dei dati in un linguaggio di programmazione, nonché ogni collegamento o oggetto per un libro di riferimento, un documento, un piano dei conti, ecc. . esiste un metodo "Metadata()" - che fornisce una descrizione di questa directory/documento/piano dei conti/ecc. nel database (quali dettagli, parti tabulari sono disponibili, la lunghezza del codice/numero, ecc.). Spesso è molto conveniente.

E dovremmo anche menzionare separatamente gli oggetti: "Request", "Request Constructor", "Request Builder", "Report Builder", "Data Composition Scheme". Questa famiglia implementa un insieme di oggetti per lavorare con il potente linguaggio di query 1C.

Lingua di interrogazione. Le query in 1C vengono utilizzate solo per ottenere una selezione di dati con una comoda selezione, ordinamento, raggruppamento. In prima approssimazione, questo è l'operatore "SELECT" tradotto in russo da SQL, tuttavia, il linguaggio di query 1C ha anche funzionalità che non sono disponibili in SQL, ovvero:

  • Lavorare con oggetti di configurazione 1C invece che con tabelle SQL;
  • Lavorare con i collegamenti anziché con i campi dell'identificatore SQL;
  • Supporto per la dereferenziazione, simile a come viene eseguita nel codice;
  • Campionamento inserendo un gruppo (per le directory);
  • Totali gerarchici;
  • Tabelle temporanee e query nidificate (SELECT * FROM (SELECT ...)));
  • Generatore di query: conveniente, orientato agli oggetti, ottimizza automaticamente il testo della query per una lettura rapida, che può analizzare il testo della query (analizzare il testo della query e creare un modello a oggetti da esso);
  • Il generatore di report è un componente aggiuntivo rispetto al meccanismo di query, che aggiunge la funzionalità di formattazione automatica dei risultati, nonché la personalizzazione flessibile della query stessa in modalità "Enterprise" (ovvero, da parte dell'utente). Di conseguenza, nelle piattaforme 1C standard è apparso un report universale, in cui l'utente può configurare quali dati e in quale ordine vuole vedere cosa c'è nelle righe, cosa c'è nelle colonne e il report stesso genera una tabella di output;
  • SKD (Data Composition System) è il modello successivo che incorpora la funzionalità di un rapporto universale e lo integra con alcune funzioni di elaborazione dei risultati.

Linguaggio di programmazione
In termini di sintassi, il linguaggio 1C è simile al "pascal russo", tuttavia differisce dal "pascal" per il minor rigore e l'assenza di alcune costruzioni:

  • Non è necessario dichiarare le variabili: puoi inizializzare direttamente nel testo del modulo;
  • Nessuna digitazione difficile delle variabili. Il sistema ha tipi di valore, ma non ci sono rigide regole di tipizzazione per le variabili. Una variabile che ha memorizzato un riferimento potrebbe già memorizzare un numero o una stringa in un paio di righe di codice;
  • È possibile aggiungere variabili con valori tipi diversi, mentre il tipo del risultato sarà uguale al tipo della prima variabile, ad esempio:
    k \u003d "25" + 1; // k = "251", non 26
  • Le variabili con valori di tipo diverso possono essere confrontate per uguaglianza o disuguaglianza (ma non per più o meno, questo causerà un'eccezione) - naturalmente, tali variabili non sono uguali;
  • Ci sono funzioni e procedure, è lecito usare la ricorsione (con un limite alla profondità della ricorsione);
  • Quando specifichi una funzione o una procedura senza parametri - lo stesso, assicurati di includere parentesi vuote alla fine: here_so();
  • Ci sono moduli: ogni directory e documento ne ha diversi, inoltre, registri, rapporti ed elaborazioni hanno moduli, e ogni modulo, e anche come parte della configurazione, è possibile creare moduli comuni;
  • Nessuna classe, ereditarietà, incapsulamento, polimorfismo;
  • Una funzione non può essere passata come riferimento, non ci sono funzioni anonime;
  • Non esiste un ciclo inverso (per i:=5 fino a 1 do), ma è davvero necessario quando si eliminano i record. Riusciamo con una voce leggermente più lunga attraverso il ciclo "Bye".

Strumenti

  • La piattaforma 1C ha la capacità di caricare e scaricare una configurazione, confrontare una configurazione con un'altra configurazione e caricare parzialmente le modifiche;
  • E' possibile scaricare i testi dei moduli per la loro elaborazione in batch e ricaricarli nella configurazione;
  • Se la configurazione è supportata (tutte le configurazioni da 1C sono inizialmente supportate), puoi sempre confrontare e vedere cosa è stato modificato da sviluppatori di terze parti o specialisti locali;
  • È inoltre possibile caricare/scaricare l'intero database (inclusi i dati);
  • Per il lavoro collettivo su una configurazione, viene utilizzato un repository di configurazione;
  • Esistono anche una serie di regole per apportare modifiche alle configurazioni standard, esiste persino un documento di 1C che descrive i metodi e gli standard per modificare le configurazioni tipiche (e qualsiasi altro).

Impressione generale
Il linguaggio 1C combina la chiarezza dei testi in linguaggio Pascal con la frivolezza di lavorare con le variabili del linguaggio BASIC. Mancano alcune delle caratteristiche lingue moderne programmazione, ma senza di loro è del tutto possibile fare. Inoltre, la piattaforma 1C ha un potente garbage collector, ad es. non è necessario, ad esempio, pulire le tabelle dopo l'uso o eliminarle.

Interfaccia 1C Enterprise 8.2

L'azienda 1C ha prestato particolare attenzione all'interfaccia del suo programma. Prima di tutto - questo palette dei colori. Lei è bellissima! Le finestre del programma sono riconoscibili anche da lontano, mentre per tanti anni di lavoro non provocano sensazioni ostili, anzi, voglio che tutti i programmi siano altrettanto fighi.
Allo stesso tempo, lo stile della piattaforma è molto rigoroso, senza balze e altri eccessi. Allo stesso tempo, ci sono molto caratteristiche utili, ad esempio, ricordando le dimensioni delle finestre (le dimensioni vengono ricordate solo quando vengono modificate dall'utente e, allo stesso tempo, puoi sempre ripristinare le impostazioni dell'utente - alle dimensioni e alle posizioni predefinite premendo Alt + Maiusc + R).
L'interfaccia client Web 8.2 solleva una serie di lamentele, ma sembra che la piattaforma 8.3 porti con sé una nuova interfaccia ridisegnata: Taxi.

Prezzi, domanda e offerta, franchising

Il vantaggio più "gustoso" della piattaforma 1C è il suo prezzo. Ciò è particolarmente vero ora, durante la crisi. Dopotutto, 1C è completamente il nostro prodotto domestico. Ed è venduto per i nostri in legno. Tali soluzioni di un produttore straniero costeranno un sacco di soldi. E le licenze per 1C sono abbastanza accettabili.

Inoltre, 1C ha un'interessante politica di licenza. Le licenze e le configurazioni stesse vengono acquistate una volta. Allo stesso tempo, vengono acquistate le licenze per posto di lavoro e al server, ma non ai database, e nemmeno alle connessioni, ad es. con una licenza, lo stesso utente può eseguire un numero illimitato di sessioni 1C, lavorando con qualsiasi numero di database. Lo stesso vale per le configurazioni: acquistando una licenza per una configurazione, un'organizzazione può utilizzarla per creare un numero qualsiasi di database, inoltre, è ufficialmente consentito utilizzare parti del codice e oggetti di questa configurazione durante lo sviluppo delle proprie configurazioni (a allo stesso tempo, puoi vendere / trasferire le tue configurazioni, stabilendo che per utilizzarle devi acquistare una configurazione da 1C).

Dopo questo acquisto una tantum, devi solo iscriverti agli aggiornamenti e pagare per il rinnovo dell'abbonamento una volta all'anno, il cosiddetto. SUO. A proposito, l'abbonamento è molto economico, più o meno come due licenze client.

In generale, tutto ciò sembra molto redditizio.

Il secondo "gustoso", ma già con un unico neo, in più, è la presenza di configurazioni abbastanza universali dalla stessa 1C e dai partner.

A proposito di versatilità

Il concetto di "universalità" è stato definito da un insegnante di scuola nel campo della NVP usando come esempio maschere antigas: ce ne sono di universali che proteggono da molti fattori dannosi, ma il grado di protezione è medio o inferiore alla media, e ci sono anche maschere antigas specializzate che proteggono da un impatto, ma con un alto grado di protezione. Finora non ho visto una definizione più precisa.
E le configurazioni di 1C sono universali. In pratica, non ci sono compiti in cui potrebbero essere utilizzati completamente senza modifiche. Tuttavia, 1C è riuscita a creare un set universale di strumenti che copre le esigenze della maggior parte dei settori del business moderno.


Il terzo vantaggio (e anche con un unico neo) è una rete di affiliati e centri di formazione, sia per utenti che per programmatori e amministratori alle prime armi. Buona idea, ma qualità molto mediocre della sua implementazione. Tuttavia, la prevalenza e il marketing aggressivo sono uno dei motivi della diffusa popolarità di 1C nel nostro Paese (e questo è anche il motivo della negatività, dell'invidia e dell'odio).

Un cucchiaio di catrame

Avendo dipinto 1C in tutti i colori, sarebbe ingiusto non parlare dei suoi difetti, ed esistono già:

Rilasci instabili- sia nella piattaforma che nelle configurazioni, c'è un numero enorme di errori e glitch. E questo è nelle versioni ufficiali. Prima del rilascio versione ufficiale, è in fase di rilascio una "versione di revisione". Ci sono anche Feedback per inviare le descrizioni degli errori da accettare per la correzione. Tuttavia, o le versioni per la revisione non sono particolarmente apprezzate o la stessa società 1C non ha il tempo di elaborare tutte le lettere entro la data di rilascio, ma il fatto è. Ogni volta che aggiorni la piattaforma o la configurazione, puoi imbatterti nelle "sorprese" più inaspettate. 1C è stato ripetutamente chiamato a testare i suoi sviluppi in modo più approfondito.

Franchisee (di seguito denominati franchisee). Idealmente, come previsto, queste avrebbero dovuto essere aziende con specialisti qualificati che conoscono i principi di base del funzionamento delle configurazioni e delle piattaforme. Queste stesse aziende dovrebbero vendere la piattaforma, la configurazione e il supporto, "rifinire" leggermente le configurazioni universali per soddisfare i requisiti del cliente (e talvolta adattare questi requisiti), cercando di modificare minimamente la configurazione standard. Per non complicare troppo i futuri aggiornamenti. Ma in realtà è vero il contrario.

Quando vengono vendute nuove licenze a un cliente, le franchigie ricevono il 50% del loro valore (meno l'imposta sul reddito del 13% di questo 50%). Allo stesso tempo, non è necessario produrre nulla da soli, è sufficiente trasferire le chiavi a 1C all'acquirente.

Quando prestano servizi, gli affiliati non pagano nulla alla società 1C (ad eccezione delle quote associative), ma devono pagare lo stipendio del dipendente. Devi anche spendere soldi per le tasse allo stato - PFR e imposta sul reddito.

Si scopre che sia redditizio sia per 1C che per i franchising vendere licenze e non è redditizio fornire ulteriore supporto. Allo stesso tempo, affinché un cliente possa acquistare un programma, deve inizialmente essere adattato alle sue esigenze. E devi pagare per il lavoro. E qui, per risparmiare, sono coinvolti studenti, alunni, non specialisti, che possono essere pagati poco, e talvolta non pagati affatto, possono anche non essere registrati nello stato (lavoreranno ufficiosamente, visto che lì è qualcosa con cui pagare). Il risultato è un enorme numero di vendite con una qualità molto bassa. I miglioramenti, di norma, influiscono su meccanismi importanti e complicano gli aggiornamenti futuri. Ma nella fase di vendita, né 1C né l'affiliato sono interessati.

Prendo atto che non è tanto colpa degli uomini d'affari del franchising di 1C. Concentrandosi sulle vendite, non le importava affatto del supporto (non sto parlando di scuole ora, ma del fatto che il supporto dovrebbe essere vantaggioso sia per l'affiliato stesso che per 1C).

Supporto tecnico. Nella comprensione di 1C, il supporto tecnico è la fornitura dell'accesso alla sezione "aggiornamento" per la piattaforma e le configurazioni, nonché a sezioni informative contenenti una descrizione di alcuni meccanismi e funzionalità di 1C. Inoltre, al momento dell'iscrizione, viene fornito un disco con i materiali specificati. C'è anche un forum (molto scarso rispetto al folk). È ancora possibile inviare un'e-mail a 1C, ma senza nemmeno sperare che risponda (o il robot risponderà "La lettera è stata inviata al dipartimento di sviluppo". In termini di sviluppo, Yandex.Search e l'aiuto costruito nel configuratore forniscono molto più supporto.

Epilogo

Sono passato a 1C nel 2008 e prima ancora lavoravo in un'azienda sviluppando il proprio programma di contabilità (Delphi 5, poi Delphi 7). Innanzitutto, ho conosciuto la piattaforma 1C Enterprise 7.7 e sono rimasto colpito dalla facilità con cui sviluppa report. Allo stesso tempo, era chiaro che i report venivano generati molto più a lungo rispetto a simili meccanismi Delphi, ma i contabili non erano particolarmente preoccupati per questo. Aspettare qualche minuto invece di secondi non è un problema. Al contrario, puoi dipingere le unghie lì, prendere una tazza di tè o discutere ultime novità senza prendersi una pausa dal lavoro. La stragrande maggioranza dei contabili in questi giorni sono donne.
Tuttavia, l'interfaccia 7.7 era molto limitata e il set di oggetti era molto scarso. Ho cercato alternative. incontrato con componenti esterni, ma non hanno raggiunto l'applicazione pratica, tk. il capo ha deciso che era giunto il momento per noi di passare alla 8.1 (sì, la 8.2 allora non esisteva), e in questa piattaforma, come programmatore, ho trovato tutto ciò che prima mi mancava.
Attualmente ho autorità tra i colleghi, così come i clienti che sono venuti da me dal franchising. Probabilmente non avranno mai più a che fare con i francesi.


In generale, sono abbastanza soddisfatto del lavoro nella piattaforma 1C Enterprise 8. È adatto per risolvere la maggior parte delle attività e attività contabili utilizzando un database.

Tag:

  • linguaggi di programmazione in russo
  • 1C
  • Programmazione 1C
Aggiungi i tag

Il linguaggio di programmazione 1C è un sistema di segni formale progettato per scrivere programmi per computer. Un linguaggio di programmazione definisce un insieme di regole lessicali, sintattiche e semantiche che definiscono l'aspetto del programma e le azioni che l'esecutore (computer) eseguirà sotto il suo controllo.

La piattaforma 1C Enterprise 8 dispone di funzionalità complete per lo sviluppo delle proprie soluzioni per lo sviluppatore. Il principale strumento di sviluppo è il linguaggio di programmazione integrato 1C 8.3.

È vietata la creazione di nuove classi a livello di codice nel linguaggio 1C 8.3. Poiché la piattaforma 1C Enterprise è specializzata per le attività contabili, la composizione delle classi è predeterminata:

  • eccetera.

Sulla base delle classi tipiche, è possibile creare un numero qualsiasi di sottoclassi con i propri insiemi. Con l'aiuto dei moduli manager, puoi estendere leggermente la funzionalità di una sottoclasse.

Il linguaggio di programmazione 1C è difficile?

La questione è piuttosto controversa e relativa. Se lo consideriamo in relazione ad altre lingue, può sembrare un po' più semplice. Tuttavia, oltre alla programmazione stessa, dovrai studiare l'area tematica: contabilità, produzione, contabilità fiscale, ecc., Il che rende il linguaggio di programmazione 1C in aggregato non così semplice come potrebbe sembrare a prima vista.

Se hai avuto una solida esperienza in altri linguaggi di programmazione specifici del dominio prima di familiarizzare con 1C, non sarà difficile per te comprendere le complessità di 8.2, la cosa principale è il desiderio. Tutto ciò di cui hai bisogno è trovare un buon tutorial sul linguaggio di programmazione 1C.

Sintassi russa della lingua 1C

In questo articolo considereremo una tale costruzione del linguaggio di programmazione 1C come Cicli.

Ci sono tre modi per organizzare i loop.

  1. Cicli che utilizzano un'espressione booleana (eseguiti finché l'espressione booleana è vera)
  2. Attraversamento di raccolte in un ciclo

Consideriamo ciascuno di questi metodi.

Loop utilizzando una variabile - contatore di loop

Sintassi:

Per< Переменная> = < НачальноеЗначение>Di< КонечноеЗначение>CicloFineCiclo ;

Con questo metodo di organizzazione dei cicli, a una variabile contatore viene assegnato un valore iniziale e viene eseguita fino a quando il valore della variabile contatore è minore o uguale al valore finale specificato.

Ad ogni iterazione, il valore del contatore aumenta di uno. Ecco l'esempio più elementare di un tale ciclo:

For Counter = da 0 a 1000 Ciclo Fine ciclo ;

A differenza di molti altri linguaggi di programmazione, 1C non prevede la possibilità di specificare un passo in un ciclo. Se necessario, questo può essere fatto aggiungendo il valore desiderato al contatore all'interno del ciclo

For Counter = 0 By 1000 Loop Counter = Counter + 10 ; Fine Ciclo ;

Cicli che utilizzano l'espressione booleana

Sintassi:

Ciao< ЛогическоеВыражение>CicloFineCiclo ;

Rifiuta = Falso ; GeneratorSch = Nuovo generatore di numeri casuali(1 ) ; Fino al fallimento Loop RandomNumber = GeneratorSch. NumeroCasuale(0 , 10 ); Se RandomNumber > 5 Then Rejection = True ; Finisci se ; Fine Ciclo ;

Cioè, il ciclo verrà eseguito finché non viene generato un numero casuale maggiore di cinque.

Attraversamento di raccolte in un ciclo

Nel linguaggio di programmazione 1C esiste qualcosa come una raccolta. È un insieme di elementi contenuti all'interno di un oggetto.

Possiamo fare riferimento a una collezione di oggetti come: un array, una tabella di valori, una selezione dal risultato di una query, metadati, ecc. Questo concetto è piuttosto condizionale, ma nell'assistente di sintassi ricorre ad ogni passo. Molto spesso c'è un'attività in cui dobbiamo iterare in sequenza su tutti gli elementi della raccolta per eseguire alcune azioni su di essi. C'è una sintassi per questo:

Per tutti< ЭлементКоллекции>Da< Коллекция>CicloFineCiclo ;

Qui <ЭлементКоллекции> è una variabile in cui vengono posizionati in sequenza gli elementi della raccolta. E all'interno del ciclo, viene elaborato di conseguenza.
Ad esempio, fornirò un bypass nel ciclo delle righe della tabella dei valori. Lascia che sia chiamato TabellaProdotti e assomiglia a questo:

Giriamo intorno a questa tabella in loop e per ogni riga visualizzeremo un messaggio con il nome e il prezzo del prodotto:

Per ogni RowTableFrom TableProducts Loop Name = RowTable. Nome; Prezzo = TableString. Prezzo; Messaggio = Nuovo messaggio all'utente; Messaggio. Testo = "Nome del prodotto: "

In effetti, lo stesso può essere fatto utilizzando la prima opzione, ovvero in un ciclo utilizzando un contatore:

Numero di righe = TableProducts. Quantità(); For Counter = 0 By Number of Rows - 1 Loop RowTable = TableProducts[Counter] ; Nome = StringTable. Nome; Prezzo = TableString. Prezzo; Messaggio = Nuovo messaggio all'utente; Messaggio. Testo = "Nome del prodotto: "+ Nome + "; Prezzo: " + Prezzo; Messaggio. Segnalare(); Fine Ciclo ;

Ma come possiamo vedere, è molto più semplice e conveniente utilizzare l'attraversamento degli elementi della raccolta.

Operatori ausiliari

Spesso c'è una situazione in cui, a seconda di alcuni, è necessario interrompere l'esecuzione del ciclo o passare all'iterazione successiva.

L'interruzione viene eseguita utilizzando l'operatore abortire. In questo caso l'esecuzione del ciclo viene interrotta e il controllo viene trasferito al costrutto del linguaggio che segue il ciclo. Se è necessario passare all'iterazione successiva, è necessario utilizzare l'operatore Procedere. Quindi il controllo viene trasferito all'inizio del ciclo. Spieghiamo con un piccolo esempio:

For Count = 0 By 100 Loop If Count = 0 Then Continue ; Finisci se ; Se Counter = 4 Then Abort ; Finisci se ; Risultato = 1 / Contatore; Messaggio = Nuovo messaggio all'utente; Messaggio. Testo = Stringa(Risultato); Messaggio. Segnalare(); Fine Ciclo ;

Saltiamo zero, perché non puoi dividere per zero. E in totale il ciclo verrà eseguito cinque volte, per i valori della variabile Contatore da 0 a 4

Se scrivi in ​​SI
Sii almeno tre volte più debole
Dicono di questo:
"È un bravo programmatore!"
(Canzoni di Fidosh - "Cos'è Suxxx e cos'è Rulezzz")

Prefazione

Il motivo per cui è stato scritto questo articolo è stato l'atteggiamento negativo della comunità professionale nei confronti della piattaforma e dei programmatori specificati.

Come programmatore che ha scelto 1C, considero questa opinione irragionevole. La piattaforma 1C è tutt'altro che ideale, ma, secondo me, è il migliore e, soprattutto, un prodotto domestico!

E ancora di più: è inadeguato giudicare le capacità di un programmatore dalla lingua in cui scrive.

In questo articolo, descriverò i benefici che ho trovato per me stesso nel programma. L'articolo risulterà quasi una pubblicità, quindi subito un disclaimer:

  • Non ho alcun rapporto diretto con la società 1C;
  • Questo articolo non è fatto su misura ed è scritto esclusivamente su base volontaria;
  • In alcuni casi viene espressa un'opinione personale, che potrebbe non coincidere...;
  • L'intero articolo, ad eccezione del prologo, è dell'autore, ogni coincidenza è un incidente;
  • Parleremo della piattaforma 1C Enterprise 8.2 (attualmente la versione 8.3 è rilevante, ma non l'ho ancora studiata - c'è molto lavoro su 1C 8.2). Tuttavia, la maggior parte di ciò che è stato detto si applica sia alla piattaforma 8.3 che alle versioni precedenti, e in parte si applica anche alla versione 7.7.
Quindi iniziamo.

Di cosa stiamo parlando?

La piattaforma 1C Enterprise 8 è:
  • Funziona in due versioni - file e server (tre collegamenti) - ognuna ha i suoi vantaggi e svantaggi;
  • Sistema di contabilità indipendente facile da installare e configurare;
  • Un potente ecosistema per programmatori con tutti gli oggetti e gli strumenti necessari;
  • Bella interfaccia ergonomica;
  • Soluzione aziendale relativamente economica;
  • Rete di franchising, formazione iniziale;
  • Una potente base di sviluppi e conoscenze accumulate nel corso degli anni;
  • Una piattaforma a volte problematica per gli amministratori di sistema;
  • Non l'esecuzione più veloce degli algoritmi (sebbene non la più lenta) è un tributo al contenuto informativo (in caso di errori vengono indicati il ​​​​numero di riga e il suo contenuto);
  • Non ci sono classi nel linguaggio di programmazione (ereditarietà, incapsulamento, polimorfismo), non ci sono funzioni anonime e altre caratteristiche moderne. Ma per la maggior parte delle attività, questo non è necessario!
Per l'organizzazione della contabilità, una piattaforma non è sufficiente. La piattaforma è una sorta di "motore", un collegamento intermedio tra il programma e il database. I programmi per questo "motore" sono chiamati configurazioni. La configurazione descrive la struttura del database sotto forma di oggetti, i testi delle procedure memorizzati in moduli separati (ci sono molti moduli, sia ogni oggetto che il sistema nel suo insieme li hanno, e ci sono anche moduli comuni). La piattaforma fornisce un livello di astrazione che non richiede l'accesso diretto al database e consente inoltre di astrarre dal sistema operativo e dal tipo di database.

Database di file e server

La piattaforma è composta da più parti e può funzionare in versione file o server.

Nella versione file, l'intero database è contenuto in un file (con estensione "1cd"): la piattaforma è installata su ciascun computer e legge / scrive direttamente nel database.

I vantaggi dell'opzione file sono il basso costo e la facilità di implementazione.

Contro: la struttura del file "1cd" è chiusa, non esiste un unico sistema che interagisce con il database. Di conseguenza, è difficile da utilizzare con un numero elevato di utenti (provato per più di 20 utenti: puoi lavorare). Inoltre, quando la dimensione del database è di circa 15 GB (o più), gli aggiornamenti dinamici non riescono. Risolvere tali guasti è un compito difficile e l'utilità per riparare la base non sempre ripara efficacemente e talvolta addirittura paralizza la base.

C'è una soluzione: prima di tutto, impostare un backup giornaliero del database. Inoltre, gli artigiani non solo pubblicano il formato di file 1cd, ma hanno anche sviluppato utilità per lavorare con tali file e una serie di metodi per risolvere tali problemi.

Nella versione server, la piattaforma di archiviazione del database utilizza un server SQL (di solito è MS SQL, ma a partire da 8.2.14 è possibile utilizzarne altri, ad esempio Firebird PostgreSQL, IBM DB2, Oracle Database) e la piattaforma stesso utilizza un'architettura a tre livelli:

Parte del codice viene eseguito sul client, parte sul server. In questo caso, solo il server interagisce con il database. Allo stesso tempo, a partire dalla versione 8.2, oltre alla modalità operativa standard, denominata modalità "thick client", sono apparse due nuove modalità operative: "thin client" e "web client"; Apparvero anche "forme gestite", il cui aspetto è costruito sotto forma di un albero astratto di elementi. La programmazione per moduli gestiti e un'architettura a tre livelli è più difficile, ma ciò consente di trasferire quasi l'intero carico sul server (ovvero è possibile acquistare un server potente e un centinaio di computer per ufficio più economici).

Vantaggi della piattaforma: "tre collegamenti" - distribuzione del carico, apertura del database (ufficialmente, la società 1C rifiuta la responsabilità per eventuali danni ai dati se sono state apportate modifiche al database SQL se non tramite la loro piattaforma o server, ma questo si ferma poche persone), mancanza di restrizioni.

Contro - prezzo: dovrai acquistare separatamente le licenze client per ogni computer client, separatamente - una licenza per il server 1C, separatamente una licenza per il server SQL, se non ne usi una gratuita. Inoltre, a volte ci sono difficoltà nel funzionamento del database. Vengono risolti molto più velocemente grazie alla disponibilità di dati e alla disponibilità di strumenti esterni per lavorare con il database. Inoltre, in questo caso, dovresti eseguire un backup del database.

Un vantaggio comune è l'universalità del codice di configurazione: con alcune eccezioni, una configurazione progettata per un database di file funzionerà su un database di server e viceversa. Un esempio di eccezione è il trasferimento di un valore mutabile al server o dal server al client (nella versione file questo non causerà eccezioni, ma nella versione client-server è proibito).

Un altro vantaggio: la piattaforma è molto facile da installare, qualcosa del genere: "Next-Next-Next-OK", non è richiesta alcuna messa a punto o installazione di alcun componente.

Per la versione server, ci sono alcune impostazioni in più, ma tutto viene eseguito nella finestra di dialogo di installazione e non richiede la scrittura di nulla in file separati. L'installazione di un server SQL può essere alquanto difficile, perché in questo caso, ci sono molte più impostazioni (e per mettere a punto, è necessario studiare istruzioni aggiuntive). Ma questo non si applica ai problemi della piattaforma 1C. Inoltre, se installi, ad esempio, un server MS SQL con tutte le impostazioni predefinite, 1C sarà in grado di lavorarci.

È più della contabilità

Quando si tratta della piattaforma 1C, appare, prima di tutto, come un programma di contabilità. In effetti, questa è l'area di utilizzo più popolare della piattaforma 1C. Ma 1C non vive solo di contabilità!
Coloro che hanno familiarità con la piattaforma affermano che si tratta di un sistema di contabilità (automazione contabile). Questo è più vicino alla verità: ci sono molte configurazioni, sia da 1C che da sviluppatori di terze parti. Alcuni sono solo indirettamente correlati alla contabilità, altri non sono affatto correlati.

In generale, è più corretto rappresentare la piattaforma 1C come una shell per la modellazione, l'interfaccia e la programmazione di database di oggetti nel linguaggio 1C. L'unica limitazione è che ogni configurazione ha il proprio database e solo uno (tuttavia, è possibile collegare anche fonti di dati esterne come parte della configurazione, ad es. altri database).

Ecosistema per programmatori

Consideriamo ora il linguaggio e la piattaforma 1C dal punto di vista dello sviluppatore:
Il modello a oggetti del database. Innanzitutto, non lavoriamo direttamente con i database. Non è necessario. Per nostra comodità, tutti i dati sono presentati sotto forma di oggetti correlati (directory, documenti, registri di informazioni, registri di accumulazione, ...) e la piattaforma "tira fuori" automaticamente questi dati dal database.
Ad esempio, a condizione che la variabile "Nomenclature Element" contenga un riferimento all'elemento dell'elenco "Nomenclature", l'elenco "Nomenclature" ha l'attributo "MainSupplier", di tipo "Directory.Contractors", e l'attributo "Contractors" directory ha l'attributo "FullName", quindi il codice:

Nomenclatura Element.MainSupplier.FullName
... farà in modo che la piattaforma 1C, utilizzando meccanismi interni, trovi un record nella tabella corrispondente alla directory "Controparti" dall'identificatore dal campo "Fornitore principale" dell'elemento della nomenclatura e restituisca i valori di il campo corrispondente al campo "FullName" nel modello a oggetti della directory "Counterparties".

Possono esserci molte dereferenze di questo tipo: il sistema ce la farà. L'unica avvertenza è che il sistema non è in grado di ottimizzare i dereference, quindi dovresti sforzarti di eliminarli da tutti i tipi di loop.

Oltre agli oggetti che descrivono i dati, esiste un numero enorme di oggetti di sistema, per una varietà di funzioni. Ne evidenzierò alcuni:

Negozi di valore
Vettore- un oggetto che memorizza un insieme di dati, in contrasto con la rappresentazione classica degli array. Possono essere dati di vario tipo (numero, stringa, collegamento, altro oggetto). Ha funzionalità minime e viene utilizzato principalmente come contenitore temporaneo per il trasferimento di valori tra altri archivi.

Elenco dei valori- un oggetto, principalmente per lavorare con l'interfaccia utente. Oltre ai dati, ogni elemento può contenere anche una vista, un segno di bandiera e un'immagine (pittogramma). Ha anche i metodi "SelectElement()" e "MarkElements()" - quando viene chiamato, viene mostrata all'utente una finestra di dialogo dell'interfaccia (il che è conveniente - non è necessario creare questa finestra di dialogo nella configurazione).

Struttura e Conformità- memorizzazione dei valori accoppiati "Key&Value". Nella struttura "Chiave", questa è una stringa che obbedisce alle regole per nominare le variabili in 1C (niente spazi, non inizia con un numero, consiste solo di lettere, numeri e un trattino basso). Secondo - "Chiave" è qualsiasi valore. La ricerca di oggetti più veloce è in accordo (più veloce che in un array e in una tabella di valori indicizzata).

Tabella dei valori- un oggetto molto conveniente e abbastanza veloce per l'archiviazione e l'elaborazione dei dati. Le colonne nella tabella dei valori possono essere aggiunte e rimosse, indipendentemente dal numero di voci. In questo caso, i dati nelle righe non vengono persi (oppure vengono eliminati solo i dati delle celle corrispondenti alle colonne in fase di eliminazione). Inoltre, ha il metodo "Select String ()", che chiama la finestra di selezione delle stringhe. Ci sono indici.

Albero dei valori- un oggetto che rappresenta i dati gerarchici. Contiene colonne, il set di colonne è lo stesso per tutti i record a tutti i livelli. Rimuovere/aggiungere colonne in un albero dei valori è facile come in una tabella dei valori. Inoltre, ha un metodo "SelectRow()".

Oggetti di interfaccia e oggetti per lavorare con vari dati TextDocument, SpreadsheetDocument, Web Browser, ReadFile, WriteFile, ReadZIPFile, WriteZIPFile, ReadXML, WriteXML, HTTPRequest e molti altri oggetti, e per tutti c'è un aiuto integrato nel configuratore. Lo scopo degli oggetti elencati si vede dai loro nomi, e tutto questo è immediatamente disponibile nella piattaforma.

Separatamente, va notato che esiste un oggetto "Metadati", con l'aiuto del quale è possibile studiare la struttura dei dati in un linguaggio di programmazione, nonché ogni collegamento o oggetto per un libro di riferimento, un documento, un piano dei conti, ecc. . esiste un metodo "Metadata()" - che fornisce una descrizione di questa directory/documento/piano dei conti/ecc. nel database (quali dettagli, parti tabulari sono disponibili, la lunghezza del codice/numero, ecc.). Spesso è molto conveniente.

E dovremmo anche menzionare separatamente gli oggetti: "Request", "Request Constructor", "Request Builder", "Report Builder", "Data Composition Scheme". Questa famiglia implementa un insieme di oggetti per lavorare con il potente linguaggio di query 1C.

Lingua di interrogazione. Le query in 1C vengono utilizzate solo per ottenere una selezione di dati con una comoda selezione, ordinamento, raggruppamento. In prima approssimazione, questo è l'operatore "SELECT" tradotto in russo da SQL, tuttavia, il linguaggio di query 1C ha anche funzionalità che non sono disponibili in SQL, ovvero:

  • Lavorare con oggetti di configurazione 1C invece che con tabelle SQL;
  • Lavorare con i collegamenti anziché con i campi dell'identificatore SQL;
  • Supporto per la dereferenziazione, simile a come viene eseguita nel codice;
  • Campionamento inserendo un gruppo (per le directory);
  • Totali gerarchici;
  • Tabelle temporanee e query nidificate (SELECT * FROM (SELECT ...)));
  • Generatore di query: conveniente, orientato agli oggetti, ottimizza automaticamente il testo della query per una lettura rapida, che può analizzare il testo della query (analizzare il testo della query e creare un modello a oggetti da esso);
  • Il generatore di report è un componente aggiuntivo rispetto al meccanismo di query, che aggiunge la funzionalità di formattazione automatica dei risultati, nonché la personalizzazione flessibile della query stessa in modalità "Enterprise" (ovvero, da parte dell'utente). Di conseguenza, nelle piattaforme 1C standard è apparso un report universale, in cui l'utente può configurare quali dati e in quale ordine vuole vedere cosa c'è nelle righe, cosa c'è nelle colonne e il report stesso genera una tabella di output;
  • SKD (Data Composition System) è il modello successivo che incorpora la funzionalità di un rapporto universale e lo integra con alcune funzioni di elaborazione dei risultati.

Linguaggio di programmazione
In termini di sintassi, il linguaggio 1C è simile al "pascal russo", tuttavia differisce dal "pascal" per il minor rigore e l'assenza di alcune costruzioni:

  • Non è necessario dichiarare le variabili: puoi inizializzare direttamente nel testo del modulo;
  • Nessuna digitazione difficile delle variabili. Il sistema ha tipi di valore, ma non ci sono rigide regole di tipizzazione per le variabili. Una variabile che ha memorizzato un riferimento potrebbe già memorizzare un numero o una stringa in un paio di righe di codice;
  • Puoi aggiungere variabili con valori di tipi diversi, mentre il tipo di risultato sarà uguale al tipo della prima variabile, ad esempio:
    k \u003d "25" + 1; // k = "251", non 26
  • Le variabili con valori di tipo diverso possono essere confrontate per uguaglianza o disuguaglianza (ma non per più o meno, questo causerà un'eccezione) - naturalmente, tali variabili non sono uguali;
  • Ci sono funzioni e procedure, è lecito usare la ricorsione (con un limite alla profondità della ricorsione);
  • Quando specifichi una funzione o una procedura senza parametri - lo stesso, assicurati di includere parentesi vuote alla fine: here_so();
  • Ci sono moduli: ogni directory e documento ne ha diversi, inoltre, registri, rapporti ed elaborazioni hanno moduli, e ogni modulo, e anche come parte della configurazione, è possibile creare moduli comuni;
  • Nessuna classe, ereditarietà, incapsulamento, polimorfismo;
  • Una funzione non può essere passata come riferimento, non ci sono funzioni anonime;
  • Non esiste un ciclo inverso (per i:=5 fino a 1 do), ma è davvero necessario quando si eliminano i record. Riusciamo con una voce leggermente più lunga attraverso il ciclo "Bye".

Strumenti

  • La piattaforma 1C ha la capacità di caricare e scaricare una configurazione, confrontare una configurazione con un'altra configurazione e caricare parzialmente le modifiche;
  • E' possibile scaricare i testi dei moduli per la loro elaborazione in batch e ricaricarli nella configurazione;
  • Se la configurazione è supportata (tutte le configurazioni da 1C sono inizialmente supportate), puoi sempre confrontare e vedere cosa è stato modificato da sviluppatori di terze parti o specialisti locali;
  • È inoltre possibile caricare/scaricare l'intero database (inclusi i dati);
  • Per il lavoro collettivo su una configurazione, viene utilizzato un repository di configurazione;
  • Esistono anche una serie di regole per apportare modifiche alle configurazioni standard, esiste persino un documento di 1C che descrive i metodi e gli standard per modificare le configurazioni tipiche (e qualsiasi altro).

Impressione generale
Il linguaggio 1C combina la chiarezza dei testi in linguaggio Pascal con la frivolezza di lavorare con le variabili del linguaggio BASIC. Manca una serie di funzionalità inerenti ai moderni linguaggi di programmazione, ma è del tutto possibile farne a meno. Inoltre, la piattaforma 1C ha un potente garbage collector, ad es. non è necessario, ad esempio, pulire le tabelle dopo l'uso o eliminarle.

Interfaccia 1C Enterprise 8.2

L'azienda 1C ha prestato particolare attenzione all'interfaccia del suo programma. Il primo è la tavolozza dei colori. Lei è bellissima! Le finestre del programma sono riconoscibili anche da lontano, mentre per tanti anni di lavoro non provocano sensazioni ostili, anzi, voglio che tutti i programmi siano altrettanto fighi.
Allo stesso tempo, lo stile della piattaforma è molto rigoroso, senza balze e altri eccessi. Allo stesso tempo, ci sono funzioni molto utili, ad esempio, ricordare le dimensioni delle finestre (le dimensioni vengono ricordate solo quando vengono modificate dall'utente e, allo stesso tempo, puoi sempre ripristinare le impostazioni dell'utente - al dimensioni e posizioni predefinite premendo Alt + Maiusc + R).
L'interfaccia client Web 8.2 solleva una serie di lamentele, ma sembra che la piattaforma 8.3 porti con sé una nuova interfaccia ridisegnata: Taxi.

Prezzi, domanda e offerta, franchising

Il vantaggio più "gustoso" della piattaforma 1C è il suo prezzo. Ciò è particolarmente vero ora, durante la crisi. Dopotutto, 1C è completamente il nostro prodotto domestico. Ed è venduto per i nostri in legno. Tali soluzioni di un produttore straniero costeranno un sacco di soldi. E le licenze per 1C sono abbastanza accettabili.

Inoltre, 1C ha un'interessante politica di licenza. Le licenze e le configurazioni stesse vengono acquistate una volta. Allo stesso tempo, vengono acquistate licenze per un posto di lavoro e un server, ma non per database e nemmeno per connessioni, ad es. con una licenza, lo stesso utente può eseguire un numero illimitato di sessioni 1C, lavorando con qualsiasi numero di database. Lo stesso vale per le configurazioni: acquistando una licenza per una configurazione, un'organizzazione può utilizzarla per creare un numero qualsiasi di database, inoltre, è ufficialmente consentito utilizzare parti del codice e oggetti di questa configurazione durante lo sviluppo delle proprie configurazioni (a allo stesso tempo, puoi vendere / trasferire le tue configurazioni, stabilendo che per utilizzarle devi acquistare una configurazione da 1C).

Dopo questo acquisto una tantum, devi solo iscriverti agli aggiornamenti e pagare per il rinnovo dell'abbonamento una volta all'anno, il cosiddetto. SUO. A proposito, l'abbonamento è molto economico, più o meno come due licenze client.

In generale, tutto ciò sembra molto redditizio.

Il secondo "gustoso", ma già con un unico neo, in più, è la presenza di configurazioni abbastanza universali dalla stessa 1C e dai partner.

A proposito di versatilità

Il concetto di "universalità" è stato definito da un insegnante di scuola nel campo della NVP usando come esempio maschere antigas: ce ne sono di universali che proteggono da molti fattori dannosi, ma il grado di protezione è medio o inferiore alla media, e ci sono anche maschere antigas specializzate che proteggono da un impatto, ma con un alto grado di protezione. Finora non ho visto una definizione più precisa.
E le configurazioni di 1C sono universali. In pratica, non ci sono compiti in cui potrebbero essere utilizzati completamente senza modifiche. Tuttavia, 1C è riuscita a creare un set universale di strumenti che copre le esigenze della maggior parte dei settori del business moderno.


Il terzo vantaggio (e anche con un unico neo) è una rete di affiliati e centri di formazione, sia per utenti che per programmatori e amministratori alle prime armi. Buona idea, ma qualità molto mediocre della sua implementazione. Tuttavia, la prevalenza e il marketing aggressivo sono uno dei motivi della diffusa popolarità di 1C nel nostro Paese (e questo è anche il motivo della negatività, dell'invidia e dell'odio).

Un cucchiaio di catrame

Avendo dipinto 1C in tutti i colori, sarebbe ingiusto non parlare dei suoi difetti, ed esistono già:

Rilasci instabili- sia nella piattaforma che nelle configurazioni, c'è un numero enorme di errori e glitch. E questo è nelle versioni ufficiali. Prima del rilascio della versione ufficiale, viene rilasciata una "versione di revisione". C'è anche un feedback per l'invio delle descrizioni dei bug da accettare per la correzione. Tuttavia, o le versioni per la revisione non sono particolarmente apprezzate o la stessa società 1C non ha il tempo di elaborare tutte le lettere entro la data di rilascio, ma il fatto è. Ogni volta che aggiorni la piattaforma o la configurazione, puoi imbatterti nelle "sorprese" più inaspettate. 1C è stato ripetutamente chiamato a testare i suoi sviluppi in modo più approfondito.

Franchisee (di seguito denominati franchisee). Idealmente, come previsto, queste avrebbero dovuto essere aziende con specialisti qualificati che conoscono i principi di base del funzionamento delle configurazioni e delle piattaforme. Queste stesse aziende dovrebbero vendere la piattaforma, la configurazione e il supporto, "rifinire" leggermente le configurazioni universali per soddisfare i requisiti del cliente (e talvolta adattare questi requisiti), cercando di modificare minimamente la configurazione standard. Per non complicare troppo i futuri aggiornamenti. Ma in realtà è vero il contrario.

Quando vengono vendute nuove licenze a un cliente, le franchigie ricevono il 50% del loro valore (meno l'imposta sul reddito del 13% di questo 50%). Allo stesso tempo, non è necessario produrre nulla da soli, è sufficiente trasferire le chiavi a 1C all'acquirente.

Quando prestano servizi, gli affiliati non pagano nulla alla società 1C (ad eccezione delle quote associative), ma devono pagare lo stipendio del dipendente. Devi anche spendere soldi per le tasse allo stato - PFR e imposta sul reddito.

Si scopre che sia redditizio sia per 1C che per i franchising vendere licenze e non è redditizio fornire ulteriore supporto. Allo stesso tempo, affinché un cliente possa acquistare un programma, deve inizialmente essere adattato alle sue esigenze. E devi pagare per il lavoro. E qui, per risparmiare, sono coinvolti studenti, alunni, non specialisti, che possono essere pagati poco, e talvolta non pagati affatto, possono anche non essere registrati nello stato (lavoreranno ufficiosamente, visto che lì è qualcosa con cui pagare). Il risultato è un enorme numero di vendite con una qualità molto bassa. I miglioramenti, di norma, influiscono su meccanismi importanti e complicano gli aggiornamenti futuri. Ma nella fase di vendita, né 1C né l'affiliato sono interessati.

Prendo atto che non è tanto colpa degli uomini d'affari del franchising di 1C. Concentrandosi sulle vendite, non le importava affatto del supporto (non sto parlando di scuole ora, ma del fatto che il supporto dovrebbe essere vantaggioso sia per l'affiliato stesso che per 1C).

Supporto tecnico. Nella comprensione di 1C, il supporto tecnico è la fornitura dell'accesso alla sezione "aggiornamento" per la piattaforma e le configurazioni, nonché a sezioni informative contenenti una descrizione di alcuni meccanismi e funzionalità di 1C. Inoltre, al momento dell'iscrizione, viene fornito un disco con i materiali specificati. C'è anche un forum (molto scarso rispetto al folk). È ancora possibile inviare un'e-mail a 1C, ma senza nemmeno sperare che risponda (o il robot risponderà "La lettera è stata inviata al dipartimento di sviluppo". In termini di sviluppo, Yandex.Search e l'aiuto costruito nel configuratore forniscono molto più supporto.

Epilogo

Sono passato a 1C nel 2008 e prima ancora lavoravo in un'azienda sviluppando il proprio programma di contabilità (Delphi 5, poi Delphi 7). Innanzitutto, ho conosciuto la piattaforma 1C Enterprise 7.7 e sono rimasto colpito dalla facilità con cui sviluppa report. Allo stesso tempo, era chiaro che i report venivano generati molto più a lungo rispetto a simili meccanismi Delphi, ma i contabili non erano particolarmente preoccupati per questo. Aspettare qualche minuto invece di secondi non è un problema. Al contrario, puoi dipingerti le unghie lì, prendere una tazza di tè o discutere delle ultime notizie senza alzare lo sguardo dal lavoro. La stragrande maggioranza dei contabili in questi giorni sono donne.
Tuttavia, l'interfaccia 7.7 era molto limitata e il set di oggetti era molto scarso. Ho cercato alternative. Ho conosciuto componenti esterni, ma non sono arrivati ​​\u200b\u200ball'applicazione pratica, tk. il capo ha deciso che era giunto il momento per noi di passare alla 8.1 (sì, la 8.2 allora non esisteva), e in questa piattaforma, come programmatore, ho trovato tutto ciò che prima mi mancava.
Attualmente ho autorità tra i colleghi, così come i clienti che sono venuti da me dal franchising. Probabilmente non avranno mai più a che fare con i francesi.


In generale, sono abbastanza soddisfatto del lavoro nella piattaforma 1C Enterprise 8. È adatto per risolvere la maggior parte delle attività e attività contabili utilizzando un database.

Tag: aggiungi tag