Okna.  Wirusy.  Laptopy.  Internet.  Biuro.  Narzędzia.  Kierowcy

W tym artykule chcemy omówić z Tobą wszystko Funkcje języka zapytań 1C, a także konstrukcje języka zapytań. Jaka jest różnica między funkcją a designem? Funkcja jest wywoływana z nawiasami i możliwymi parametrami, a konstrukcja jest zapisywana bez nawiasów. Niewątpliwie wszystkie struktury i funkcje języka zapytań 1C sprawiają, że proces pozyskiwania danych jest elastyczny i wielofunkcyjny. Te funkcje i konstrukcje mają zastosowanie do pól zapytań, a niektóre także do warunków.

Funkcje języka zapytań 1C

Bo jasny opis Funkcje języka zapytań 1c jest znacznie mniej powszechne niż opisy struktur, postanowiliśmy zacząć przyglądać się funkcjom. Przyjrzyjmy się teraz każdemu z osobna, opisując jego przeznaczenie, składnię i przykład użycia, a więc:

1. Funkcjonować DATAGODZINA - tę funkcję tworzy stałe pole typu „Data”.

Składnia: DATAGODZINA(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Przykład użycia:

2. Funkcja RÓŻNICA DATY- zwraca różnicę pomiędzy dwiema datami w jednym z wymiarów (rok, miesiąc, dzień, godzina, minuta, sekunda). Pomiar przekazywany jest jako parametr.

Składnia: RÓŻNICA DATA(<Дата1>, <Дата2>, <Тип>)

Przykład użycia:

Query.Text = "WYBIERZ | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DZIEŃ) | AS Liczba dni";

3. Funkcja WARTOŚĆ- ustawia stałe pole z predefiniowanym rekordem z bazy danych, można także uzyskać pusty link dowolnego typu;

Składnia: WARTOŚĆ(<Имя>)

Przykład użycia:

Request.Text = "WYBIERZ //predefiniowany element | WARTOŚĆ(Katalog.Waluty.Dollar) Dolar AS, //pusty link | WARTOŚĆ(Dokument.Odbiór towarów i usług.EmptyLink) AS Paragon, //wartość przelewu | WARTOŚĆ(Przelew . Osoba prawna. Osoba fizyczna) AS Indywidualna, //konto predefiniowane WARTOŚĆ(Plan kont. Samoksięgowanie.Materiały) AS Konto_10" ;

4. WYBIERZ funkcję- mamy przed sobą analogię konstrukcji IF, która jest używana w kodzie, tylko ta jest używana w zapytaniach 1C.

Składnia: WYBÓR KIEDY<Выражение>NASTĘPNIE<Выражение>W PRZECIWNYM RAZIE<Выражение>KONIEC

Przykład użycia:

Request.Text = //jeśli kwota jest większa niż 7500, wówczas powinien obowiązywać rabat w wysokości 300 rubli, //więc jeśli warunek zostanie spełniony, to funkcja //zwróci Kwotę - 300 //w przeciwnym razie żądanie po prostu zwróci Kwotę "WYBIERZ | WYBIERZ | KIEDY TCReceipts.Amount > 7500 | WTEDY TCReceipts.Amount - 300 | ELSE TCReceipts.Amount | END AS AmountWithDiscount | FROM |

5. Funkcja EKSPRES- pozwala wyrazić pole stałe określonego typu.

Składnia: EXPRESS (nazwa pola jako nazwa typu)

Przykład użycia:

Query.Text = "WYBIERZ RÓŻNE | Numer.sprzedaży.Rejestratora, | WYBIERZ | KIEDY Rejestr.Sprzedaż LINK Dokument.Wydatek | WTEDY WYRAŻONY(Dokument.Sprzedaż.Registrar AS.Wydatek) | ELSE WYBIERZ | KIEDY Sprzedawca.Rejestrator LINK Dokument.Implementacja | THEN EXPRESS(Sprzedaż.Rejestr AS.Dokument.Wdrożenie) |. END AS Numer |.

Inną możliwością jest użycie w polach funkcji EXPRESS typy mieszane gdzie je można znaleźć? Najprostszym przykładem jest „Rejestrator” dla dowolnego rejestru. Dlaczego więc możemy potrzebować zakwalifikować typ w rejestratorze? Rozważmy sytuację, gdy wybierzemy od rejestratora pole „Numer”, z której tabeli zostanie wybrany numer? Prawidłowa odpowiedź ze wszystkich! Dlatego, aby nasze zapytanie zadziałało szybko, musimy określić jawny typ za pomocą funkcji EXPRESS

Przykład użycia:

Query.Text = "SELECT | EXPRESS(Nomenklatura.Komentarz AS Line(300)) AS Komentarz, | EXPRESS(Nomenklatura.Suma AS Number(15,2)) AS Suma |FROM | Katalog.Nomenklatura AS Nomenklatura";

6. Funkcja ISNULL(alternatywna pisownia ISNULL) - jeżeli pole jest typu NULL to zostaje ono zastąpione drugim parametrem funkcji.

Składnia: ISNULL(<Поле>, <ПодставляемоеЗначение>)

Przykład użycia:

Należy również pamiętać, że wskazane jest ZAWSZE zastępowanie typu NULL jakąś wartością, ponieważ porównanie z typem NULL zawsze zwraca FALSE, nawet jeśli porównasz NULL z NULL. Najczęściej wartości NULL powstają w wyniku łączenia tabel (wszystkie typy złączeń z wyjątkiem złączeń wewnętrznych).

Query.Text = //Wybierz całą pozycję i jej salda //jeśli w jakiejś pozycji nie ma salda, pojawi się pole //NULL, które zostanie zastąpione wartością 0 "SELECT | Nr Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) JAK Pozostało | Z |. Katalog.Nomenklatura AS Nr |. LEWE POŁĄCZENIE RejestrAkumulacje.Towary w magazynach.Pozostałe jako Towary w magazynachPozostałe | PO (GoodsInWarehousesRemainings.Nomenclature = No.Link)";

7. Funkcja REPREZENTACJA- pozwala uzyskać reprezentację pola żądania.

Składnia: WYDAJNOŚĆ(<НаименованиеПоля>)

Przykład użycia:

Query.Text = "SELECT | REPRESENTATION(FreeRemainingRemains.Nomenclature) AS Nomenklatura, | REPRESENTATION(FreeRemainingRemaining.Warehouse) AS Warehouse, | FreeRemainingRemaining.InStockRemaining |FROM |Akumulacja Register.FreeRemaining.Remaining AS FreeRemainingRemaining";

Konstruuje w języku zapytań 1C

Rozmawialiśmy z Tobą powyżej Funkcje języka zapytań 1C, teraz czas się zastanowić konstrukcje w języku zapytań 1C, są nie mniej ważne i przydatne, zaczynajmy.

1. LINK budowlany- reprezentuje operatora logicznego sprawdzenie typu odniesienia. Najczęściej spotykane podczas sprawdzania pola typu złożonego względem określonego typu. Składnia: POŁĄCZYĆ<Имя таблицы>

Przykład użycia:

Request.Text = //jeśli typem wartości rejestratora jest dokument Paragon, //wtedy zapytanie zwróci „Odbiór towaru”, w przeciwnym razie „Sprzedaż towaru” „WYBIERZ | WYBIERZ | KIEDY Pozostało.Registrar LINK Dokument.Odbiór towarówUsługi | WTEDY ""Odbiór" |. W przeciwnym razie ""Konsumpcja" |. KONIEC JAKO Rodzaj przemieszczenia |. Z |. Rejestr gromadzenia pozostałych produktów w magazynach jako pozostałych" ;

2. Projekt MIĘDZY - tego operatora sprawdza, czy wartość mieści się w określonym zakresie.

Składnia: MIĘDZY<Выражение>I<Выражение>

Przykład użycia:

Request.Text = //pobierz całą nomenklaturę, której kod mieści się w zakresie od 1 do 100 "SELECT | Nomenclature.Link |FROM | Directory.Nomenclature AS Nomenklatura |WHERE | Nomenklatura.Code BETWEEN 1 AND 100" ;

3. HIERARCHIA konstrukcji B i B- sprawdź, czy wartość znajduje się na przesyłanej liście (tablice, tabele wartości itp. można przesyłać w formie listy). Operator IN HIERARCHY umożliwia podgląd hierarchii (przykład wykorzystania Planu Kont).

Składnia: W(<СписокЗначений>), W HIERARCHII (<СписокЗначений>)

Przykład użycia:

Request.Text = //wybierz wszystkie subkonta konta "WYBIERZ | Samonośne. Połącz konto AS | Z | Plan kont. Samonośne AS Samonośne | GDZIE | Samonośne. Link W WARTOŚCI HIERARCHII (Schemat kont Konta. Towary samonośne)”;

4. Projekt PODOBNY- Ta funkcja pozwala nam porównać ciąg znaków ze wzorcem ciągu.

Składnia: TAK JAK "<ТекстШаблона>"

Opcje wzoru wiersza:

% - ciąg zawierający dowolną liczbę dowolnych znaków.

Jeden dowolny znak.

[...] - dowolny pojedynczy znak lub ciąg znaków umieszczony w nawiasach kwadratowych. Wyliczenie może określać zakresy, na przykład a-z, co oznacza dowolny znak zawarty w zakresie, łącznie z końcami zakresu.

[^...] - dowolny pojedynczy znak lub ciąg znaków umieszczony w nawiasach kwadratowych, z wyjątkiem tych wymienionych po znaku negacji.

Przykład użycia:

Query.Text = //znajdź całą nomenklaturę zawierającą rdzeń TABUR i rozpoczynającą się //małą lub dużą literą t "WYBIERZ | Nomenklatura. Link | Z | Katalog. Nomenklatura AS Nomenklatura | GDZIE | Produkty. Nazwa LIKE "" [Tt ]abur%""" ;

5. Projekt DOZWOLONY- operator ten pozwala na wybranie z bazy danych tylko tych rekordów, do których osoba wywołująca ma uprawnienia do odczytu. Uprawnienia te konfiguruje się na poziomie rekordu (RLS).

Składnia: DOZWOLONE jest napisane po słowo kluczowe WYBIERAĆ

Przykład użycia:

Request.Text = "WYBIERZ DOZWOLONE | Kontrahenci. Link | Z | Katalog. Kontrahenci JAKO Kontrahenci";

6. Projektowanie RÓŻNE- umożliwia wybranie rekordów, w których nie ma duplikatów rekordów.

Składnia: VARIOUS jest zapisywane po słowie kluczowym SELECT

Przykład użycia:

Request.Text = //wybiera rekordy, do których czytelnik ma prawa "WYBIERZ RÓŻNE | Kontrahenci.Nazwa |FROM | Katalog. Kontrahenci JAKO Kontrahenci" ;

Ponadto konstrukcji RÓŻNE można używać z operatorem DOZWOLONYM i innymi operatorami.

Przykład użycia:

Request.Text = //wybiera różne rekordy, do których czytelnik ma uprawnienia "WYBIERZ DOZWOLONE RÓŻNE | Kontrahenci.Nazwa |FROM | Katalog. Kontrahenci JAKO Kontrahenci";

7. Najpierw zaprojektuj- wybiera z wyniku zapytania liczbę rekordów określoną w parametrze.

Składnia: PIERWSZY<число>

Przykład użycia:

Request.Text = //wybierz pierwsze 4 numery CCD z katalogu "WYBIERZ PIERWSZE 4 | Numery CCD. Link | Z | Katalog. Numery CCD JAKO Numery CCD";

8. Projekt DLA ZMIANY- pozwala na zablokowanie stołu, działa tylko w transakcjach (dotyczy tylko zamków automatycznych).

Składnia: ZMIENIĆ<НаименованиеТаблицы>

Przykład użycia:

Query.Text = "WYBIERZ | Wolne pozostałości Pozostałości. Nomenklatura, | Wolne pozostałości Pozostałości. Magazyn, | Wolne pozostałości Pozostałości. W magazynie Pozostało | Z | Rejestr nagromadzeń. Wolne pozostałości. Pozostałości AS Wolne pozostałości Pozostałości | DO ZMIANY | Rejestr nagromadzeń . Wolne pozostałości”;

9. Projekt ZAMÓW PRZEZ- porządkuje dane według określonego pola. Jeżeli pole jest linkiem to przy ustawianiu flagi AUTOMATYCZNE ZAMÓWIENIE Sortowanie będzie odbywać się według reprezentacji łącza; jeśli flaga jest wyłączona, wówczas łącza są sortowane według starszeństwa adresu łącza w pamięci.

Składnia: ZAMÓW PRZEZ<НаименованиеПоля>AUTOMATYCZNE ZAMÓWIENIE

Przykład użycia:

Query.Text = "WYBIERZ | Wolne pozostałe pozostałości. Nomenklatura AS Nomenklatura, | Wolne pozostałe pozostałości. Magazyn JAKO magazyn, | Wolne pozostałe pozostałości. W magazynie Pozostałe | OD | Zarejestruj nagromadzenia. Wolne pozostałości. Pozostałe jako Wolne pozostałe pozostałości | | ZAMÓW PRZEZ |. Nomenklatura |. AUTOMATYCZNY ODCZYT ZAMÓWIEŃ";

10. Projekt GRUPA WG- służy do grupowania ciągów zapytań według określonych pól. Z każdą funkcją agregującą należy używać pól numerycznych.

Składnia: GRUPUJ WG<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Przykład użycia:

Query.Text = "WYBIERZ | ProductsInWarehouses.Nomenklatura AS Nomenklatura, | ProductsInWarehouses.Warehouse, | SUM(GoodsInWarehouses.InStock) JAKO MAGAZYN |FROM | RegisterAccumulations.ProductsInWarehouses AS ProductsInWarehouses | |GROUP BY | ProduktyInWarehouses.Nomenklatura, | skarby.Warehouse";

11. Projekt MIEĆ- umożliwia zastosowanie funkcji agregującej do warunku wyboru danych, podobnie jak w przypadku konstrukcji WHERE.

Składnia: MAJĄCY<агрегатная функция с условием>

Przykład użycia:

Query.Text = //wybiera zgrupowane rekordy, w których pole InStock jest większe niż 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenklatura, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK |FROM | RegisterAccumulations.ItemsInStocks AS ItemsInStocks | | GRUPUJ WEDŁUG |. Produkty w magazynach. Nomenklatura, |. Produkty w magazynach. Magazyn |. | DOSTĘPNE |. KWOTA (Produkty w magazynach. W magazynie) > 3" ;

12. INDEKS Budowlany WG- służy do indeksowania pola zapytania. Wykonanie zapytania z indeksowaniem trwa dłużej, ale przyspiesza przeszukiwanie zaindeksowanych pól. Można go używać tylko w tabelach wirtualnych.

Składnia: INDEKS WG<Поле1, ... , ПолеN>

Przykład użycia:

Query.Text = "WYBIERZ | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | PLACE DataTs | FROM | &Ts AS Ts | | INDEX BY | Ts.NameOS, | Ts .KodeksOS";

13. Projekt GDZIE- umożliwia nałożenie warunku na dowolne pola wyboru. W rezultacie zostaną uwzględnione tylko rekordy spełniające warunek.

Składnia: GDZIE<Условие1 ОператорЛогСоединения УсловиеN>

Przykład użycia:

Query.Text = //wybrano wszystkie rekordy z CompensationRemaining<>0 i //AmountForCalcCompRemaining > 100 "SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPORemains.CompensationRemaining, | CompensationRPORemains.AmountForCalcCompRemains |Place DataTz |FROM |Akumulacja Rejestr.CompensationRP.Remains AS CompensationRPRemains |WHE RE |KompensacjaRPORemaining.CompensationRemaining<>0 | I CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. WYNIKI PROJEKTOWANIA... OGÓLNE- służy do obliczania sum; projekt określa pola, według których będą obliczane sumy oraz funkcje agregujące stosowane do pól sumy. W przypadku stosowania sum dla każdego pola po konstrukcji TOTAL dane są grupowane. Istnieje opcjonalna konstrukcja OGÓLNA; jej użycie zapewnia również dodatkowe grupowanie. Poniżej zobaczysz przykładowy wynik żądania.

Składnia: WYNIKI<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>PRZEZ<ОБЩИЕ> <Поле1, ... , ПолеN>

Przykład użycia:

Request.Text = "WYBIERZ | Obliczenia. Umowa z kontrahentem. Rodzaj umowy AS Rodzaj kontraktu, | Obliczenia. Umowa z kontrahentem Kontrakt AS, | Obliczenia. Kontrahent, | Obliczenia. Kwota salda rozliczeń wzajemnych Saldo AS | OD | Rejestr akumulacji. Wzajemne Rozliczenie z kontrahentami Salda AS Obliczenia |. OGÓŁEM |. KWOTA (Saldo) |ON |OGÓLNE, |Rodzaj umowy";

Na rysunku przedstawiono zgrupowania, które powstały w trakcie realizacji żądania, górne odnosi się do sekcji OGÓLNE, a drugie do pola Typ umowy z kontrahentem.

43
NULL – brakujące wartości. Nie mylić z wartością zerową! NULL nie jest liczbą, nie jest równy spacji, pusty link 26
, Nieokreślony. 18
NULL jest wartością tworzącą typ, tj. istnieje typ NULL i pojedyncza wartość tego typu. NIEWAŻNY... Do generowania i wykonywania zapytań do tabel bazy danych na platformie 1C używany jest specjalny obiekt języka programowania Query. Obiekt ten jest tworzony poprzez wywołanie konstrukcji New Request. Wygodna prośba... 13
W artykule przedstawiono przydatne techniki pracy z zapytaniami 1C v.8.2, a także informacje, które nie są dobrze znane na temat języka zapytań. Nie próbuję dawać

pełny opis język zapytań, ale chcę się tylko nad tym zastanowić... LIKE - Operator sprawdzający podobieństwo łańcucha do wzorca. Analog LIKE w SQL.

Operator SIMILAR umożliwia porównanie wartości wyrażenia określonego po jego lewej stronie z ciągiem wzorca określonym po prawej stronie. Znaczenie wyrażenia... Dość często zachodzi potrzeba pracy ze zmiennymi typu „Data”. W tym artykule przyjrzymy się podstawowym technikom - przekazywaniu bieżącej daty, sprawdzaniu pusta wartość

, dowolna data.

Pisząc zapytania często zachodzi potrzeba porównania danych z datą bieżącą. Wbudowany język 1C ma funkcję CurrentDate(). Pozwala określić
aktualny czas
i data na komputerze. Aby wykonać operacje na bieżącej dacie 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 wydatków z dotychczasową datą utworzenia:
Przykładowe żądanie = Nowe żądanie;
Przykładowe żądanie.Text = "
|WYBIERZ
| AdvanceReportAttachedFiles.Link< &ТекДата»;
|OD

| Directory.AdvanceReportAttachedFilesAS AdvanceReportAttachedFiles

Omówiona powyżej funkcja pozwala na porównanie, a co za tym idzie dokonanie selekcji dla dowolnego okresu. Ta metoda umożliwia określenie ścisłego wyboru w żądaniu bez użycia dodatkowych parametrów.

Należy pamiętać, że korzystając z tej funkcji w powyższym przykładzie, jako parametry wejściowe przekazaliśmy tylko trzy liczby (rok, miesiąc, dzień). Ostatnie trzy (godzina, minuta, sekunda) są opcjonalne i w przypadku ich braku zastępuje się je „0”, czyli początkiem dnia.

W ten przykład Otrzymane zostaną wszystkie pliki dołączone do zestawień wydatków do końca ubiegłego roku 2016. W związku z tym wskażemy godzinę, minutę i sekundę, aby porównać punkt czasowy „31 grudnia 2016 r. 23:59:59”.

WYBIERAĆ
AdvanceReportAttachedFiles.Link
Z
Directory.AdvanceReportAttachedFiles AS AdvanceReportAttachedFiles
GDZIE
AdvanceReportAttachedFiles.Date< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

Pusta data

Najłatwiejszym sposobem sprawdzenia zmiennej, czy zawiera pustą datę, jest użycie prostego porównania. W tym przykładzie użyjemy zapytania, aby wybrać wszystkie paragony gotówka na rachunki, na których nie wpisano daty wpływu.

Bardzo często w zapytaniach 1C trzeba pracować z datami. Zwłaszcza gdy żądanie kierowane jest do obiektów metadanych zawierających informacje okresowe. Z reguły są to rejestry (informacje, akumulacja, obliczenia, księgowość). Przyjrzyjmy się najczęściej używanym funkcjom języka zapytań 1C do pracy z datami. Będziemy budować przykłady w oparciu o rejestr informacyjny Organizacje pracowników Konfiguracje ZUP wersja 2.5.

  • DATAGODZINA

    Umożliwia uzyskanie daty w żądaniu (z godziną lub bez) poprzez określenie roku, miesiąca, dnia, godziny, minuty, sekundy.
    Składnia:
    DATETIME(rok, miesiąc, dzień, godzina, minuta, sekunda)
    Zwykle nie jest wskazana godzina, minuta i sekunda. Podajmy mini przykład. Wpisz następujący tekst w konsoli zapytań:

    WYBIERZ DATĘGODZINĘ(2016, 1, 1)

    W wyniku realizacji żądania otrzymujemy datę - 01.01.2016
    Właściwie trudno sobie wyobrazić sytuację, w której data byłaby w ten sposób wskazana we wniosku. W końcu, gdy trzeba określić okres, używane są parametry. Ale jest przypadek, gdy ta funkcja ma szczególną wartość. To wtedy musimy wskazać pustą datę w polach lub w warunkach zapytania. Przypomnę, że dla języka 1C pusta data ma postać - 0001.01.01. Zatem, aby w żądaniu otrzymać pustą datę, wystarczy podać DATACZAS(1, 1, 1). Jako przykład wybierzmy z rejestru informacyjnego Organizacje pracowników zapisy, które nie są wypełnione Okres realizacji:

    WYBIERZ Pracownicy organizacji.Okres, Pracownicy organizacji.Pracownik, Pracownicy organizacji.Stanowisko, Pracownicy organizacji.Pion organizacji Z Informacje rejestrowe.Pracownicy organizacji AS Pracownicy organizacji GDZIE Pracownicy organizacji.Okres zakończenia = DATACZAS(1, 1, 1)

  • POCZĄTEK OKRESU

    Dla określonej daty zwraca początek okresu, do którego ona należy.
    Składnia:
    POCZĄTEK OKRESU(data, typ okresu)
    PeriodType może przyjmować następujące wartości: MINUTA, GODZINA, DZIEŃ, TYDZIEŃ, MIESIĄC, KWARTAŁ, ROK, DEKADA, PÓŁROKU
    W konsoli zapytań wpisz:

    WYBIERZ POCZĄTEK OKRESU(DATAGODZINA(2016, 1, 15), MIESIĄC)

    Zapytanie zostanie zwrócone - 01.01.2016
    A teraz przykład. Jak wiadomo, okresowość rejestru Organizacje pracowników pewnego dnia. Utwórzmy zapytanie, w którym zamiast faktycznego okresu rekordowego wyświetli się data początkowa miesiąca.

    WYBIERZ POCZĄTEK OKRESU (Pracownicy organizacji. Okres, MIESIĄC) AS Początek miesiąca, Pracownicy organizacji. Pracownik, Pracownicy organizacji. Stanowisko, Pracownicy organizacji. Oddział organizacji Z Rejestru informacji. Pracownicy organizacji AS Pracownicy organizacji

  • KONIEC OKRESU

    Składnia jest taka sama jak dla początku kropki. Jak sama nazwa wskazuje, zwraca koniec okresu według daty i typu okresu. Nie będziemy tego szczegółowo rozważać. Ograniczmy się do mini przykładu.
    Wniosek:

    WYBIERZ KONIEC OKRESU(DATAGODZINA(2016, 1, 15), MIESIĄC)

    Zwraca 31.01.2016 23:59:59
    Jak widać, wartość jest zwracana z dokładnością do sekundy.

  • DODATK.DATA

    Dodaje określoną liczbę przedziałów czasu do daty.
    Składnia:
    ADDKDATE(data, typ okresu, ilość)
    PeriodType przyjmuje takie same wartości jak dla funkcji POCZĄTEK OKRESU
    Wybierzmy na przykład datę lutego:

    WYBIERZ DATĘ DODAWANIA(DATAGODZINA(2016, 2, 15), MIESIĄC, 2)

    Otrzymujemy datę 15.04.2016 0:00:00 Pomimo tego, że luty jest krótkim miesiącem, dzień otrzymanej daty jest taki sam jak pierwotny. To bardzo wygodne, że nie musisz myśleć o liczbie dni w miesiącach.
    Ilość może być również ujemna. Następnie odstęp jest liczony w przeciwnym kierunku.

  • RÓŻNICA DATA

    Oblicz różnicę między dwiema datami w określonych jednostkach miary.
    Składnia:
    RÓŻNICA DATY (data początkowa, data końcowa, typ okresu)
    Typ okresu może przyjmować następujące wartości: DRUGA, MINUTA, GODZINA, DZIEŃ, MIESIĄC, KWARTAŁ, ROK
    Na przykład:

    WYBIERZ RÓŻNICĘ DATA(DATAGODZINA(2016, 2, 15), DATAGODZINA(2016, 3, 1), DZIEŃ)

    zwraca 15

Tutaj sprawdziliśmy najczęściej używane funkcje języka zapytań 1C. Reszta używana dość rzadko. W razie potrzeby przykłady pracy z nimi można znaleźć w pomocy wbudowanej w platformę 1C.

Typ „Data” w 1C jest jednym z 4 głównych typów danych wraz z liczbą, ciągiem znaków i wartością logiczną. Daty są wszechobecne w konfiguracjach — nie da się uniknąć pracy z tego typu danymi podczas programowania. Dlatego lepiej zacząć pisać zapytania, wiedząc już, jak przetwarzać daty, jakie są możliwości pracy z nimi i jak są przechowywane. Spójrzmy na przykłady wszystkich niuansów pisania zapytań z różnymi datami.

Przykłady pracy z datami w zapytaniach 1C

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

  1. Przekaż przez parametr. Za pomocą tej metody można uzyskać jedynie aktualną datę sesji;
  2. Pobierz datę w zapytaniu z pola wyboru;
  3. Konwertuj wartości liczbowe 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ę za pomocą funkcji DATETIME(1,1,1):

DATACZAS (1, 1, 1)

Za pomocą podobnego polecenia możesz uzyskać w żądaniu dowolną datę i godzinę. Ponadto można je określić z dokładnością do sekundy, podając jako parametry 6 liczb. Jeśli użyte zostaną tylko 3 cyfry, godziny, minuty i sekundy zostaną ustawione na 0 (początek dnia). Przykładowo w zapytaniu musimy wybrać dokumenty za pierwsze 10 dni stycznia 2018:

WYBIERZ Potwierdzenie do rachunku bieżącego. Połącz JAKO Połącz z dokumentu. Potwierdzenie do rachunku bieżącego JAKO Potwierdzenie do rachunku bieżącego WHERE Potwierdzenie rachunku bieżącego. 10, 23, 59, 59)

