DZWON

Są tacy, którzy czytają tę wiadomość przed wami.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu

Podczas pracy z datami 1C typowa kolejność części dat to rok, miesiąc, dzień, godzina, minuty, sekundy. W takim przypadku można pominąć godziny, minuty, sekundy.

Tworząc datę na podstawie ciągu („rzut do daty”), można określić w zlokalizowanym formacie (dzień.miesiąc.rok godziny: minuty: sekundy), ale tylko w całości.

Na przykład:
// Praca z datami 1C - konwertuj datę na 1C z części - rok, miesiąc, dzień (plus opcjonalny czas)
Data \u003d Data (2012,10,30); // brak czasu
Data \u003d Data (2012,10,30,12,00,00); //z czasem

// Praca z datami 1C - konwertuj datę na 1C z łańcucha na różne sposoby
Data \u003d Data („20121030”); // rok miesiąc dzień
Data \u003d Data („30.10.2012 12:00:00”); // zlokalizowany format, tylko w całości

// Praca z datami 1C - bezpośrednie określanie wartości daty bez rzutowania
Data \u003d „20121030”; // brak czasu
Data \u003d "20121030120000"; //z czasem

Praca z datami 1C - Pusta data 1C

Aby sprawdzić pełną datę 1C - porównuje się ją z „pustą datą”. Jeśli w książce / dokumencie znajduje się atrybut typu daty, jeśli użytkownik nie wypełnił tego pola, jego wartością będzie również „pusta data”.

„Pusta data” to 01.01.0001 00:00:00.

Na przykład:
EmptyDate \u003d "00010101000000";
Jeśli RequiredDate \u003d "00010101000000" To
Raport („Nie wpisałeś bardzo potrzebnej daty”);
EndIf;

Praca z datami 1C - Data w szczegółach (podręczniki, dokumenty itp.)

Określając typ atrybutu, możesz określić zastosowanie:

  • Tylko data (wtedy zawsze jest godzina 00:00:00)
  • Tylko czas (data to zawsze 01.01.0001)
  • Data i godzina

Randka

Aby uzyskać datę i godzinę, użyj funkcji 1C CurrentDate ().

Miejsce wywołania tej funkcji jest bardzo ważne - na kliencie lub na serwerze. Aby uzyskać szczegółowe informacje, zobacz temat „Tryb wydajności / wydajność”. Często zdarza się, że czas na maszynach klienckich jest nieco inny, dlatego starają się wykorzystać czas serwera wszędzie - nawet jeśli nie jest on poprawnie ustawiony na serwerze, to przynajmniej wszyscy klienci będą mieli ten sam zły czas.

Aby uzyskać datę serwera (datę ustawioną w systemie operacyjnym komputera serwera), zazwyczaj w konfiguracji tworzony jest wspólny moduł z zaznaczonym polem "Serwer" we właściwościach i tworzona jest w nim funkcja
// funkcja znajduje się we wspólnym module, na przykład o nazwie ServerFunctions
// we właściwościach wspólnego modułu pole wyboru „Serwer” jest zaznaczone, a pole wyboru „Klient” nie jest ustawione
Funkcja GetServerDate () Export
Return CurrentDate ();
EndFunction

// wywołanie tej funkcji w celu użycia z innego modułu wygląda następująco
DocumentObject.Date \u003d ServerFunctions.GetServerDate (); //ModuleName.FunctionName ()

Również w cienkim kliencie, bezpośrednio obok funkcji modułów, wskazuje się, gdzie zostanie wykonany:

Początek i koniec dnia

Na dzień „30.10.2012”:

  • data rozpoczęcia dnia wygląda następująco: „10/30/2012 00:00:00”
  • data zakończenia wygląda następująco: „10/30/2012 23:59:59”

Jest używany w raportach i zapytaniach, które wymagają danych za okres - dzień, miesiąc, rok.

Na przykład okres od 01/01/2012 00:00:00 do 01/31/2012 00:00:00 jest niepoprawny, ponieważ nie obejmuje jednego dnia miesiąca (ale obejmuje jedną sekundę ostatniego dnia miesiąca).

Praca z datami 1C - Porównanie dat

Data zawiera datę i godzinę. Porównując daty (z wyłączeniem czasu), zwykle przenosi się je na początek dnia (miesiąc, rok).

