Rozważmy utworzenie raportu zewnętrznego w 1C 8 bez użycia systemu składu danych. Aby utworzyć raport zewnętrzny, skorzystamy z konfiguracji Księgowość 2.0, dane początkowe: „Napisz raport na koncie księgowym 62, w którym w kontekście będą wyświetlane obroty za określony okres Kontrahenci I Umowy kontrahentów.

1. Utwórz raport

Na początek utwórzmy zewnętrzny plik raportu; w tym celu przejdźmy do trybu 1s 8 Konfigurator, przejdźmy do menu Plik -> Nowy lub kliknij ikonę Nowy dokument.

Wybierz element z listy Raport zewnętrzny. Po utworzeniu raportu zewnętrznego nadaj mu nazwę (np Najprostszy raport) i zapisz go na dysku. Dodamy jeszcze dwa szczegóły: Początek okresu I Koniec okresu typ Data, będziemy ich potrzebować, aby ograniczyć przedział czasowy próbkowania danych podczas generowania raportu.

2. Utwórz zewnętrzny układ raportu

Aby wygenerować raport w 1C 8, potrzebujesz układu, jest to szablon do wyświetlania danych, w którym ustawione są wszystkie niezbędne parametry, rysowane są tabele itp. Dodajmy nowy układ; w tym celu wybierz pozycję w drzewie metadanych raportu Układy i naciśnij przycisk Dodać, podczas tworzenia wybierz typ układu dokument arkusza kalkulacyjnego.

Nasz układ będzie miał 4 obszary:

  • Nagłówek – w tym obszarze wyświetlimy nazwę raportu, okres za jaki został wygenerowany oraz nagłówek tabeli;
  • Dane kontrahenta – w tym obszarze w tabeli wyświetlimy dane o kontrahentu;
  • DataCounterparty Agreement – ​​w tym obszarze w tabeli wyświetlimy dane dotyczące umowy z kontrahentem;
  • Stopka – w tym obszarze wyświetlimy wartości sumaryczne dla całego raportu dla pól Przychody i Wydatki.

Zacznijmy tworzyć obszary układu. Aby utworzyć obszar na układzie, wybierz wymaganą liczbę linii i kliknij Tabela menu -> Nazwy -> Przypisz nazwę(Lub Ctrl + Shift + N). Do regionu Czapka Napiszmy nazwę raportu: Liczy się obrót 62, narysuj za pomocą tego narzędzia Granice nagłówek raportu, a także ustaw parametry Początek okresu I Koniec okresu. Za pomocą parametrów możesz wyświetlić potrzebne dane w raporcie; zajmiemy się tym na kolejnym etapie rozwoju, czyli podczas pisania kodu raportu. Aby utworzyć parametr w układzie, wybierz żądaną komórkę, wpisz w niej nazwę parametru (bez spacji), kliknij go prawym przyciskiem myszy, wybierz element z menu, które zostanie otwarte Właściwości. We właściwościach komórki na zakładce Układ wybierz dopełnienie Parametr.

Następnie nazwa parametru w komórce zostanie ujęta w nawiasy ostre („<>„). W rezultacie obszar Czapka powinno wyglądać tak:

W okolicy Dane Kontrahenta za pomocą narzędzia utworzymy parametry do wyświetlania nazwy kontrahenta oraz przychodów i wydatków dla rachunku 62 Granice Zaprojektujmy obszar jako rząd tabeli.

W okolicy Umowa z kontrahentem danych Stwórzmy parametry do wyświetlania nazwy umowy oraz przychodów i wydatków dla konta 62, za pomocą narzędzia Obramowania zaprojektujemy obszar jako wiersz tabeli. Zróbmy małe wcięcie przed parametrem Umowa Kontrahenta(można to zrobić dzieląc i łącząc komórki. Kliknij komórkę prawym przyciskiem myszy -> Łączyć Lub Podziel komórkę), jest to potrzebne, aby w raporcie było widać, że pozycja dotycząca kontraktu jest niżej w hierarchii niż pozycja dotycząca kontrahenta.

W okolicy Piwnica Utwórzmy parametry sum przychodów i wydatków.

W efekcie powinniśmy otrzymać taki układ:

3. Utwórz formularz raportu