W zapytaniu we wbudowanym języku 1C możesz nie tylko wybierać różne pola i odbierać parametry. Istnieje wiele funkcji, które ułatwiają formatowanie dat zgodnie z własnymi potrzebami. konkretne zadanie. Jeśli często pracujesz z datami w zapytaniu, powinieneś znać następujące polecenia:

  • POCZĄTEK OKRESU. Parametry wskazują datę i okres czasu, w kontekście którego należy uzyskać początek daty. Służy do konwertowania daty na format ponadczasowy. W tym celu należy ustawić drugi parametr – „DZIEŃ”;
POCZĄTEK OKRESU(,) POCZĄTEK OKRESU(&Data, DZIEŃ) okres>data>
  • KONIEC OKRESU. Podobne polecenie zwracające ostatnią datę w jednostkach określonych w parametrach;
  • DODATK.DATA. Umożliwia uzyskanie daty większej o określoną liczbę określonych jednostek czasu. Parametry funkcji obejmują datę, jednostkę czasu i liczbę;
ADDKDATE(,) ADDKDATE(&Data, DZIEŃ, 10) ilość>typ>data>
  • RÓŻNICA. Pobiera różnicę między datami w określonych jednostkach;
RÓŻNICA DATA(,) RÓŻNICA DATA(&Data1, &Data2, DZIEŃ) typ>data2>data1>
  • DZIEŃ TYGODNIA. Zwraca numer kolejny jednego z dni tygodnia.