Na przykład:
Date1 \u003d Date („30.10.2012 12:00:00”);
Jeśli StartDay (Date1) \u003d StartDay (DocumentRef.Date) Then
Raport („Dokument został wprowadzony przed określoną datą”);
EndIf;

Na wszelki wypadek przykład porównania dat w okresie:
Jeśli DocumentRef.Date\u003e \u003d StartMonth (CurrentDate ()) i
DocumentRef.Date

Praca z datami 1C - Zmiana daty

Data to liczba sekund. Jeśli chcemy nie tylko dowiedzieć się, czy jedna data jest większa od drugiej, ale także o ile więcej, to różnicę otrzymujemy w sekundach.

Na przykład:
DayStart \u003d CurrentDate () - DayStart (CurrentDate ());
Raport („Od początku dnia minęło” + String (Od początku dnia) + „Sekundy”);
Raport („Od początku dnia minęło” + String (Od początku dnia / 60) + „Minuty”);
Raport („Od początku dnia minął” + Linia (Od początku dnia / 60/60) + „Godzina”);

Możemy też zmienić datę, zmieniając dodajemy lub odejmujemy ilość sekund:
StartThisDay \u003d StartDay (CurrentDate ());

StartPreviousDay \u003d StartDay (StartThisDay - 1); // usuń drugi - wykonując „wczoraj” i zacznij dzień od „wczoraj”

StartPreviousDay \u003d StartThisDay - 24 * 60 * 60; // w inny sposób - odejmujemy 24 godziny - 24 (godziny) * 60 (okazały się minuty) * 60 (sekundy)

Praca z datami 1C - Chwila czasu

Moment w czasie to rozszerzona data mająca zastosowanie do dokumentów (i odpowiednio rejestrów).

Porównywanie czasu dokumentów jest wymagane, jeśli data i godzina dokumentów są takie same. W związku z tym może być używany podczas filtrowania zapytań.

Chwilę można uzyskać z dokumentu w następujący sposób:
// metoda 1
DocumentMomentTime \u003d DocumentRef.MomentTime ();

Możesz także porównać punkt w czasie z datą / godziną:
Moment of TimeStatus \u003d Nowy moment czasu (początek dnia (CurrentDate ()));
Jeśli DocumentRef.MomentTime (). Compare (TimeTimeStandard) \u003d -1 Then
Raport („Dokument został wprowadzony wcześniej niż dzisiaj”);
EndIf;
// Jeśli dokument został wprowadzony do dzisiejszej daty o godzinie 00:00:00, to mimo to został wprowadzony - dzisiaj

Praca z datami 1C - Formatowanie daty

Typ „Data” w 1C jest jednym z 4 głównych typów danych, obok liczby, ciągu znaków i wartości logicznych. Daty są wszechobecne w konfiguracjach - nie da się uniknąć pracy z tym typem danych podczas programowania. Dlatego lepiej zacząć pisać zapytania, już rozumiejąc, jak obsługiwać daty, jakie są możliwości pracy z nimi, jak są przechowywane. Spójrzmy na przykłady wszystkich niuansów pisania wniosków z różnymi datami.

Przykłady pracy z datami w żądaniach 1C

Przede wszystkim należy pobrać datę we wniosku w wymaganym formacie - z czasem lub bez. Istnieje kilka sposobów wykonania tego zadania:

  1. Przekaż parametr. Aktualną datę sesji można uzyskać tylko tą metodą;
  2. Uzyskaj datę w żądaniu z pola wyboru;
  3. Konwertuj z wartości liczbowych za pomocą funkcji DATETIME ().

Najczęstszym zadaniem podczas pracy z dokumentami jest sprawdzenie pustej daty w żądaniu 1C. W takim przypadku najłatwiej jest porównać zmienną lub pole z pustą datą, którą uzyskuje się funkcją DATA CZAS (1,1,1):

DATA CZAS (1, 1, 1)

Podobne polecenie może uzyskać w żądaniu dowolną datę i godzinę. Jednocześnie można je określić z dokładnością do sekundy, podając 6 liczb jako parametry. Jeśli zostaną użyte tylko 3 liczby, godziny, minuty i sekundy zostaną ustawione na 0 (początek dnia). Przykładowo we wniosku musimy wybrać dokumenty na pierwsze 10 dni stycznia 2018 roku:

