DIE KLINGEL

Es gibt diejenigen, die diese Nachrichten vor Ihnen lesen.
Abonnieren Sie, um die neuesten Artikel zu erhalten.
Email
Name
Nachname
Wie willst du The Bell lesen?
Kein Spam

Bei der Arbeit mit 1C-Daten lautet die typische Reihenfolge der Datumsteile Jahr, Monat, Tag, Stunde, Minuten, Sekunden. In diesem Fall können Stunden, Minuten und Sekunden übersprungen werden.

Wenn Sie ein Datum aus einer Zeichenfolge erstellen ("In Datum umwandeln"), können Sie es im lokalisierten Format (Tag.Monat.Jahr Stunden: Minuten: Sekunden) angeben, jedoch nur vollständig.

Zum Beispiel:
// Arbeiten mit 1C-Daten - Konvertieren Sie ein Datum von Teilen in 1C - Jahr, Monat, Tag (plus optionale Zeit)
Datum \u003d Datum (2012, 10, 30); // Keine Zeit
Datum \u003d Datum (2012,10,30,12,00,00); //mit der Zeit

// Arbeiten mit 1C-Daten - Konvertieren Sie ein Datum aus einer Zeichenfolge auf verschiedene Arten in 1C
Datum \u003d Datum ("20121030"); // Jahr Monat Tag
Datum \u003d Datum ("30.10.2012 12:00:00"); // lokalisiertes Format, nur vollständig

// Arbeiten mit 1C-Daten - Angabe des Datumswerts ohne direkte Umwandlung
Datum \u003d "20121030"; // Keine Zeit
Datum \u003d "20121030120000"; //mit der Zeit

Arbeiten mit Datum 1C - Leeres Datum 1C

Um das Datum 1C auf Fülle zu überprüfen, wird es mit dem "leeren Datum" verglichen. Wenn das Nachschlagewerk / Dokument ein Datumstypattribut enthält und der Benutzer dieses Feld nicht ausgefüllt hat, lautet sein Wert ebenfalls "leeres Datum".

"Leeres Datum" ist 01.01.0001 00:00:00.

Zum Beispiel:
EmptyDate \u003d "00010101000000";
Wenn RequiredDate \u003d "00010101000000" Dann
Bericht ("Sie haben kein sehr notwendiges Datum eingegeben");
EndIf;

Arbeiten mit Daten 1C - Datum in den Anforderungen (Nachschlagewerke, Dokumente usw.)

Bei der Angabe des Attributtyps können Sie die Verwendung von:

  • Nur Datum (Uhrzeit ist dann immer 00:00:00)
  • Nur Zeit (Datum ist dann immer 01.01.0001)
  • Datum (und Uhrzeit

Datum bekommen

Verwenden Sie die Funktion 1C CurrentDate (), um Datum und Uhrzeit abzurufen.

Der Ort, an dem diese Funktion aufgerufen wird, ist sehr wichtig - auf dem Client oder auf dem Server. Einzelheiten finden Sie im Thema "Leistungsmodus / Leistung". Es kommt häufig vor, dass die Zeit auf Client-Computern geringfügig unterschiedlich ist. Daher versuchen sie, die Serverzeit überall zu verwenden. Auch wenn sie auf dem Server nicht richtig eingestellt ist, haben zumindest alle Clients dieselbe falsche Zeit.

Um das Serverdatum (das im Betriebssystem des Servercomputers festgelegte Datum) abzurufen, wird in der Konfiguration normalerweise ein gemeinsames Modul erstellt, wobei das Kontrollkästchen "Server" in den Eigenschaften aktiviert ist und die Funktion darin erstellt wird
// Die Funktion befindet sich in einem gemeinsamen Modul namens ServerFunctions
// In den Eigenschaften des allgemeinen Moduls ist das Kontrollkästchen "Server" aktiviert und das Kontrollkästchen "Client" nicht aktiviert
Funktion GetServerDate () Export
Return CurrentDate ();
EndFunction

// Der Aufruf dieser Funktion zur Verwendung von einem anderen Modul sieht folgendermaßen aus
DocumentObject.Date \u003d ServerFunctions.GetServerDate (); //ModuleName.FunctionName ()

Auch im Thin Client wird direkt aus den Funktionen der Module angezeigt, wo es ausgeführt wird:

Beginn und Ende des Tages

Für das Datum "30.10.2012":

  • das Startdatum des Tages sieht so aus: "30.10.2012 00:00:00"
  • enddatum sieht so aus "30.10.2012 23:59:59"

Es wird in Berichten und Abfragen verwendet, für die Daten für einen Zeitraum erforderlich sind - Tag, Monat, Jahr.

Beispielsweise ist der Zeitraum vom 01.01.2012 00:00:00 bis zum 31.01.2012 00:00:00 falsch, da er nicht einen Tag des Monats enthält (sondern eine Sekunde des letzten Tages des Monats).

Arbeiten mit 1C-Daten - Vergleichen von Daten

Datum enthält Datum und Uhrzeit. Beim Vergleichen von Daten (ohne Uhrzeit) werden diese normalerweise an den Anfang des Tages (Monat, Jahr) gebracht.

Zum Beispiel:
Datum1 \u003d Datum ("30.10.2012 12:00:00");
Wenn StartDay (Date1) \u003d StartDay (DocumentRef.Date) Dann
Bericht ("Das Dokument wurde zum angegebenen Datum eingegeben");
EndIf;

Nur für den Fall, ein Beispiel für den Vergleich von Daten in einem Zeitraum:
Wenn DocumentRef.Date\u003e \u003d StartMonth (CurrentDate ()) und
DocumentRef.Date

Arbeiten mit Datumsangaben 1C - Datumsänderung

Das Datum ist die Anzahl der Sekunden. Wenn wir nicht nur herausfinden wollen, ob ein Datum größer als ein anderes ist, sondern auch wie viel mehr, dann erhalten wir den Unterschied in Sekunden.

Zum Beispiel:
DayStart \u003d CurrentDate () - DayStart (CurrentDate ());
Bericht ("Seit Beginn des Tages" + String (vom Beginn des Tages) + "Sekunden");
Bericht ("Seit Beginn des Tages" + String (Ab Beginn des Tages / 60) + "Minuten");
Bericht ("Seit Beginn des Tages" + Zeichenfolge (Ab Beginn des Tages / 60/60) + "Stunden");

Wir können auch das Datum ändern, wenn wir es ändern, addieren oder subtrahieren wir die Anzahl der Sekunden:
StartThisDay \u003d StartDay (CurrentDate ());

BeginningPreviousDay \u003d BeginningDay (BeginningThisDay - 1); // entferne das zweite - mache "gestern" und nimm den Tagesanfang von "gestern"

StartPreviousDay \u003d StartThisDay - 24 * 60 * 60; // auf andere Weise - wir subtrahieren 24 Stunden - 24 (Stunden) * 60 (Minuten) * 60 (Sekunden)

Arbeiten mit Daten 1C - Moment der Zeit

Ein Zeitpunkt ist eine erweiterte Datumsdarstellung für Dokumente (und entsprechende Register).

Es ist erforderlich, die Uhrzeit von Dokumenten zu vergleichen, wenn Datum und Uhrzeit der Dokumente identisch sind. Dementsprechend kann es beim Filtern in Abfragen verwendet werden.

Ein Zeitpunkt kann aus einem Dokument auf folgende Weise abgerufen werden:
// Methode 1
DocumentMomentTime \u003d DocumentRef.Timepoint ();

Sie können einen Zeitpunkt auch mit einem Datum / einer Uhrzeit vergleichen:
Moment of TimeStatus \u003d Neuer Moment (Start of Day (CurrentDate ()));
Wenn DocumentRef.MomentTime (). Compare (TimeTimeStandard) \u003d -1 Dann
Bericht ("Das Dokument wurde früher als heute eingeführt");
EndIf;
// Wenn das Dokument bis zum heutigen Datum um 00:00:00 eingegeben wurde, wurde es trotzdem eingegeben - heute

Arbeiten mit Datumsangaben 1C - Datumsformatierung

Der Typ "Datum" in 1C ist neben Nummer, Zeichenfolge und Boolescher Wert einer der 4 Hauptdatentypen. Daten sind in Konfigurationen allgegenwärtig - es ist nicht zu vermeiden, während der Entwicklung mit diesem Datentyp zu arbeiten. Daher ist es besser, mit dem Schreiben von Abfragen zu beginnen und bereits zu verstehen, wie mit Daten umgegangen wird, welche Möglichkeiten es gibt, mit ihnen zu arbeiten und wie sie gespeichert werden. Schauen wir uns Beispiele für alle Nuancen des Schreibens von Anfragen mit unterschiedlichen Daten an.

Beispiele für die Arbeit mit Daten in 1C-Anforderungen

Zunächst müssen Sie das Datum in der Anfrage im gewünschten Format erhalten - mit oder ohne Zeit. Es gibt verschiedene Möglichkeiten, um diese Aufgabe zu erfüllen:

  1. Durchlaufen Sie einen Parameter. Sie können das aktuelle Sitzungsdatum nur mit dieser Methode abrufen.
  2. Rufen Sie das Datum in der Anfrage aus dem Auswahlfeld ab.
  3. Konvertieren Sie mit der Funktion DATE TIME () von numerischen Werten.

Die häufigste Aufgabe beim Arbeiten mit Dokumenten besteht darin, in einer 1C-Anforderung nach einem leeren Datum zu suchen. In diesem Fall ist es am einfachsten, eine Variable oder ein Feld mit einem leeren Datum zu vergleichen, das mit der Funktion DATE TIME (1,1,1) erhalten wird:

DATUM ZEIT (1, 1, 1)

Ein ähnlicher Befehl kann ein beliebiges Datum und eine beliebige Uhrzeit in einer Anforderung erhalten. Gleichzeitig können sie mit einer Genauigkeit von einer Sekunde angegeben werden, indem 6 Zahlen als Parameter festgelegt werden. Wenn nur 3 Zahlen verwendet werden, werden Stunden, Minuten und Sekunden auf 0 gesetzt (der Beginn des Tages). Zum Beispiel müssen wir Dokumente für die ersten 10 Tage im Januar 2018 in der Anfrage auswählen:

WÄHLEN SIE Quittung zum Abrechnungskonto. Wählen Sie AS Link FROM Document. Wählen Sie zum Abrechnungskonto AS Quittung zum Abrechnungskonto

In einer Abfrage in der eingebetteten 1C-Sprache können Sie nicht nur verschiedene Felder auswählen und Parameter abrufen. Es gibt viele Funktionen, mit denen das Datum für eine bestimmte Aufgabe einfach formatiert werden kann. Wenn Sie häufig mit Datumsangaben in einer Abfrage arbeiten, sollten Sie die folgenden Befehle kennen:

  • ANFANG DER ZEIT. Als Parameter werden Datum und Zeitintervall angegeben, in deren Kontext der Beginn des Datums ermittelt werden muss. Wird verwendet, um ein Datum in ein zeitloses Format zu konvertieren. Dazu muss der zweite Parameter eingestellt werden - "DAY";
ZEITRAUM START (,) ZEITRAUM START (& Datum, TAG) Zeitraum\u003e Datum\u003e
  • ENDE DER PERIODE. Ein ähnlicher Befehl, der das letzte Datum in Bezug auf die in den Parametern angegebenen Einheiten zurückgibt.
  • ADDEDDATE. Ermöglicht das Abrufen eines Datums, das größer als eine bestimmte Anzahl angegebener Zeiteinheiten ist. Die Parameter der Funktion sind Datum, Zeiteinheit und Nummer;
ADDDATE (,) ADDDATE (& Date, DAY, 10) count\u003e type\u003e date\u003e
  • UNTERSCHIED Ruft die Differenz zwischen den Daten in den angegebenen Einheiten ab.
DATE DIFFERENCE (,) DATE DIFFERENCE (& Date1, & Date2, DAY) Typ\u003e Datum2\u003e Datum1\u003e
  • WOCHENTAG. Gibt die Seriennummer eines der Wochentage zurück.

Durch die korrekte Anwendung dieser Funktionen kann der Entwickler eher nicht triviale Aufgaben lösen. Beispiel: Abrufen des Wochentags des aktuellen Datums in einer Abfrage als Zeichenfolge:

WÄHLEN SIE WENN TAG WOCHE (& Aktuelles Datum) \u003d 1 DANN "Montag" WANN TAG WOCHE (& Aktuelles Datum) \u003d 2 DANN "Dienstag" WANN TAG WOCHE (& Aktuelles Datum) \u003d 3 DANN "Mittwoch" WENN TAG WOCHE Aktuelles (& Aktuelles Datum) \u003d 4 DANN "TAG" & Donnerstag \u003d 5 DANN "Freitag" WENN TAG WOCHE (& Aktuelles Datum) \u003d 6 DANN "Samstag" SONST "Sonntag" ENDE

Das Konvertieren von Typen in einer 1C-Abfrage von einer Zahl oder einer Zeichenfolge in ein Datum ist eine mühsame Aufgabe. Aus Zahlen können Sie mit der Funktion DATE TIME ein Datum aus einer Zeichenfolge abrufen, indem Sie die Funktion SUBSTRING und das Konstrukt SELECT WHEN THEN ELSE kombinieren. Auf dieser Grundlage ziehen es Entwickler vor, das Datum von anderen Typen im Modul abzurufen und es mithilfe eines Parameters an die Anforderung zu übergeben. Leider ist dies nicht immer möglich, daher müssen Sie das Datumsformat in der Anfrage ändern.

Es ist möglich, das Datum in der 1C-Anforderung als Parameter zum Abrufen von Daten aus virtuellen Registertabellen anzugeben. Alle oben genannten Funktionen können auch in dieser Rolle verwendet werden. Hier ist es jedoch wichtig, dass das leere Datum in der 1C-Anforderung das Endergebnis der Codeausführung nicht beeinflusst. Daher ist es unbedingt erforderlich, dies zu überprüfen.

Bei der Arbeit mit 1C-Daten lautet die typische Reihenfolge der Datumsteile Jahr, Monat, Tag, Stunde, Minuten, Sekunden. In diesem Fall können Stunden, Minuten und Sekunden übersprungen werden.

Wenn Sie ein Datum aus einer Zeichenfolge erstellen ("In Datum umwandeln"), können Sie es im lokalisierten Format (Tag.Monat.Jahr Stunden: Minuten: Sekunden) angeben, jedoch nur vollständig.

Zum Beispiel:

// Arbeiten mit 1C-Daten - Konvertieren Sie ein Datum aus Teilen in 1C - Jahr, Monat, Tag (plus optionale Zeit) Datum \u003d Datum (2012,10,30); // ohne Zeit Datum \u003d Datum (2012,10,30,12,00,00); // mit der Zeit // Arbeiten mit Datumsangaben 1C - Konvertieren eines Datums aus einer Zeichenfolge in 1C auf verschiedene Arten Date \u003d Date ("20121030"); // Jahr, Monat, Tag Datum \u003d Datum ("30.10.2012 12:00:00"); // lokalisiertes Format, nur vollständig // Arbeiten mit Datum 1C - Angabe des Datumswerts ohne Umwandlung direkt Date \u003d "20121030"; // keine Zeit Date \u003d "20121030120000"; //mit der Zeit

Arbeiten mit Datum 1C - Leeres Datum 1C

Um das Datum 1C auf Fülle zu überprüfen, wird es mit dem "leeren Datum" verglichen. Wenn das Nachschlagewerk / Dokument ein Datumstypattribut enthält und der Benutzer dieses Feld nicht ausgefüllt hat, lautet sein Wert ebenfalls "leeres Datum".

"Leeres Datum" ist 01.01.0001 00:00:00.

Zum Beispiel:

EmptyDate \u003d "00010101000000"; Wenn RequiredDate \u003d "00010101000000", dann Bericht ("Sie haben das sehr notwendige Datum nicht eingegeben"); EndIf;

Arbeiten mit Daten 1C - Datum im Detail (Nachschlagewerke, Dokumente usw.)

Bei der Angabe des Attributtyps können Sie die Verwendung von:

Nur Datum (Uhrzeit ist dann immer 00:00:00)
Nur Zeit (Datum ist dann immer 01.01.0001)
Datum (und Uhrzeit

Datum bekommen

Verwenden Sie die Funktion 1C CurrentDate (), um Datum und Uhrzeit abzurufen.

Der Ort, an dem diese Funktion aufgerufen wird, ist sehr wichtig - auf dem Client oder auf dem Server. Einzelheiten finden Sie im Thema "Leistungsmodus / Leistung". Es kommt häufig vor, dass die Zeit auf Client-Computern geringfügig unterschiedlich ist. Daher versuchen sie, die Serverzeit überall zu verwenden. Auch wenn sie auf dem Server nicht richtig eingestellt ist, haben zumindest alle Clients dieselbe falsche Zeit.

Um das Serverdatum (das im Betriebssystem des Servercomputers festgelegte Datum) abzurufen, wird in der Konfiguration normalerweise ein gemeinsames Modul erstellt, wobei das Kontrollkästchen "Server" in den Eigenschaften aktiviert ist und die Funktion darin erstellt wird

// Die Funktion befindet sich in einem gemeinsamen Modul, z. B. mit dem Namen ServerFunctions. // In den Eigenschaften des gemeinsamen Moduls ist das Kontrollkästchen "Server" und das Kontrollkästchen "Client" nicht aktiviert. Funktion GetServerDate () Export Return CurrentDate (); EndFunction // Das Aufrufen dieser Funktion zur Verwendung von einem anderen Modul sieht aus wie DocumentObject.Date \u003d ServerFunctions.GetServerDate (); //ModuleName.FunctionName ()

Auch im Thin Client wird direkt aus den Funktionen der Module angezeigt, wo es ausgeführt wird:

Beginn und Ende des Tages

Für das Datum "30.10.2012":

das Startdatum des Tages sieht so aus: "30.10.2012 00:00:00"
Enddatum sieht so aus "30.10.2012 23:59:59"

Es wird in Berichten und Abfragen verwendet, für die Daten für einen Zeitraum erforderlich sind - Tag, Monat, Jahr.

Beispielsweise ist der Zeitraum vom 01.01.2012 00:00:00 bis zum 31.01.2012 00:00:00 falsch, da er nicht einen Tag des Monats enthält (sondern eine Sekunde des letzten Tages des Monats).

Arbeiten mit 1C-Daten - Vergleichen von Daten

Datum enthält Datum und Uhrzeit. Beim Vergleichen von Daten (ohne Uhrzeit) werden diese normalerweise an den Anfang des Tages (Monat, Jahr) gebracht.

Zum Beispiel:

Datum1 \u003d Datum ("30.10.2012 12:00:00"); Wenn StartDay (Date1) \u003d StartDay (DocumentLink.Date), dann Inform ("Dokument eingegeben bis zum angegebenen Datum"); EndIf; Nur für den Fall, ein Beispiel für den Vergleich eines Datums in einem Zeitraum: Wenn DocumentRef.Date\u003e \u003d StartMonth (CurrentDate ()) und DocumentRef.Date<= КонецМесяца(ТекущаяДата()) Тогда Сообщить("Документ введен в текущем месяце"); КонецЕсли;

Arbeiten mit Datumsangaben 1C - Datumsänderung

Das Datum ist die Anzahl der Sekunden. Wenn wir nicht nur herausfinden wollen, ob ein Datum größer als ein anderes ist, sondern auch wie viel mehr, dann erhalten wir den Unterschied in Sekunden.

Zum Beispiel:

DayStart \u003d CurrentDate () - DayStart (CurrentDate ()); Report ("Seit Beginn des Tages" + String (vom Beginn des Tages) + "Sekunden"); Bericht ("Seit Beginn des Tages" + String (Ab Beginn des Tages / 60) + "Minuten"); Bericht ("Seit Beginn des Tages" + String (Ab Beginn des Tages / 60/60) + "Stunden");

Wir können auch das Datum ändern, wenn wir es ändern, addieren oder subtrahieren wir die Anzahl der Sekunden:

StartThisDay \u003d StartDay (CurrentDate ()); BeginningPreviousDay \u003d BeginningDay (BeginningThisDay - 1); // entferne das zweite - mache "gestern" und nimm den Tagesanfang von "gestern" BeginningPreviousDay \u003d BeginningThisDay - 24 * 60 * 60; // auf andere Weise - wir subtrahieren 24 Stunden - 24 (Stunden) * 60 (Minuten) * 60 (Sekunden)

Arbeiten mit Daten 1C - Moment der Zeit

Ein Zeitpunkt ist eine erweiterte Datumsdarstellung für Dokumente (und entsprechende Register).

Es ist erforderlich, die Uhrzeit von Dokumenten zu vergleichen, wenn Datum und Uhrzeit der Dokumente identisch sind. Dementsprechend kann es beim Filtern in Abfragen verwendet werden.

Ein Zeitpunkt kann aus einem Dokument auf folgende Weise abgerufen werden:

// Methode 1DocumentMomentTime \u003d DocumentRef.MomentTime (); Sie können einen Zeitpunkt auch mit einem Datum / einer Uhrzeit vergleichen: MomentTimeStandard \u003d NewMomentTime (StartDay (CurrentDate ())); Wenn DocumentLink.MomentTime (). Compare (TimeTimeStandard) \u003d -1 Then Report ("Das Dokument wurde früher als heute eingegeben"); EndIf; // Wenn das Dokument bis zum heutigen Datum um 00:00:00 eingegeben wurde, wurde es trotzdem eingegeben - heute

Irgendwann muss mit Variablen vom Typ "Datum" gearbeitet werden. In diesem Artikel werden wir uns mit den grundlegenden Techniken befassen - Übergeben des aktuellen Datums, Überprüfen auf einen leeren Wert, ein beliebiges Datum.

Beim Schreiben von Abfragen ist es häufig erforderlich, Daten mit dem aktuellen Datum zu vergleichen. Die integrierte 1C-Sprache verfügt über eine CurrentDate () -Funktion. Hier können Sie die aktuelle Uhrzeit und das aktuelle Datum auf Ihrem Computer ermitteln. Um Operationen mit dem aktuellen Datum auszuführen, müssen Sie den Wert dieser Funktion als Parameter an die Anforderung übergeben.

Im Folgenden finden Sie eine Abfrage, in der alle an Spesenabrechnungen angehängten Dateien mit einem Erstellungsdatum bis jetzt ausgewählt werden:

ExampleRequest \u003d Neue Anfrage;
ExampleRequest.Text \u003d "
WÄHLEN
| Vorabbericht Angehängte Dateien.Link
| FROM
| Reference.AvailableReportAttachedFilesASA AdvanceReportAttachedFiles
WO
| Vorabbericht Angehängte Dateien.Datum< &ТекДата»;
ExampleRequest.SetParameter ("CurrentDate", CurrentDate ());

Benutzerdefiniertes Datum

Mit der obigen Funktion können Sie vergleichen und daher für einen beliebigen Zeitraum auswählen. Mit dieser Methode können Sie eine strikte Auswahl in der Abfrage angeben, ohne zusätzliche Parameter zu verwenden.

Beachten Sie, dass wir mit dieser Funktion im obigen Beispiel nur drei Zahlen (Jahr, Monat, Tag) als Eingabeparameter übergeben haben. Die letzten drei (Stunde, Minute, Sekunde) sind optional und werden, falls nicht vorhanden, durch "0" ersetzt, dh den Beginn des Tages.

In diesem Beispiel erhalten Sie alle Dateien, die bis Ende 2016 an Spesenabrechnungen angehängt sind. In diesem Zusammenhang geben wir die Stunde, Minute und Sekunde an, um sie mit dem Zeitpunkt "31. Dezember 2016 um 23:59:59" zu vergleichen.

WÄHLEN
Advance ReportAttached Files.Link
VON
Directory.AvailableReportAttachedFiles AS AdvanceReportAttachedFiles
WO
Vorabbericht Angehängte Dateien.Datum< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

Datum leeren

Es ist am einfachsten, eine Variable mit einem einfachen Vergleich zu überprüfen, um festzustellen, ob sie ein leeres Datum enthält. In diesem Beispiel wählen wir mithilfe einer Abfrage alle Geldeingänge auf einem Bankkonto aus, für das das Eingangsdatum nicht ausgefüllt ist.

DIE KLINGEL

Es gibt diejenigen, die diese Nachrichten vor Ihnen lesen.
Abonnieren Sie, um die neuesten Artikel zu erhalten.
Email
Name
Nachname
Wie willst du The Bell lesen?
Kein Spam