Come configurare smartphone e PC. Portale informativo
  • casa
  • Notizia
  • 1s operatori logici. Operazioni logiche (impresa 1s)

1s operatori logici. Operazioni logiche (impresa 1s)

Questo articolo è una sorta di risposta alla pubblicazione "Perché 1C è cattivo e perché i programmatori 1C sono così antipatici". Mi occupo di programmazione 1C da molti anni e voglio dire che ci guardano di traverso proprio a causa di tali autori di articoli. Diamo un'occhiata a quello che abbiamo ora.

piattaforma

Abbiamo una piattaforma e delle configurazioni scritte per questo.

L'aggiornamento della piattaforma offre funzionalità aggiuntive, rimuove una serie di bug e, naturalmente, ne porta alcuni. In linea di principio, a mio personale parere, lamentarsi del fatto che dopo l'aggiornamento della piattaforma il lavoro in ufficio si sia interrotto non è giusto. In primo luogo, i backup del database prima dell'aggiornamento dovrebbero evitare problemi con i database. Ebbene, nessuno ha annullato l'opportunità di tornare alla vecchia piattaforma. È come incolpare Microsoft o gli autori del software libero per il fatto che dopo il rilascio della patch/aggiornamento tutto è andato storto, e il pensiero di fare una copia dei dati non ti è venuto in mente. Sì, ora ci sono problemi con le chiavi del software. Ma puoi usare quelli hardware (sono un po' più costosi), oppure puoi installare patch non ortodosse per il periodo dei lavori di manutenzione per ripristinare il funzionamento dell'ufficio, che aiuteranno temporaneamente a risolvere il problema con l'assenza/incapacità di il tasto. Più importante è il lavoro di un ufficio di 30-40 persone.

Configurazioni

Ecco dove scorrazzare la critica, ma andiamo con ordine.

Diciamo che abbiamo una normale organizzazione commerciale e ci basta la funzionalità della configurazione Trade Management 10.3/11.

Qui abbiamo due opzioni per l'utilizzo di questo prodotto software:

1. Utilizzare solo le funzionalità di base e aggiornare mensilmente quando vengono rilasciate nuove versioni della configurazione.
2. Non aggiornare affatto e, se necessario, aggiungere le funzionalità di cui abbiamo bisogno.

In effetti, la seconda opzione viene utilizzata più spesso. La configurazione è impostata, configurata e per tutta la vita dell'organizzazione non viene praticamente aggiornata. Massimo - i moduli stampati vengono corretti in conformità con le normative. Questo è fondamentalmente. Perché costantemente soffrire e trasferire cambiamenti da un rilascio all'altro non è chiaro.

Naturalmente, si può obiettare e dire che l'organizzazione ha, ad esempio, la contabilità. Consideriamo questa opzione.

La contabilità deve essere costantemente aggiornata a causa dei cambiamenti nella legislazione, delle aliquote dei fondi fiscali e pensionistici e di altre fatiche quotidiane dei contabili.

Per trasferire i dati tra commercio e contabilità, vengono solitamente utilizzate regole di scambio. Questa è una sorta di regola scritta in xml, che descrive quali oggetti dati vengono scaricati, come vengono caricati; è inoltre possibile specificare lavorazioni aggiuntive prima, dopo al momento dello scarico/carico. Se la nostra configurazione di trading è invariata, non tocchiamo le regole di caricamento (con rare eccezioni, se ci sono stati cambiamenti cardinali improvvisamente). Non cambieremo nemmeno le regole di caricamento molto spesso. Il fatto di ricevimento/vendita della merce sarà sempre trasferito. Ma la procedura per il calcolo delle tasse e altro sarà già calcolata nella contabilità aggiornata e ciò non influirà in alcun modo sulla configurazione del trading.

Penso che sia stupido ricordarlo, ma oso ancora. Vale sempre la pena fare dei backup prima di aggiornamenti e modifiche. Bene, devi ammettere che è sciocco lamentarsi del fatto che dopo l'aggiornamento tutto si è rotto e l'intera azienda vale la pena. Perché non c'è modo di vendere, scrivere o chiamare. Tutti i contatti, gli account e le informazioni nel database.

Utilizzo di 1C in varie aree di business

Sì, la società 1C è un monopolista nel mercato del software progettato per automatizzare la contabilità e la presentazione dei rendiconti finanziari.

Se stiamo parlando del segmento delle piccole imprese, per la contabilità nella maggior parte delle aziende è possibile utilizzare quasi tutti i programmi un po' più complicati delle tabelle pivot in Excel. Contabilità per merce/servizi a cottimo, contabilità fornitori/debiti, buste paga. La rendicontazione è possibile attraverso programmi di terze parti, in cui vengono semplicemente inseriti i dati finali.
Se l'azienda è più grande, i concorrenti di 1C sono Navision, Oracle, in esempi molto grandi è SAP.

Ma qui ci troviamo di fronte a un'altra specificità. La nostra legislazione cambia abbastanza spesso. E se le aziende straniere sono coinvolte nel mantenimento della pertinenza dei loro prodotti software, non sempre tengono il passo con i cambiamenti. Poiché il numero di implementazioni dei "programmi NON 1C" è ridotto, il costo di proprietà diventa elevato. È difficile trovare uno specialista in grado di aggiornare rapidamente (a seconda della disponibilità di un aggiornamento) o impostare/configurare un prodotto software esistente.

1C presenta indubbi vantaggi con il collegamento di apparecchiature commerciali (bilance, scanner, terminali, tabelloni). Inoltre, nelle configurazioni standard, ciò avviene a livello di utente. Aggiungiamo la possibilità di collegare moduli di elaborazione e stampa esterni per espandere le funzionalità, ricevere report aggiuntivi senza apportare modifiche alla configurazione. Di conseguenza, se ti avvicini correttamente, non ha senso arrampicarsi "dentro" la configurazione.

Un'altra cosa è che è più facile ed economico montare una stampella che cadrà dopo l'aggiornamento e metterà il cliente sull'ago. Quindi annaffia costantemente 1C e dì che questo è quanto spesso lo rilasciano, e vengono dal cliente con la stessa frequenza e ottengono dei soldi da lui.

Mi sembra che il motivo principale dell'atteggiamento negativo verso 1C sia che il codice è aperto. Nessuno ha visto come sono scritti Word o Navision e nessuno salirà lì per aggiungere i propri pulsanti, che agiranno in modo completamente diverso da quello che intendevano gli sviluppatori. È sciocco scrivere che tutto è aggiornato, anche quello che non uso. Non aggiornare il modulo responsabile dei segnalibri nel browser, non lo uso. Oppure le intestazioni e i piè di pagina in Word non sono affatto necessari, rimuoverli dall'aggiornamento. Se non ti piace, non aggiornarlo, o durante l'aggiornamento, leggi cosa è cambiato.

Da parte mia aggiungo che non sono un rappresentante di aziende in franchising o un partner. Mi occupo di automazione contabile per 1C da più di 7 anni. Se sei interessato, posso dirti di più sulla complessità della contabilità nelle realtà del nostro tempo.

Attenzione! Ecco una versione di prova della lezione, i cui materiali potrebbero non essere completi.

Accedi come studente

Accedi come studente per accedere ai contenuti della scuola

Linguaggio di programmazione interno 1C 8.3 per programmatori principianti: semplici espressioni logiche in 1C

Nell'ultima lezione, abbiamo imparato come dare nomi e inserire i loro valori dall'utente.

Ottieni forza e pazienza. Le lezioni 5 e 6 saranno difficili, ma molto importanti per un'ulteriore comprensione della programmazione in 1C. Pertanto, se almeno qualcosa rimane incomprensibile o non divulgato, rileggi, medita, fai domande.

Semplici espressioni booleane

Oggi, ai tipi di dati già studiati (stringa, numero e data), ne aggiungeremo un altro - logico genere. Può assumere solo due valori: Vero o Menzogna.

Valore booleano ( Vero o Menzogna) è il risultato di qualche espressione logica.

Un'espressione logica è un'espressione composta utilizzando operazioni di confronto. Puoi confrontare numeri, date, stringhe e altri dati. Stai leggendo una versione di prova della lezione, si trovano le lezioni complete. Un'espressione booleana può dirsi vera ( Vero) o falso ( Menzogna).

Le operazioni di confronto sono le seguenti:

Penso che sia intuitivamente chiaro cosa significhi ciascuna delle operazioni.

Si legge, ad esempio, così:

  • 1 = 1 ("uno è uguale a uno").
  • 4 <>5 ("quattro non è uguale a cinque")
  • 3 > 1 ("tre è maggiore di uno").

Attiro la vostra attenzione sul fatto che i tre esempi di espressioni logiche elencate assumono il valore Vero perché sono tutti corretti.

Diamo un'occhiata a un esempio:

Compito numero 14. Specificare per ogni espressione logica il suo risultato - Vero o Menzogna.

  1. "Venere" = "Giove"
  2. "Venere"<>"Giove"
  3. 123 = 321
  4. 123 < 321
  5. 123 <= 321
  6. 123 <= 123
  7. "20000101" <> "20140101"
  8. "20000101" = "20000101"
  9. "20140101" > "20120101"
  10. 25 + 25 = 50
  11. 2 * (10 + 10) > 50
  12. "Yuri" + "Gagarin" = "Yuri Gagarin"

Prova a rispondere tu stesso a tutte le domande. Stai leggendo una versione di prova della lezione, si trovano le lezioni complete. Quindi guarda le risposte di seguito e prova a capire se hai commesso un errore da qualche parte.

  1. "Venere" = "Giove" ( Menzogna, le stringhe non sono uguali tra loro e l'espressione afferma che sono uguali).
  2. "Venere"<>"Giove" ( Vero, le stringhe non sono uguali tra loro, come indicato nell'espressione).
  3. 123 = 321 (Menzogna, poiché i numeri non sono uguali tra loro e l'espressione afferma che sono uguali).
  4. 123 < 321 (Vero, poiché 123 è minore di 321, come si legge nell'espressione).
  5. 123 <= 321 (Vero, poiché 123 è minore di 321, e questa affermazione è vera se il numero di sinistra è minore o uguale al numero di destra).
  6. 123 <= 123 (Vero, poiché 123 è uguale a 123, e questa affermazione è vera se il numero di sinistra è minore o uguale a destra).
  7. "20000101" <> "20140101" (Vero, poiché la data di sinistra 01/01/2000 non è uguale al 01/01/2014, come indicato nell'espressione).
  8. "20000101" = "20000101" (Vero, poiché la data di sinistra 01/01/2000 è 01/01/2000, come indicato nell'espressione).
  9. "20140101" > "20120101" (Vero, poiché il primo gennaio 2014 è maggiore del primo gennaio 2012, come si legge nell'espressione).
  10. 25 + 25 = 50 (Vero, poiché 25 più 25 fa davvero cinquanta, come si legge nell'espressione).
  11. 2 * (10 + 10) > 50 (Menzogna, poiché il risultato dell'espressione a sinistra è 40 e 40 è inferiore a 50, anche se l'affermazione dice diversamente).
  12. "Yuri" + "Gagarin" = "Yuri Gagarin" ( Vero, poiché la somma delle stringhe "Yuri" e "Gagarin" forma una stringa "Yuri Gagarin", che è uguale alla stringa a destra, come indicato nell'espressione).

Facciamo il contoun computer

Ma cosa noi stessi consideriamo "vero" o "falso". Dopotutto, abbiamo un computer a portata di mano! Affidiamo a lui questo compito, e allo stesso tempo controlliamo noi stessi.

Ad esempio, controlliamo l'espressione 2 * (10 + 10) > 50.
Per fare ciò, scriviamo il seguente programma:

Rapporto(2 * (10 + 10 ) > 50 );

Se lo eseguiamo, il computer darà "No", il che significa che il risultato è Menzogna.

Come ha calcolato questa espressione?

  1. Il computer ha visto il comando Segnala.
  2. Ho esaminato quale parametro stiamo passando a questo comando.
  3. Ho visto che l'espressione logica 2 * (10 + 10) > 50 è stata specificata come parametro.
  4. Ha iniziato a calcolare il risultato di un'espressione logica.
  5. Ho visto che l'espressione è composta dal lato sinistro 2 * (10 + 10), dal lato destro 50 e dal segno maggiore di tra di loro.
  6. Ho contato il risultato del lato sinistro e ho scoperto che è pari a quaranta.
  7. Guardò di nuovo l'espressione, solo nella forma già semplificata 40 > 50, e poiché 40, ovviamente, sono meno di 50, dedusse "No".

Compito numero 15. Calcola tutti gli esempi di espressioni logiche dell'attività precedente sul computer.

Ad esempio, l'espressione "Venere" = "Giove", il cui valore, come abbiamo scoperto, è pari a Menzogna.

Report("Venere" = "Giove" );

Il computer visualizza "No" all'avvio, il che significa che il risultato è effettivamente Menzogna e lo abbiamo giustamente calcolato noi stessi.

Soluzione di riferimento. Per prima cosa scriviamo noi stessi il codice, lo controlliamo sul computer (come tutti i programmi di esempio delle lezioni), solo dopo controlliamo












1. Introduzione

Il linguaggio del programma 1C è l'oggetto strutturale. Questo linguaggio può essere chiamato come linguaggio intermedio tra linguaggi di alto livello e linguaggi di scripting come VBA.
Al suo interno, l'applicazione 1C funziona, per così dire, con due moduli. Il primo modulo è il core o motore. Si tratta infatti di un compilatore che traduce sullo schermo o sulla stampante il codice e la descrizione di moduli stampati e grafici. Il secondo modulo è il database con cui lavora il primo modulo. Entrambi i moduli sono interconnessi e non possono funzionare in modo indipendente. Il secondo modulo è responsabile dell'accesso al database, nonché della manipolazione delle informazioni nel database.
In 1C versione 7.7, sono presenti 1 meccanismo di accesso al database integrato e un meccanismo che utilizza un'interfaccia di accesso al database esterna.
Il primo meccanismo è l'accesso al database in formato dbf (l'accesso infatti non è al database, ma a ogni singolo file). La versione di dbf in uso è DBASE II, con le limitazioni e le carenze associate di questa versione precedente.
Il secondo meccanismo è l'accesso al database in formato MS SQL Server tramite una connessione ODBC (il cosiddetto provider di accesso ODBC a MS SQL Server), fornita con MS SQL Server. Inizialmente, la versione 7.7 è stata sviluppata in SQL Server 6.5 (più precisamente, è stata sviluppata dalla versione 7.5, che funzionava su versioni precedenti di SQL Server). Al momento della stesura di questo documento, la versione corrente di 1C (relè 7.70.027) supporta le versioni di SQL Server 6.5, 7.0. SQL2000, non ci sono informazioni sul supporto di SQL 2005. Ma l'autore ha eseguito un test per connettersi a SQL Server 2005 versione 7.70.027 e il test non è riuscito. Quelli. si può presumere che ufficialmente la versione 27 non supporti SQL Server 2005 (ma questo problema può essere risolto leggendo qui:).
Per capire come funziona 1C, considera come 1C memorizza e come avvia il codice per l'esecuzione. Tutto il codice 1C si trova fisicamente nel file 1Cv7.md o nei report di elaborazione esterni (*.ert) (è anche possibile caricare moduli da file esterni, ma questo è un caso speciale e non verrà preso in considerazione). Il codice viene avviato per l'esecuzione in più fasi. Ciò significa che il codice viene compilato ed eseguito secondo necessità (più precisamente, quando si accede all'oggetto o alla forma dell'oggetto). L'unica eccezione è il modulo globale, la sua compilazione avviene al momento dell'avvio di 1C stesso (più precisamente, dopo l'inizializzazione del database). I moduli rimanenti non vengono compilati al momento dell'avvio di 1C, ma vengono compilati solo quando si accede a questo modulo tramite un modulo o un oggetto. Ciò porta al fatto che è necessario controllare da soli il controllo della sintassi o cercare errori di sintassi già nel momento in cui l'applicazione è in esecuzione.

2. Struttura dell'oggetto 1C

Logicamente, il codice 1C è memorizzato in moduli (un modulo nella comprensione del linguaggio 1C è un codice che viene lanciato per l'esecuzione). In 1C, tutti i moduli possono essere suddivisi in 3 grandi categorie: 1 - modulo globale, moduli oggetto 1C, moduli di elaborazione e reporting. Dal punto di vista di 1C, un oggetto è inteso come parte di un insieme comune di entità che si trova in un particolare database che ha le stesse proprietà, ha lo stesso insieme di metodi ed esegue lo stesso tipo di funzioni con le informazioni o con il Banca dati. Va notato che non tutti gli oggetti 1C hanno moduli, ma allo stesso tempo alcuni oggetti hanno più di un modulo. Di solito i moduli sono allegati ai moduli. Dal punto di vista di 1C, un modulo è una finestra con un insieme dei suoi attributi e dettagli. Non tutti gli oggetti hanno le proprie forme, mentre alcuni oggetti hanno diverse forme. Questo di solito è sotto forma di un elemento specifico o sotto forma di un elenco di elementi.
Va notato che 1C funziona con il database, allo stesso tempo alcuni oggetti non sono memorizzati nel database.
Quelli. La prima classificazione degli oggetti può essere basata sul fatto che le informazioni sugli oggetti siano archiviate nel database o meno nel database, chiamiamo il primo tipo di oggetti Informativo e il secondo tipo - Non informativo. Tutti gli oggetti informativi sono memorizzati nel database, in una o più tabelle. Lavorare con oggetti informativi implica sempre il posizionamento su una voce specifica nella tabella che identifica l'oggetto. Ciò significa che per accedere a un tale oggetto, è necessario in qualche modo accedere al record richiesto nel database. Di solito, i metodi 1C vengono utilizzati per tale transizione.
Un'ottima caratteristica di 1C è che alcuni degli oggetti appena creati possono avere il tipo di un oggetto esistente. Tali oggetti sono chiamati generatori di tipi. Quei tipi che non formano dati per oggetti appena creati non formano tipo. Tutti gli oggetti che generano tipi sono informativi, ad es. sono memorizzati nel database. Nella comprensione di 1C, gli oggetti generatori di tipi sono oggetti aggregati.
Allo stesso tempo, in 1C esistono tipi di base che esistono indipendentemente dagli oggetti creati. Questi tipi sono anche memorizzati nel database, ma questi dati non sono oggetti dal punto di vista di 1C, ma sono attributi di oggetti informativi.
Inoltre, un'importante classificazione degli oggetti è la loro tipizzazione in base alle caratteristiche per cui sono suddivisi nella descrizione stessa del database. Questi sono gli oggetti:
  • Costanti.
  • Libri di riferimento.
  • Documentazione.
  • Registri dei documenti.
  • Enumerazioni.
  • Rapporti.
  • In lavorazione.
  • Piani di conto.
  • Tipi di sottoconto.
  • Operazione.
  • Cablaggio.
  • Registri.
  • Diari di calcolo.
  • Tipi di calcoli.
  • Gruppi di calcolo.
  • Calendari.
Inoltre, ci sono oggetti non di digitazione che non sono informativi e che non sono presenti nell'albero delle impostazioni di configurazione:
  • Testo.
  • xbase.
  • Risultati contabili.
  • cablaggio corretto.
  • Regola di ricalcolo.
  • Sotto sequenza.
  • periodico.
  • Elenco di valori.
  • Tabella dei valori.
  • Tavolo.
  • Richiesta.
  • Foto.
  • FS (file system).
Quasi tutti i tipi di oggetti elencati sono accessibili nei moduli tramite la funzione di creazione degli oggetti CreateObject().La struttura generale delle classificazioni degli oggetti descritte può essere rappresentata come una matrice:
Tipi di oggetti Informativo tipizzazione CreaOggetto() Disponibilità di moduli
Costanti
Libri di riferimento + + + +
Documentazione + + + +
Diari di documenti +
Enumerazioni +
Rapporti +
in lavorazione +
Piani dei conti + + + +
Tipi di sottoconto +
Operazione + + +
Cablaggio + +
Registri +
Diari di calcolo + +
Tipi di calcoli + +
Gruppi di calcolo
Calendari +
Testo +
xbase +
Risultati contabili +
Messaggi corretti + +
Regola di ricalcolo +
Sotto sequenza + +
periodico +
Elenco di valori +
Tabella dei valori +
Tavolo +
Richiesta +
Foto +
FS (file system) +
Numero +
Linea +
l'appuntamento +

3. Lingua 1C. Modularità

Come già accennato, l'intero testo del codice del programma è suddiviso in moduli.
In generale, i moduli possono essere strutturati in questo modo:
Banca dati separata
modulo globale.
Moduli di directory.
Moduli Forme di elenchi di directory.
Modulo elemento directory.
Modulo gruppo directory
Moduli di documenti.
Modulo modulo documento.
Modulo documenti.
Moduli di registro dei documenti.
Modulo modulo diario del documento.
Moduli Piano dei conti.
Modulo modulo account.
Moduli di moduli di elenchi di piani dei conti.
moduli operativi.
Modulo operativo.
Moduli del modulo elenco operazioni.
moduli di cablaggio.
Moduli del modulo dell'elenco dei giornali di registrazione.
Moduli di registro di calcolo.
Moduli di moduli di elenchi di giornali di calcolo.
Moduli di tipi di calcolo.
Moduli di calcolo.
Moduli di rapporto.
Modulo modulo di segnalazione.
moduli di elaborazione.
Modulo di elaborazione.
Quelli. all'interno dello stesso database, da ciascun modulo oggetto è disponibile solo il modulo globale. Tutti gli altri moduli sono isolati e la loro interconnessione è impossibile senza riferimenti a uno specifico oggetto posizionato. Ma allo stesso tempo, gli attributi di primo livello (e parte dei metodi definiti come funzioni di sistema) sono disponibili da ciascun modulo. Va notato che le funzioni e le procedure definite dall'utente scritte non sono metodi di oggetti e non possono essere chiamate come metodi.
Il livello di isolamento di attributi e variabili va dal basso verso l'alto. Quindi le variabili del modulo globale sono disponibili in tutti i moduli, proprio come le funzioni e le procedure del modulo globale. Allo stesso tempo, gli attributi degli oggetti sono disponibili in tutti i moduli di questi oggetti, ma i metodi sono divisi in quelli che sono disponibili e non disponibili.

4. Disposizioni generali per i moduli di scrittura

La semantica del linguaggio 1C è tale che l'intero testo del modulo è suddiviso in affermazioni e commenti. La fine dell'operatore è il carattere ";". Gli operatori sono composti da espressioni.

4.1 Commenti

I commenti in 1C sono solo riga per riga (non ce ne sono blocco per blocco). un commento inizia con due caratteri "//" e termina con un terminatore di riga (cioè fino alla fine della riga).

4.2. Nomi di variabili, procedure e funzioni

Il nome di una variabile, di una procedura definita dall'utente o di una funzione può essere qualsiasi sequenza di lettere, numeri e caratteri di sottolineatura "_", che iniziano con una lettera o un carattere di sottolineatura "_". I nomi appena creati non devono corrispondere a parole della lingua riservata o ai nomi di procedure e funzioni esistenti che sono disponibili al momento dell'esecuzione. Il riconoscimento dei nomi di variabili, procedure e funzioni avviene senza tener conto del caso delle lettere.

4.3. parole riservate

Il seguente parole chiave sono riservati e non possono essere utilizzati come nomi di variabili generate e procedure e funzioni dichiarate. In questa versione della lingua, ciascuna delle parole chiave ha due rappresentazioni: russo e inglese. La rappresentazione inglese è tradizionale per i linguaggi di programmazione. Le parole chiave nella presentazione in russo e inglese possono essere liberamente mescolate in un testo sorgente. Il caso delle lettere chiave non è importante. Di seguito è riportato un elenco di parole chiave in entrambe le viste.

ElseIf

StrLength

Finisci se

Contesto

Procedere

abortire

EndProcedura

Funzioni finali

Un avvertimento

EndCycle

Procedura

4.4. Struttura del modulo del programma

La struttura del modulo del programma può essere suddivisa nelle seguenti sezioni:

  • sezione di definizione delle variabili;
  • sezione procedure e funzioni;
  • sezione del programma principale.

In un particolare modulo di programma, una qualsiasi delle sezioni potrebbe mancare.

Sezione di definizione delle variabili viene posizionato dall'inizio del testo del modulo alla prima istruzione della procedura o dell'istruzione Function o qualsiasi istruzione eseguibile. Questa sezione può contenere solo istruzioni di dichiarazione di variabili.

Sezione Procedure e Funzioni viene inserito dalla prima istruzione di una procedura o di una funzione a qualsiasi istruzione eseguibile al di fuori del corpo di una procedura o di una dichiarazione di funzione.

Sezione principale del programma viene posizionato dalla prima istruzione eseguibile al di fuori del corpo delle procedure o delle funzioni fino alla fine del modulo. Questa sezione può contenere solo istruzioni eseguibili. La sezione del programma principale viene eseguita nel momento in cui il modulo viene avviato per l'esecuzione (vedi "Tipi di moduli di programma"). Di solito, nella sezione principale del programma, ha senso inserire istruzioni per l'inizializzazione delle variabili con alcuni valori specifici che devono essere eseguiti prima della prima chiamata a una qualsiasi delle procedure o funzioni del modulo.

5. Formato per la descrizione di espressioni e conversioni di tipo

Come già accennato, la semantica del linguaggio 1C è tale che la componente principale degli operatori sono le espressioni. Le espressioni, a loro volta, sono costituite da numeri, valori di stringa o valori del tipo "data", operatori linguistici integrati, attributi e funzioni collegati da simboli di operazioni aritmetiche.

5.1 Tipi di dati nelle espressioni e loro formato.

Diamo un'occhiata più da vicino agli elementi delle espressioni e alle operazioni aritmetiche utilizzate per lavorarci.

Numeri

I numeri sono scritti come numeri da 0 a 9; se è necessario annotare un numero frazionario, la parte intera è separata dalla parte frazionaria da un punto ".".
Per esempio:
45 è un numero intero positivo
-12 - numero intero negativo
16.67 è un numero positivo frazionario.

Per lavorare con i numeri, puoi usare le operazioni aritmetiche fornite (vedi sotto).

Date

Le date vengono scritte come una sequenza di caratteri in questo formato:
"GG.MM.AA"
o
"GG.MM.AAAA",
dove:
DD è il giorno del mese. Deve essere scritto a due cifre: se il giorno del mese è inferiore a 9, viene messo 0 davanti, ad esempio "02";
MM - numero del mese, scritto anche come due cifre;
YY (YYYY) - anno, può essere scritto con due o quattro cifre.

Ad esempio: "01.01.2007"

Si prega di notare che le date sono fornite solo tra virgolette singole. Con tale record, una sequenza con un carattere come "01/01/2007" sarà percepita ed elaborata dal sistema 1C:Enterprise come una data e non come una sequenza di caratteri che "rappresentano" la data. Perché questo è importante - lo diremo di seguito.

Oltre alle date specifiche, il linguaggio integrato ha una "data vuota". Una data vuota è data dalla sequenza "00.00.00". Di solito, per il confronto viene utilizzata una data vuota. Puoi anche ottenere una data vuota usando il metodo di conversione Date(0).

Nota.

Non esiste un tipo Time in 1C, proprio come non esiste un tipo DateTime.

Valori stringa

I valori stringa sono sequenze di caratteri racchiusi tra virgolette doppie o singole. Esempio: "Esempio di stringa".

Se è necessario specificare le virgolette in un valore stringa, è necessario utilizzare 2 virgolette di seguito. Ad esempio, quando si scrive nella formula del contenuto dell'operazione, un valore stringa del modulo

"Esempio di stringa ""stringa tra virgolette"""

formerà una stringa nel contenuto dell'operazione

Esempio di stringa "stringa tra virgolette"

Nell'esempio considerato in un valore stringa:
il primo carattere di virgolette è la virgoletta di apertura del valore della stringa nel suo insieme;
2 virgolette di fila sono le virgolette di apertura e nella stringa risultante sono sostituite da una virgoletta;
3 virgolette di fila è un gruppo composto da: 2 virgolette - la virgoletta di chiusura, che sono sostituite da una virgoletta nella stringa risultante, e una virgoletta - la virgoletta di chiusura del valore della stringa nel suo insieme.

Come mostra la pratica, per qualche motivo è l'indicazione delle virgolette nei valori di stringa che causa alcune difficoltà. Anche se non c'è nulla di complicato in questo, devi solo ricordare una semplice regola: la prima e l'ultima virgoletta sono un carattere ciascuna e tutte le virgolette al loro interno sono due caratteri ciascuna.

I valori di stringa hanno il concetto di "stringa vuota". Una stringa vuota è data da una coppia di virgolette: "". La stringa vuota ha tutte le proprietà di un valore di stringa "normale", ma non ha lunghezza.

5.2. Operazioni aritmetiche

Consideriamo ora le operazioni aritmetiche utilizzate nel linguaggio 1C (Op - "operando"):

Tuttavia, l'uso di operazioni aritmetiche ha alcune caratteristiche, a seconda dei tipi di operandi.

Insieme a valori numerici puoi utilizzare tutte le operazioni aritmetiche sopra elencate, quasi senza restrizioni.

Per valori di stringaè consentita solo l'operazione "+", che in questo caso viene chiamata operazione "+". concatenazione (adesione). Questa operazione aggiunge un valore stringa a un altro.

Ad esempio, il risultato dell'espressione:

"Stringa di esempio" + "gennaio 2007"

ci sarà una stringa

Esempio di stringa di gennaio 2007

Si noti che i valori di stringa sono concatenati l'uno all'altro senza modifiche: la lunghezza del valore di stringa risultante è uguale alla somma delle lunghezze dei valori di stringa concatenati. Affinché il risultato dell'operazione di concatenazione sia una stringa "leggibile", non dovresti dimenticare gli spazi finali e iniziali nelle stringhe aggiunte, come avviene, ad esempio, nella stringa "Stringa di esempio".

L'operazione di concatenazione può concatenare più di due valori di stringa contemporaneamente. Ad esempio, è valida la seguente espressione:

"Ivanov" + " " + "Ivan" + " " + "Ivanovich"

Il risultato sarà la stringa

Ivanov Ivan Ivanovich

Per valori di tipo data sono consentite operazioni di addizione e sottrazione, ma le regole per l'utilizzo di queste operazioni sono leggermente più complicate rispetto a quelle per numeri e stringhe.

Puoi aggiungere un numero alla data, ad esempio:

"02.08.2000"+2

e il risultato dell'espressione sarà una data successiva al primo termine di un numero di giorni pari al secondo termine. In questo caso, il risultato sarà il 04/08/2000 o il 4 agosto 2000.

"02.03.2000"-2

in questo caso otterremo una data antecedente a quella che si sta riducendo. Va notato che con un tale aumento o diminuzione delle date viene eseguita la corretta transizione tra mesi e anni, ovvero vengono presi in considerazione il numero di giorni in un mese, gli anni bisestili e così via. Nel nostro esempio, il risultato dell'espressione, ovviamente, non sarà 03/00/2000, ma 29/07/2000 - 29 febbraio 2000.

"02.10.2000" - "02.08.2000"

in questo caso il risultato sarà il numero di giorni tra minuendo e sottrarre.

Come probabilmente avrai notato, a differenza delle operazioni con numeri e stringhe, con le operazioni con le date, il tipo del risultato dell'espressione differisce dal tipo degli operandi. Questo dovrebbe essere tenuto presente quando si formulano le formule: se scriviamo un'espressione come quella sopra nella formula per il calcolo della data della transazione, molto probabilmente riceveremo un messaggio di errore.

"02.08.2000" + "02.10.2000"

e non riceveremo nemmeno un messaggio di errore, ma il risultato di tale espressione non ha alcun significato fisico.

Per avere una comprensione più generale delle espressioni, va detto che non solo numeri, stringhe o date specifiche possono fungere da operandi di operazioni aritmetiche, ma anche espressioni che generano numeri, stringhe o date.

Ad esempio, nell'espressione

"Ammortamento per" + Format(WorkingDate(), "D MMMMYYYY")

il secondo operando è espressione, che risulterà in un valore stringa che rappresenta il mese in parole e l'anno della data di lavoro.

5.3. Conversione automatica del tipo

In generale, gli operandi di un'espressione devono essere dello stesso tipo o dello stesso tipo, come determinato dalle regole per la costruzione delle espressioni. Ad esempio, i numeri devono essere aggiunti ai numeri, le stringhe alle stringhe, ma sia la data che il numero possono essere sottratti da una data.

Nel processo di costruzione delle espressioni, potrebbe essere necessario convertire i tipi di dati dei singoli operandi delle espressioni in conformità con le regole. Per fare ciò, il linguaggio integrato dispone di funzioni appositamente progettate per questo. Ecco un esempio di espressione familiare:

"Ammortamento per " + Format(WorkingDate(), "D MMMMYYYY")

In questa espressione, il secondo operando WorkingDate(), che è di tipo "date", viene convertito nel tipo "string" utilizzando la funzione Format().

Tuttavia, il sistema 1C:Enterprise, prima di valutare le espressioni, "può" convertire automaticamente operandi di diverso tipo nello stesso tipo, guidato da tipo di regole di conversione.

Le seguenti regole di conversione sono definite per i tipi di base:

Numero -> Stringa

Se un numero non ha un'impostazione di formato, la sua rappresentazione di stringa è la rappresentazione in virgola fissa completa del numero.

Data -> Stringa

La data convertita in tipo stringa ha la forma GG.MM.AA, dove AA sono due cifre dell'anno, MM è la designazione numerica del mese (01, ..., 12), GG è il giorno del mese.

Stringa -> Numero

La stringa viene convertita in un numero il più lungo possibile. Il numero risultante è considerato il risultato della conversione. (Ad esempio, la stringa "1.22 Glass" verrà convertita nel numero 1.22). Se non c'è nulla all'inizio della stringa che possa essere interpretato come un numero, il risultato è 0.

Data -> Numero

Il risultato di questa conversione è una rappresentazione numerica della data.

Stringa -> Data

Se la riga inizia con qualcosa che può essere interpretato come una rappresentazione di stringa di una data nella forma GG.MM.AA, dove AA è un anno a due cifre, MM è un mese numerico (01, ..., 12), DD è un mese giorno, verrà effettuata la conversione corrispondente. In caso contrario, il valore della data sarà nullo.

Numero -> Data

Si tenta di prendere la parte intera del Numero e interpretarla come una rappresentazione numerica della data. Se il numero è negativo, il risultato è una data zero.

Quindi, prima di tutto, dovresti ricordarlo il tipo del risultato di un'espressione è determinato dal tipo del primo operando di quell'espressione. Gli operandi rimanenti vengono convertiti nel tipo del primo operando. Conoscendo questa regola, è possibile sia prevedere il tipo di risultato dell'espressione nel suo insieme sia controllare il tipo di risultato.

Ad esempio, il risultato dell'espressione

2+"A"

sarà il numero 2, perché il primo operando dell'espressione ha un tipo numerico e il secondo operando, in base alle regole di conversione del tipo, è diventato uguale a 0.

Tuttavia, vale la pena cambiare un po' l'espressione, scrivendola così:

""+ 2+"A"

come cambierà radicalmente il suo risultato: il risultato dell'espressione sarà la stringa "2A".

Perchè è successo? Sopra, abbiamo parlato del concetto di "stringa vuota", che ha tutte le proprietà di un valore di stringa, incluso il tipo "stringa". Nel nostro esempio, la stringa vuota è il primo operando dell'espressione e, quando l'espressione è stata valutata, tutti i suoi operandi sono stati convertiti nel tipo "stringa" in conformità con le regole di conversione del tipo.

Un altro esempio. Sopra, abbiamo sottolineato che il valore del tipo "data" è specificato da una stringa di caratteri tra virgolette singole, e la stessa sequenza di caratteri, ma già tra virgolette doppie, è una stringa. Lo illustreremo ora con esempi.

Come abbiamo già detto, il risultato dell'espressione "08/02/2000"+2 sarà la data 08/04/2000. Ma specificando il primo operando tra virgolette:

"02.08.2000"+2

otteniamo un risultato completamente diverso: la stringa "08/02/20002".

Riassumiamo. È possibile controllare il tipo di risultato dell'intera espressione impostando il primo operando su un valore vuoto del tipo appropriato. Il vantaggio di un tale metodo è quello un valore vuoto non cambia il risultato dell'espressione. Ad esempio, mettendo 0 all'inizio dell'espressione:

0+ "23"+45

come risultato otterremo il numero 68, perché l'espressione nel suo insieme è di tipo "numero" e la stringa di caratteri, in conformità con le regole di conversione del tipo, è stata convertita correttamente nel numero 45.

Qui è opportuno ricordare la data vuota. Quale sarà il risultato dell'espressione "00.00.00"+ 2+"02.08.2000"? Naturalmente, la data è 08/04/2000 (4 agosto 2000), perché il primo operando dell'espressione era un valore di tipo "date".

Al contrario, rimuovendo la data vuota

2+"02.08.2000"

di conseguenza otteniamo 2451761: questo è il numero di giorni dalla data zero al 2 agosto 2000, più altri 2 giorni.

5.4. Operatori di confronto booleano

In 1C, ci sono tali espressioni logiche per i tipi di dati di base.

> Altro

< Меньше

<>Non uguale

Queste espressioni booleane possono essere applicate a tutti e tre i tipi di dati di base.

Per quanto riguarda il tipo di dato numerico, non ci sono problemi, viene confrontato un numero standard (intero o frazionario).

Per i valori di stringa, il confronto avviene con i loro cosiddetti "codici di scansione" (nella comprensione di 1C, tale codice può essere ottenuto utilizzando il metodo SymbolCode()). Il confronto avviene carattere per carattere. Quindi, se vengono confrontate stringhe di uguale lunghezza, i codici dei caratteri corrispondenti vengono confrontati in sequenza. Il confronto avviene fino alla prima disuguaglianza nella stringa (se la stringa è composta da più di un carattere). Se vengono confrontate stringhe di lunghezze diverse, i valori mancanti nell'operatore vengono riempiti con caratteri stringa vuoti (non con uno spazio (Codice= 32)). Quelli. il valore dello spazio (Character(32)) è maggiore del valore della stringa vuota.

Per i tipi di data, viene confrontata la data stessa (ma è possibile che 1C prima di confrontare la data si traduca in un numero uguale al numero di giorni dalla data (0)).

6. Problemi di arrotondamento

Quando conducono la contabilità automatizzata, gli utenti incontrano spesso i cosiddetti "problemi di arrotondamento" - situazioni in cui, a causa dell'arrotondamento di vari valori calcolati, come il costo, qualsiasi tassa, in diverse fasi di calcolo, nei risultati finali compaiono "penny sospesi".

Ad esempio, questa situazione:
Ci sono 16 unità di merce ad un prezzo (IVA inclusa) di 110,50 UAH.
- il costo totale è 110,50 * 16 = 1768 UAH.
- L'IVA (con un'aliquota del 20%, inclusa) è 1768 * 20 / 120 = 294,67 UAH.

Se ora questo prodotto viene venduto "al pezzo" senza alcun sovrapprezzo, l'IVA sarà diversa:
- L'IVA per unità di merce sarà 110,50 * 20 / 120 = 18,42 UAH.
- L'IVA per tutte le 16 unità sarà 18,42 * 16 = UAH 294,72.

La differenza di IVA tra gli incassi "di gruppo" e le vendite "a pezzo" è di 5 copechi. Non avendo alcun valore aggiunto, dovevamo 5 copechi al bilancio sotto forma di tasse da esso.

Si noti che quando le merci sono arrivate, non è stato possibile calcolare l'IVA "per pezzo", calcolando l'importo dell'imposta nel costo di un'unità di merci e moltiplicando per la quantità di merci. In questo caso, potrebbero esserci perdite di arrotondamento ancora maggiori. Ad esempio, se il prezzo di un'unità di merce è di 3 copechi, a cosa corrisponde l'IVA?

Quando si verificano tali "risultati di arrotondamento" va ricordato che il problema non è nel programma, non nelle formule di calcolo, ma nella maggiore (rispetto alla contabilità "manuale") accuratezza e rigore delle regole di calcolo. Tenendo registri manuali, un contabile spesso si permette di aggiustare il risultato del calcolo, nascondendo questi "penny" nei calcoli intermedi.

Nelle tipiche configurazioni 1C:Enterprise, ove possibile, tali situazioni vengono prese in considerazione e gestite correttamente. Ad esempio, se vengono accreditate 3 unità di merce per un valore totale di 1 grivna, le prime due unità verranno cancellate al costo di 33 copechi e l'ultima - 34 copechi. Ma non tutti i casi di arrotondamento possono essere presi in considerazione negli algoritmi, incluso l'esempio sopra con cinque copechi di IVA non può essere elaborato correttamente nel programma.
In alcuni casi, tali errori possono essere evitati fissando un prezzo "congruo" per la merce, in modo che l'IVA sia calcolata completamente, senza lasciare traccia. Ma questa regola si applica solo ai prezzi di vendita: i prezzi di acquisto non devono essere scelti. In altri casi, gli utenti del programma devono analizzare da dove provengono i "penny appesi" e decidere come affrontarli.

7. Limitazioni del sistema V77

l'appuntamento
Data: funziona correttamente nell'intervallo di date dal 01/01/0000 al 31/12/9999
Date(0) corrisponde a 1721061 giorni dalla data 01.01.0000
Quando si tenta di andare alle date meno - 31/12/0001, il sistema non funziona correttamente, poiché funziona dalla data 0, ovvero: Date("01/01/0000")-1 = 01/00/00. La funzione di formattazione per tali date non funziona affatto.

Numero
numero massimo di valori = 64 (64 caratteri).

Linea
Il numero massimo di valori = è limitato dalla memoria fisica libera (nessun file di paging) Si presume che non possano esserci più di 2^32-1 caratteri.

Documento
Documento - È possibile creare 9999 tipi di documenti.
Un documento può avere e funzionare correttamente con non più di 9999 righe.
La lunghezza massima del codice è 20, cioè teoricamente è possibile creare un totale di (27+33+10)^20 documenti (70^20 = 7,9792266297612001e+36).
Non possono essercene più in totale nel sistema (lunghezza ID codice nel log = 9), praticamente la lunghezza ID è di 6 caratteri (3 per UIB) 36^6 = 2176782336 documenti.
Il numero di documenti inseriti con lo stesso tempo è limitato a 36^4 = 1679616

Di norma, lo studio di qualsiasi linguaggio di programmazione inizia con un esempio di scrittura del primo programma semplice ("Hello world!"). Questo viene fatto per mostrare visivamente il lavoro con le costruzioni sintattiche di base. Non faremo un'eccezione a questo modo comune di presentare il materiale quando si impara un nuovo ambiente di sviluppo, e quindi il nostro primo articolo dovrebbe essere considerato allo stesso modo. In esso analizzeremo in dettaglio le risposte alle seguenti domande riguardanti la programmazione sulla piattaforma 1C:Enterprise 8:

  • Dove e con quale aiuto scrivere il codice del programma nel linguaggio 1C integrato?
  • Cosa sono i moduli del programma, quali sono le regole per lavorarci?
  • Che cos'è una variabile, come lavorarci, come e dove dichiararla?
  • Quali sono gli operatori di confronto, assegnazione e condizionale e come li usi?
  • Operazioni booleane: cosa sono e come utilizzarle?
  • Perché sono necessari i loop e come usarli?

L'articolo sarà utile a tutti coloro che non hanno ancora familiarità con lo sviluppo sulla piattaforma 1C:Enterprise 8, ma vogliono imparare a programmare in 1C.

Applicabilità

Il materiale è rilevante per la piattaforma "1C:Enterprise 8" edizioni 8.2. e 8.3.

Variabili e operatori

In questo articolo, iniziamo a studiare il linguaggio integrato 1C:Enterprise 8. Il codice eseguibile è contenuto nei moduli del programma.

Esiste un numero abbastanza elevato di moduli progettati per gestire vari eventi.

Pertanto, l'accesso dell'utente viene elaborato in un modulo e l'elaborazione dell'utente che fa clic su un determinato pulsante viene gestita in un modulo completamente diverso.

Pertanto, ogni modulo descrive il comportamento della configurazione a un certo punto. Il modulo contiene, prima di tutto, una sezione di dichiarazione delle variabili. Quelli. possiamo dichiarare alcune variabili in un modulo.

In futuro potranno essere utilizzati nelle procedure e nelle funzioni di questo modulo. Se una variabile è definita con la parola chiave Export, sarà disponibile al di fuori di questo modulo. Esempio di riga di dichiarazione di variabili:

Rem magazzino, divisione, esportazione magazziniere;

Dopo la dichiarazione delle variabili, c'è una sezione di procedure e funzioni.

Dietro di loro c'è la sezione del programma principale, che verrà eseguito al momento dell'accesso a questo modulo.

Ad esempio, nella sezione principale del programma, è possibile inizializzare variabili, ad es. dai loro alcuni valori iniziali:

Stato=1;
Nuova espressione=2;
risultato=3;

Un modulo può essere pensato come una combinazione di diversi operatori che eseguono diverse azioni di cui abbiamo bisogno.

L'operatore separatore è il carattere ";" (punto e virgola). Questo segno è un segno della fine dell'operatore. Quelli. operatore può essere scritto in questo modo:

Risultato=100x200
+400
-600;

Non importa su quante righe si trovi la dichiarazione.

Certo, spesso è più comodo e più chiaro posizionare l'operatore su una linea, ma a volte gli operatori sono piuttosto lunghi (il numero di linee può ragionevolmente raggiungere diverse decine).

Un punto e virgola può essere omesso nell'istruzione finale di una data costruzione, ad esempio una procedura. Quelli. il seguente codice funzionerà:

Procedura CalculateValue()

Valore Iniziale = 100;
Valore Intermedio = Valore Iniziale / 5;
ValoreFinale = ValoreIniziale+ValoreIntermedio

EndProcedura

Tuttavia, è meglio usare un punto e virgola nell'istruzione finale. È possibile che nel tempo la costruzione continui e l'operatore finale non sarà più definitivo. Dovremo monitorare in modo specifico questa situazione.

Le variabili sono progettate per contenere un valore di qualsiasi tipo di dati. Sono utilizzati per la memorizzazione intermedia delle informazioni per l'elaborazione.

In quasi tutti i moduli software che eseguono alcune azioni, ci sono varie variabili. La digitazione delle variabili in base ai valori nella piattaforma 1C: Enterprise 8 è morbida.

Ad esempio, una variabile può contenere un valore di un tipo di dati e, poche righe dopo, un altro tipo:

Creato = falso;
Creato = vero;
Creato = 100;

Nelle prime due istruzioni, il valore delle variabili è booleano e nella terza viene modificato in un valore numerico. Quelli. la digitazione dipende dal valore assegnato a questa variabile.
Le variabili possono essere dichiarate in due modi:

  • metodo implicito (la menzione a sinistra dell'operatore di assegnazione descrive questa variabile, non c'è una descrizione preliminare della variabile con la parola Variabile, cioè non c'è una sezione speciale della dichiarazione delle variabili);
  • dichiarazione esplicita di variabili (Variable ControlData;). Una dichiarazione esplicita di variabili viene utilizzata, ad esempio, se è previsto il successivo trasferimento di questa variabile in una funzione.

Per i nomi delle variabili viene utilizzata la classica descrizione dell'identificatore. L'identificatore è composto da lettere, numeri e trattini bassi. Un identificatore deve iniziare con una lettera o un trattino basso.

In questo caso, il nome della variabile dovrebbe riflettere il significato di questa variabile. I nomi di variabili di una sola lettera (come A, B, C) sono cattivi esempi. Non riflettono l'essenza delle variabili.

Esempi di nomi di variabili corretti: Counter (variabile incrementale per il ciclo), Contractor. Se il nome della variabile contiene più parole, ogni nuova parola, per chiarezza, dovrebbe iniziare con una lettera maiuscola.

Le parole riservate, come Procedure, Function, Loop, EndCycle, ecc., non possono essere utilizzate nei nomi delle variabili. (questi costrutti sono evidenziati in rosso nel modulo del programma).

Le parole riservate sono operatori linguistici integrati e ce ne sono alcuni. Tutti loro sono presentati in Assistente di sintassi.

Va notato che i tipi di dati non sono parole riservate (ad esempio, Array, Boolean, True, False). Il sistema percepirà correttamente tali nomi di variabili.

Per scrivere il codice del programma, il caso non ha importanza. Ad esempio, la parola Procedura può essere scritta sia con lettere maiuscole che minuscole. Inoltre, le lettere maiuscole e minuscole possono essere intercalate all'interno di una parola.

Non importa per la Piattaforma. Tuttavia, secondo le regole della buona educazione, l'inizio di una parola deve essere scritto con la lettera maiuscola, tutte le altre lettere in minuscolo.

Sulla lingua. Puoi usare sia il russo che l'inglese e una combinazione di due lingue. Se è conveniente per qualcuno, puoi tranquillamente usare l'inglese per scrivere il codice del programma, oltre a combinare russo e inglese. Non importa per la piattaforma.

Molti nomi in inglese sono abbastanza difficili da ricordare. Quando si utilizza una combinazione di due lingue, la leggibilità del codice del programma si deteriora.

Operazioni booleane

Gli operatori di confronto utilizzano molto spesso la logica booleana che restituisce True o False.

Ad esempio, in un operatore condizionale, puoi confrontare: Se Event = Sale Allora l'algoritmo percorrerà un ramo (cioè, se il valore è True), secondo la condizione False, viene eseguito un altro ramo dell'algoritmo.

Le condizioni possono essere piuttosto complesse, possono essere combinate, utilizzando i seguenti operatori: AND, OR e NOT. Quindi, per l'operatore AND:

Verità E Verità = Vero;
Vero E Falso = Falso;
Falso E Vero = Falso;
Falso AND Falso = Falso.

Per l'operatore OR è sufficiente che uno degli operandi sia uguale a True, quindi il valore della combinazione sarà True. Il valore è False solo se entrambi gli operandi sono False.

L'operatore NOT inverte semplicemente il valore corrente (da falso a vero, da vero a falso).

Usando una combinazione di questi operatori, puoi costruire condizioni piuttosto complesse. Quando si compongono dichiarazioni condizionali complesse, tenere conto della precedenza.

L'operatore NOT ha la precedenza più alta, seguito dall'operatore AND, seguito dall'operatore OR. Tutto ciò che è racchiuso tra parentesi ha la precedenza più alta e viene eseguito per primo.

Ad esempio, diamo la priorità (sequenza di esecuzione) per le operazioni nell'espressione precedente:

NOT(Condizione1 O Condizione2) E Condizione3 O Condizione4
1.Risultato1 = (Condizione1 O Condizione2);
2. Risultato2 = NON Risultato1;
3. Risultato3 = Risultato2 AND Condizione1;
4. Risultato = Risultato3 OPPURE Condizione4;

C'è una regola di trasformazione:

NOT (Condizione1 O Condizione2) = NON Condizione1 E NON Condizione2.

Tuttavia, non si dovrebbe sempre sforzarsi di semplificare l'espressione, poiché spesso, logicamente, l'espressione espansa è più facile da leggere.

operatore di assegnazione

L'operatore di assegnazione non deve essere confuso con l'uguaglianza, anche se hanno la stessa ortografia.

Il principio dell'operatore di assegnazione è tale che al valore di sinistra (la variabile sul lato sinistro) viene assegnato il valore che si trova a destra del segno di uguale. Facciamo un esempio:

Variabile1 = Variabile2 = Variabile3;

Alla variabile1 viene assegnato il valore di uguaglianza dalla logica booleana, ovvero True se Variable2 = Variable3 o False in caso contrario.

Quando si esegue il test per la posizione di un programmatore alle prime armi, viene spesso utilizzato il compito: scambiare i valori di due variabili in alcuni punti.

Questo problema viene risolto utilizzando l'operatore di assegnazione e ha due soluzioni.

Soluzione n. 1 utilizzando la variabile temporanea:
TempVar = variabile1;
Variabile1 = Variabile2;
Variabile2 = Variabile Temp;

Soluzione n. 2:
Variabile1 = Variabile1 + Variabile2;
Variabile2 = Variabile1 – Variabile2;
Variabile1 = Variabile1 – Variabile2;

Operatore condizionale

Esiste un tale operatore If, ​​dopo di che è necessario descrivere alcune condizioni (la condizione stessa può essere piuttosto ampia). La condizione è seguita dalla parola Then e dalle istruzioni da eseguire.

Questo può essere seguito dalla parola chiave Else e da una serie di altre affermazioni. Se sono presenti diverse condizioni, puoi utilizzare una serie di parole chiave ElseIf(vedi esempio sotto). L'intera struttura deve essere completata con la parola chiave Finisci se seguito da un punto e virgola.

Oltre alle condizioni semplici e multiple, esiste una forma abbreviata dell'operatore condizionale: ?(Condizione, Espressione1, Espressione2);

Se la condizione è vera, allora il Espressione1, altrimenti - Espressione2. Esempio di codice: ExpensiveItem = ?(Item.Price>100000, True, False);

In pratica, invece di confrontare i record con il valore Vero (Menzogna) genere:

Se variabile = vero allora
e
Se variabile = falso allora

viene effettivamente utilizzata la notazione equivalente:

Se variabile allora
e
Se NON è variabile allora

Operatori ciclici

Per qualsiasi tipo di ciclo è richiesta l'indicazione esplicita della fine di tale ciclo tramite la parola chiave EndCycle. Esistono diversi tipi di cicli.

Ciclo per contatore- un ciclo con un numero fisso di ripetizioni. La condizione per uscire dal loop è che il valore limite sia stato superato. Un esempio di utilizzo per calcolare il valore di A!

A = 5;
Fattoriale = 1;
Per contatore = 1 da un ciclo
Fattoriale = Fattoriale * Contatore;
ciclo finale;

Ciclo per condizione– viene eseguito mentre la condizione di questo ciclo è vera. Esempio:

Somma Resto = 1000;
Prezzo articolo aggiuntivo = 243;
Quantità = 0;
Importo rimanente>0 Ciclo
Quantità = Quantità+1;
Importo residuo = Importo residuo - Quantità * Prezzo dei beni aggiuntivi;
Prezzo Articolo Extra = Prezzo Articolo Extra * 0,8;
EndCycle
Quantità = Quantità-1;

Questo ciclo calcola quante unità di un prodotto possono essere acquistate per un determinato importo (1000 rubli) se, dopo aver acquistato ciascuna unità di un prodotto, il suo prezzo precedente viene moltiplicato per un fattore 0,8. Il prezzo iniziale della merce è di 243 rubli.

Un esempio di errore quando si utilizza questo tipo di ciclo da parte dei principianti è un ciclo eterno, quando la condizione del ciclo è inizialmente vera, ma all'interno del ciclo stesso non cambia in alcun modo.

Scorri le raccolte (un altro nome è Per ciascuna).

La Piattaforma ha un numero abbastanza elevato di raccolte (si tratta di contenitori che contengono elementi di un certo tipo).

Puoi scorrere gli elementi di una raccolta usando un tipo speciale di ciclo.

Ad esempio, c'è una matrice di numeri, devi calcolare la somma di tutti gli elementi della matrice:

Somma = 0;
Per ogni elemento dall'array Loop
Somma=Somma+Articolo;
ciclo finale;

Esistono operatori speciali per i loop: Procedere e abortire.

Se a un certo punto del ciclo l'esecuzione di ulteriori istruzioni di questo ciclo diventa priva di significato, l'operatore viene utilizzato per tornare all'inizio del ciclo e organizzare il ciclo successivo. Procedere.

Operatore abortire consente al ciclo di terminare anche se la condizione del ciclo è vera.

Questo conclude la nostra prima conoscenza dello sviluppo nel linguaggio interno di 1C.

E Hello World? Non l'abbiamo ancora scritto, vero? Sì, ma nulla ti impedisce di farlo da solo, perché. la conoscenza è già sufficiente. Bene, se non funziona, puoi guardare qui.

Forum ucraino 1C: tutto su 1C 8.3, 1C 8.2, 1C 8.1, 1C 8.0, 1C 7.7 _ Sistema di composizione dei dati _ Linguaggio di espressione del sistema di composizione dei dati

Contenuto
1 Linguaggio di espressione del sistema di composizione dei dati
2 letterali
2.1 Linea
2.2 Numero
2.3 Data
2.4 Booleano
2.5 Significato
3 Operazioni sui numeri
3.1 Unario -
3.2 Unario +
3.3 Binario -
3.4 Binario +
3.5 Opera d'arte
3.6 Divisione
3.7 Resto
4 Operazioni sulle stringhe
4.1 Concatenazione (binario +)
4.2 Simile
5 Operazioni di confronto
5.1 Uguale
5.2 Non uguale
5.3 Meno
5.4 Altro
5.5 Minore o uguale
5.6 Maggiore o uguale
5.7 Operazione B
5.8 L'operazione di verifica della presenza di un valore in un data set
5.9 Operazione di prova NULL
5.10 Operazione di prova NULL
6 Operazioni booleane
6.1 Operazione NON
6.2 Funzionamento E
6.3 Operazione OR
7 Funzioni aggregate
7.1 Importo
7.2 Quantità
7.3 Numero di diversi
7.4 Massimo
7.5 Minimo
7.6 Media
8 Altre operazioni
8.1 Operazione SELEZIONA
9 Regole per confrontare due valori
10 Lavorare con null
11 Priorità operative
12 Funzioni del linguaggio delle espressioni del sistema di composizione dei dati
12.1 Calcola
12.2 Livello
12.3 Numero di sequenza
12.4 NumberInOrderInGroup
12.5 Formato
12.6 Inizio periodo
12.7 Fine del periodo
12.8 Aggiungi Data
12.9 Differenza Data
12.10 Sottostringa
12.11 StringLength
12.12 Anno
12.13 Quarto
12.14 Mese
12.15 Giorno dell'anno
12.16 Giorno
12.17 Settimana
12.18 Giorno della settimana
12:19 ora
12.20 Minuto
12.21 secondi
12.22 Espresso
12.23 SìNull
12.24 Funzioni generali del modulo

Linguaggio di espressione del sistema di composizione dei dati

Il linguaggio delle espressioni del sistema di composizione dei dati è progettato per registrare le espressioni utilizzate in varie parti del sistema.

Le espressioni vengono utilizzate nei seguenti sottosistemi:

  • schema di composizione dei dati - per descrivere i campi calcolati, i campi totali, le espressioni di collegamento, ecc.;
  • impostazioni di composizione dei dati - per descrivere espressioni di campo personalizzate;
  • layout della composizione dei dati - per descrivere le espressioni di relazione del set di dati, descrivere i parametri di layout, ecc.

letterali

L'espressione può contenere letterali. Possibili letterali dei seguenti tipi:

  • Linea;
  • Numero;
  • L'appuntamento;
  • booleano.

Linea

Una stringa letterale è scritta nei caratteri """, ad esempio:

"Stringa letterale"


Se è necessario utilizzare il carattere """ all'interno della stringa letterale, è necessario utilizzare due di questi caratteri.

Per esempio:

“letterale ““tra virgolette“““

Numero

Il numero viene scritto senza spazi, in formato decimale. La parte frazionaria è separata dal carattere ".". Per esempio:

l'appuntamento

Un valore letterale di tipo data viene scritto utilizzando il valore letterale chiave DATETIME. Dopo questa parola chiave, tra parentesi, separate da virgole, vengono elencati l'anno, il mese, il giorno, le ore, i minuti, i secondi. Non è richiesta l'indicazione dell'ora.

Per esempio:
DATETIME(1975, 1, 06) - 6 gennaio 1975
DATETIME(2006, 12, 2, 23, 56, 57) - 2 dicembre 2006, 23:56:57, 23:56:57

booleano

I valori booleani possono essere scritti usando i letterali True (True), False (False).

Significato

Per specificare valori letterali di altri tipi (enumerazioni di sistema, dati predefiniti), viene utilizzata la parola chiave Value, seguita dal nome letterale tra parentesi.
Valore(Tipo conto. Attivo)

Operazioni sui numeri

unario -

Questa operazione è progettata per invertire il segno di un numero. Per esempio:
-Vendite.Quantità

Unario +

Questa operazione non esegue alcuna operazione sul numero. Per esempio:
+Vendite.Quantità

binario -

Questa operazione serve per calcolare la differenza di due numeri. Per esempio:
RemainsAndTurnovers.InitialRemains - RemainsAndTurnovers.EndRemaining
RestiE Fatturati.Resto Iniziale - 100
400 – 357

binario +

Questa operazione serve per calcolare la somma di due numeri. Per esempio:
Saldi E Fatturati Saldo Iniziale + Saldi E Fatturati Fatturato
RestiE Fatturati.InitialRemainder + 100
400 + 357

Lavoro

Questa operazione serve per calcolare il prodotto di due numeri. Per esempio:
Nomenclatura.Prezzo * 1.2
2 * 3.14

Divisione

Questa operazione ha lo scopo di ottenere il risultato della divisione di un operando per un altro. Per esempio:
Nomenclatura.Prezzo / 1.2
2 / 3.14

Resto della divisione

Questa operazione ha lo scopo di ottenere il resto della divisione di un operando da parte di un altro. Per esempio:
Nomenclatura.Prezzo % 1.2
2 % 3.14

Operazioni sulle stringhe

Concatenazione (binario +)

Questa operazione è progettata per concatenare due stringhe. Per esempio:
Nomenclatura.Articolo + “: ”+ Nomenclatura.Nome

Piace

Questa operazione controlla se una stringa corrisponde al modello dato.

Il valore dell'operatore LIKE è TRUE se il valore<Выражения>corrisponde al modello, altrimenti FALSE.

I seguenti personaggi in<Строке_шаблона>hanno un significato diverso da un semplice altro carattere nella stringa:

  • % - percentuale: una sequenza contenente zero o più caratteri arbitrari;
  • _ - underscore: un carattere arbitrario;
  • […] - uno o più caratteri tra parentesi quadre: un carattere, uno qualsiasi di quelli indicati tra parentesi quadre. L'enumerazione può contenere intervalli, ad esempio a-z, che indica qualsiasi carattere all'interno dell'intervallo, comprese le estremità dell'intervallo;
  • [^…] - tra parentesi quadre un'icona di negazione seguita da uno o più caratteri: qualsiasi carattere diverso da quelli elencati dopo l'icona di negazione;

Qualsiasi altro simbolo significa di per sé e non comporta alcun carico aggiuntivo. Se è necessario scrivere uno dei caratteri elencati come se stesso, deve essere preceduto da<Спецсимвол>Il specificato dopo la parola chiave ESCAPE.

Ad esempio, modello
“%ABC[abc]\_abc%” CARATTERE SPECIALE “\”

indica una sottostringa costituita da una sequenza di caratteri: lettere A; lettere B; lettere B; una cifra; una delle lettere a, b, c o d; carattere di sottolineatura; lettere a; lettere b; lettere dentro. Inoltre, questa sequenza può essere individuata a partire da una posizione arbitraria nella stringa.

Operazioni di confronto

È uguale a

Questa operazione è progettata per confrontare due operandi per l'uguaglianza. Per esempio:
Sales.Counterparty = Sales.NomenclatureMainSupplier

Non uguale

Questa operazione è progettata per confrontare due operandi per la disuguaglianza. Per esempio:
Sales.Controparty Sales.NomenclatureMainSupplier

Più piccola

Questa operazione ha lo scopo di verificare che il primo operando sia minore del secondo. Per esempio:
SalesCurrent.Amount

Di più

Questa operazione ha lo scopo di verificare che il primo operando sia maggiore del secondo. Per esempio:
SalesCurrent.Amount > SalesPast.Amount

Meno o uguale

Questa operazione ha lo scopo di verificare che il primo operando sia minore o uguale al secondo. Per esempio:
SalesCurrent.Amount

Più o uguale

Questa operazione ha lo scopo di verificare che il primo operando sia maggiore o uguale al secondo. Per esempio:
SalesCurrent.Amount >= SalesPast.Amount

Operazione B

Questa operazione verifica la presenza di un valore nell'elenco di valori passato. Il risultato dell'operazione è True se viene trovato il valore, altrimenti False. Per esempio:
Articolo B (&Articolo1, &Articolo2)

Operazione per verificare se esiste un valore in un set di dati

L'operazione verifica la presenza di un valore nel set di dati specificato. Il dataset di convalida deve contenere un campo. Per esempio:
Vendite Appaltatore agli appaltatori

NULL controlla l'operazione

Questa operazione restituisce True se il valore è NULL. Per esempio:
L'appaltatore di vendita è NULLO

L'operazione di controllo di un valore per non NULL

Questa operazione restituisce True se il valore non è NULL. Per esempio:
Sales.Appaltatore NON È NULLO

Operazioni booleane

Le operazioni logiche accettano come operandi espressioni di tipo Boolean.

Operazione NON

L'operatore NOT restituisce True se il suo operando è False e restituisce False se il suo operando è True. Per esempio:
NON Documento.Destinatario = Documento.Mittente

Operazione E

L'operazione AND restituisce True se entrambi gli operandi sono True e restituisce False se uno degli operandi è False. Per esempio:
Document.Destinatario = Documento.Mittente AND Document.Destinatario = &Appaltatore

O operazione

L'operazione OR restituisce True se uno degli operandi è True e False se entrambi gli operandi sono False. Per esempio:
Document.Destinatario = Documento.Mittente OPPURE Document.Destinatario = &Appaltatore

Funzioni aggregate

Le funzioni aggregate eseguono alcune azioni su un insieme di dati.

Somma

La funzione Sum aggregate calcola la somma dei valori delle espressioni passate come argomento per tutti i record di dettaglio. Per esempio:
Importo(Vendite.ImportoFatturato)

Quantità

La funzione Conteggio conta il numero di valori non nulli. Per esempio:
Quantità (vendite. Appaltatore)

Numero di diversi

Questa funzione conta il numero di valori distinti. Per esempio:
Quantità (Varie Vendite. Appaltatore)

Massimo

La funzione ottiene il valore massimo. Per esempio:
Massimo(Resti. Quantità)

Minimo

La funzione ottiene il valore minimo. Per esempio:
Minimo (Saldo. Quantità)

La media

La funzione ottiene la media per valori non nulli. Per esempio:
Media(Resti. Quantità)

Altre operazioni

Operazione SELEZIONA

L'operazione Seleziona è progettata per selezionare uno tra diversi valori in determinate condizioni. Per esempio:
Seleziona Quando Somma > 1000 Quindi Somma Altro 0 Fine

Regole per confrontare due valori

Se i tipi dei valori confrontati differiscono l'uno dall'altro, la relazione tra i valori viene determinata in base alla precedenza dei tipi:
NULL (il più basso);
booleano;
Numero;
L'appuntamento;
Linea;
Tipi di riferimento

Le relazioni tra diversi tipi di riferimento sono definite in base ai numeri di riferimento delle tabelle corrispondenti a un particolare tipo.

Se i tipi di dati corrispondono, i valori vengono confrontati secondo le seguenti regole:
tipo Boolean TRUE è maggiore di FALSE;
tipo Numero ha le consuete regole di confronto per i numeri;
per il tipo Data, le date precedenti sono inferiori a quelle successive;
per il tipo String - confronti di stringhe secondo le caratteristiche nazionali stabilite della banca dati;
i tipi di riferimento vengono confrontati in base ai loro valori (numero di record, ecc.).

Lavorare con NULL

Qualsiasi operazione in cui il valore di uno degli operandi è NULL produrrà un risultato NULL.

Ci sono eccezioni:
l'operazione AND restituirà NULL solo se nessuno degli operandi è False;
l'operazione OR restituirà NULL solo se nessuno degli operandi è True.

Priorità operative

Le operazioni hanno le seguenti priorità (la prima riga ha la priorità più bassa):
O;
E;
NON;
B, È NULLA, NON È NULLA;
=, <>, <=, <, >=, >;
Binario +, Binario – ;
*, /, %;
Unario +, Unario -.

Funzioni del linguaggio delle espressioni del sistema di composizione dei dati

Calcolare

La funzione Calcola è progettata per calcolare un'espressione nel contesto di un raggruppamento. La funzione ha i seguenti parametri:
Espressione. Digitare Stringa. Contiene un'espressione calcolata;
Raggruppamento. Digitare Stringa. Contiene il nome del raggruppamento nel cui contesto deve essere valutata l'espressione. Se viene utilizzata una stringa vuota come nome di raggruppamento, il calcolo verrà eseguito nel contesto del raggruppamento corrente. Se la stringa GrandTotal viene utilizzata come nome del raggruppamento, il calcolo verrà eseguito nel contesto del totale generale. In caso contrario, il calcolo verrà eseguito nel contesto del raggruppamento padre con quel nome. Per esempio:
Amount(Sales.AmountFatturato) / Calcola("Amount(Sales.AmountFatturato)", "TotaleTotale")

In questo esempio, il risultato sarà il rapporto tra l'importo nel campo "Sales.AmountTurnover" del record di raggruppamento e l'importo dello stesso campo nell'intero layout.

Livello

La funzione è progettata per ottenere il livello di registrazione corrente.

Esempio:
Livello()

Numero in ordine

Ottieni il numero di sequenza successivo.

Esempio:
Numero d'ordine()

NumberIn OrderInGrouping

Restituisce il numero di sequenza successivo nel raggruppamento corrente.

Esempio:
NumberInOrderInGroup()

Formato

Ottieni la stringa formattata del valore passato.

La stringa di formato viene impostata in base alla stringa di formato 1C:Enterprise.

Opzioni:
Significato;
Stringa di formato.

Esempio:
Formato(Fatture di spesa.AmountDoc, "VAN=2")

Inizio periodo

Opzioni:

    • Minuto;
    • Giorno;
    • Una settimana;
    • Mese;
    • Trimestre;
    • Decennio;
    • Metà anno.

Esempio:
PeriodoInizio(DataOra(2002, 10, 12, 10, 15, 34), "Mese")

Risultato:

01.10.2002 0:00:00

FinePeriodo

La funzione è progettata per estrarre una data specifica da una data determinata.

Opzioni:

  • L'appuntamento. Digitare Data. data data;
  • Tipo di periodo. Digitare Stringa. Contiene uno dei seguenti valori:
    • Minuto;
    • Giorno;
    • Una settimana;
    • Mese;
    • Trimestre;
    • Decennio;
    • Metà anno.

Esempio:
EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Settimana")

Risultato:

13.10.2002 23:59:59

Aggiungi data

La funzione è progettata per aggiungere un valore alla data.

Opzioni:

  • Tipo di ingrandimento. Digitare Stringa. Contiene uno dei seguenti valori:
    • Minuto;
    • Giorno;
    • Una settimana;
    • Mese;
    • Trimestre;
    • Decennio;
    • Metà anno.
Valore - di quanto vuoi aumentare la data. Digitare il numero. La parte frazionaria viene ignorata.

Esempio:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Mese", 1)

Risultato:

12.11.2002 10:15:34

Differenza Data

La funzione è progettata per ottenere la differenza tra due date.

Opzioni:

  • Espressione. Digitare Data. data originale;
  • Espressione. Digitare Data. Data sottratta;
  • Tipo di differenza. Digitare Stringa. Contiene uno dei seguenti valori:
    • Secondo;
    • Minuto;
    • Giorno;
    • Mese;
    • Trimestre;

Esempio:
DIFFERENZA DATA(DATETIME(2002, 10, 12, 10, 15, 34),
DATETIME(2002, 10, 14, 9, 18, 06), "GIORNO")

Risultato:

Sottostringa

Questa funzione è progettata per selezionare una sottostringa da una stringa.

Opzioni:

  • Linea. Digitare Stringa. La stringa da cui viene estratta la sottostringa;
  • Posizione. Digitare il numero. La posizione del carattere da cui inizia la sottostringa da estrarre dalla stringa;
  • Lunghezza. Digitare il numero. La lunghezza della sottostringa selezionata.

Esempio:
SUBSTRING(Account.Indirizzo, 1, 4)

Lunghezza della corda

La funzione è progettata per determinare la lunghezza di una stringa.

Parametro:
Linea. Digitare Stringa. La stringa di cui viene determinata la lunghezza.

Esempio:
Stringa(Account.Indirizzo)

Questa funzione è progettata per estrarre l'anno da un valore di tipo Data.

Parametro:
L'appuntamento. Digitare Data. La data entro la quale viene determinato l'anno.

ANNO(Inc.Date)

Trimestre

Questa funzione è progettata per estrarre il numero del trimestre dal valore del tipo Data. Il numero di blocco normalmente varia da 1 a 4.

Parametro
L'appuntamento. Digitare Data. La data entro la quale viene determinato il trimestre

TRIMESTRE(Data.Fattura)

Mese

Questa funzione è progettata per estrarre il numero del mese da un valore di tipo Data. Il numero del mese è normalmente compreso tra 1 e 12.
L'appuntamento. Digitare Data. La data entro la quale viene determinato il mese.
MESE(Data.Fattura)

Giorno dell'anno

Questa funzione è progettata per ottenere il giorno dell'anno da un valore di tipo Data. Il giorno dell'anno varia normalmente da 1 a 365(366).
L'appuntamento. Digitare Data. La data entro la quale viene determinato il giorno dell'anno.
GIORNO DELL'ANNO(Exp.Inc.Date)

Giorno

Questa funzione è progettata per ottenere il giorno del mese da un valore di tipo Date. Il giorno del mese normalmente va da 1 a 31.
L'appuntamento. Digitare Data. La data entro la quale vengono determinati i giorni del mese.
GIORNO (Data Inc. Scad)

Una settimana

Questa funzione è progettata per ottenere il numero della settimana dell'anno da un valore di tipo Data. Le settimane dell'anno sono numerate a partire da 1.
L'appuntamento. Digitare Data. La data entro la quale vengono determinati i numeri delle settimane.
SETTIMANA (Data Inc. Scad)

Giorno della settimana

Questa funzione è progettata per ottenere il giorno della settimana da un valore di tipo Data. Il giorno della settimana varia normalmente da 1 (lunedì) a 7 (domenica).
L'appuntamento. Digitare Data. La data entro la quale viene determinato il giorno della settimana.
GIORNO DELLA SETTIMANA(Exp.Inc.Date)

Questa funzione è progettata per ottenere l'ora del giorno da un valore di tipo Data. L'ora del giorno varia da 0 a 23.
L'appuntamento. Digitare Data. La data entro la quale viene determinata l'ora del giorno.
ORA (Data Inc. Scad.)

Minuto

Questa funzione è progettata per ottenere il minuto dell'ora da un valore di tipo Data. I minuti dell'ora vanno da 0 a 59.
L'appuntamento. Digitare Data. La data entro la quale viene determinato il minuto dell'ora.
MINUTO (Data Inc. Scad)

Secondo

Questa funzione è progettata per ottenere i secondi di un minuto da un valore di tipo Data. Il secondo di un minuto va da 0 a 59.
L'appuntamento. Digitare Data. La data entro la quale vengono determinati i secondi del minuto.
SEC(Data Inc. Scad.)

esprimere

Questa funzione è progettata per estrarre un tipo da un'espressione che può contenere un tipo composto. Se l'espressione contiene un tipo diverso dal tipo richiesto, verrà restituito NULL.

Opzioni:
L'espressione da convertire;
Indicazione del tipo. Digitare Stringa. Contiene una stringa di tipo. Ad esempio, "Numero", "Stringa", ecc. Oltre ai tipi primitivi, questa stringa può contenere il nome di una tabella. In questo caso, si tenterà di esprimere un riferimento alla tabella specificata.

Esempio:
Espresso(Data.Attributo1, "Numero(10,3)")

Nullo

Questa funzione restituisce il valore del secondo parametro se il valore del primo parametro è NULL.

In caso contrario, verrà restituito il valore del primo parametro.

Esempio:
IsNULL(Amount(Sales.AmountFatturato), 0)

Funzioni comuni del modulo

L'espressione del motore di composizione dei dati può contenere chiamate di funzione a moduli di configurazione comuni globali. Non è richiesta alcuna sintassi aggiuntiva per chiamare tali funzioni.

Esempio:
Nome abbreviato(Documents.Link, Documents.Date, Documents.Number)

In questo esempio, la funzione "ShortName" verrà richiamata dal modulo di configurazione generale.

Si noti che l'uso delle funzioni del modulo condiviso è consentito solo se è specificata l'opzione del processore di composizione dei dati corrispondente.

Inoltre, le funzioni del modulo comuni non possono essere utilizzate nelle espressioni di campo personalizzate.

Php?D1.80.D0.B8.D0.BE.D0.B4.D0.B0

Forum ucraino 1C: tutto su 1C 8.3, 1C 8.2, 1C 8.1, 1C 8.0, 1C 7.7
http://sito

Articoli correlati in alto