WYBIERZ pokwitowanie do rachunku rozliczeniowego Odn. Jako łącze z dokumentu Wybierz rachunek rozliczeniowy jako pokwitowanie do rachunku rozliczeniowego GDZIE Odbiór do rachunku rozliczeniowego Data MIĘDZY DATĄ CZAS (2018, 1, 1, 0, 0, 0) I DATA, 1, 10, 23

W zapytaniu w osadzonym języku 1C możesz nie tylko wybierać różne pola i pobierać parametry. Istnieje wiele funkcji, które ułatwiają formatowanie daty dla konkretnego zadania. Jeśli często pracujesz z datami w zapytaniu, powinieneś znać następujące polecenia:

  • POCZĄTEK OKRESU. Jako parametry wskazano datę i przedział czasu, w kontekście których konieczne jest uzyskanie początku daty. Służy do konwersji daty na ponadczasowy format. W tym celu należy ustawić drugi parametr - „DZIEŃ”;
PERIOD START (,) PERIOD START (& Date, DAY) period\u003e date\u003e
  • KONIEC OKRESU. Podobna komenda, która zwraca ostatnią datę w postaci jednostek określonych w parametrach;
  • ADDEDDATE. Pozwala uzyskać datę większą niż określona liczba określonych jednostek czasu. Data, jednostka czasu i liczba są określone jako parametry funkcji;
ADDEDDATE (,) ADDEDDATE (& Date, DAY, 10) count\u003e type\u003e date\u003e
  • RÓŻNICA Pobiera różnicę między datami w określonych jednostkach;
RÓŻNICA DATY (,) RÓŻNICA DATY (& Data1, & Data2, DZIEŃ) type\u003e date2\u003e date1\u003e
  • DZIEŃ TYGODNIA. Zwraca liczbę porządkową jednego z dni tygodnia.

Stosując te funkcje poprawnie, programista może rozwiązać raczej nietrywialne zadania. Na przykład pobranie nazwy dnia tygodnia z bieżącej daty w zapytaniu w postaci ciągu:

WYBIERZ WHEN DAY WEEK (& CurrentDate) \u003d 1 THEN THEN "Monday" WHEN DAY WEEK (& CurrentDate) \u003d 2 THEN THEN "Tuesday" WHEN DAY WEEK (& CurrentDate) \u003d 3 THEN THEN "Wednesday" WHEN DAY WEEK Current (& CurrentDate) \u003d 4 THEN THEN "DAY" & Czwartek \u003d 5 TO "piątek" GDY DZIEŃ TYDZIEŃ (& CurrentDate) \u003d 6 TO "sobota" INNY "niedziela" KONIEC

Konwersja typów w zapytaniu 1C z liczby lub ciągu na datę jest pracochłonnym zadaniem. Z liczb można uzyskać datę za pomocą funkcji DATA GODZINA z łańcucha, łącząc funkcję PODŁAŃCUCH i konstrukcję SELECT WHEN THEN ELSE. Na tej podstawie programiści wolą pobrać datę z innych typów w module i przekazać ją do żądania za pomocą parametru. Niestety nie zawsze jest to wykonalne, więc musisz zmienić format daty w żądaniu.

Możliwe jest określenie daty w żądaniu 1C jako parametru do uzyskiwania danych z tabel rejestrów wirtualnych. Wszystkie powyższe funkcje można również wykorzystać w tej roli. Ale tutaj ważne jest, aby nie dopuścić, aby pusta data w żądaniu 1C wpłynęła na końcowy wynik wykonania kodu, dlatego konieczne jest sprawdzenie.

Podczas pracy z datami 1C typowa kolejność części dat to rok, miesiąc, dzień, godzina, minuty, sekundy. W takim przypadku można pominąć godziny, minuty, sekundy.

Tworząc datę na podstawie ciągu („rzut do daty”), można określić w zlokalizowanym formacie (dzień.miesiąc.rok godziny: minuty: sekundy), ale tylko w całości.

Na przykład:

// Praca z datami 1C - konwertuj datę na 1C z części - rok, miesiąc, dzień (plus opcjonalny czas) Data \u003d Data (2012,10,30); // bez czasu Data \u003d Data (2012,10,30,12,00,00); // z czasem // Praca z datami 1C - zamień datę na 1C z łańcucha, różne sposoby Date \u003d Date ("20121030"); // rok, miesiąc, dzień Data \u003d Data ("10/30/2012 12:00:00"); // zlokalizowany format, tylko w pełni // Praca z datami 1C - określanie wartości daty bez rzutowania, bezpośrednio Date \u003d "20121030"; // brak czasu Data \u003d "20121030120000"; //z czasem