Aby wyświetlić dane, ustaw okres formowania i przycisk Formularz nasz raport będzie wymagał formularza. Aby utworzyć formularz, znajdź element w drzewie metadanych raportu zewnętrznego Formularze i naciśnij przycisk Dodać. Na pierwszej stronie projektanta formularzy nie musisz wprowadzać żadnych zmian, wystarczy kliknąć przycisk Następny.

Na kolejnej stronie projektanta wybierz oba dostępne detale ( Początek okresu, Koniec okresu) do umieszczenia w formularzu.

W efekcie otrzymamy taki formularz:

Ale nie zadowala nas to w tej formie, wprowadźmy w nim pewne zmiany:

  • Przeciągnijmy przycisk Formularz z dolnego panelu raportu na górę (będzie to wygodniejsze dla użytkownika);
  • Rozciągnijmy kształt w pionie i poziomie;
  • Uporządkujmy pola Początek okresu I Koniec okresu poziomo;
  • Dodajmy do formularza element kontrolny Pole dokumentu arkusza kalkulacyjnego (będzie w nim wyświetlany nasz raport), nadajmy mu nazwę TabDoc;
  • Stwórzmy przycisk wyboru okresu (po kliknięciu wyświetli się okno dialogowe z wygodnym wyborem żądanego okresu). Nie będziemy jeszcze pisać dla niego kodu programu, więc po prostu umieścimy przycisk obok pól kropki.

W rezultacie nasz formularz będzie wyglądał następująco:

4. Programowanie

Po utworzeniu formularza raportu przystępujemy do programowania. Na początek stwórzmy procedurę wyświetlania okna dialogowego wyboru okresu (stworzyliśmy już przycisk do tego na poprzednim etapie). Kliknij przycisk prawym przyciskiem myszy i wybierz element menu Właściwości, we właściwościach przycisku przejdź do zakładki Wydarzenia, gdzie za pomocą przycisku z ikoną lupy utworzymy procedurę Przycisk 1Naciśnij w module formularza.

Pomiędzy formularzem a jego modułem możesz przełączać się za pomocą zakładek znajdujących się na dole formularza

Aby wywołać formularz wyboru okresu skorzystamy ze standardowej procedury Rachunkowość 2.0 ze wspólnego modułu Praca z oknami dialogowymi — HandlerPeriodSettingPress, musisz przekazać mu szczegóły raportu jako parametry Początek okresu I Koniec okresu.

Procedura Przycisk 1Naciśnij (Element) Praca z oknami dialogowymi.PeriodSettingHandlerPress(PeriodStart,PeriodEnd); Koniec procedury

Przejdźmy teraz do napisania kodu, który wygeneruje i wyświetli nasz raport. Moduł formularza ma już procedurę Przycisk GenerujNaciśnij, która zostanie wykonana po naciśnięciu przycisku Formularz, tam napiszemy nasz kod. Zacznijmy od inicjalizacji niezbędnych zmiennych. Na początek utwórzmy zmienną dla pola dokumentu arkusza kalkulacyjnego do którego będziemy wyprowadzać dane, nie jest to konieczne, po prostu zapis wywołań do niego stanie się krótszy, przez co kod programu będzie bardziej zrozumiały w czytaniu.

TabDoc = FormElements.TabDoc;

Uzyskajmy układ raportu zewnętrznego za pomocą funkcji Pobierz układ(<ИмяМакета>) , jako parametr przekażemy nazwę układu i jeśli taki układ istnieje, funkcja go znajdzie.

Układ = GetLayout("Układ" );

Po otrzymaniu układu utwórzmy zmienne dla każdego z jego obszarów, wykorzystajmy do tego metodę układu Pobierz obszar(<ИмяОбласти>) .

AreaHeader = Układ.GetArea("Nagłówek" ); AreaDataAccount = Układ.GetArea( „Dane Wykonawcy”); AreaDataContract = Layout.GetArea("DataContract" ); AreaFooter = Układ.GetArea("Stopka" );

Wyczyśćmy pole dokumentu arkusza kalkulacyjnego. Jest to konieczne, aby za każdym razem, gdy generowany jest nowy raport, stare dane zostały usunięte.

TabDoc.Clear();

Teraz, gdy inicjalizacja zmiennych została zakończona, przejdźmy do wypełniania i wyświetlania obszarów układu, jeden po drugim. Zacznijmy od nagłówka. Jeśli pamiętasz, stworzyliśmy w tym obszarze dwa parametry Początek okresu I Koniec okresu, przekażemy tam wartości okresu generowania raportu, w tym celu skorzystamy z właściwości Opcje obszary układu.

AreaHeader.Parameters.PeriodStart = Początek okresu; AreaHeader.Parameters.EndPeriod = EndPeriod;

Żadnych więcej akcji z tym obszarem Czapka Producent nie jest potrzebny, dlatego wyświetlimy jego pole w dokumencie arkusza kalkulacyjnego.

TabDoc.Output(AreaHead);

Następnie napiszemy zapytanie do bazy danych, za pomocą którego zmierzymy obroty konta 62 z rejestru księgowego Samonośne. Zdefiniujmy zmienną, w której będzie się znajdować nasze żądanie.

Żądanie = nowe żądanie;

Zanim zaczniemy pisać tekst żądania, przekażmy mu niezbędne parametry. Ponieważ piszemy prośbę o wystawienie faktury 62 rachunkowości, to przede wszystkim utworzymy dla niego parametr

Request.SetParameter("Account62", Plany kont. Samonośny. Znajdź według kodu("62" ));

Do żądania należy także podać okres generowania raportu. Nie zapominaj, że mamy specjalne szczegóły raportu za okres generowania i przekazujemy je jako parametry.

Request.SetParameter("Początek okresu", Początek okresu); Request.SetParameter("Koniec okresu", Koniec okresu);

Zacznijmy pisać tekst zapytania, zrobimy to za pomocą projektanta zapytań. Wiele tutoriali mówi, że trzeba umieć napisać zapytanie zarówno ręcznie, jak i przy użyciu konstruktora, ale w praktyce tak nie jest. W zadaniach, przed którymi stale stoi programista 1C, priorytetem jest szybkie pisanie kodu i wysoka jakość, a przy ręcznym pisaniu zapytania do bazy danych jest to prawie niemożliwe do osiągnięcia, poświęcisz dużo cennego czasu na prawidłowe odtworzenie wszystkiego; struktury zapytań i znajdowanie literówek, które zrobiłeś podczas pisania itp. Dlatego nie trać czasu na ręczne pisanie zapytań, ale skorzystaj z konstruktora zapytań. Zaoszczędzi to Twój czas i umożliwi pisanie skomplikowanych zapytań bez większego wysiłku. Aby rozpocząć pisanie tekstu żądania, napiszmy w kodzie:

Żądanie.Text = "" ;

Następnie umieść kursor między cudzysłowami, kliknij prawym przyciskiem myszy i wybierz Konstruktor wniosek. Otworzy się okno projektanta zapytań.

Teraz musimy wybrać potrzebną tabelę bazy danych 1C 8. Potrzebujemy tabeli wirtualnej Rewolucje rejestr księgowy Samonośne. Znajdźmy go po lewej stronie okna projektanta

Przenieśmy to w teren Stoły i zacznijmy wypełniać parametry. Dla wszystkich wirtualnych tabel zapytań istnieje specjalny zestaw parametrów, które pozwalają wybrać niezbędne dane z tabeli głównej (w naszym przypadku tabeli głównej Rejestr księgowy Samonośne). Otwórzmy okno parametrów wirtualnej tabeli.

Uzupełnijmy parametry za okres, który przekazaliśmy do żądania. Aby użyć parametru w tekście żądania należy wpisać symbol przed jego nazwą ampersand(&)

Pozostaje wypełnić warunek konta księgowego. księgowość. Aby to zrobić, znajdź linię w parametrach wirtualnej tabeli Stan konta i tam napiszemy

Konto W HIERARCHII (&Konto62)

Konstruktora warunków można także użyć, klikając przycisk z trzema kropkami.

