LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam

Quando si lavora con date 1C, l'ordine tipico delle parti della data è anno, mese, giorno, ora, minuti, secondi. In questo caso, ore, minuti, secondi possono essere saltati.

Quando si crea una data da una stringa ("cast to date"), è possibile specificare nel formato localizzato (day.month.year hours: minutes: seconds), ma solo completamente.

Per esempio:
// Lavorare con date 1C - converti una data in 1C da parti - anno, mese, giorno (più ora opzionale)
Data \u003d Data (2012,10,30); // non c'è tempo
Data \u003d Data (2012,10,30,12,00,00); //col tempo

// Lavorare con date 1C - converti una data in 1C da una stringa, in diversi modi
Data \u003d Data ("20121030"); // anno mese giorno
Data \u003d Data ("30/10/2012 12:00:00"); // formato localizzato, solo completamente

// Lavorare con date 1C - specificando il valore della data senza trasmettere, direttamente
Data \u003d "20121030"; // non c'è tempo
Data \u003d "20121030120000"; //col tempo

Lavorare con le date 1C - Data vuota 1C

Per verificare la completezza della data 1C, viene confrontata con la "data vuota". Se nel libro / documento di riferimento è presente un attributo con il tipo di data, se l'utente non ha compilato questo campo, il suo valore sarà anche "data vuota".

"Data vuota" è 01.01.0001 00:00:00.

Per esempio:
EmptyDate \u003d "00010101000000";
Se RequiredDate \u003d "00010101000000" Quindi
Rapporto ("Non hai inserito una data molto necessaria");
Finisci se;

Lavorare con le date 1C - Data in dettaglio (libri di consultazione, documenti, ecc.)