Praca z datami 1C - Pusta data 1C

Aby sprawdzić pełną datę 1C - porównuje się ją z „pustą datą”. Jeśli w książce / dokumencie znajduje się atrybut typu daty, jeśli użytkownik nie wypełnił tego pola, jego wartością będzie również „pusta data”.

„Pusta data” to 01.01.0001 00:00:00.

Na przykład:

EmptyDate \u003d "00010101000000"; Jeśli RequiredDate \u003d "00010101000000" Następnie zgłoś ("Nie wpisałeś bardzo potrzebnej daty"); EndIf;

Praca z datami 1C - Data w szczegółach (podręczniki, dokumenty itp.)

Określając typ atrybutu, możesz określić zastosowanie:

Tylko data (wtedy zawsze jest godzina 00:00:00)
Tylko czas (data to zawsze 01.01.0001)
Data i godzina

Randka

Aby uzyskać datę i godzinę, użyj funkcji 1C CurrentDate ().

Miejsce wywołania tej funkcji jest bardzo ważne - na kliencie lub na serwerze. Aby uzyskać szczegółowe informacje, zobacz temat „Tryb wydajności / wydajność”. Często zdarza się, że czas na maszynach klienckich jest nieco inny, dlatego starają się wykorzystać czas serwera wszędzie - nawet jeśli nie jest on poprawnie ustawiony na serwerze, to przynajmniej wszyscy klienci będą mieli ten sam zły czas.

Aby uzyskać datę serwera (datę ustawioną w systemie operacyjnym komputera serwera), zazwyczaj w konfiguracji tworzony jest wspólny moduł z zaznaczonym polem "Serwer" we właściwościach i tworzona jest w nim funkcja

// funkcja znajduje się we wspólnym module, na przykład o nazwie ServerFunctions // we właściwościach wspólnego modułu pole wyboru „Server” jest zaznaczone, a pole wyboru „Client” nie jest zaznaczone. Function GetServerDate () Export Return CurrentDate (); EndFunction // wywołanie tej funkcji do użycia z innego modułu wygląda jak DocumentObject.Date \u003d ServerFunctions.GetServerDate (); //ModuleName.FunctionName ()

Również w cienkim kliencie, bezpośrednio obok funkcji modułów, wskazuje się, gdzie zostanie wykonany:

Początek i koniec dnia

Na dzień „30.10.2012”:

data rozpoczęcia dnia wygląda następująco: „10/30/2012 00:00:00”
data zakończenia wygląda następująco: „10/30/2012 23:59:59”

Jest używany w raportach i zapytaniach, które wymagają danych za okres - dzień, miesiąc, rok.

Na przykład okres od 01/01/2012 00:00:00 do 01/31/2012 00:00:00 jest niepoprawny, ponieważ nie obejmuje jednego dnia miesiąca (ale obejmuje jedną sekundę ostatniego dnia miesiąca).

Praca z datami 1C - Porównanie dat

Data zawiera datę i godzinę. Porównując daty (z wyłączeniem czasu), zwykle przenosi się je na początek dnia (miesiąc, rok).

Na przykład:

Date1 \u003d Date („30.10.2012 12:00:00”); Jeśli StartDay (Date1) \u003d StartDay (DocumentLink.Date) Then Inform ("Dokument wprowadzony przed określoną datą"); EndIf; Na wszelki wypadek przykład porównania daty w okresie: Jeśli DocumentRef.Date\u003e \u003d StartMonth (CurrentDate ()) i DocumentLink.Date<= КонецМесяца(ТекущаяДата()) Тогда Сообщить("Документ введен в текущем месяце"); КонецЕсли;

Praca z datami 1C - Zmiana daty

Data to liczba sekund. Jeśli chcemy nie tylko dowiedzieć się, czy jedna data jest większa od drugiej, ale także o ile więcej, to różnicę otrzymujemy w sekundach.

Na przykład:

