ACS i vanjski izvori podataka. Skup podataka je objekt. 1S SKD skupovi podataka prosljeđuju parametre vanjskom objektu

💖 Sviđa li vam se? Podijelite vezu sa svojim prijateljima

Zdravo!
Danas želim opisati temu koju ne možete razumjeti bez ronilačke opreme :) ;)

Ronjenje znači da je ronjenje dosta duboko. Malo je referenci na ovu temu u literaturi i nećete je razumjeti dok ne dobijete želju. Neće biti ni poruke za takvu akciju ;) Usput, dokumentacija o tome govori vrlo loše i nedosljedno; morate se obratiti literaturi trećih strana.

Na primjer, toplo preporučujem "Razvoj složenih izvješća u 1C:Enterprise 8.2." Sustav sastavljanja podataka", (konkretnije, pogledajte stranice 224, 267 i 473)

U ACS-u postoje 2 vrste izvora podataka: Upit, objekt i unija (ovo se ne računa, nije izvor podataka, već procesor postojećih podataka). Pogledajte sliku 1:


Dakle, ako više-manje razumijemo kako raditi s izvorom (skupom) podataka tipa "Upit", onda postoje poteškoće sa skupom podataka "Objekt".

Prvo ću opisati što želimo dobiti kao rezultat:

Prijavi, korisnik je kliknuo na " Oblik» i prikazao se popis stavki (vidi sl. 2):

Da, napravio sam jednu netočnost, naime: nema gumba " Oblik", ali postoji gumb " nova akcija"(Malo kasnije ću objasniti zašto se to dogodilo;)

Da da! Još jedna točka: cijeli ovaj popis izveden je iz skupa podataka "Objekt":

Riješenje:

  1. Napravite vanjsko izvješće;
  2. Dodajte raspored ACS-a, nazovimo ga “Glavna shema izgleda podataka”;
  3. Dodamo mu skup podataka "Objekt", dodijelimo mu naziv "Popis nomenklature" (trebao bi biti isti kao na slici 3);
  4. Ne eksperimentiramo previše s postavkama izvješća, neka sve bude jednostavno (vidi sliku 4)

Ok, pola posla obavljeno ;)

Generirajmo sada glavni obrazac izvješća (da, još jedna stvar! Moja konfiguracija radi na običnom sučelju, ali mislim da ćete pronaći rješenje na upravljanim obrascima;) Dakle, obrazac:

Tu nastaje problem! Ako kliknemo na gumb “generiraj” (slika 5.), vidjet ćemo grešku!


Ovaj sam članak posvetio rješavanju ovog problema!

Nije bilo moguće presresti događaj gumba "Generiraj", pa sam odlučio upotrijebiti štaku. Pokrenuo sam konfiguraciju u načinu za otklanjanje pogrešaka i pokušao pronaći gumb "generiraj".

Ubacio sam proceduru “Generiraj” u formu, ali u njoj nema unosa, morao sam redefinirati radnju gumba “forma” prije otvaranja forme:


Na sl. Osim promjene djelovanja obrasca, slika 8 prikazuje primjer zahtjeva, njegovu obradu i prijenos generiranih podataka u sustav kontrole pristupa. Proučimo ga pažljivije:

  1. Generiramo ulazne podatke za sustav kontrole pristupa;
  2. Inicijaliziramo sustav kontrole pristupa;
  3. Rezultat prikazujemo NA OBRASCU (obratite pozornost i na ovo!).

Prisjetimo se dijagrama interakcije objekata sustava sastava podataka:

Shema rasporeda podataka u vanjskom izvješću dostupna je kao globalni objekt u metodi obrasca Shema sastavljanja podataka. Također mu možete pristupiti po imenu tako da ga proslijedite metodi GetLayout(vidi sliku 8)

Glavni dio koda je ispod:

Zahtjev = Novi zahtjev; Query.Text = "SELECT | Nomenclature.Name as Nomenclature |FROM | Directory.Nomenclature AS Nomenclature"; NomenclatureList = Request.Run().Upload(); Skupovi podataka = Nova struktura ("Popis nomenklature", Popis nomenklature); //SKD = ​​​​GetLayout("MainData LayoutScheme"); SKD = ​​​​Shema sastavljanja podataka; LayoutComp = novi DataLayoutComposer; layoutComp = LayoutComp.Run(SKD, SKD.DefaultSettings); CompDataProcessor = novi DataCompositionProcessor; ProcessorCompData.Initialize(layoutComp, DataSets); output = new DataCompositionResultOutputProcessorInTabularDocument; output.SetDocument(FormElements.Result); output.Output(ProcessorCompData, true);

Da! Evo još jednog lijepog trenutka!!!

U ovom primjeru, kao što vidite (vidi sliku 2), izlaz se izvodi u obliku, a ne u tablici. dokument! I to je jako dobro, jer možemo raditi s formom (programski presresti događaje elementa forme, izvoditi razne trikove s povlačenjem i ispuštanjem, itd.;)

U tabličnom dokumentu možemo jednostavno prikazati obrađene podatke na ekranu i prenijeti kontrolu nad dokumentom na korisnika te ni na koji način ne možemo utjecati na daljnji proces uređivanja ovog sadržaja!

Pogledajte sustav pomoći " Polje dokumenta proračunske tablice “, a ja ću samo dati izvadak iz ugrađene dokumentacije sustava 1c Enterprise 8.2:

“Polje dokumenta proračunske tablice je dokument proračunske tablice postavljen na obrazac. Uz razne mogućnosti dizajna dokumenta proračunske tablice, to vam omogućuje organiziranje obrade događaja koji se događaju prilikom odabira ćelija, slika, kao i drugih kontrola postavljenih u polje dokumenta proračunske tablice.”

Ok, kako kažu, sretno u borbi;)

Pažnja! Ovo je uvodna verzija lekcije, čiji materijali mogu biti nepotpuni.

Prijavite se na stranicu kao student

Prijavite se kao učenik za pristup školskim materijalima

Sustav za sastavljanje podataka 1C 8.3 za početnike: prikaz izvješća u obliku dijagrama

Danas ćemo nadopuniti izvješće iz prošle lekcije (točnije njegovu kopiju) mogućnošću prikaza istih podataka u obliku grafikona.

Postavljanje cilja

  • Napravite kopiju izvješća s prošle lekcije.
  • Prikaži iste podatke u obliku grafikona.
  • U ovom slučaju serije (kolone, Y os) trebaju biti proizvodi, a točke (X os) trebaju biti kupci. Vrijednosti stupca (duž Y osi) bit će količina hrane koju je klijent naručio.

Promjena kopije prethodnog izvješća

Izrađujemo kopiju izvješća sa zadnje lekcije pod nazivom “Lekcija 9” i tu kopiju otvaramo u konfiguratoru baze podataka “Gastronom”.

Promijenite naziv izvješća u "Lekcija 9" i kliknite gumb "Otvoreni dijagram izgleda podataka":

Skupove podataka nećemo mijenjati – naš je zadatak promijeniti njihovu prezentaciju za korisnika.

Stoga odmah idemo na karticu "Postavke" i usmjeravamo pozornost na lijevi stupac s opcijama izvješća.

Nismo prije radili s ovom kolonom, ali danas ću vam reći što ona znači.

Sve postavke koje napravimo na ovoj kartici (pomoću dizajnera čarobnog štapića ili ručno na dnu) odnose se na jednu od opcija izvješća koja je istaknuta na lijevoj strani prozora.

Prema zadanim postavkama, ova je opcija uvijek jedna i zove se "Glavna". Trik je u tome što se u korisničkom načinu rada možete jednostavno prebacivati ​​između ovih opcija.

A sada imamo glavnu opciju u čijim postavkama je naznačeno da se podaci prikazuju u obliku tablice:

Preimenujmo ovu opciju (dvostrukim klikom) i glavnu u “Tablica”:

Dodavanje nove opcije izvješća

