Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • U kontaktu sa
  • Postavljanje dinamičke liste 1s 8.3. Obrada i formatiranje podataka dinamičke liste

Postavljanje dinamičke liste 1s 8.3. Obrada i formatiranje podataka dinamičke liste

Konačno se ostvario san svakog sedmogodišnjaka. Koliko često su korisnici programa 7.7 tražili normalan izbor stavki? Tako da možete vidjeti stanja, cijene i postaviti filtere. Morali smo smisliti razne trikove, uključujući pisanje vanjskih komponenti. U 1C 8.2 pojavile su se dinamičke liste. Predlažem da razmotrimo šta je to i šta nam mogu dati u 1C 8.3.

Uzmimo kao osnovu određenu testnu konfiguraciju 1C: „Računovodstvo preduzeća 3.0“. Nećemo sada vršiti selekciju, samo ćemo dodati još jedan obrazac za odabir u direktorij "Nomenklatura" i učiniti ga privremeno glavnim:

Kada se kreira, sistem će po defaultu dodati polje tabele tipa „Dinamička lista“ u obrazac.

Uđimo u njegova svojstva i vidimo šta se tu nalazi.

Prije svega, zanima nas polje za potvrdu “Prilagođeni zahtjev”. Ovo će nam otkriti sve prednosti dinamičke liste. Imaćemo priliku da napišemo sopstveni zahtev, sa parametrima. Označite kućicu i kliknite na link "Otvori":

Otvoriće se prozor sa gotovim kodom u . Za sada su tu jednostavno navedena sva polja imenika „Nomenklatura“.

Nabavite 267 video lekcija na 1C besplatno:

Kao što vidite, postoji dugme za pozivanje “ ” i potvrdni okvir koji omogućava dinamičku promjenu sadržaja liste. To jest, kada drugi korisnik promijeni nešto u direktoriju, to će se također promijeniti na našoj listi. Osim toga, postoji i kartica "Postavke", ali ćemo se toga dotaknuti kasnije.

Prilagođeni upit u dinamičkoj listi

Prvo, kreirajmo zahtjev koji nam je potreban sa stanjem i cijenama. Kao to:

Kartica “Postavke”.

A sada najbolji dio! Idite na karticu "Postavke". I odmah vidimo da na prvoj kartici možemo napraviti bilo koju selekciju za bilo koje polje u zahtjevu:

Programsko postavljanje parametara upita u dinamičkoj listi 1C 8.3

Ne zaboravite da imamo dva parametra u zahtjevu: “Period” i “Tip cijene”. Moramo ih proslijediti u zahtjev, inače će doći do greške.

Zapišimo ove parametre u parametre obrasca i dodajmo sljedeće redove u modul obrasca:

&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing) Lista. Opcije. SetParameterValue("Period" , Parametri. Datum) ; Lista. Opcije. SetParameterValue("PriceType", Parameters.PriceType) ; EndProcedures Početna Bilješke kroz ogledalo

21.04.2014. Prijem podataka dinamičke liste

Implementirano u verziji 8.3.6.1977.

Implementirali smo mogućnost lakog i praktičnog dobijanja podataka prikazanih pomoću dinamičke liste.

Možda će vam trebati podaci dinamičke liste da biste ih ispisali u nestandardnom, „specifičnom“ obliku. Ili da bi s njima izvršili određene radnje. Na primjer, pošaljite pismo svim izvođačima koje ste odabrali na listi na osnovu određenih kriterija.

Osim toga, postoji niz zadataka u kojima korisnik, osim liste elemenata, želi vidjeti i zbirne podatke povezane s ovom listom. Na primjer, nakon odabira proizvoda određene grupe proizvoda i određenog dobavljača, on odmah želi vidjeti ukupan broj takvih proizvoda u bazi podataka.

Dinamička lista sama po sebi ne može vam pružiti ove informacije. Svrha dinamičke liste je da omogući brz pregled velikih količina podataka. Stoga on čita podatke u komadima koji su potrebni za prikaz na jednom ili dva ekrana. I „ne zna ništa“, na primjer, o ukupnoj količini podataka koju mora izbrojati.

Općenito, da biste dobili dodatne informacije koje korisnik želi, morate pokrenuti upit baze podataka. Potpuno isti kao onaj koji se koristi u dinamičkoj listi.

Nekada si to mogao. Ali nije uvijek bilo lako. Uostalom, pored teksta originalnog zahtjeva na kojem radi dinamička lista, trebali ste znati sve odabire, sortiranja i druge parametre koje korisnik interaktivno postavlja u tablicu koja prikazuje podatke.

Sada se ovaj problem može jednostavno riješiti. Tabela dinamičke liste sada ima dvije nove metode:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Tako dobijate samu shemu rasporeda podataka i, što je najvažnije, sve njegove postavke, zahvaljujući kojima korisnik vidi listu upravo tako. Sve što trebate učiniti je programski sastaviti izgled i prikazati ga u kolekciji vrijednosti (za programsku obradu) ili u dokumentu proračunske tablice (za prikaz):

Kao rezultat, dobit ćete strukturu (ili izvještaj) koji sadrži kolone i redove prikazane u tabeli dinamičke liste.

Važna stvar je da izgled i postavke koje dobijete iz tabele dinamičke liste uzimaju u obzir, između ostalog, vidljivost kolona i primenjenu pretragu. Budući da se postavke dobijaju zasebno, možete promijeniti sastav polja za svoje potrebe i dobiti, na primjer, sve kolone liste, a ne samo one koje su vidljive korisniku.

Prilikom izlaza u tabelarni dokument postoji još jedan ugodan trenutak. Općenito, izgled izvještaja će odgovarati izgledu tabele dinamičke liste u vrijeme prijema šeme i postavki. Uključujući uslovni dizajn stola. Neke dodatne radnje će vam trebati samo ako želite da prenesete uslovni dizajn obrasca u izveštaj.

Osim primitivnih tipova podataka koji se mogu naći u bilo kojem programskom jeziku, u 1C postoje jedinstveni tipovi. Svaki od njih ima svoja svojstva, metode, funkcije, svrhu i nijanse upotrebe u sistemu. Jedna od ovih vrsta je dinamička lista, koja uvelike olakšava mnoge primijenjene zadatke. Zato programeri moraju znati i biti u stanju rukovati ovim univerzalnim alatom.

Značajke dinamičkih lista u 1C

Svrha ovog tipa je da prikaže informacije iz bilo koje tabele baze podataka, bez obzira na njen tip. Mehanizam je kreiran na bazi SKD-a i ima slične mogućnosti. Ali to ne znači da ćete nužno morati napisati zahtjev na 1C jeziku, iako ova mogućnost postoji i treba je iskoristiti. Možete jednostavno odrediti tablicu čije informacije vas zanimaju i 1C će samostalno generirati jednostavan upit.

Da biste vidjeli kako se formira dinamička lista i koje podatke prikazuje, potrebno je da otvorite upravljane forme tamo gdje se nalazi u konfiguratoru: u listi detalja koristite kontekstni meni da otvorite njena svojstva i obratite pažnju na „Prilagođeno Zahtjev”. Ako ne postoji potvrdni okvir, tada parametar “Glavna tablica” odražava tablicu baze podataka iz koje se preuzimaju podaci. Inače, dinamička lista odražava podatke prilagođenog upita, što se može vidjeti otvaranjem postavki liste.

Prilagođena šema upita se mnogo češće koristi, jer ovo pruža odličnu priliku za kombinovanje i prikaz širokog spektra podataka. Najčešće se ovaj mehanizam koristi za prikazivanje stanja skladišta, cijena artikala, primitaka, troškova ili kupovine. Morate ga pažljivo koristiti, jer performanse mogu pasti za složene upite.

Još jedno korisno svojstvo dinamičke liste otvara se kada kliknete na natpis "Postavke liste". Ovaj meni vam omogućava da informacije učinite pristupačnijim i razumljivijim krajnjim korisnicima, čak i kada koristite standardni skup polja. Bez obzira da li je zahtjev proizvoljan ili ne, vidjet ćete karticu “Postavke” gdje možete odrediti:

  • Izbor dinamičke liste;
  • Grupe;
  • Sortiranje;
  • Decor.

Upotreba parametara čini dinamičke liste univerzalnim i prilično fleksibilnim. Također ih možete povezati s detaljima na upravljanom obrascu, a podaci će se mijenjati ovisno o parametrima koje je korisnik odabrao. Upotreba ovih mehanizama može se razumjeti i cijeniti razmatranjem primjera problema iz stvarnog života.

Kao primjer, razmotrite zadatak odražavanja ostataka nomenklature na kontroliranom obrascu. U stvarnoj praksi, takvi nalozi se često javljaju u različitim konfiguracijama, a dinamička lista je idealna kao alat. Za ovaj zadatak morat ćemo koristiti prilagođeni upit, parametre dinamičke liste i njegove postavke.

Radi veće jasnoće, napravimo posebnu eksternu obradu i postavimo dinamičku listu na nju. Za realizaciju naših planova tabela sa nomenklaturom neće biti dovoljna, pa moramo dozvoliti proizvoljan upit. U njemu ćemo opisati lijevu vezu imenika sa listom stavki i registrom stanja i postaviti imenik kao glavnu tabelu. Ova šema će omogućiti korisnicima, koji rade sa dinamičkom listom, da dodaju ili mijenjaju stavke.



SELECT NomenclatureList.Name AS Naziv, GoodsInWarehousesRemainings.Warehouse AS Skladište, GoodsInWarehousesRemainings.QuantityRemaining AS Količina Preostala iz imenika.Nomenklatura AS NomenclatureList LEFT JOIN RegisterAccumulations.GoodsInWarehouses.Remainhouse.GoodsInWarehouses. sPreostali softver NomenclatureList.Link = Proizvodi u skladištima Preostale zalihe.Nomenklatura GDJE

Pošto je naš zahtjev koristio parametar “CurrentDate”, moramo postaviti njegovu vrijednost prije korištenja obrade. Da biste to učinili, u modulu obrasca u proceduri “When CreatedOnServer”, koristeći standardnu ​​naredbu, dodijelite mu funkciju “CurrentSessionDate”. Također moramo prikazati dinamičku listu na kontrolnom obrascu i promijeniti redoslijed polja radi jasnoće. Prevucite atribut “Nomenclature Remaining” u elemente obrasca (gornji lijevi dio) i koristite plave strelice da promijenite redoslijed polja u tabeli na obrascu.

&O serverskoj proceduri kada je kreirana na serveru (neuspjeh, standardna obrada) ostaje nomenklatura Parametri Postavite vrijednost parametra("CurrentDate", CurrentSessionDate()) EndProcedure


Već u ovoj fazi možemo otvoriti našu eksternu obradu u 1C i vidjeti da dinamička lista radi. Možemo gledati stanja, kreirati stavke i grupe i pretraživati. Često kupci traže da dodaju mogućnost izbora datuma na koji će vidjeti stanje. U slučaju obrasca sa dinamičkom listom, to se postiže dodatnim poljem i postavljanjem parametara pomoću njega.

Dodajte atribut “DateRemaining” tipa “Date” i prenesite ga u elemente obrasca. U polju događaja kreiramo događaj “OnChange” i pišemo kod za postavljanje parametra “CurrentDate” koji se koristi u dinamičkom zahtjevu. Kako bi prilikom otvaranja obrasca korisnik odmah shvatio na koji datum vidi stanja, napravit ćemo male izmjene u proceduri „Kada je stvoren na serveru“.



&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing)RemainingDate = CurrentSessionDate(); Stavka Remains.Parameters.SetParameterValue("CurrentDate", RemainingDate); Kraj procedure &na klijentovom postupku Preostali datumWhenChanged(Element)Nomenklatura Remaining.Parameters.SetParameterValue("CurrentDate",RemainingDate); Kraj procedure

Kao rezultat, naš obrazac za dinamičku listu može odražavati stanja na bilo koji datum.

Razmotrili smo samo mali dio mogućnosti ovog kompleta alata, ali to je već dovoljno da shvatimo pogodnost ove vrste dinamičke liste. Sličan mehanizam se koristi za mnoge zadatke, ali se najčešće nalazi u tipičnim konfiguracijama u upravljanim oblicima:

  1. Selection;
  2. Liste.

Da bi primio dinamičku listu i njen zahtjev u standardnim upravljanim oblicima, programer treba da otvori željeni obrazac u konfiguratoru. U odjeljku s detaljima pronađite detalje sa tipom podataka „DynamicList“ (najčešće je istaknut podebljanim slovima). Njegova svojstva sadrže tekst zahtjeva, odabire i druge postavke.

U procesu finalizacije konfiguracija, svaki 1C programer nailazi na dinamičke liste.
Dinamička lista je objekt interfejsa koji se koristi za prikaz različitih lista objekata baze podataka ili ne-objektnih podataka – unosa registra.
Na primjer, dinamička lista se koristi za prikaz liste stavki:

Da bismo demonstrirali mogućnosti dinamičke liste, napravimo eksternu obradu i dodamo glavni obrazac. Dodajmo novi atribut u obrazac sa tipom "Dynamic List". Uđimo u njegova svojstva i vidimo šta se tu nalazi.
Zainteresovani smo za svojstvo “Custom request”. Omogućavanje će nam pokazati sve mogućnosti dinamičke liste. Moći ćemo napisati zahtjev koristeći gotovo sve mogućnosti jezika upita sistema 1C: Enterprise. Označite kućicu i kliknite na link "Otvori":

Naša lista će podrazumevano prikazati listu artikala sa ukupnim stanjem za sva skladišta. Da biste implementirali takvu listu, dodajte sljedeći upit:


Kao glavnu tabelu izabraćemo “Directory.Nomenclature”, to će nam omogućiti da radimo sa dinamičkom listom, kao i sa listom nomenklature - dodaj, promeni, označi elemente direktorijuma za brisanje. Takođe, instalacija glavne tabele omogućava dinamičko čitanje podataka - to znači da će se selekcija vršiti u delovima, po potrebi.
Zatim moramo kreirati elemente obrasca za našu listu:

Ako pokušamo da pokrenemo našu obradu u ovom obliku, dobit ćemo grešku:


Da biste ga eliminisali, morate postaviti vrijednost za parametar "Period". Da biste to učinili, možete koristiti metodu “SetParameterValue” iz kolekcije “Parameters” dinamičke liste. Metoda uzima dva parametra:
. "Parametar" - Tip: String; DataCompositionParameter. Ime parametra ili parametra sastava podataka čiju vrijednost želite postaviti;
. “Vrijednost” - Vrsta: proizvoljna. Vrijednost koju treba postaviti.
Može se pozvati u "OnCreateOnServer" rukovaocu obrasca:

Imate li pitanja ili vam je potrebna pomoć konsultanta?


Korisniku ćemo pružiti mogućnost promjene perioda za primanje stanja. Da biste to učinili, dodajte atribut i element obrasca "Datum" povezan s njim:


U rukovatelju “OnChange” elementa obrasca “Date”, pozvaćemo metodu “SetParameterValue”, prosljeđujući vrijednost pridruženog atributa kao vrijednost. Na sličan način promijenimo proceduru obrasca „Pri kreiranju na serveru“. Pošto je metoda dostupna na klijentu, nema potrebe da pozivate server:


Sada kada se datum promijeni, bilansi će se automatski ažurirati:




Pretpostavimo da korisnici žele vidjeti ili trenutna stanja ili planirane primitke. Razmotrimo jednu od opcija implementacije. Dodajmo atribut forme boolean tipa i pridruženi prekidač:


Prilikom promjene vrijednosti prekidača, promijenit ćemo tekst zahtjeva. Da bismo to uradili, koristićemo rukovalac događaja „On Change” za element obrasca „Prikaži količinu na prijemu”. Moramo promijeniti svojstvo “QueryText” dinamičke liste ovisno o vrijednosti atributa. Pošto ovo svojstvo nije dostupno na klijentu, mora se pozvati serverska procedura:


Rezultat izvršenih promjena:



Najbolji članci na ovu temu