Dzięki prawidłowemu wykorzystaniu tych funkcji programista może rozwiązać całkiem nietrywialne problemy. Na przykład pobranie nazwy dnia tygodnia bieżącej daty w żądaniu jako ciąg znaków:

WYBÓR GDYWEEKDAY(&bieżąca data) = 1 WTEDY „poniedziałek” WHENWEEKDAY(&bieżąca data) = 2 WTEDY „wtorek” WHENWEEKDAY(&bieżąca data) = 3 WTEDY „środa” WHENWEEKDAY(&bieżąca data) = 4 WTEDY „czwartek” GDY DZIEŃ TYGODNIE(&bieżąca data) = 5 WTEDY „Piątek” DZIEŃ TYGODNIA (&CurrentDate) = 6 WTEDY „sobota” W przeciwnym razie „niedziela” KONIEC

Konwersja typów w zapytaniu 1C z liczby lub ciągu znaków na datę jest pracochłonnym zadaniem. Datę można uzyskać z liczb za pomocą funkcji DATETIME, z ciągu znaków - łącząc funkcję SUBSTRING i konstrukcję SELECT WHEN THEN ELSE. Na tej podstawie programiści wolą uzyskać datę z innych typów w module i przekazać ją do żądania za pomocą parametru. Niestety nie zawsze jest to wykonalne, dlatego należy zmienić format daty we wniosku.

Możliwe jest określenie daty w żądaniu 1C jako parametru w celu uzyskania danych z wirtualnych tabel rejestrów. Rola ta może również korzystać ze wszystkich powyższych funkcji. Ale tutaj ważne jest, aby pusta data w żądaniu 1C nie wpłynęła na ostateczny wynik wykonania kodu, dlatego należy przeprowadzić kontrolę.



Jeśli zauważysz błąd, zaznacz fragment tekstu i naciśnij Ctrl+Enter
UDZIAŁ: