Menu
Jest wolny
Zameldować się
główny  /  Edukacja / Skd przeniesienie wartości w wyborze. ACS nie tylko dla raportów - implementacja uniwersalnych selekcji

Przekazanie wartości w wyborze. ACS nie tylko dla raportów - implementacja uniwersalnych selekcji

Często programiści musieli używać żądań, aby uzyskać dane, a następnie przetwarzać je w celu przetworzenia zapisu. Dane z kolei uzyskano z wniosku. Cóż, zapytanie bez filtra lub filtra jest rzadkie. Porozmawiajmy o selekcjach w takich zapytaniach na przykładzie zapytania:

Aby w zwykłej formie zorganizować wybór kontrahenta dla użytkownika, programista musiał umieścić na formularzu trzy elementy, które wyglądały mniej więcej tak:

Ile pracy kosztuje opisanie programiście różnych typów porównań (równych, nierównych, na liście, w grupie ...) i na podstawie tego rodzaju porównań doprecyzowanie ostatecznej prośby o uzyskanie danych.

Zobaczmy, jak można to zrobić za pomocą ACS. Stwórzmy w naszym przetwarzaniu Layout z typem Data Composition Schema i wypełnij go naszym żądaniem:

Na karcie Ustawienia dodaj nową grupę bez szczegółów oraz, w naszym przykładzie, pole Kontrahent, ponieważ skończymy ze wszystkim w tabeli wartości:

Na karcie Wybór dodaj kontrahenta do wyboru:

Teraz zacznijmy projektować formularz. Wyświetlmy na przetwarzaniu wybór, z którym będzie pracował użytkownik. Na formularzu wyświetlimy element typu Pole Tabela i nadamy mu nazwę Selection z danymi Typ Composite Ustawienia. Selection:

Teraz stwórzmy obsługę zdarzeń dla formularza OnOpening i procedurę obsługi do kliknięcia przycisku Uruchom, kod pokazano poniżej:

Zmiana układu; Procedura Wykonaj Przycisk Naciśnięcie (Przycisk) Wynik.Clear (); Layout Composer \u003d Nowy DataComposition Layout Composer; LayoutComposition \u003d LayoutComposer.Run (Layout, Layout.GetSettings (), Type ("DataComposition LayoutGeneratorForValuesCollection")); Composition Processor \u003d nowy procesor składu danych; LayoutProcessor.Initialize (LayoutDeposit); OutputProcessor \u003d NewDataCompositionOutputProcessorInValuesCollection; OutputProcessor.SetObject (Result); OutputProcessor.Output (LayoutProcessor); If FormElements.Result.Columns.Number () \u003d 0 Then FormElements.Result.CreateColumns (); EndIf; EndProcedure ProcedureOnOpen () Layout \u003d Pobierz układ ("Układ"); SourceAvailableSettings \u003d NewSourceAvailableDataCompositionSections (Layout); Linker.Initialize (SourceAvailableSettings); Linker.DownloadSettings (Layout.Default Settings); Koniec procedury

Przetwarzanie jest gotowe, uruchamiając, możesz od razu zobaczyć pojawiającego się Kontrahenta w naszej Selekcji, z którego możesz wybrać dowolny rodzaj porównania, a także dodać dodatkowe linie wyboru zgodnie ze szczegółami katalogu Kontrahenci:

To wszystko, mam nadzieję, że ten artykuł pomoże Ci poprawić elastyczność wybranych metod leczenia.

Kononov Sergey

Rozszerzenie języka zapytań dla systemu kompozycji danych

Rozszerzenie języka zapytań dla systemu składu danych odbywa się za pomocą specjalnych instrukcji składniowych ujętych w nawiasy klamrowe i umieszczonych bezpośrednio w tekście zapytania.

Składniowe elementy rozszerzenia języka zapytań systemu składu danych

WYBIERZ