Nie ma potrzeby narzucania żadnych dodatkowych warunków na wirtualny stół, więc kliknijmy przycisk OK w oknie parametrów tabeli wirtualnej. Następnie musimy wybrać z tabeli potrzebne nam pola Samonośny.Obrotowy(mianowicie: Kontrahent, umowa z kontrahentem, dochody i wydatki). Aby zobaczyć listę pól dostępnych w wybranej przez nas tabeli należy kliknąć symbol „+” obok jej nazwy. Następnie przeciągnij wymagane pola do skrajnego prawego obszaru projektanta zapytań, który nazywa się: Pola. Jeśli otworzymy plan kont, zobaczymy to dla konta 62 analityka włączona Dla kontrahenta jest to Subconto1 i przez Umowa z Kontrahentem - Subconto2.

Dlatego z pól wirtualnej tabeli wybieramy Podkonto1 I Subconto2. Ponieważ potrzebujemy przychodów i wydatków według kwoty, wybieramy również pola Kwota ObrótDt I KwotaObrótKt

Uzupełnijmy aliasy wybranych przez nas pól; w tym celu przejdź do zakładki Związki/aliasy i ustaw wymagane nazwy pól.

Ponieważ w naszym raporcie dane będą wyświetlane hierarchicznie (na pierwszym poziomie znajduje się Kontrahent, a na drugim wszystkie jego umowy), sposób wyświetlania danych w hierarchii skonfigurujemy za pomocą Sum. Przejdźmy do zakładki w projektancie Wyniki. Przeciągnij, aby sekwencyjnie grupować pola Kontrahent I Umowa Kontrahenta i w finale Nadchodzący I Konsumpcja.

To kończy pracę w konstruktorze zapytań, kliknij przycisk OK i widzimy, że tekst naszego żądania pojawia się w kodzie programu.

Query.Text = "WYBIERZ | Samonośny obrót. Subconto1 AS Kontrahent, | Samonośna umowa z kontrahentem.Subconto2 AS, | Samonośny Obrót.AmountTurnoverDt AS Paragon, | Samonośny obrót. Kwota obrotu Kt AS Wydatek|OD | Rejestr księgowy. Obroty samoksięgowe (&Początek okresu, &Koniec okresu, Konto W HIERARCHII (&Konto 62)) AS Obrót samorozliczający się.|WYNIKI | KWOTA(Przychody), | KWOTA(Koszt) |PO | Kontrahent, | Umowa z kontrahentem”;

Po zakończeniu pisania wniosku przystąpmy do wypełniania pól Dane Kontrahenta, DaneUmowaKontrahent I Piwnica. Wszystkie te pola wypełnimy danymi otrzymanymi w trakcie realizacji zapytania. Ponieważ nasze zapytanie zawiera grupy ( Kontrahent I Umowa Kontrahenta) wybierz z niego dane w następujący sposób:

SelectionCounterpart = Request.Execute().Select(BypassQueryResult.ByGrouping);

W ten sposób otrzymamy zapisy z sumami dla wszystkich kontrahentów.

Przed przejściem w pętli przykładowych danych inicjujemy zmienne przeznaczone do obliczenia ogólnych wyników raportu:

Razem przychodzące = 0; Całkowite zużycie = 0;

Aby dane raportu były wyświetlane w sposób hierarchiczny (i rotacje wzdłuż „+”), ustawmy początek automatycznego grupowania wierszy w dokumencie arkusza kalkulacyjnego:

TabDoc.StartAutoGroupingRows();

Wszystkie przygotowania zostały zakończone, teraz zacznijmy indeksować wyniki zapytania. Przechodzenie wykonamy za pomocą pętli Do widzenia

Podczas wybierania konta.Next() Cycle EndCycle ;

Na początku cyklu zresetuj parametry Nadchodzący I Konsumpcja region Dane Kontrahenta. Do czego to służy? Wyobraźmy sobie sytuację, w której kontrahent Wujek Wasya, dochód wynosi 10, a wydatek 5 i dla następnego kontrahenta Wujek Petya w tym przypadku nie ma dochodów ani wydatków, jeśli nie zresetujemy parametrów Nadchodzący I Konsumpcja, następnie według kontrahenta Wujek Petya dochód wyniesie 5, a wydatek 10.

AreaDataAccount.Parameters.Receipt = 0; AreaDataAccount.Parameters.Expense = 0;

Następnie wypełniamy obszar Dane Kontrahenta przykładowe dane elementu

FillPropertyValues(AreaAccountData.Parameters,SelectionAccount);

Po uzupełnieniu danych można wyświetlić obszar w dokument arkusza kalkulacyjnego, Ponieważ korzystamy z automatycznego grupowania wierszy, musimy wskazać poziom wiersza w grupowaniu (nasz raport będzie miał dwa poziomy, dla kontrahentów pierwszy dla kontraktów).

TabDoc.Output(AreaDataAccount,1);

Teraz dla tego kontrahenta dokonamy wyboru zgodnie z jego umowami.

Umowa SelectionCounterparty = SelectionCounterparty.Select(BypassQueryResult.ByGroups);

Przechodzenie wykonamy za pomocą pętli Do widzenia.

While SelectionCounterparty Agreement.Next() Loop EndCycle ;

W cyklu umów kontrahentów zresetujmy parametry Nadchodzący I Konsumpcja, wypełnij obszar Umowa dotycząca danych z próbki i wyświetlić ją w dokumencie arkusza kalkulacyjnego na drugim poziomie ewidencji.

AreaDataContract.Parameters.Receipt = 0; AreaDataContract.Parameters.Expense = 0; WypełnijPropertyValues(AreaContractData.Parameters,SelectionCounterpartyAgreement); TabDoc.Output(AreaDataContract,2);

Również w tym cyklu dodamy bieżące wartości do zmiennych w celu obliczenia całkowitych wartości przychodów i wydatków.

TotalReceipt = Całkowity odbiór + Umowa z wybranym kontrahentem.Odbiór; TotalExpense = TotalExpense + Przykładowa umowa z kontrahentem. Koszt;

Na tym kończy się wytwarzanie danych w tym obszarze Dane Kontrahenta, DaneUmowaKontrahent zakończone, pozostaje tylko dokończyć automatyczne grupowanie wierszy dokumentu arkusza kalkulacyjnego.

TabDoc.FinishAutoGroupingRows();

Pełne cykle odpowiedzialne za wysyłanie danych do obszaru Dane Kontrahenta I DaneUmowaKontrahent wyglądać tak:

TabDoc.StartAutoGroupingRows(); Podczas gdy SelectionAccount.Next() pętla AreaDataAccount.Parameters.Receipt = 0 ;

AreaDataAccount.Parameters.Expense = 0 ; Piwnica FillPropertyValues(AreaAccountData.Parameters,SelectionAccount); dokument arkusza kalkulacyjnego.

TabDoc.Output(AreaDataAccount,1);

Umowa SelectionCounterparty = SelectionCounterparty.Select(BypassQueryResult.ByGroups); While SelectionCounterparty Agreement.Next() Pętla AreaDataAgreement.Parameters.Receipt = 0 ; AreaDataContract.Parameters.Expense = 0 ;

WypełnijPropertyValues(AreaContractData.Parameters,SelectionCounterpartyAgreement);

TabDoc.Output(AreaDataContract,2); TotalReceipt = Całkowity odbiór + Umowa z wybranym kontrahentem.Odbiór;->->.

TotalExpense = TotalExpense + Przykładowa umowa z kontrahentem. Koszt; Koniec cyklu ; Koniec cyklu ; TabDoc.FinishAutoGroupingRows();.

Pozostaje wyświetlić ostateczne dane w obszarze i wyprowadź sam obszar do.

AreaBasement.Parameters.TotalIncoming = TotalIncoming; AreaBasement.Parameters.TotalConsumption = TotalConsumption; TabDoc.Output(AreaFooter); i wyprowadź sam obszar do Na tym kończy się proces pisania raportu zewnętrznego dla 1C 8 bez korzystania z systemu kontroli dostępu. Teraz można go wygenerować w trybie 1C:Enterprise 8 i dodać do katalogu OK.

Przetwarzanie zewnętrzne

Możesz pobrać plik raportu omówiony w artykule z . TotalReceipt = Całkowity odbiór + Umowa z wybranym kontrahentem.Odbiór;->Obejrzyj film na temat tworzenia zewnętrznego pliku do wydruku dla zarządzanej aplikacji:->W górnym menu przejdź do.

Praca

Następnie pojawi się formularz listy katalogów. W górnym menu kliknij


Dodać

Pojawi się okno dodania nowego raportu. Naciśnij przycisk Otwarte:


Wybierz plik z żądanym raportem i kliknij

. Po dodaniu pliku w razie potrzeby zmień nazwę raportu (sposób jego wyświetlania na liście). Trzask W rezultacie nowy raport pojawi się na liście.(miejsce w programie, w którym będzie dostępny raport):


Wybierz losowo żądaną sekcję programu z listy:


Teraz należy zapisać zmiany w zewnętrznej karcie raportu:

Teraz otwórz raport z interfejsu programu:


Lista jest nadal pusta, kliknij Dostosuj listę:


W formularzu selekcji zaznacz nasz raport:


Teraz pojawia się na liście:


Za pomocą przycisku Wykonać Otwiera się formularz raportu:


Pobierz uniwersalne przetwarzanie obiektów 1C 8.3.

W zwykłej wersji aplikacji platformy 1C 8.2 i 8.1 (w zwykłych formularzach) było tak wspaniałe przetwarzanie, jak „Uniwersalny wybór i przetwarzanie obiektów”. Znacząco uprościło to życie programistom i administratorom programów.

To samo przetwarzanie 1C pojawiło się w zarządzanej aplikacji (8.3 i 8.2). Wcześniej w 1C 8.3 trzeba było zadowolić się standardowym przetwarzaniem grupowych zmian w szczegółach, ale nie rozwiązuje to wszystkich zadań wymaganych w codziennej pracy użytkownika lub programisty 1C.

Wyszukiwanie i selekcja obiektów

Po pobraniu przetwarzania możemy uruchomić je jako zewnętrzne. Dla tych, którzy nie wiedzą, odbywa się to poprzez menu „Plik” – „Otwórz”. Pojawi się okno przetwarzania:

Na pierwszej zakładce musimy wybrać obiekt, z którym będziemy pracować. I tak w polu „Obiekt wyszukiwania” jest już wybrany dokument „Sprzedaż (akty, faktury)”. Dzieje się tak, ponieważ ten obiekt został już wcześniej wybrany. Przetwarzanie może zapamiętać.

Klikając przycisk „Ustawianie selekcji” możemy ustawić selekcję dla niemal każdego pola obiektu:

Jeśli dane selekcji nie wystarczą, możesz wybrać niezbędne obiekty za pomocą niestandardowego zapytania. W tym celu należy przesunąć przełącznik „Tryb wyboru” w odpowiednią pozycję.

Po wszystkich ustawieniach należy wybrać obiekty. Kliknij przycisk „Znajdź obiekty” i spójrz na wynik selekcji:

Elementy do obróbki

Przejdźmy do zakładki „Przetwarzanie”:

Być może tylko pierwsze trzy zabiegi zasługują na osobną, krótką recenzję. Praca pozostałych jest jasna z nazwy i nie wymaga ustawień.

Algorytm arbitralny

Przetwarzanie „Niestandardowego algorytmu” umożliwia napisanie programu działań na obiektach w wewnętrznym języku 1C. Przetwarzanie wymaga umiejętności programowania i jego opis zasługuje na osobny artykuł. Za jego pomocą możesz wykonywać praktyczne działania na obiektach:

Ustawianie szczegółów

Przetwarzanie „Ustawianie szczegółów” pozwala na zmianę szczegółów wybranych dokumentów lub katalogów, a także rejestrów informacyjnych. Całkiem przydatne, a czasem po prostu niezbędne przetwarzanie. Na przykład zamieńmy walutę dokumentu w wybranych dokumentach:

Należy od razu zauważyć, że przetwarzanie można wykonać natychmiast lub można zapisać ustawienie. To ustawienie zostanie wyświetlone w drzewie przetwarzania.

Przenumerowanie obiektów

Odpowiednio przetwarzanie „Renumeracja obiektów” pozwala na przenumerowanie dokumentów lub zmianę kodów katalogowych. Przetwarzanie zapewnia bogaty zestaw działań. Na przykład zdecydowałeś się zmienić przedrostek wybranych dokumentów:

Zobaczmy teraz, co możemy zrobić z zapisanymi ustawieniami. Okazuje się, że możemy wykonać w jednej partii, przenosząc ją do okna „Wybrane przetwarzania”:

Teraz możemy sekwencyjnie wykonywać wybrane ustawienia, klikając przycisk „Uruchom”.

Na podstawie materiałów: programmist1s.ru


Zamknąć