Sada ćemo pomoću znaka plus dodati još jednu opciju (gdje ćemo staviti postavku za prikaz podataka u obliku grafikona):

Odmah nazovimo ovu opciju "Dijagram":

Postavljanje nove verzije izvješća

Kao što vidite, desno od ove opcije (označili smo je) je prazno, odnosno nema postavki. Kreirajmo ih pomoću našeg čarobnog štapića:

Ovaj put ćemo odabrati vrstu izvješća "Dijagram...":

Odaberite “Količina” kao polja za prikaz (po analogiji s tablicom):

Kao seriju (Y os) označavamo polje "Hrana", a kao točke (X os) - polje "Kupci":

Ispalo je ovako:

Spremimo naše izvješće u konfigurator i pokrenimo ga u korisničkom načinu rada:

Vidimo stol... što je to?! Ali poanta je u tome da samo trebate odabrati drugu opciju izvješća. Kliknite na gumb "Odaberi opciju..." i odaberite opciju "Dijagram":

Dijagram je spreman

Generirajmo ponovno izvješće:

Super, kakva ljepota

Obrada reference, nakon dovršetka svih koraka u ovom vodiču

Na kraju modula

Ovo zaključuje našu raspravu o osnovama sustava za sastavljanje podataka. Pokušao sam na jednostavnim primjerima ispričati i objasniti osnove potrebne početnicima za rad sa sustavima kontrole pristupa.

Ako u vašoj budućnosti ( Savjetujem vam da to učinite nakon završetka škole) bit će potrebno dublje proučavanje sustava sastavljanja podataka - postoji prekrasna knjiga E. Yu Khrustaleva "Razvoj složenih izvješća u 1C: Enterprise 8".

U ovom modulu stekli ste dovoljno znanja i praktičnih vještina da počnete čitati ozbiljniju literaturu na ovu temu.

Obavili smo odličan posao, vrijeme je za opuštanje!

Korištenje 1C sustavi za sastavljanje podataka nemoguće bez skupovi podataka. Može ih biti nekoliko u jednoj shemi rasporeda podataka. I oni mogu međusobno komunicirati na određeni način. Ili bolje rečeno ili ili ujediniti. U ovom članku ćemo pogledati spajanje skupova podataka. Kombiniranje skupova podataka u sustavu kontrole pristupa je slično.

Za kombiniranje dva ili više skupova podataka u sustavu kontrole pristupa potrebno je otići na karticu Skupovi podataka unaprijed izraditi poseban skup podataka – uniju


Dobili smo ovu sliku


I ovom stvorenom objektu dodajemo setove koji će se izravno kombinirati. Dodajmo dva skupa podataka. Jedan će biti zahtjev, a drugi će, radi raznolikosti, biti objekt (vanjski izvor podataka). Kao ovo:


Kao primjer, razmotrite kombiniranje skupova podataka sa bilancama proizvoda.

U set koji ćemo koristiti ručno dodajemo polja Proizvod, količina i unesite naziv objekta koji sadrži podatke


Za skup podataka u kojem se upit koristi, podatke ćemo dobiti koristeći ostatke iz sljedećeg registra akumulacije:


Postavimo jednostavan zahtjev

SELECT Remaining Products.Product.View AS Product, Remaining Products.QuantityRemaining AS Remaining (SELECT Product, Remaining) FROM RegisterAccumulation.ProductsRemaining.Remaining AS Remaining Products

Kako bih se riješio skladišta, morao sam koristiti sastav podataka u zahtjevu (sve u vitičastim zagradama) i onemogućiti oznaku za automatsko dovršavanje na dnu. Također, kao proizvod nije uzet element imenika, već njegova reprezentacija, tako da je tip bio isti kao u skupu s vanjskim izvorom podataka. Da bi podaci iz različitih skupova mogli pasti u jedno polje, moraju imati isto ime u polju Staza. Stoga za polje Ostaci hrane put je ručno ispravljen na Količina kako biste ga sinkronizirali s drugim skupom podataka. Zapravo, bolje je, naravno, koristiti željeni alias odmah u zahtjevu. U ovom slučaju to namjerno nisam učinio kako bih usmjerio pozornost na takvu značajku.

Sada pogledajmo izravno podatke.
U akumulacijskom registru imam sljedeća stanja robe:

au vanjskom izvoru podataka ovo je slika

Konfigurirajmo dijagram izgleda na najprimitivniji način.
Polje Količina Naravno, učinit ćemo to resursom, a na kartici postavki jednostavno ćemo ga dodati u strukturu Detaljni unosi. I naravno, ne zaboravimo staviti Proizvod I Količina na odabrana polja. A za potpunu sreću složit ćemo po proizvodima.


Kao rezultat pokretanja izvješća s ovim ACS postavkama dobivamo sljedeću tablicu

Kao što vidite, lampa, koja se nalazi u oba skupa podataka, predstavljena je u rezultatu upita s dva retka. Da biste ih sažeti u jedan redak, trebate malo izmijeniti strukturu u postavkama ACS-a i, umjesto detaljnih zapisa, grupirati po polju Proizvod.


I sada dobivamo rezultat bez duplih linija.

41
Nedavno sam napravio izvještaj s neodređenim brojem stupaca. Nisam htio petljati s kodom, pa sam odlučio to učiniti na sustavu kontrole pristupa. Tu nije bilo problema, bilo je potrebno razvući rezultat na proizvoljan layout (vlastito zaglavlje +... 27
Iako studenti CDS-a naiđu na ovo prvi ili drugi dan, to bi trebalo biti u odjeljku FAQ. Jednostavan primjer programskog ispisivanja izvješća o izgledu, korištenjem zadanih postavki. //Preuzmi dijagram od... 18
Kod generiranja izvještaja na sustavu kontrole pristupa standardno su sve grupacije proširene, ali ponekad je potrebno odmah nakon generiranja prikazati izvještaj sa sažetim grupacijama! Ovaj kod u modulu izvješća omogućuje vam sažimanje... 10
Na ovoj kartici možete odrediti koje veze se uspostavljaju između dva ili više skupova podataka, prema kojim parametrima i uvjetima..png 1. “Izvor veze” - označava prvi skup podataka, od... 9
Ono što je potrebno kod izrade izvještaja je da se za korisnika s ograničenim pravima, izvještaj generira potpuno bez provjere prava! Osobito ako je RLS konfiguriran, postoji nekoliko načina za to: 1. Instalirajte...

Ponekad je za dobivanje određenog rezultata izgleda potrebno napraviti veze između skupova podataka u sustavu kontrole pristupa. Pokušat ćemo razgovarati o tome kada je to potrebno i kako to učiniti u našem članku.

Shema rasporeda podataka implementirana u 1C podržava tri vrste izvora podataka (Sl. 1)

Izvori podataka

Najočitiji i najčešće korišten izvor podataka od strane programera je upit.

Dizajner upita implementiran u verziji 8 od 1C vrlo je zgodan i, u većini slučajeva, možete povezati nekoliko tablica zajedno i napraviti potrebna grupiranja i odabire izravno u njemu.

U složenim slučajevima, kada je potrebno ili prikladnije koristiti izvršavanje nekog koda (na primjer, učitavanje podataka iz datoteke treće strane) ili kada nije moguće koristiti upit, izvor podataka “Object” dolazi do spašavanje. Proizvoljni kod koji se izvršava u modulu mora imati određenu strukturu na izlazu kojoj sustav kontrole pristupa može pristupiti.

Treći izvor podataka je "Unija". Zapravo, ovaj izvor se može smatrati jednom od vrsta komunikacije. Kombinira (svodi više tablica u jednu), bez podudaranja, već slučajnosti pojedinih polja. To jest, ako dvije tablice koje se spajaju imaju 3 odnosno 4 retka, tada će rezultirajući izvor podataka imati 7 redaka.

Formulacija problema

Kao poligon za testiranje odabrat ćemo UPP bazu, verzija 1.3.92.3, koja radi u normalnom modu aplikacije.

Dobili smo sljedeći zadatak: koristeći samo sustav kontrole pristupa izraditi izvješće u kojem bi bila prikazana tablica kupljenih artikala iz dokumenta, s cijenama preuzetim iz datoteke poslane od strane ugovorne strane.

Stoga moramo:

  1. Uzmite tabularni dio dokumenta o primitku;
  2. Učitajte datoteku u izvor podataka "Objekt";
  3. Povežite ova dva izvora određenim parametrom (u našem slučaju to će biti kod);
  4. Prikažite dobivenu tablicu.

Proces izvršenja

Prođimo kroz sve navedene korake:

  • Kreiramo upit za tablični dio dokumenta o primitku (slika 2)

sl.2

  • Stvorite objekt skupa podataka (slika 3);

sl.3

Ovdje je važno obratiti pozornost na "Naziv objekta koji sadrži podatke"; morat ćemo navesti ovaj naziv u kodu modula izvješća.

  • Idemo u modul izvješća i tamo kreiramo proceduru "Prilikom sastavljanja rezultata" (slika 4);


sl.4

Nećemo opisivati ​​postupak dobivanja podataka iz vanjske datoteke, već ćemo obratiti pozornost na onaj dio koda koji mora biti prisutan u izgledu kako bismo mogli dobiti podatke za “Skup podataka 2” (Sl. 5).

sl.5

Važno! Prilikom stvaranja “objekta” u kodu procedure tijekom povezivanja, vrijednost parametra StandardProcessing mora biti False.

Idite na karticu "Veze skupa podataka".

Povezivanje skupova

Idite na odgovarajuću karticu dijagrama (Sl. 6).

Vidimo dio tablice koji je vrlo sličan dijelu tablice koji se nalazi u dizajneru upita, uz neke iznimke. Potvrdni okvir “Sve” ne može se označiti za skup izvora komunikacije i skup odredišta komunikacije, ali je dodano nekoliko dodatnih stupaca.

U odnosima skupova podataka možete uspostaviti samo odnos sličan lijevom vanjskom spoju konstruktora upita.

Prije stvaranja veze, odlučimo o svrsi stupaca:

  1. Izvor veze je prvi skup podataka iz kojeg će se uzeti sve dostupne vrijednosti;
  2. Komunikacijski prijamnik – skup podataka iz kojih će se odabrati vrijednosti koje odgovaraju našem stanju;
  3. Izvorni izraz – polje ili izraz prvog skupa podataka s kojim će se izvršiti usporedba;
  4. Odredišni izraz je polje ili izraz ovisnog skupa;
  5. Parametar – ako navedete naziv parametra u ovom polju, tada će se komunikacija sa skupom prijemnika provoditi samo prema vrijednosti navedenoj u parametru;
  6. Popis parametara – određuje mogućnost korištenja popisa vrijednosti kao parametra;
  7. Uvjet povezivanja – određivanjem izraza ovdje koristeći izvorna polja, možete stvoriti uvjet čije će ispunjenje poslužiti kao signal za uspostavljanje veze;
  8. Početna vrijednost – prikazuje početnu vrijednost veze;
  9. Obavezan odnos - Određuje jesu li polja korištena u izvoru (postavljeno na FALSE) ili odredištu (postavljeno na TRUE) omogućena i na temelju toga dodaje odnos u izgled.

Tako:

  • Izvor komunikacije bit će rezultat našeg zahtjeva;
  • Objekt će djelovati kao prijemnik;
  • Izvorni izraz bit će "NomenclatureCode";
  • Izraz primatelja „Nomenklatura”;
  • Komunikacija će biti obavezna (slika 7).

Da smo kao uvjet veze naveli naziv bilo koje nomenklature, ili njegovu vrstu reprodukcije, ili nešto drugo, mogli smo dobiti točniji uzorak za naš zadatak. Rezultat naših radnji može se vidjeti na sl. 8

sl.8

Nije bilo podudaranja za donja dva retka izvješća u datoteci s cijenama.

reci prijateljima