To zdanie opisuje pola, które użytkownik może wybrać do wyświetlenia. Po tym słowo kluczowe Aliasy pól z głównej listy wyboru zapytań, które będą dostępne do dostosowania, są wymienione oddzielone przecinkami.

Na przykład:

(WYBIERZ nomenklaturę, magazyn)

Po aliasie pola może występować kombinacja znaków „. *”, Co wskazuje na możliwość wykorzystania pól potomnych z tego pola.

Na przykład wpis Nomenclature. * Wskazuje możliwość użycia pól potomnych pola Nomenclature (na przykład pola Nomenclature.Code). Element SELECT może pojawić się tylko w pierwszym żądaniu dołączenia.

GDZIE

Opisuje pola, według których użytkownik może filtrować. Ta propozycja wykorzystuje pola tabeli. Użycie aliasów pól listy wyboru jest niedozwolone. Każda część unii może zawierać własny element WHERE.

(GDZIE Nomenklatura. *, Magazyn)

Prosty przykład

Musisz uzyskać sprzedaż za dany okres + wyświetlić cały przedmiot, niezależnie od tego, czy była sprzedaż, czy nie. Oznacza to, że musisz wybrać dane z tabeli obrotów Rejestru sprzedaży, dane z katalogu pozycji. Pomińmy pytanie, dlaczego potrzebujemy całej nomenklatury.

Aby rozwiązać problem można ułożyć zapytanie łączące towar i tabelę obrotów sprzedaży z lewym połączeniem, w efekcie dla towaru, który nie był sprzedawany w wybranym okresie otrzymamy wartości pól Kontrahent, Kontrakt, ilość, Ilość \u003d Null. Taka prośba:

JAK WYBRAĆ SprNomenklatura.Ssylka nomenklatury ProdazhiOboroty.Kontragent, ProdazhiOboroty.DogovorKontragenta, numer ProdazhiOboroty.KolichestvoOborot AS, jako koszt ProdazhiOboroty.StoimostOborot w jaki Spravochnik.Nomenklatura SprNomenklatura lewo dołączyć RegistrNakopleniya.Prodazhi.Oboroty ProdazhiOboroty Jak SprNomenklatura.Ssylka \u003d ProdazhiOboroty. Nomenklatura

Oto wynik:

Kontrahent Kontrakt Nomenklatura ilość Ilość
zero zero _Test1 zero zero
LLC „Rogi i kopyta” Umowa 1 Kapcie 10 1200
„Gazprom” Fajna umowa buty 5 13000
zero zero Kalosze zero zero
zero zero Łupki zero zero

W tym przykładzie nie doszło do sprzedaży towaru: „Kalosze” i „Tabliczki”

I wszystko byłoby dobrze, gdybyśmy pogrupowali wybór według kontrahentów, to wszystkie niesprzedane pozycje wpadną w osobną grupę, gdzie Kontrahent \u003d Null, ale klient chce mieć w raporcie arbitralny wybór przez pole kontrahenta (z oczywiście oznacza to kontrahenta z Rejestru sprzedaży). Jak być? W końcu musimy tylko przefiltrować tabelę Sprzedaż... Jeśli używamy autouzupełniania w konstruktorze ACS, to pole Kontrahentwydaje się, że wszystko jest w porządku, ale wykonując raport z wyborem przez kontrahenta stracimy wszystkie zapisy z połączenia z pozycją. Na przykład ustawmy wybór: Kontrahent \u003d LLC „Rogi i kopyta”... Wynik będzie wyglądał następująco:

W ogóle nie tego, czego chcemy, prawda?

Aby rozwiązać problem, możesz oczywiście dodać parametr do zapytania, na przykład do parametrów tabeli wirtualnej Obrót sprzedaży, ale jednocześnie traci się elastyczność w ustawianiu typu porównania.

Jest rozwiązanie: na to w konstruktor zapytań w zakładce Kompozycja danych => Tabele dodaj pole warunku do warunków tabeli wirtualnej Obrót sprzedaży i zmień jego pseudonim na CounterpartySelection

Aby nie mylić użytkownika z polami wyboru, wyłącz pole warunku Kontrahent i zmień tytuł pola CounterpartySelection


W wyniku wykonania tego schematu z włączonym filtrowaniem na polu kontrahenta, otrzymane zapytanie przybierze postać:

JAK WYBRAĆ SprNomenklatura.Ssylka nomenklatury ProdazhiOboroty.Kontragent jako odpowiednik ProdazhiOboroty.DogovorKontragenta AS DogovorKontragenta, ProdazhiOboroty.KolichestvoOborot as\u003e Number, ProdazhiOboroty.StoimostOborot jako koszt, PREDSTAVLENIESSYLKI (ProdazhiOboroty.DogovorKontragenta) JAK DogovorKontragentaPredstavlenie, PREDSTAVLENIESSYLKI (ProdazhiOboroty.Kontragent) JAK KontragentPredstavlenie , ReferenceNomenclature.View AS NomenclatureView FROM Directory.Nomenclature AS SPRNomenclature LEFT JOIN Accumulation Register.Sales.Turnovers (& P ,,, Counterparty \u003d & P3) AS SalesTurnovers Oprogramowanie Referencje.Nomenclature.Sales

I odpowiednio wynik:

Kontrahent Kontrakt Nomenklatura ilość Ilość
zero zero _Test1 zero zero
LLC „Rogi i kopyta” Umowa 1 Kapcie 10 1200
zero zero buty zero zero
zero zero Kalosze zero zero
zero zero Łupki zero zero

Test1 to grupa w katalogu Nomenclature, w której wszystko się znajduje

Do publikacji załączony jest schemat XML raportu wykorzystany w publikacji. Stworzyłem schemat w Integrated Automation, ale myślę, że wszystko będzie działać dobrze zarówno w UPP, jak i UT 10

Zreasumowanie

Ten przykład pokazuje, jak utworzyć własne ustawienia filtru w ACS i wyłączyć te generowane automatycznie, jeśli projektujesz obwód z włączoną flagą autouzupełnienie.

Jeśli masz wystarczające doświadczenie, aby tworzyć obwody bez użycia autouzupełnienie - wtedy ta rada nie ma sensu.

Użyte oprogramowanie

  • Program do zrzutów ekranuSnimOK!
  • Edytor plików XML

Do czego można użyć ACS?

Ustalona opinia dotyczy raportów.

Tak właściwie możliwości ACS wykraczają poza tworzenie uniwersalnych raportów.

A dzisiaj pokażemy, jak to zrobić używając ACS, użytkownik będzie mógł skonfigurować elastyczny wybór danych... Ponadto wybór ten zostanie wykorzystany podczas otrzymywania i przetwarzania danych.

Do jakich zadań będzie to przydatne?

Dajmy przykłady z typowych konfiguracji:

  • Przetwarzanie „Przesyłanie danych do serwisu”
  • Tworzenie cennika
  • Przesyłanie danych do TSD (terminal do zbierania danych)
  • Segmentacja towarów, partnerzy
  • Tworzenie zamówień (klientów, dostawców) według potrzeb
  • Planowanie napraw w 1C: ERP.

Oznacza to, że narzędzie jest przydatne wszędzie tam, gdzie trzeba zapewnić użytkownikowi szerokie możliwości wyboru.

Tworzenie losowego wyboru w formie kierowanej za pomocą ACS

Lekcja obejmuje pracę z plikami konsolidator ustawień schematy kompozycji danych:

  • Zakończenie selekcji na formularzu
  • Programowe łączenie konsolidatora ustawień i diagramu układu
  • Tworzenie filtrów domyślnie w ACS.

Pobieranie danych z bazy danych z filtrowaniem przez wybór ACS

Film pokazuje, jak wybrać dane za pomocą wcześniej ustawionego wyboru w Kreatorze ustawień.