Quando si specifica il tipo di attributo, è possibile specificare l'uso di:

  • Solo data (l'ora è sempre 00:00:00)
  • Solo ora (la data è quindi sempre 01.01.0001)
  • Data e ora

Ottenere la data

Per ottenere la data e l'ora, utilizzare la funzione 1C CurrentDate ().

Il luogo in cui viene chiamata questa funzione è molto importante - sul client o sul server. Per i dettagli, vedere l'argomento "Modalità prestazioni / Prestazioni". Accade spesso che l'ora sui computer client sia leggermente diversa, quindi cercano di utilizzare l'ora del server ovunque - anche se non è corretta sul server, almeno tutti i client avranno lo stesso orario sbagliato.

Per ottenere la data del server (la data impostata nel sistema operativo del computer server), di solito viene creato un modulo comune nella configurazione con la casella di controllo "Server" selezionata nelle proprietà e la funzione viene creata in essa
// la funzione si trova in un modulo comune, ad esempio denominato ServerFunctions
// nelle proprietà del modulo comune, la casella di controllo "Server" è selezionata e la casella di controllo "Client" non è impostata
Funzione GetServerDate () Export
Return CurrentDate ();
endfunction

// il richiamo di questa funzione per l'utilizzo da un altro modulo è simile al seguente
DocumentObject.Date \u003d ServerFunctions.GetServerDate (); //ModuleName.FunctionName ()

Anche nel thin client, direttamente dalle funzioni dei moduli, viene indicato dove verrà eseguito:

Inizio e fine della giornata

Per la data "30/10/2012":

  • la data di inizio della giornata è simile al "30/10/2012 00:00:00"
  • la data di fine è simile al "30/10/2012 alle 23:59:59"

Viene utilizzato nei report e nelle query che richiedono dati per un periodo: giorno, mese, anno.

Ad esempio, il periodo dal 01/01/2012 dalle 00:00:00 al 31/01/2012 00:00:00 non è corretto, poiché non include un giorno del mese (ma include un secondo dell'ultimo giorno del mese).

Lavorare con le date 1C - Confrontare le date

La data contiene data e ora. Quando si confrontano le date (escluso il tempo), di solito vengono riportate all'inizio della giornata (mese, anno).

Per esempio:
Date1 \u003d Date ("30/10/2012 12:00:00");
Se StartDay (Date1) \u003d StartDay (DocumentRef.Date) Quindi
Rapporto ("Il documento è stato inserito entro la data specificata");
Finisci se;

Per ogni evenienza, un esempio di confronto di date in un periodo:
Se DocumentRef.Date\u003e \u003d StartMonth (CurrentDate ()) e
DocumentRef.Date

Lavorare con le date 1C - Modifica della data

La data è il numero di secondi. Se vogliamo non solo scoprire se una data è maggiore di un'altra, ma anche di più, otteniamo la differenza in pochi secondi.

Per esempio:
DayStart \u003d CurrentDate () - DayStart (CurrentDate ());
Rapporto ("Dall'inizio della giornata è passato" + Stringa (dall'inizio della giornata) + "secondi");
Rapporto ("Dall'inizio della giornata è passato" + Stringa (dall'inizio della giornata / 60) + "minuti");
Rapporto ("Dall'inizio della giornata è passato" + Linea (dall'inizio della giornata / 60/60) + "ore");

Possiamo anche cambiare la data, quando cambiamo aggiungiamo o sottraggiamo il numero di secondi:
StartThisDay \u003d StartDay (CurrentDate ());

BeginningPreviousDay \u003d BeginningDay (BeginningThisDay - 1); // rimuovi il secondo - facendo "ieri" e prendi l'inizio della giornata da "ieri"

StartPreviousDay \u003d StartThisDay - 24 * 60 * 60; // un altro modo: sottraiamo 24 ore - 24 (ore) * 60 (minuti rivelati) * 60 (secondi)

Lavorare con le date 1C - Momento di tempo

Un punto nel tempo è una rappresentazione di data estesa applicabile ai documenti (e di conseguenza ai registri).

È necessario confrontare l'ora dei documenti, se la data e l'ora dei documenti sono le stesse. Di conseguenza, può essere utilizzato durante il filtro nelle query.

Un momento nel tempo può essere ottenuto da un documento nei seguenti modi:
// metodo 1
DocumentMomentTime \u003d DocumentRef.Timepoint ();

Puoi anche confrontare un punto nel tempo con una data / ora:
Moment of TimeStatus \u003d New Moment of Time (Start of Day (CurrentDate ()));
Se DocumentRef.MomentTime (). Compare (TimeTimeStandard) \u003d -1 Quindi
Rapporto ("Il documento è stato introdotto prima di oggi");
Finisci se;
// Se il documento è stato inserito entro la data odierna alle 00:00:00, è stato inserito comunque - oggi

Lavorare con le date 1C - Formattazione della data

Il tipo "Date" in 1C è uno dei 4 tipi di dati principali, insieme a numero, stringa e valore booleano. Le date sono onnipresenti nelle configurazioni: è impossibile evitare di lavorare con questo tipo di dati durante lo sviluppo. Pertanto, è meglio iniziare a scrivere query, già capendo come gestire le date, quali sono le possibilità di lavorare con loro, come sono archiviate. Diamo un'occhiata agli esempi di tutte le sfumature delle richieste di scrittura con date diverse.

Esempi di utilizzo delle date nelle richieste 1C

Prima di tutto, devi ottenere la data nella richiesta nel formato richiesto, con o senza orario. Esistono diversi modi per eseguire questa attività:

  1. Passa attraverso un parametro. È possibile ottenere la data della sessione corrente solo con questo metodo;
  2. Ottieni la data nella richiesta dal campo di selezione;
  3. Converti da valori numerici utilizzando la funzione DATETIME ().

Il compito più comune quando si lavora con i documenti è verificare la presenza di una data vuota in una richiesta 1C. In questo caso, è più semplice confrontare una variabile o un campo con una data vuota, ottenuta utilizzando la funzione DATE TIME (1,1,1):

DATA ORA (1, 1, 1)

Un comando simile può ottenere una data e un'ora arbitrarie in una richiesta. Allo stesso tempo, possono essere specificati con una precisione di un secondo impostando 6 numeri come parametri. Se vengono utilizzati solo 3 numeri, le ore, i minuti e i secondi verranno impostati su 0 (inizio della giornata). Ad esempio, dobbiamo selezionare i documenti per i primi 10 giorni di gennaio 2018 nella richiesta:

SELEZIONA Ricevuta sul conto di liquidazione. Rif. AS Link DA Documento. Scegli sul conto di liquidazione AS Ricevuta sul conto di liquidazione DOVE Ricevuta sul conto di liquidazione. DATA TRA DATA (2018, 1, 1, 0, 0, 0) E DATA, 1, 10, 23

In una query nel linguaggio 1C incorporato, non è possibile solo selezionare vari campi e ottenere parametri. Esistono molte funzioni che semplificano la formattazione della data per un'attività specifica. Se lavori spesso con le date in una query, dovresti conoscere questi comandi:

  • INIZIO DEL PERIODO. Come parametri, sono indicati la data e l'intervallo di tempo, nel contesto del quale è necessario ottenere l'inizio della data. Utilizzato per convertire una data in un formato senza tempo. Per questo è necessario impostare il secondo parametro - "GIORNO";
PERIOD START (,) PERIOD START (& Date, DAY) periodo\u003e data\u003e
  • FINE DEL PERIODO. Un comando simile che restituisce l'ultima data in termini di unità specificate nei parametri;
  • ADDEDDATE. Consente di ottenere una data maggiore di un numero specificato di unità di tempo specificate. La data, l'unità di tempo e il numero sono specificati come parametri di funzione;
ADDEDDATE (,) ADDEDDATE (& Date, DAY, 10) count\u003e type\u003e date\u003e
  • DIFFERENZA Ottiene la differenza tra le date nelle unità specificate;
DIFFERENZA DATA (,) DIFFERENZA DATA (& Data1, e Data2, GIORNO) tipo\u003e data2\u003e data1\u003e
  • GIORNO DELLA SETTIMANA. Restituisce il numero ordinale di uno dei giorni della settimana.

Applicando correttamente queste funzioni, lo sviluppatore può risolvere compiti piuttosto non banali. Ad esempio, ottenere una stringa come il nome del giorno della settimana della data corrente in una query:

SELEZIONA QUANDO GIORNO (& CurrentDate) \u003d 1 THEN "Monday" QUANDO DAY WEEK (& CurrentDate) \u003d 2 THEN "Tuesday" WHEN DAY WEEK (& CurrentDate) \u003d 3 THEN "Wednesday" QUANDO DAY WEEK Current (& CurrentDate) \u003d 4 THEN "DAY" & Thursday \u003d 5 THEN "Friday" WHEN DAY WEEK (& CurrentDate) \u003d 6 THEN "Saturday" ELSE "Sunday" END

La conversione di tipi in una query 1C da un numero o una stringa in una data è un'attività laboriosa. Dai numeri, è possibile ottenere una data utilizzando la funzione DATE TIME, da una stringa, combinando la funzione SUBSTRING e il costrutto SELECT WHEN THEN ELSE. Sulla base di questo, gli sviluppatori preferiscono ottenere la data da altri tipi nel modulo e passarla alla richiesta utilizzando un parametro. Sfortunatamente, questo non è sempre possibile, quindi è necessario modificare il formato della data nella richiesta.

È possibile specificare la data nella richiesta 1C come parametro per ottenere dati dalle tabelle dei registri virtuali. Tutte le funzioni di cui sopra possono essere utilizzate anche in questo ruolo. Ma qui è importante non consentire che la data vuota nella richiesta 1C influisca sul risultato finale dell'esecuzione del codice, quindi è necessario fare un controllo.

Quando si lavora con date 1C, l'ordine tipico delle parti della data è anno, mese, giorno, ora, minuti, secondi. In questo caso, ore, minuti, secondi possono essere saltati.

Quando si crea una data da una stringa ("cast to date"), è possibile specificare nel formato localizzato (day.month.year hours: minutes: seconds), ma solo completamente.

Per esempio:

// Lavorare con date 1C - convertire una data in 1C da parti - anno, mese, giorno (più ora facoltativa) Data \u003d Data (2012,10,30); // senza ora Date \u003d Date (2012,10,30,12,00,00); // with time // Lavorare con le date 1C - converte una data in 1C da una stringa, in diversi modi Date \u003d Date ("20121030"); // anno, mese, giorno Data \u003d Data ("30/10/2012 12:00:00"); // formato localizzato, solo completamente // Lavorare con le date 1C - specificando il valore della data senza casting, direttamente Date \u003d "20121030"; // no time Date \u003d "20121030120000"; //col tempo

Lavorare con le date 1C - Data vuota 1C

Per verificare la completezza della data 1C, viene confrontata con la "data vuota". Se nel libro / documento di riferimento è presente un attributo con il tipo di data, se l'utente non ha compilato questo campo, il suo valore sarà anche "data vuota".

"Data vuota" è 01.01.0001 00:00:00.

Per esempio:

EmptyDate \u003d "00010101000000"; Se RequiredDate \u003d "00010101000000" Quindi segnala ("Non hai inserito una data molto necessaria"); Finisci se;

Lavorare con le date 1C - Data in dettaglio (libri di consultazione, documenti, ecc.)

Quando si specifica il tipo di attributo, è possibile specificare l'uso di:

Solo data (l'ora è sempre 00:00:00)
Solo ora (la data è quindi sempre 01.01.0001)
Data e ora

Ottenere la data

Per ottenere la data e l'ora, utilizzare la funzione 1C CurrentDate ().

Il luogo in cui viene chiamata questa funzione è molto importante - sul client o sul server. Per i dettagli, vedere l'argomento "Modalità prestazioni / Prestazioni". Accade spesso che l'ora sui computer client sia leggermente diversa, quindi cercano di utilizzare l'ora del server ovunque - anche se non è corretta sul server, almeno tutti i client avranno lo stesso orario sbagliato.

Per ottenere la data del server (la data impostata nel sistema operativo del computer server), di solito viene creato un modulo comune nella configurazione con la casella di controllo "Server" selezionata nelle proprietà e la funzione viene creata in essa

// la funzione si trova in un modulo comune, ad esempio, con il nome ServerFunctions // nelle proprietà del modulo comune la casella di controllo "Server" è selezionata e la casella di controllo "Client" non è selezionata Funzione GetServerDate () Export Return CurrentDate (); EndFunction // la chiamata a questa funzione per l'uso da un altro modulo assomiglia a DocumentObject.Date \u003d ServerFunctions.GetServerDate (); //ModuleName.FunctionName ()

Anche nel thin client, direttamente dalle funzioni dei moduli, viene indicato dove verrà eseguito:

Inizio e fine della giornata

Per la data "30/10/2012":

la data di inizio della giornata è simile al "30/10/2012 00:00:00"
la data di fine è simile al "30/10/2012 alle 23:59:59"

Viene utilizzato nei report e nelle query che richiedono dati per un periodo: giorno, mese, anno.

Ad esempio, il periodo dal 01/01/2012 dalle 00:00:00 al 31/01/2012 00:00:00 non è corretto, poiché non include un giorno del mese (ma include un secondo dell'ultimo giorno del mese).

Lavorare con le date 1C - Confrontare le date

La data contiene data e ora. Quando si confrontano le date (escluso il tempo), di solito vengono riportate all'inizio della giornata (mese, anno).

Per esempio:

Date1 \u003d Date ("30/10/2012 12:00:00"); Se StartDay (Date1) \u003d StartDay (DocumentLink.Date) Quindi Inform ("Documento inserito per data specificata"); Finisci se; Per ogni evenienza, un esempio di confronto di una data in un periodo: If DocumentRef.Date\u003e \u003d StartMonth (CurrentDate ()) e DocumentLink.Date<= КонецМесяца(ТекущаяДата()) Тогда Сообщить("Документ введен в текущем месяце"); КонецЕсли;

Lavorare con le date 1C - Modifica della data

La data è il numero di secondi. Se vogliamo non solo scoprire se una data è maggiore di un'altra, ma anche di più, otteniamo la differenza in pochi secondi.

Per esempio:

DayStart \u003d CurrentDate () - DayStart (CurrentDate ()); Rapporto ("Dall'inizio della giornata è passato" + Stringa (dall'inizio della giornata) + "secondi"); Rapporto ("Dall'inizio della giornata è passato" + Stringa (dall'inizio della giornata / 60) + "minuti"); Rapporto ("Dall'inizio della giornata è passato" + Stringa (dall'inizio della giornata / 60/60) + "ore");

Possiamo anche cambiare la data, quando cambiamo, aggiungiamo o sottraggiamo il numero di secondi:

StartThisDay \u003d StartDay (CurrentDate ()); StartPreviousDay \u003d StartDay (StartThisDay - 1); // rimuovi il secondo - facendo "ieri" e prendi l'inizio del giorno da "ieri" Inizio del giorno precedente \u003d Inizio di questo giorno - 24 * 60 * 60; // un altro modo: sottraiamo 24 ore - 24 (ore) * 60 (minuti rivelati) * 60 (secondi)

Lavorare con le date 1C - Momento di tempo

Un punto nel tempo è una rappresentazione di data estesa applicabile ai documenti (e di conseguenza ai registri).

È necessario confrontare l'ora dei documenti, se la data e l'ora dei documenti sono le stesse. Di conseguenza, può essere utilizzato durante il filtro nelle query.

Un momento nel tempo può essere ottenuto da un documento nei seguenti modi:

// method 1DocumentMomentTime \u003d DocumentRef.MomentTime (); Puoi anche confrontare un momento nel tempo con una data / ora: MomentTimeStandard \u003d NewMomentTime (StartDay (CurrentDate ())); Se DocumentLink.MomentTime (). Compare (MomentTimeStandard) \u003d -1 Quindi Report ("Il documento è stato inserito prima di oggi"); Finisci se; // Se il documento è stato inserito entro la data odierna alle 00:00:00, è stato inserito comunque - oggi

Ad un certo punto, è necessario lavorare con variabili del tipo "Data". In questo articolo, esamineremo le tecniche di base: passare la data corrente, verificare un valore vuoto, una data arbitraria.

Quando si scrivono query, è spesso necessario confrontare i dati con la data corrente. Il linguaggio 1C incorporato ha la funzione CurrentDate (). Ti permette di determinare l'ora e la data attuali sul tuo computer. Per eseguire operazioni con la data corrente, è necessario passare il valore di questa funzione come parametro alla richiesta.

Di seguito è una query che seleziona tutti i file allegati alle note spese con una data di creazione fino ad ora:

ExampleRequest \u003d Nuova richiesta;
ExampleRequest.Text \u003d "
| SCEGLI
| Rapporto anticipato File allegati
| DA
| Reference.AvailableReportAttachedFilesASAAAvailableReportAttachedFiles
| DOVE
| Data anticipata File allegati Data< &ТекДата»;
ExampleRequest.SetParameter ("CurrentDate", CurrentDate ());

Data personalizzata

La funzione sopra ti consente di confrontare e, quindi, effettuare una selezione per qualsiasi periodo. Questo metodo consente di specificare una selezione rigorosa nella query senza utilizzare parametri aggiuntivi.

Nota che usando questa funzione nell'esempio sopra, abbiamo passato solo tre numeri (anno, mese, giorno) come parametri di input. Gli ultimi tre (ora, minuto, secondo) sono opzionali e, se assenti, vengono sostituiti con "0", ovvero l'inizio della giornata.

In questo esempio verranno recuperati tutti i file allegati alle note spese fino alla fine dello scorso 2016. A questo proposito, indicheremo l'ora, i minuti e i secondi per confrontarli con il punto temporale "31 dicembre 2016 23:59:59".

SCEGLIERE
Rapporto anticipato File allegati
DI
Reference.AvailableReportAttachedFiles AS AdvanceReportAttachedFiles
DOVE
Data anticipata File allegati Data< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

Data vuota

Il modo più semplice per controllare una variabile per vedere se contiene una data vuota è un semplice confronto. In questo esempio, utilizzando una query, selezioneremo tutte le entrate di fondi su un conto bancario, per il quale la data di arrivo non viene compilata.

LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam