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.
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";
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
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)
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.
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)
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
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.
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.
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.
Przede wszystkim musisz uzyskać datę we wniosku w wymaganym formacie- z czasem lub bez. Istnieje kilka sposobów wykonania tego zadania:
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:
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” KONIECKonwersja 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ę.