Używany jest „straszny” obiekt - Kolekcja OutputProcessorResultDataCompositionInValues.

Tak naprawdę nie wszystko jest takie trudne - w 8 minut rozwiązujemy problem.

Przechowywanie selekcji ACS w bazie danych

Podczas lekcji zastanów się zapisywanie ustawień konsolidatora ACS za pomocą magazynu wartości.

Zastanówmy się, jak rozwiązać ten problem w konfiguracji 1C: Manufacturing Enterprise Management 1.3.

Miłego oglądania! :)

Ogólnie rzecz biorąc, ACS zapewnia wiele możliwości.

Oto kilka „sztuczek”, których nawet nie mieliśmy czasu opisać na stronie kursu.

Jeśli potrzebujesz zebrać dane z różnych źródełistnieją trzy opcje.

Możesz spróbować utworzyć jedno „uniwersalne” zapytanie dla wszystkich danych (przez długi czas), możesz wyświetlić dane kilku zapytań w pętli (sztywna, nieelastyczna struktura) - lub możesz po prostu użyć ACS i połączenie z zestawem danych zamiast jednego żądania.

Jednocześnie ważne jest, aby uzyskać prawidłowe wyniki - ma to pewne cechy szczególne, jeśli istnieje kilka źródeł

Używając ACS, możesz po prostu uzyskaj migawkę najnowszych dla każdej daty w raporcie.

Lub dla jasności - uzyskać cenę przedmiotu dla każdej daty sprzedaży.

Korzystając z ACS, możesz organizować wyjście do raportu wszystkich dat w okresiei nie tylko te, dla których w raporcie były dane (dodawanie dat bez programowania, tylko z możliwościami ACS)

Korzystając z ACS, możesz organizować zagnieżdżone grupy z dodaniem okresów (rok / kwartał / miesiąc itp.)

Dostosuj raport, na przykład wyświetl nagłówek kolumny w pionie, a dane w tej kolumnie w poziomie.

Pozwól użytkownikowi wybrać częstotliwość, z jaką dane będą wyświetlane w raporcie (lata, kwartały, miesiące) - tylko poprzez ustawienia, bez edycji modułu raportu.

Jak połączyć kilka warunków w raporcie? Nie ma takiej możliwości na przykład w narzędziu do tworzenia raportów - ale jest w ACS

Jeśli wyświetlasz dane podsumowujące w postaci wykresu, musisz mieć możliwość precyzyjnej kontroli ich wyglądu: widoczność znaczników dla serii, naprzemiennie kolory serii wykresów, oddzielenie danych z przeszłości od przyszłych danych na wykresie linia pionowa itp.

Oczywiście są tutaj niuanse, na które musisz zwrócić uwagę.

Podczas tworzenia raportu programista debugował tekst zapytania, ale gdy to zapytanie jest używane w raporcie na ACS, system podaje niepoprawny wynik.

Dlatego ważne jest, aby móc uzyskać zapytanie, które system faktycznie wykonuje w celu pobrania danych z bazy danych, i debugować takie zapytanie.

Dodając szczegóły raportu do dokumentu rejestrowego, system czasami generuje „nieprawidłowe” salda początkowe i końcowe.

Dlatego ważne jest, aby poprawnie skonfigurować pola w raporcie na ACS, aby reszty były wyświetlane poprawnie i ze szczegółami w dokumencie i bez niego.

Wynik raportu może ulec zmianie w zależności od tego, gdzie skonfigurowane jest filtrowanie po wartości zasobu - na poziomie raportu oraz na poziomie oddzielnego grupowania należy to monitorować.

Jeśli chcesz profesjonalnie opanować SKD i codziennie mają zastosowanie w ich pracyzapisz się na kurs:

Wsparcie - 2 miesiące... Objętość kursu - 34 godziny akademickie.

Nie zwlekaj z treningiem!