DayStart \u003d CurrentDate () - DayStart (CurrentDate ()); Raport („Od początku dnia minęło” + String (Od początku dnia) + „Sekundy”); Raport („Od początku dnia minęło” + String (Od początku dnia / 60) + „Minuty”); Raport („Od początku dnia minął” + Linia (Od początku dnia / 60/60) + „Godzina”);

Możemy też zmienić datę, zmieniając dodajemy lub odejmujemy ilość sekund:

StartThisDay \u003d StartDay (CurrentDate ()); StartPreviousDay \u003d StartDay (StartThisDay - 1); // usuń drugi - robiąc „wczoraj” i weź początek dnia z „wczoraj” Początek poprzedniego dnia \u003d Początek tego dnia - 24 * 60 * 60; // w inny sposób - odejmujemy 24 godziny - 24 (godziny) * 60 (okazały się minuty) * 60 (sekundy)

Praca z datami 1C - Chwila czasu

Moment w czasie to rozszerzona data mająca zastosowanie do dokumentów (i odpowiednio rejestrów).

Porównywanie czasu dokumentów jest wymagane, jeśli data i godzina dokumentów są takie same. W związku z tym może być używany podczas filtrowania zapytań.

Moment w czasie można uzyskać z dokumentu w następujący sposób:

// metoda 1DocumentMomentTime \u003d DocumentRef.MomentTime (); Możesz także porównać moment w czasie z datą / godziną: MomentTimeStandard \u003d NewMomentTime (StartDay (CurrentDate ())); Jeśli DocumentLink.MomentTime (). Compare (MomentTimeStandard) \u003d -1 Then Report ("Dokument został wprowadzony wcześniej niż dzisiaj"); EndIf; // Jeśli dokument został wprowadzony do dzisiejszej daty o godzinie 00:00:00, to mimo to został wprowadzony - dzisiaj

W pewnym momencie zachodzi potrzeba pracy ze zmiennymi typu „Data”. W tym artykule rozważymy podstawowe techniki - przekazanie aktualnej daty, sprawdzenie pustej wartości, dowolna data.

Podczas pisania zapytań często konieczne jest porównanie danych z aktualną datą. Wbudowany język 1C ma funkcję CurrentDate (). Pozwala określić aktualną godzinę i datę na komputerze. Aby wykonać operacje z bieżącą datą, należy przekazać wartość tej funkcji jako parametr do żądania.

Poniżej znajduje się zapytanie, które wybiera wszystkie pliki załączone do raportów z wydatków z aktualną datą utworzenia:

ExampleRequest \u003d Nowe żądanie;
ExampleRequest.Text \u003d "
| WYBIERZ
| Załączone pliki raportu zaawansowanego. Link
| OD
| Reference.AvailableReportAttachedFilesASAAAvailableReportAttachedFiles
| GDZIE
| Załączone pliki raportu wstępnego Data< &ТекДата»;
ExampleRequest.SetParameter ("CurrentDate", CurrentDate ());

Data niestandardowa

Powyższa funkcja pozwala na porównanie, a tym samym dokonanie wyboru dla dowolnego okresu. Ta metoda umożliwia określenie ścisłego wyboru w zapytaniu bez używania dodatkowych parametrów.

Zauważ, że używając tej funkcji w powyższym przykładzie, przekazaliśmy tylko trzy liczby (rok, miesiąc, dzień) jako parametry wejściowe. Ostatnie trzy (godzina, minuta, sekunda) są opcjonalne, a jeśli ich nie ma, zastępowane są przez „0”, czyli początek dnia.

W tym przykładzie otrzymasz wszystkie pliki załączone do raportów z wydatków do końca ostatniego 2016 roku. W związku z tym wskażemy godzinę, minutę i sekundę w celu porównania z punktem w czasie „31 grudnia 2016 23:59:59”.

WYBIERAĆ
Załączone pliki raportu zaawansowanego. Link
Z
Reference.AvailableReportAttachedFiles AS AdvanceReportAttachedFiles
GDZIE
Załączone pliki raportu wstępnego Data< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

Pusta data

Najłatwiejszym sposobem sprawdzenia zmiennej, aby zobaczyć, czy zawiera ona pustą datę, jest proste porównanie. W tym przykładzie za pomocą zapytania wybierzemy wszystkie wpływy środków na rachunek bankowy, dla którego data wpłynięcia nie jest wypełniona.

DZWON

Są tacy, którzy czytają tę wiadomość przed wami.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu