1s Obliczanie zasobów SKD dla niektórych grup. Wykorzystanie zasobów w systemie kontroli dostępu na przykładzie tworzenia zewnętrznego raportu tabelarycznego. Tworzenie ustawień prezentacji raportu

Spójrzmy na przykład:

Do klienta wysyłanych jest kilka jednostek towaru z różnymi rabatami. Musisz wyświetlić wartości rabatów dla każdego produktu w raporcie i obliczyć średni rabat. Stwórzmy raport na temat systemu kontroli dostępu.
Dla wszystkich pól, dla których mamy wyświetlić sumy, w zakładce „Zasoby” ustawimy wyrażenie (metodę) ich obliczenia. W polu „Rabat” ustaw metodę obliczania na „Średnia”.

Wyprowadzamy raport:

Jak widać, suma dla pola „Rabat” liczona jest jako średnia arytmetyczna wartości pól, tj. suma wszystkich wartości podzielona przez liczbę wartości. Ale ponieważ Ponieważ wolumeny towarów wysyłanych z różnymi rabatami są różne, średni rabat można obliczyć w inny sposób: na przykład jako stosunek całkowitej ilości wysłanego towaru, po uwzględnieniu rabatu, do całkowitej ilości wysłanego towaru. Ale tu pojawia się pytanie: jeśli możesz napisać formułę do obliczenia wartości pól szczegółowych rekordów w ACS, to sumy są obliczane automatycznie zgodnie z wyrażeniem określonym w zakładce „Zasoby” i tam, jak widzieliśmy wcześniej, „Średnia” jest obliczana jako średnia arytmetyczna wyświetlanych wartości, as Czy w tym przypadku powinienem obliczyć sumę w tej kolumnie, korzystając z własnego wzoru?
Właściwie nie jest to trudne. W tym celu dostosujemy nasz raport dodając do niego niezbędne pola, które będą brały udział w kalkulacji, w naszym przypadku są to „AmountWithDiscount” oraz „AmountAtPrice”.

Aby „nauczyć” ACS wyświetlania naszych wyników, wykonujemy następujące kroki:
1. w zakładce „Ustawienia” nadaj grupie „” nazwę, na przykład „TotalSKD”, w tym celu nazywamy menu kontekstowe do grupowania i kliknij „przypisz nazwę”;

2. w zakładce „Układy” dodajemy „układ nagłówka grupującego”, gdzie wybieramy nadaną wcześniej nazwę „TotalSKD”;

3. rysujemy linię układu, na której zostawiamy wszystkie wyniki, których obliczenie nam odpowiada w takiej postaci, w jakiej są, a do obliczenia średniego procentu rabatu piszemy wzór do obliczenia;

Jeśli wszystko się zgadza, to po wyświetleniu raportu, pod nim pojawią się łącznie dwie linie, najpierw ta, która jest generowana automatycznie, a następnie ta, którą sam tworzysz.

Aby pozostawić wynik tylko dla linii sumy, musisz na karcie „Ustawienia” w sekcji „Inne ustawienia” wyniku układu wyłączyć wyjście dla „Poziomego układu sumy całkowitej” i „Pionowego układu sumy całkowitej”

W tej krótkiej notatce chcę pokazać jak można podsumować wartości na różnych poziomach grupowania w raporcie wykorzystując system kompozycji danych.
Jak widać na obrazku, dopiero na poziomie grupowania „Grupy towarów” obliczany jest zasób „Zamówienie”, który pokazuje, ile należy zamówić dla bieżącej grupy towarów na podstawie określonych warunków:


Wartość tę można obliczyć tylko na tym poziomie grupowania, ponieważ nie ma wartości powyżej ani poniżej do obliczenia. Przykładowo na poziomie zapisów szczegółowych nie ma danych nt maksymalny numer w grupie, ponieważ dane te są prawdziwe tylko dla całej grupy, a nie dla poszczególnych jej elementów.

W związku z tym należy teraz obliczyć sumy dla powyższych grup („Magazyny”, „Typy magazynów”) i sumę ogólną.
Aby to zrobić, użyj funkcji Oblicz wyrażenie za pomocą tablicy grupowej:
OCEŃ WYRAŻENIE Z GRUPARRAY (EVALEXPRESSIONZ GRUPARRAY)
Składnia:
Oceń wyrażenie za pomocą tablicy grupowej (,)
Opis:
Funkcja zwraca tablicę, której każdy element zawiera wynik oceny wyrażenia do grupowania według określonego pola.
Kompozytor układu podczas generowania układu konwertuje parametry funkcji na pola układu kompozycji danych. Na przykład pole Konto zostanie przekonwertowane na DataSet.Account.
Konstruktor układu podczas generowania wyrażeń dla danych wyjściowych pola niestandardowego, którego wyrażenie zawiera tylko funkcję CalculateArrayWithGroupArray(), generuje wyrażenie wyjściowe w celu uporządkowania informacji wyjściowych. Na przykład dla niestandardowego pola z wyrażeniem:

CalculateExpressionWithGroupArray("Kwota (kwota obrotu)", "Kontrahent")
Kreator układu wygeneruje następujące wyrażenie jako wynik:

ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)),Sum(DataSet.AmountTurnover)","DataSet.Account"),"2")))

Opcje:

Typ: ciąg. Wyrażenie, które ma zostać ocenione. Linia, na przykład Kwota(Kwota Obrotu).

Typ: ciąg. Wyrażenia pól grupujących – wyrażenia pól grupujących oddzielone przecinkami. Na przykład Wykonawca, Strona.

Typ: ciąg. Wyrażenie opisujące wybór zastosowany do rekordów szczegółowych. Wyrażenie nie obsługuje funkcji agregujących. Na przykład DeletionFlag = False.

Typ: ciąg. Wyrażenie opisujące wybór zastosowany do rekordów grupy. Na przykład Kwota(Kwota Obrotu) > &Parametr1.
Przykład:

Maximum(CalculateExpressionWithGroupArray("Kwota(Kwota Obrotu)", "Kontrahent"));

Szczegółowy opis składni funkcji można znaleźć pod adresem http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Teraz do obliczeń powielamy pole „Zamówienie” z różnymi wartościami „Oblicz według…”, używając poniższych wyrażeń, zwróć uwagę, że na każdym wyższym poziomie stosowane są wartości poziomów poniżej grup .

W rezultacie otrzymujemy następującą konstrukcję:

W składzie danych ustawianie sum wygląda trochę inaczej niż w żądaniach. Zdefiniujmy zbiór danych „Query” w systemie kompozycji danych.

W samym żądaniu nie konfigurujemy sum, lecz przechodzimy do zakładki „Zasoby” kompozycji danych. Na poziomie schematu kompozycji danych możemy określić zasoby. Są to pola, które należy policzyć na poziomie grupowania. Kliknij na przycisk „>>”, a system sam przeniesie wszystkie pola numeryczne i zdefiniuje je jako zasoby.

W zasobach można także określić pola inne niż numeryczne. Przykładowo, jeśli wybierzesz atrybut „Link”, system będzie zliczał ilość dokumentów w naszych grupach. Ta informacja może być również przydatna. Więc, na schemacie układu definiujemy jedynie zasoby, a same grupowania konfigurujemy na poziomie wariantu raportu. Użytkownik może także utworzyć grupy, które chce widzieć w ustawieniach opcji raportu.

Stwórzmy standardowe ustawienia skład danych.
Kliknij przycisk „Otwórz projektanta ustawień”.

Wybierzmy typ raportu - lista. Kliknij przycisk „Dalej”.

Zaznaczmy wszystkie pola i przesuńmy pole kontrahenta na najwyższą pozycję. Kliknij przycisk „Dalej”.

Zaznaczmy wszystkie pola i przesuńmy pole kontrahenta na najwyższą pozycję. Kliknij przycisk „OK”.

Wynikowe ustawienie było następujące:

Jak widać, konfigurując opcję raportu, zasoby są podświetlane zieloną ikoną, dzięki czemu można je szybko odróżnić od innych pól.

Jeśli otworzymy nasz raport w trybie 1C:Enterprise i wygenerujemy go, zobaczymy, że ostateczne dane zostaną wygenerowane na poziomie grupowania. Wyniki według pozycji i kontrahentów.

Konfigurowanie zasobów w schemacie składu danych 1C

Teraz skupmy się na ustawienia istniejące dla zasobów. W polu „Wyrażenie” możemy określić funkcję agregującą, za pomocą której można uzyskać wartość zasobu. Na liście rozwijanej możesz zobaczyć wiele standardowych funkcji, ale nie wszystkie. Na przykład nie ma żadnych funkcji.

Tutaj w polu „Wyrażenie” możemy wpisać własne wyrażenie.

W polu „Wyrażenie” możemy również uzyskać dostęp do funkcji wspólnych modułów.

Dodatkowo w polu „Przelicz według...” możesz określić, według jakich grup ma być obliczany zasób. Jeżeli pole „Przelicz według...” nie zostanie wypełnione, wówczas ostateczna wartość zasobu zostanie przeliczona na wszystkich poziomach grupowania zdefiniowanych w ustawieniach opcji raportu. W naszym przypadku musimy wypełnić pole „Oblicz według...” zasobu „Ilość”, ponieważ możemy sprzedawać towary o różnych jednostkach miary. Na przykład: olej w litrach i koła w kawałkach. Czy nie jest prawdą, że sumowanie ilości tych towarów byłoby nielogiczne? Dlatego sumowanie ilości należy pozostawić na poziomie pozycji i na poziomie kontrahenta
Usuńmy podsumowanie.

Jeśli wygenerujemy raport, zobaczymy, że sumy ilościowe są obliczane tylko według pozycji, a sumy ilościowe dla kontrahentów są puste.

Możliwości opisywania zasobów w schemacie kompozycji danych 1C

Rozważmy szereg nieoczywistych cech związanych z opisem zasobów.

  • Każdy zasób może zdefiniować kilka razy. Ale to ma sens tylko wtedy, gdy
    zasób zostanie obliczony na różnych poziomach grupowania. Na przykład, jeśli ilość, w jednym przypadku
    sumuje się dla pozycji, a dla kontrahentów otrzymujemy wartość minimalną.

Jeśli wygenerujemy raport, zobaczymy, że dla kontrahenta „Deriya” minimalny zakup to pięć sztuk asortymentu „Papier samoprzylepny”.

  • W polu „Wyrażenie” oprócz napisania formuły możesz użyć specjalna funkcja tworzenia danych o nazwie „Oblicz”. Funkcja ta umożliwia obliczenie pewnej wartości końcowej za pomocą określonego wzoru. Przykładowo dla każdego kontrahenta konieczna jest znajomość procentu zakupów w jednostkach naturalnych w stosunku do całkowitego wolumenu. Ale jak uzyskać całkowitą wielkość zakupów według ilości? W tym celu należy skorzystać z funkcji „Oblicz” i w polu „Wyrażenie” wpisać następujące wyrażenie:
Suma(ilość)/Oblicz("Suma(ilość)", "TotalTotal")*100

Jak widać, wszystkie parametry funkcji „Oblicz” są ciągami znaków. Aby pole ilościowe ładnie prezentowało się w raporcie skonfigurujemy je w zakładce „Zestawy danych”. W wierszu ilości znajdziemy pole „Opcje edycji”. Otwórzmy okno dialogowe, znajdź linię „Format” i edytujmy w niej linię formatu, ustawiając wartość „Dokładność” na dwa w zakładce „Liczba”.

Uruchommy raport i zobaczmy wynik wyliczenia procentu zakupów dla kontrahenta „AUPP KOS LLP” w stosunku do
maksymalna głośność:


Na koniec artykułu chcę Ci polecić darmowy od Anatolija Sotnikowa. Jest to kurs prowadzony przez doświadczonego programistę. Odrębnie pokaże Ci jak budować raporty w systemie kontroli dostępu. Trzeba tylko uważnie słuchać i pamiętać! Otrzymasz odpowiedzi na następujące pytania:
  • Jak stworzyć prosty raport listowy?
  • Do czego służą kolumny Pole, Ścieżka i Tytuł w zakładce „Pola”?
  • Jakie są ograniczenia dotyczące pól układu?
  • Jak poprawnie skonfigurować role?
  • Jakie są role pól układu?
  • Gdzie mogę znaleźć zakładkę składu danych w zapytaniu?
  • Jak skonfigurować parametry w systemie kontroli dostępu?
  • Robi się jeszcze ciekawiej...
Może nie warto samodzielnie surfować po Internecie w poszukiwaniu potrzebnych informacji? Co więcej, wszystko jest gotowe do użycia. Po prostu zacznij! Wszystkie szczegóły dotyczące tego, co znajduje się w bezpłatnych lekcjach wideo

Oto jedna z lekcji na temat tworzenia zakładek dotyczących kompozycji danych w zapytaniu:

Zaloguj się do serwisu jako student

Zaloguj się jako uczeń, aby uzyskać dostęp do materiałów szkolnych

System składu danych 1C 8.3 dla początkujących: liczenie wyników (zasobów)

Celem tej lekcji będzie:

  • Napisz raport wyświetlający listę produktów (katalog żywności), ich kaloryczność i smak.
  • Grupuj produkty według koloru.
  • Dowiedz się więcej na temat podsumowań (zasobów) i pól obliczeniowych.

Utwórz nowy raport

Podobnie jak na poprzednich lekcjach otwieramy bazę danych” Garmażeria„w konfiguratorze i utwórz nowy raport poprzez menu” Plik"->"Nowy...":

Typ dokumentu - raport zewnętrzny:

W formularzu konfiguracji raportu wpisz nazwę „ Lekcja 3" i naciśnij przycisk " Otwórz diagram składu danych":

Pozostaw domyślną nazwę schematu i kliknij przycisk „ Gotowy":

Dodanie żądania poprzez konstruktor

Na karcie „ Zbiór danych" Kliknij zielony znak plus i wybierz „ Dodaj zbiór danych — zapytanie":

Zamiast ręcznie wpisywać tekst żądania, uruchamiamy go ponownie konstruktor zapytań:

Na „zakładce” Stoły„przeciągnij stół” Żywność" od pierwszej kolumny do drugiej:

Wybierz z tabeli „ Żywność"pola, o które poprosimy. Aby to zrobić przeciągnij i upuść pola" Nazwa", "Smak", "Kolor" I " Zawartość kalorii" z drugiej kolumny do trzeciej:

Okazało się tak:

Naciśnij przycisk " OK" - tekst żądania został wygenerowany automatycznie:

Tworzenie ustawień prezentacji raportu

Przejdź do zakładki” Ustawienia" i kliknij magiczna różdżka, zadzwonić projektant ustawień:

Wybierz typ raportu” Lista..." i naciśnij przycisk " Dalej":

Przeciągnij z lewej kolumny na prawo pola, które zostaną wyświetlone na liście i kliknij „ Dalej":

Przeciągnij z lewej kolumny do prawego pola „ Kolor" - to się stanie grupowanie linie w raporcie. Kliknij " OK":

A oto efekt pracy projektanta. Hierarchia naszego raportu:

  • raport jako całość
  • grupowanie „Kolor”
  • szczegółowe wpisy - linie z nazwami żywności

Zapisz raport (przycisk dyskietka) I bez zamykania Od razu otworzymy konfigurator w trybie użytkownika. Okazało się tak:

Zmiana kolejności kolumn

Ale zróbmy to zmieńmy kolejność kolumny (strzałki w górę i w dół), tak aby wyglądało to jak na poniższym rysunku:

Zapiszmy raport i otwórzmy go ponownie w trybie użytkownika:

Świetnie, tak jest dużo lepiej.

Podsumujmy zawartość kalorii

Byłoby miło podsumować zawartość kalorii w żywności według grup. Aby zobaczyć sumę kalorii wszystkich produktów, powiedzmy, białych lub żółtych. Lub sprawdź całkowitą zawartość kalorii wszystkich produktów w bazie danych.

W tym celu istnieje mechanizm obliczania zasobów.

Przejdź do zakładki” Zasoby„i przeciągnij pole” Zawartość kalorii„(podsumujemy to) od lewej kolumny do prawej.

W takim przypadku w polu wybierz wyrażenie z rozwijanej listy „ Ilość (kalorie)", ponieważ suma będzie sumą wszystkich elementów zawartych w sumie:

Zapisujemy i generujemy raport:

Mamy teraz wyniki dla każdej z grup i dla raportu jako całości.

Podsumujmy to (średnio) pod względem kalorii

Teraz pokażmy to w innej kolumnie przeciętny kaloryczność produktów według grup i w raporcie jako całości.

Nie można dotknąć istniejącej kolumny „Kaloria” - suma jest już w niej wyświetlona, ​​więc utwórzmy kolejne pole, który będzie dokładną kopią pola „Kaloria”.

Aby stworzyć takie „wirtualne” pole, skorzystamy z mechanizmu pola obliczeniowe.

Przejdź do zakładki” Obliczone pola" i naciśnij zielony znak plus:

W kolumnie” Ścieżka danych„piszemy nazwę nowego pola ( bezproblemowo, bez przestrzeni). Niech się to nazywa” Średnia zawartość kalorii", oraz w kolumnie " Wyrażenie„piszemy nazwę istniejącego pola, na podstawie którego zostanie obliczone nowe pole. Tam piszemy” Zawartość kalorii„. Kolumna” Nagłówek" zostanie wypełnione automatycznie.

Dodaliśmy nowe pole („ Średnia zawartość kalorii"), ale samo w sobie nie pojawi się w raporcie - albo trzeba zadzwonić ponownie projektant ustawień ("magiczna różdżka") lub dodaj to pole ręcznie.

Zróbmy to drugi sposób. Aby to zrobić, przejdź do zakładki „ Ustawienia", wybierać " Raport"(w końcu chcemy dodać pole jako całość do raportu), wybierz zakładkę na dole" Wybrane pola„i przeciągnij pole” Średnia zawartość kalorii„od lewej kolumny do prawej:

Okazało się tak:

Zapisujemy i generujemy raport:

Pole się pojawiło i widzimy, że jego wartości są wartościami pola „Kaloria”. Świetnie!

W tym celu ponownie skorzystamy ze znanego nam już mechanizmu zasoby(zreasumowanie). Przejdź do zakładki” Zasoby„i przeciągnij pole” Średnia zawartość kalorii„od lewej kolumny do prawej:

Ponadto w kolumnie „ Wyrażenie"wybierać" Średnia (średnia kaloria)":

Zapisujemy i generujemy raport:

Widzimy, że dla grup, czyli dla każdego koloru i dla całego raportu, średnia wartość została obliczona całkowicie poprawnie. Ale są obecni dodatkowe wpisy dla poszczególnych produktów (nie grup), które chciałbym usunąć z raportu.

Czy wiesz, dlaczego się pojawiły (wartości nie według grup)? Ponieważ kiedy dodaliśmy pole „ Średnia zawartość kalorii„w ustawieniach raportu, w drugim kroku wybraliśmy cały raport i to nowe pole znalazło się w elemencie „ Szczegółowe dokumentacja".

Naprawmy błąd. W tym celu wróć do zakładki „ Ustawienia", wybierać " Szczegółowe wpisy" najpierw od góry (krok 2), a następnie " Szczegółowe wpisy„od dołu (krok 3), przejdź do zakładki” Wybrany pola" i w jego prawej kolumnie zobaczymy element " Automatyczny".

Element " Automatyczny" - to nie jest jedno pole. Jest to kilka pól, które wpadają tu automatycznie w oparciu o ustawienia wyższego poziomu.

Aby zobaczyć co to za pola kliknij element „ Automatyczny" Prawidłowy przycisk i wybierz „ Zwiększać":

Element " Automatyczny" rozszerzony o następujące pola:

A oto nasze pole” Średnia zawartość kalorii„który przyszedł tutaj z punktu” Raport", kiedy go tam zaciągnęliśmy. Po prostu usuńmy zaznacz pole obok tego pola, aby usunąć jego dane wyjściowe.