ACS nije samo za izvještaje - implementacija univerzalnih selekcija. Korištenje odabira u SKD SKD prijenos vrijednosti u selekciji

Ekstenzija jezika upita za sistem sastavljanja podataka

Proširenje jezika upita za sistem sastavljanja podataka vrši se pomoću posebnih sintaksičkih instrukcija zatvorenih u vitičaste zagrade i direktno postavljene u tekst upita.

Sintaksički elementi proširenja jezika upita sistema za sastav podataka

ODABIR

Ova rečenica opisuje polja koja će korisnik moći odabrati za izlaz. Nakon ove ključne riječi, pseudonimi polja sa glavne liste odabira upita koja će biti dostupna za konfiguraciju su navedeni, odvojeni zarezima.

Na primjer:

(ODABIR artikla, skladište)

Iza aliasa polja može biti kombinacija znakova “.*”, što ukazuje na mogućnost korištenja podređenih polja iz ovog polja.

Na primjer, unos Nomenklatura.* ukazuje na mogućnost korištenja podređenih polja polja “Nomenklatura” (na primjer, polje “Nomenklatura.Šifra”). Element SELECT se može pojaviti samo u prvom upitu za spajanje.

GDJE

Opisana su polja na koja korisnik može primijeniti selekciju. Ovaj prijedlog koristi polja tabele. Upotreba pseudonima polja liste za izbor nije dozvoljena. Svaki dio unije može sadržavati vlastiti WHERE element.

(WHERE nomenklatura.*, skladište)

Jednostavan primjer

Potrebno je dobiti rasprodaje za period + prikazati cijeli artikl, bez obzira da li je bilo rasprodaja ili ne. Odnosno, potrebno je odabrati podatke iz prometne tablice registra prodaje, podatke iz imenika nomenklature. Hajde da preskočimo pitanje zašto nam je potrebna sva nomenklatura.

Da biste riješili problem, možete kreirati upit koji povezuje stavku i tabelu prometa sa lijevim spojem, kao rezultat toga, za artikl koji nije prodat u odabranom periodu, dobićemo vrijednosti polja Counterparty, Sporazum, Količina, Suma= Null. Ovaj zahtjev:

SELECT ReferenceNomenclature.Link AS Nomenklatura, SalesPromet.Counterparty, SalesPromet.Counterparty Agreement, SalesTurnover.QuantityPromet AS Količina, SalesTurnover.CostPromet AS Trošak FROM Reference.Nomenclature AScul.Nomenclature AScul.Referentni broj.Sales.Registar. lesTurnover PO SprNomenclature.Link = Promet prodaje. Nomenklatura

Evo rezultata:

Counterparty Sporazum Nomenklatura Količina Suma
null null _Test1 null null
DOO "Horns and Hooves" Sporazum1 Papuče 10 1200
"Gasprom" Cool ugovor Čizme 5 13000
null null Galoše null null
null null Slates null null

U ovom primjeru nije bilo prodaje artikala: “Čapelice” i “Papuče”

I sve bi bilo u redu, ako grupišemo uzorak po ugovornoj strani, onda će svi neprodati artikli pasti u posebnu grupu, gdje Counterparty = Null, ali klijent želi imati nasumični odabir u izvještaju po polju druge ugovorne strane (naravno, ovo znači druga strana iz registra prodaje). Sta da radim? Na kraju krajeva, u stvari, samo treba da filtriramo tabelu Prodaja. Ako koristimo autocomplete u ACS konstruktoru, tada će dostupna polja za izbor uključivati ​​polje Counterparty, čini se da je sve u redu, ali pri izvršavanju izvještaja sa odabirom po ugovornoj strani gubimo sve zapise iz veze sa artiklom. Na primjer, postavimo odabir: Counterparty = LLC "Rogovi i kopita". Rezultat će izgledati ovako:

Uopšte nije ono što nam treba, zar ne?

Da biste riješili problem, možete, naravno, dodati parametar upitu, na primjer, parametrima virtualne tablice SalesTurnover, ali se u isto vrijeme gubi fleksibilnost postavljanja vrste poređenja.

Postoji rješenje: za ovo u query builder na kartici Sastav podataka => Stolovi dodajte polje uslova uslovima virtuelne tabele SalesTurnover i promijeni mu nadimak u CounterpartySelection

Kako ne bismo zbunili korisnika sa izbornim poljima, onemogućit ćemo polje uvjeta Counterparty i promijenite naslov polja CounterpartySelection


Kao rezultat izvršavanja ove šeme sa odabirom omogućenim u polju druge strane, rezultirajući upit će poprimiti oblik:

SELECT SprNomenclature.Link AS Nomenklatura, SalesPromet.Counterparty AS Counterparty, SalesPromet.Counterparty Agreement AS Counterparty Agreement, SalesTurnover.QuantityTurnover AS >Količina, SalesTurnover.CostGreen.SurSalesTurnover. AS ContractCounterparty aPresentation, PRESENTATIONLINK(Promet prodaje.Counterparty ) AS CounterpartyPresentation, SprNomenclature.Presentation AS NomenclaturePresentation FROM Directory.Nomenclature AS SprNomenclature LEFT CONNECTION Registrirajte Akumulacije.Prodaja.Promet(&P , , , Counterparty = &P3 ) AS Salesc.Br.Turnover.

I shodno tome rezultat:

Counterparty Sporazum Nomenklatura Količina Suma
null null _Test1 null null
DOO "Horns and Hooves" Sporazum1 Papuče 10 1200
null null Čizme null null
null null Galoše null null
null null Slates null null

Test1 je grupa u imeniku Nomenklature u kojoj se sve nalazi

U prilogu publikacije je XML šema izvještaja koji se koristi u publikaciji. Napravio sam krug u Integrated Automation, ali mislim da će sve raditi dobro i u UPP iu UT 10

Rezimirajući

Ovaj primjer pokazuje kako kreirati vlastite postavke odabira u sistemu kontrole pristupa i onemogućiti one automatski kreirane ako dizajnirate kolo sa omogućenom zastavicom Autocomplete.

Ako imate dovoljno iskustva da kreirate kola bez upotrebe Autofill- onda ovaj savjet nema smisla.

Korišćen softver

  • Program za snimanje ekrana SnimOK!
  • XML File Editor

Za šta se može koristiti SKD?

Utvrđeno mišljenje je za potrebe izvještavanja.

Zapravo Mogućnosti ACS-a nadilaze stvaranje univerzalnih izvještaja.

A danas ćemo pokazati kako korišćenjem sistema kontrole pristupa korisnik će moći da konfiguriše fleksibilan izbor podataka. Nadalje, ovaj odabir će se koristiti prilikom pribavljanja i obrade podataka.

Za koje će zadatke ovo biti korisno?

Hajde da damo primjeri tipičnih konfiguracija:

  • Obrada “Učitavanje podataka na stranicu”
  • Formiranje cjenovnika
  • Prijenos podataka na TSD (terminal za prikupljanje podataka)
  • Segmentacija proizvoda, partnera
  • Formiranje narudžbi (klijenti, dobavljači) prema potrebama
  • Planiranje popravki u 1C:ERP.

Odnosno, alat je koristan svuda gdje je potrebno pružiti korisniku širok izbor opcija.

Kreiranje slučajnog odabira u kontroliranom obliku pomoću ACS-a

Lekcija pokriva rad sa programer postavkišeme rasporeda podataka:

  • Izlaz odabira na obrascu
  • Softverska veza između graditelja postavki i dijagrama izgleda
  • Kreiranje podrazumevanih selekcija u sistemu kontrole pristupa.

Prijem podataka iz baze podataka sa filtriranjem ACS selekcijom

Video prikazuje kako možete odabrati podatke pomoću prethodno postavljenog odabira u alatu za izgradnju postavki.

Koristi se "strašan" objekat - ProcessorOutputResultCompositionDataIntoValueCollection.

Zapravo, nije sve tako komplikovano - za 8 minuta rješavamo problem.

Pohranjivanje SKD odabira u informacijskoj bazi

U lekciji ćemo pogledati čuvanje postavki ACS buildera koristeći Value Store.

Hajde da shvatimo kako riješiti ovaj problem u konfiguraciji "1C: Manufacturing Enterprise Management 1.3".

Uživajte u gledanju! :)

Generalno, ACS pruža mnogo mogućnosti.

Evo nekoliko "trikova" koje nismo stigli ni opisati na stranici kursa.

Ako treba da sakupite podaci iz različitih izvora, postoje tri opcije.

Možete pokušati sastaviti jedan “univerzalni” upit za sve podatke (dugi), možete prikazati podatke nekoliko upita u petlji (kruta, nefleksibilna struktura) - ili jednostavno možete koristiti ACS i povezivanje skupova podataka umjesto jednog zahtjeva.

Istovremeno, važno je dobiti ispravne rezultate - to ima svoje posebnosti ako postoji više izvora

Uz pomoć SKD-a možete jednostavno dobiti snimak najnovijeg za svaki datum u izvještaju.

Ili, radi jasnoće, - dobiti cijenu proizvoda za svaki datum prodaje.

Uz pomoć ACS-a možete organizirati prikaz svih datuma za period u izvještaju, a ne samo one za koje postoje podaci u izvještaju (dodavanje datuma bez programiranja, samo uz mogućnosti sistema kontrole pristupa)

Koristeći ACS, možete organizirati ugniježđene grupe uz dodavanje perioda (godina/kvart/mjesec, itd.)

Uredite izvještaj po želji, na primjer, prikažite zaglavlje kolone okomito, a podatke u ovoj koloni horizontalno.

Dozvolite korisniku da odabere učestalost prikazivanja podataka u izvještaju (po godini, po kvartalu, po mjesecu) - isključivo po podešavanjima, bez uređivanja modula izvještaja.

Kako kombinirati nekoliko uvjeta koristeći ILI u izvještaju? Ova opcija, na primjer, nije dostupna u izradi izvještaja, ali je dostupna u ACS-u

Ako zbirne podatke prikazujete u obliku grafikona, morate biti u mogućnosti precizno kontrolirati njegov izgled: vidljivost markera za seriju, naizmjenične boje serije grafikona, odvajanje prošlih podataka od budućih podataka na grafikonu okomitom linijom , itd.

Naravno, postoje nijanse na koje treba obratiti pažnju.

Prilikom kreiranja izvještaja, programer je otklonio greške u tekstu upita, ali kada se ovaj upit koristi u izvještaju na sistemu kontrole pristupa, sistem daje netačan rezultat.

Zbog toga je važno biti u mogućnosti da dobijete upit koji sistem zaista izvršava za dobijanje podataka iz baze podataka i da se debuguje takav upit.

Prilikom dodavanja detalja dokument-rekorderu u izvještaj, sistem ponekad proizvodi „netačne“ bilance otvaranja i zatvaranja.

Stoga je važno pravilno konfigurirati polja u izvještaju o sistemu kontrole pristupa kako bi bilansi ispravno prikazani i sa detaljima u dokumentu i bez njih.

Rezultat izvještaja se može promijeniti ovisno o tome gdje je konfigurisan odabir prema vrijednosti resursa - na nivou izvještaja i na nivou pojedinačne grupe, ovo morate pratiti.

Ako želiš savladati ACS profesionalno i svakodnevno primeniti u svom radu, prijavite se na kurs:

Podrška - 2 mjeseca. Obim kursa – 34 nastavna sata.

Ne odgađajte učenje!

Da bi pisali obradu, programeri su često morali da koriste upite da bi dobili podatke i zatim ih obrađivali. Podaci su, pak, dobijeni iz zahtjeva. Pa, zahtjev bez odabira ili filtera je rijedak. Razgovarajmo o odabirima u takvim zahtjevima, koristeći primjer zahtjeva:

Da bi korisniku u regularnom obliku organizovao odabir po suprotnim stranama, programer je morao na obrazac postaviti tri elementa koji su izgledali otprilike ovako:

Koliko je truda potrebno programeru da opiše različite vrste poređenja (jednako, nejednako, na listi, u grupi...) i da na osnovu ovih vrsta poređenja precizira svoj konačni zahtjev za dobijanje podataka.

Pogledajmo kako se to može učiniti pomoću ACS-a. U našoj obradi, napravimo Layout sa tipom Šeme sastava podataka i ispunimo ga našim zahtjevom:

Na kartici Postavke ćemo dodati novo grupisanje bez detalja i, u našem primjeru, polje Račun, pošto ćemo na kraju sve dobiti u tablicu vrijednosti:

I na kartici Odabir, u odabir dodajte drugu stranu:

Sada krenimo sa kreiranjem obrasca. Istaknimo na obrascu same obrade Selection sa kojim će korisnik raditi. Prikazaćemo element tipa Polje tabele na obrascu i dati mu ime Selection sa tipom podataka Composer.Settings.Selection:

Sada napravimo rukovaoce događajima za OnOpen obrazac i rukovaoce za klik na dugme Pokreni, kod je predstavljen u nastavku:

Perem Layout; Procedura ButtonExecutePress(Button) Result.Clear(); LayoutLinker = newDataLayoutLayoutLinker; Layout Layout = Layout Composer.Execute(Layout, Composer.GetSettings(), Type("DataCompositionLayoutGeneratorForValueCollection")); CompositionProcessor = newDataCompositionProcessor; LayoutProcessor.Initialize(LayoutLayout); Izlazni procesor = Novi izlazni procesor rezultata sastavljanja podataka u zbirku vrijednosti; OutputProcessor.SetObject(Rezultat); OutputProcessor.Output(CompositionProcessor); Ako je FormElements.Result.Columns.Quantity() = 0 Tada je FormElements.Result.CreateColumns(); endIf; EndProcedure ProcedureOnOpen() Layout = GetLayout("Layout"); SourceAvailableSettings = New SourceAvailableSettingsDataComposition(Layout); Linker.Initialize(SourceAvailableSettings); Linker.LoadSettings(Layout.DefaultSettings); Kraj procedure

Obrada je spremna, nakon što je pokrenete, u našoj selekciji možete odmah vidjeti drugu stranu koja se pojavila u našoj selekciji, iz koje možete odabrati bilo koju vrstu poređenja, kao i dodati dodatne linije odabira koristeći detalje imenika Counterparties:

To je sve, nadam se da će vam ovaj članak pomoći da poboljšate fleksibilnost odabira u obradi.

Kononov Sergey