Dobivanje podataka prikazanih dinamičkom listom

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 Direktorija.Nomenklatura AS NomenklaturaLista LIJEVA VEZA LEFT CONNECTION AS Skladište. asuresRemaining software NomenclatureList.Link = ProductsInWarehousesRemainings.Nomenclature WHERE

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.

Platforma 1C:Enterprise 8.2 može raditi sa mnogim zapisima u tabeli baze podataka na dinamičan način, odnosno čitati podatke u delovima. Prethodno smo u člancima razmatrali mehanizam dinamičkih lista i metode za optimizaciju rada s njima.

Danas ćemo riješiti nestandardni problem za dinamičke liste. Morat ćemo izračunati ukupan iznos koristeći atribut dokumenta „Iznos“ i prikazati ga u podnožju liste. Slično tome, izračunajte prosječnu vrijednost za polje "Rating" i također je prikažite u podnožju dinamičke liste. Izračun ukupnih polja mora uzeti u obzir odabir koji je postavio korisnik u postavkama liste dokumenata.

Cijela poteškoća leži u činjenici da dinamička lista ne prima sve unose odjednom, već ih prima u dijelovima. Shodno tome, ne možemo odmah dobiti sažetak svih dokumenata koji odgovaraju trenutnom izboru. Kako izračunati zbir?

Implementacija

I tako, idemo dalje na rješavanje problema. Počnimo sa promjenom forme, zatim ćemo opisati algoritam za dobivanje konačnih vrijednosti.

Forma i interfejs

Prvo, pripremimo obrazac dokumenta za prikaz rezultujućih polja. Da bismo to učinili, dodaćemo dva detalja niza obrasca “Ocjena” i “Iznos”.

Ukupne vrijednosti za dokumente će biti zabilježene u ovim detaljima.

Da biste prikazali vrijednosti detalja u podnožju dinamičke liste, morate omogućiti odgovarajuću opciju za povezani element obrasca liste (pogledajte sljedeći snimak ekrana).

Sada morate odlučiti za koji događaj će se ažurirati rezultati u podnožju liste. Radi lakšeg razvoja, dodajmo komandu "Ažuriraj" i odgovarajući element obrasca na komandni panel. Kada se ova naredba izvrši, zbrojevi će biti ažurirani.

U test konfiguraciji, koju možete preuzeti sa linka na kraju članka, dodao sam i događaj ažuriranja sažetka prilikom snimanja dokumenta. U ovom slučaju se koristi mehanizam obavještavanja obrasca. Nećemo se detaljnije zadržavati na tome.

Algoritam

Najproblematičniji dio ostaje - trebate dobiti ukupne vrijednosti. Nastavimo na sljedeći način: formirat ćemo zahtjev bazi podataka za dobivanje vrijednosti konačnih polja u skladu s odabranim skupom u dinamičkoj listi. Vrijedi uzeti u obzir da odabir može imati složeno stanje iz grupa.

Napomena: postavke za dinamičke liste (pogledajte snimak ekrana iznad) su zasnovane na mehanizmima sistema za sastav podataka (DCS). Shodno tome, s njima možete raditi na sličan način (programsko dodavanje, mijenjanje, čitanje, itd.).

Faze formiranja zahtjeva za dobijanje rezultata su sljedeće:

1. Primamo početni zahtjev za dinamičku listu.

Kao što vidimo, zahtjevom se biraju svi detalji dokumenta. Da bih dodao malo više složenosti, dodao sam svoje vlastito polje “Rating Level”, generirano “SELECT” konstrukcijom.

2. Formiramo tekst uslova zahtjeva (odjeljak “GDJE”) i zamjenjujemo ga u originalni zahtjev.

Moramo dodati uslove primljenom tekstu izvornog zahtjeva u skladu sa konfiguriranim odabirom dinamičke liste.

Procedura, u zavisnosti od tipa prosleđenog elementa selekcije (grupa ili element selekcije), generiše odgovarajući tekst uslova. Svi uslovi u grupi su okruženi zagradama, a oni koji su uključeni u grupu su takođe okruženi zagradama. Uslovi između izraza zavise od roditeljske grupe (uslov „I“ se postavlja između gornjih elemenata u hijerarhiji).

Ako element ima postavljenu zastavicu upotrebe (svojstvo "Usage"), tada se element obrađuje. Generisani tekst takođe zavisi od uslova poređenja (Jednako, nije jednako, na listi, itd.). Ovisnost generiranog teksta uvjeta o vrsti poređenja može se vidjeti u sljedećoj funkciji.

Još jedna zanimljiva funkcija, po mom mišljenju, je “GetFieldTextByView”. Potreban je da bi se polja koja su formirana izrazima jezika upita zamenila u uslove upita. Iznad sam originalnom zahtjevu dodao polje „Nivo ocjene“. Ako ga korisnik koristi u odabiru, tada se cijeli izraz mora zamijeniti u uvjet upita. Ova funkcija dobija tekst polja iz zahtjeva na osnovu njegove reprezentacije. Za tako složena polja, vratit će cijeli tekst izraza.

Za više detalja o algoritmu, pogledajte testnu konfiguraciju priloženu uz članak. Ispod je snimak ekrana postavki odabira i uvjeta zahtjeva generiranih za njih.

Generirani tekst uvjeta se dodaje izvornom zahtjevu za dinamičku listu. Rezultat upita se stavlja u privremenu tabelu.

3. Prvi upit postavljamo u privremenu tabelu i vršimo grupisanje po poljima sažetka sa potrebnim agregatnim funkcijama.

Da vas podsjetim da moramo dobiti prosječnu vrijednost za polje “Rating” i ukupan iznos za polje “Iznos”. Već smo generirali zahtjev uzimajući u obzir odabire, preostaje samo da izračunamo ukupne vrijednosti. To se radi sa sljedećim zahtjevom:

Nakon izvršenja zahtjeva obrađujemo rezultirajući rezultat, vraćamo ga klijentu i upisujemo u detalje obrasca koji smo ranije kreirali. Na kraju, dobili smo rezultate prikazane u podnožju dinamičke liste (pogledajte prvi snimak ekrana u članku).

Optimalnost rješenja

Općenito, ovaj pristup može imati negativan utjecaj na performanse. Na primjer, ako program izračuna ukupan iznos bez odabira skupa u dinamičkoj listi, tada broj odabranih zapisa može biti ogroman (na primjer, tokom nekoliko godina). Kao rezultat, svako ažuriranje rezultata može trajati desetine (!!!) sekundi. Stoga ima smisla izračunati rezultate samo ako je selekcija uspostavljena. Ove uslove sam postavio u test konfiguraciji.

Osim toga, možemo samo izračunati ukupne vrijednosti i zahtjeve na strani servera. Stoga morate ozbiljno pristupiti serveru, jer se postupak ažuriranja zbroja može izvoditi vrlo često. Zamislite dnevnik računa blagajne u trgovačkoj organizaciji, u koji se može upisati do 5 računa u minuti i do 300 računa na sat. Svaki put kada se dokument napiše, ukupni iznosi će se ažurirati. Stoga bi bilo razumno smanjiti preneseni promet korištenjem procedura izvan konteksta.

Sljedeći snimak ekrana prikazuje programski kod za pozivanje serverske funkcije izvan konteksta koja vraća ukupne vrijednosti.

Prvi parametar prosljeđuje odabir dinamičke liste, drugi je struktura tipa “SelectionFieldNameSelectionFieldValueType”. Imajte na umu da se prvi parametar u funkciji dobiva kao vlastita vrijednost. Ne mogu tačno reći zašto, ali ako prođete odabir kao link, platforma daje grešku da se odabir ne može promijeniti. Greška je zaobiđena samo na ovaj način.->

Napomena: upotreba procedura izvan konteksta omogućava vam da smanjite veličinu poslanog saobraćaja za nekoliko puta, budući da se podaci obrasca ne prenose na server, za razliku od kontekstno osetljivih serverskih procedura („&OnServer“ direktiva).

Zaključak

U zaključku ću reći da je ovakav pristup izračunavanju totala u dinamičkoj listi netačan sa stanovišta metodologije razvoja. Bilo bi ispravno da se zbroj dobije po registrima. Na primjer, u čekovnom dnevniku, opet, iznos novca u tekućoj kasi možemo dobiti ili iz dokumenata ili iz odgovarajućeg akumulacionog registra.

Osim toga, upotreba registara akumulacije će vam omogućiti da izračunate ukupne iznose bez uzimanja u obzir selekcije, jer sistem radi optimalno sa već izračunatim ukupnim iznosima za prethodne mjesece.

Ipak, metoda opisana u članku se odvija pri rješavanju problema.

Fajlovi za preuzimanje:

Ispis (Ctrl+P)

Dinamička lista

1. Opće informacije

Dinamička lista je poseban tip podataka koji vam omogućava da prikažete proizvoljne informacije iz tabela baze podataka na obrascu. Da biste to učinili, morate navesti tablicu iz koje želite prikazati podatke ili opisati rezultirajući odabir na jeziku upita.
Mehanizam se zasniva na sistemu sastavljanja podataka i pruža mogućnosti za sortiranje, odabir, pretraživanje, grupisanje i uslovno formatiranje primljenih podataka. U ovom slučaju, izvor podataka je zahtjev, koji sistem ili generiše automatski (na osnovu navedenih podataka) ili ga ručno piše programer.

Rice. 1. Opcije za kreiranje dinamičke liste

Prilikom kreiranja atributa obrasca tipa DynamicList programer može izabrati dva načina da formira upit za podatke:
● Određivanjem glavne tabele – u ovom slučaju samo treba da navedete tabelu (svojstvo glavne tabele) iz koje želite da primate podatke, a sistem će automatski generisati upit za podatke (pogledajte desni deo na Sl. 1).
● Ručno generisanje zahteva - za ovo morate da podesite svojstvo Custom request (pogledajte levu stranu slike 1). Nakon toga će biti dostupno ručno generiranje zahtjeva za dobijanje podataka iz infobaze.
Upit može dohvatiti podatke iz više tabela, tako da možete odrediti primarnu tablicu. Ovo je tako da dinamička lista može odrediti koji su podaci primarni, a koji sekundarni, te može ispravno odabrati i prikazati informacije, kao i pružiti standardne komande. Međutim, ako je nemoguće odrediti glavnu tablicu u upitu, onda se ona ne može specificirati, ali tada
dinamička lista neće dati komande vezane za glavnu tabelu. Osim toga, u ovom slučaju (bez specificiranja glavne tabele) efikasnost dobijanja podataka dinamičkom listom će biti značajno smanjena.
Da biste poboljšali performanse, preporučuje se da svi spojevi koji se koriste u prilagođenom upitu samo za dobivanje dodatnih podataka budu opcioni korištenjem proširenja jezika upita sistema za sastav podataka.
Za dinamičku listu, koja je glavni atribut obrasca, moguće je postaviti vrijednosti odabira pomoću parametra obrasca Odabir. Da biste to učinili, potrebno je da se ime svojstva strukture nalazi u parametru Odabir,
podudara se s imenom polja za odabir dinamičke liste. U ovom slučaju, vrijednost svojstva strukture bit će postavljena kao ispravna vrijednost elementa za odabir. Ako se kao vrijednost elementa parametra Selection forme dinamičke liste prosljeđuje niz, fiksni niz ili lista vrijednosti, tada se odabiru dodaje uvjet sa opcijom U listi, u pravoj vrijednosti od kojih se postavlja lista vrijednosti (u koju se konvertuju niz i fiksni niz).
Proizvoljni upit u dinamičkoj listi može biti upit u kojem se parametar koristi za generiranje vrijednosti polja, na primjer:

ODABIR
IZBOR
KADA Isporuka.Koeficijent = 1 ONDA &Prezentacija
INAČE Isporuka. Koeficijent
END AS Omjer
OD

Štaviše, ako se tip vrijednosti parametra razlikuje od tipa atributa objekta (na primjer, Rekviziti1 ima tip Broj, a vrijednost parametra je tip Linija), zatim da biste ispravno prikazali polje, morate eksplicitno prebaciti vrijednost parametra na željeni tip:

ODABIR
IZBOR
WHEN Isporuka.Koeficijent = 1 THEN EXPRESS(&Representation AS String(100)) ELSE Isporuka. Koeficijent
END AS Omjer
OD
Dokument. Isporuka proizvoda KAKO isporučiti

Ako je polje kojim se postavlja odabir onemogućeno korištenjem funkcionalnih opcija, tada se odabir prema takvom polju ne instalira, čak i ako se vrijednost odabira prosljeđuje kao parametri obrasca ili veze parametara odabira.
Koristeći svojstvo dinamičkog čitanja podataka, ukazujete na dinamičku listu potrebu za čitanjem podataka u malim dijelovima
(za više detalja o načinima dobivanja podataka pomoću dinamičke liste i keširanja podataka, pogledajte dolje). Bez obzira na ovaj atribut, važe sljedeći uslovi:

● Ako je režim prikaza postavljen na hijerarhijsku listu, čitaće se samo podaci trenutne grupe i podaci svih nadređenih elemenata (bez dece).
● Ako je postavljen način prikaza stabla, čitat će se samo podaci iz otvorenih čvorova stabla.
● Jednokratno učitavanje podataka dinamičke liste nije podržano ako je hijerarhijsko pretraživanje postavljeno (svojstvo prikaza je postavljeno na Stablo) i početni prikaz stabla je postavljen na Proširi sve nivoe. Za dobijanje podataka, biće upućeno onoliko zahteva ka serveru koliko ima čvorova na prikazanoj listi.
Unutar jednog preuzimanja podataka, dinamička lista ponovo koristi prethodno kreirane privremene tablice ako su ispunjeni sljedeći uvjeti:
● Grupni upit liste nema upita nakon glavnog skupnog upita.
● Sastav privremenih tabela i polja u njima je nepromijenjen u odnosu na prethodno izvršenje paketnog zahtjeva.

U svom radu, dinamička lista koristi vrijednosti sljedećih svojstava detalja objekta metapodataka:
● format,
● format za uređivanje,
● savjet,
● znak za isticanje negativnih vrijednosti,
● maska,
● znak za višelinijski način rada,
● znak naprednog uređivanja,
● režim lozinke.
Prilikom prikaza i uređivanja izbora i parametara sistema za sastav podataka koristi se format za uređivanje odgovarajućeg polja.

2. Ograničenja i karakteristike

Kada postavljate izbor na dinamičkoj listi, zapamtite da odabir ne utiče na grupe ako je način prikaza za dinamičku listu Hijerarhijska lista ili Stablo. Pod “grupama” podrazumijevamo element direktorija ili plana tipova karakteristika čije je svojstvo ThisGroup postavljeno na True.
Primjenjuju se kvalifikacije koje dinamička lista automatski primjenjuje na standardne detalje Vlasnik, Roditelj, Datum, Period i Ova Grupa
koristeći standardne alate sistema za sastav podataka. Odabir, automatski primijenjen dinamičkom listom na ključna polja, može se primijeniti i standardnim sredstvima sistema za sastavljanje podataka i direktnim dodavanjem uslova u tekst zahtjeva IN na polja glavne tabele. Kao rezultat primjene odabira pomoću alata za raspored, oni se mogu primijeniti i na ugniježđene upite i na parametre virtualnih tabela.

Kada razvijate dinamičke liste, preporučuje se da testirate sve dinamičke liste sa prilagođenim upitima. Tokom procesa verifikacije, trebali biste se uvjeriti da ako upit liste sadrži ugniježđene upite ili virtuelne tabele, au njima su polja sa pseudonima koji odgovaraju pseudonima standardnih detalja Vlasnik, Roditelj, Datum, Period, OvaGrupa ili ključna polja dostupna za odabir, onda su ova polja važeća odgovaraju standardnim detaljima s kojima se njihov nadimak podudara. Ako to nije slučaj, trebate promijeniti zahtjev tako da se podudaraju ili
nadimak je bio drugačiji.
Ako odaberete da ručno generirate zahtjev, tada se zahtjevu nameću neka ograničenja:
● Upotreba izraza FIRST u upitu dinamičke liste nije podržana. Ako trebate koristiti izbor ograničen brojem zapisa u dinamičkoj listi, trebali biste preraditi zahtjev za generiranje dinamičke liste na način da se stvarni sadržaj zahtjeva postavi u podupit i ograniči broj zapisa primljeno u ovom potupitu. Također možete koristiti privremenu tablicu umjesto podupita.
● Odabir, sortiranje i grupiranje nisu podržani:

  • Prema detaljima tabelarnih dijelova.
  • Prikaži polja.
  • Polje DataVersion.
  • PredefinedDataName polje.
  • Polje tipa tabele kontnog plana.
  • Polje Tip kretanja tabele registra akumulacije.
  • Polje TypeValues ​​tabele plana karakterističnog tipa.
  • Vrsta polja Type;
  • Polje tipa String (neograničena dužina).
  • Polje tipa BinaryData.

● Sortiranje i grupisanje prema podkonto poljima nije podržano<НомерСубконто>i ViewSubconto<НомерСубконто>Tabele Kretanja Podkonto računovodstvenog registra.
● Grupiranje po poljima koja su izrazi jezika upita koji sadrže agregatne funkcije nije podržano.
● Kada je odabrana glavna tabela, upit dinamičke liste ima sljedeća ograničenja:

  • Pridruživanja nisu podržana.
  • Odjeljak ORDER BY nije podržan. Trebalo bi da koristite upit bez glavne tabele ili da postavite neophodan redosled kroz postavke dinamičke liste.

● Ako je dinamička lista prikazana kao hijerarhijska lista ili stablo, onda unos neće biti prikazan kao dinamička lista osim ako se ne prikaže barem jedan roditelj tog unosa. Drugim riječima, da bi prikazala element hijerarhijske liste, dinamička lista također mora prikazati sve roditelje tog elementa do vrha liste. U ovom slučaju, pod vrhom liste mislimo na bilo koje
korijenski element hijerarhijskog objekta prikazanog dinamičkom listom, ili element postavljen kao svojstvo ParentTopLevel ekstenzije tablice obrasca za dinamičku listu.

Upotreba sljedećih tabela kao glavne tablice dinamičke liste nije podržana:

● Tabela koja nema ključ koji jedinstveno identificira svaki zapis tablice (referenca za tablice objekata i ključ zapisa za tablice registara). Međutim, sljedeće tabele se mogu postaviti kao glavna tabela dinamičke liste (iako nemaju ključ):

● Podkonto tabela računovodstvenog registra;
● sve virtuelne tabele računovodstvenog registra, osim tabele MovementsSubconto;
● tabele konstantnih vrednosti (uključujući tabelu Konstante);
● tabele eksternih izvora podataka bez ključnih polja;
● kub tabele eksternih izvora podataka;
● tabele registara akumulacije:

  • Revolution table;
  • bilansna tablica;
  • tabela prometa i stanja.

● tabele registra obračuna:

  • tabela stvarnog perioda važenja;
  • podaci o rasporedu;
  • osnovni podaci.

● Tabele tabelarnih delova objekata;
● Promjena tablica registracije (koristi se u mehanizmima razmjene podataka);
● Tabele sekvenci;
● Tabele konverzije (koriste se u periodičnim mehanizmima poravnanja).
● Tabela koja se koristi u upitu samo u vanjskom spoju.

Drugim riječima, dinamička lista sa navedenom glavnom tablicom će ispravno raditi ako, kao rezultat izvršavanja upita,
naveden kao izvor podataka, broj redova dobijenih iz glavne tabele se ne povećava (uzimajući u obzir nametnutu selekciju). Ako se, kao rezultat izvršavanja upita, poveća broj redova dobivenih upitom iz glavne tablice, to će dovesti do kršenja jedinstvenosti ključa zapisa tabele prikazanih na listi. U tom slučaju morate onemogućiti korištenje glavne dinamičke tablice liste.
Kada radite sa dinamičkom listom, morate uzeti u obzir prava pristupa detaljima koje lista prikazuje:
● Podaci iz kolona dinamičke liste koji su označeni svojstvom Always Use, ali za koje trenutni korisnik nema pravo pogleda, ne prenose se na stranu klijenta. Pristup podacima takvih stupaca (pomoću svojstva CurrentData i metode RowData())
nije moguće na strani klijenta.
● Ako trenutni korisnik nema pravo pogleda na ključno polje dinamičke liste, dohvaćanje podataka sa te dinamičke liste rezultira greškom kršenja pristupa.
Za dinamičku listu koja prikazuje popisnu listu, ne postoji opcija za interaktivno prilagođavanje liste.
Sastav kolona i postavke dinamičke liste pridruženi su poljima upita koristeći pseudonime polja za odabir. Ako pseudonim nije eksplicitno naveden u upitu za polje za izbor, a polje je sistemsko, tada se ime polja za englesku verziju ugrađenog jezika koristi kao pseudonim.
Navedeni odnos znači da prilikom promjene (ili eksplicitnog navođenja pseudonima za polje za koje je korišten automatski pseudonim)
alias polja upita koje generiše podatke dinamičke liste, postavke atributa dinamičke liste će biti izgubljene, elementi obrasca će „izgubiti“ prikazane detalje, postavke dinamičke liste će postati netačne, itd.
Ako je izvor podataka dinamičke liste tabela (obična ili virtuelna), koja vam omogućava da postavite izbor po periodu, onda ako korisnik postavi period prikaza u takvoj dinamičkoj listi (naredba Postavi interval datuma...),
navedene granice perioda će biti postavljene kao vrijednosti odabira ili parametri virtualne tablice. Ako putem jezičke ekstenzije
upita za sistem sastavljanja podataka, nazivi parametara virtuelne tabele su eksplicitno specificirani - parametri sa navedenim
imena. Tabele za koje je moguće kontrolisati period za prikaz ili obradu podataka:
● registarske tabele (glavne ili virtuelne), za koje je moguće birati po periodu (za obračunski registar - po periodu registracije);
● glavne tabele dokumenata, poslovnih procesa i zadataka;
● glavne tabele dnevnika dokumenata;
● tabele glavne sekvence, granične tabele sekvence.
Parametar upita dinamičke liste može biti niz ili lista vrijednosti. Međutim, ako je parametar lista vrijednosti, tada će se kao vrijednost odabira koristiti samo prva vrijednost na listi. Ako dinamička lista koristi upit s parametrima, početno postavljanje vrijednosti parametara mora se izvršiti u OnCreateOnServer rukovatelju.
Kada prikazujete podatke dinamičke liste, imajte na umu sljedeće:
● Kada programski promijenite svojstva dinamičke liste, komandne ploče povezane sa listom se ne popunjavaju automatski ponovo.
sa ovom dinamičkom listom.
● Ako je više polja grupisano u grupu sa načinom grupisanja u ćeliji i u grupisanim poljima postoji polje koje je prikazano kao potvrdni okvir, tada će ovo polje za potvrdu uvijek biti prikazano prvo u rezultirajućoj ćeliji (lijevo od tekst).
U dinamičkoj listi, kada se određuje tip podataka za polja čiji izrazi uključuju parametre, polja ili literale, rezultujući tip je određen tipovima polja i literala. Ako tip vrijednosti parametra nije uključen u rezultirajući tip podataka, njegova vrijednost će biti skraćena.
Na primjer, u sljedećem primjeru polje će biti tipa Broj.

IZBOR
KAD JE LAŽ
ONDA 5
U suprotnom
&Parametar
KRAJ

Ako parametar parametar postavite na vrijednost drugog tipa, dinamička lista za to polje će dobiti vrijednost 0 (podrazumevana vrijednost za tip broja).
Ako u takvoj situaciji trebate odabrati parametar drugog tipa, preporučuje se korištenje konstrukcije jezika upita EXPRESS. Na primjer,
ako u gornjem primjeru trebate proći niz koji nije duži od 100 znakova u parametar, tada biste trebali zamijeniti jednostavnu naznaku parametra izrazom s eksplicitnim tipom:

IZBOR
KAD JE LAŽ
ONDA 5
U suprotnom
EXPRESS(&Parametar AS string(100))
KRAJ

Ako proizvoljni tekst zahtjeva za dinamičku listu koristi parametre u izrazima polja za odabir, trebali biste eksplicitno naznačiti tip parametara koristeći konstrukciju EXPRESS. Na primjer, umjesto &Nomenklatura AS Nomenklatura koristiti
EXPRESS(&Nomenklatura AS imenik.Nomenklatura) AS nomenklatura. U suprotnom pretraživanje kroz traku za pretraživanje može funkcionirati
netačne ili proizvode greške.

3. Metode za dohvaćanje i keširanje podataka sa dinamičkom listom

Prilikom dobivanja podataka za prikaz, dinamička lista koristi jednu od tri metode:
1. Čitanje iz baze podataka se vrši u komadima sa brojem elemenata podataka nešto većim od broja redova koji se istovremeno prikazuju na listi (ali ne manjim od 20). Podaci se ne keširaju na serveru.
2. Čitanje iz baze podataka se vrši na stranicama od 1.000 jedinica podataka. Podaci se keširaju na serveru. Hijerarhijski podaci su keširani: ne više od 2 stranice elemenata se keširaju za svakog roditelja. Ne više od 20 stranica stavki se kešira po dinamičkoj listi. Keširanje će biti omogućeno dinamičkom listom za sljedeće tabele:
● Kriterijumi za odabir;
● Sve tabele računovodstvenog registra, osim glavne tabele i tabele MovementsSubconto;
● Sve tabele registara akumulacije, osim glavne tabele;
● Sve tabele registra informacija, osim glavne tabele;
● Sve tabele obračunskog registra, osim glavne tabele;
● Virtuelna tabela zadataka po izvođaču;
● Tabele eksternih izvora bez ključeva;
● Kocke iz vanjskih izvora.

3. Čitanje iz baze podataka vrši se na stranicama od 1.000 elemenata. Prvi dio je jednak 1 stranici. Svaki sljedeći dio se povećava za 1 stranicu (kada se dostigne kraj prethodnog uzorka). Što se „tačka gledišta“ približava kraju prikazanih podataka, veći uzorak se čita iz baze podataka, na kraju postaje jednak svim prikazanim podacima. Podaci se keširaju na serveru. Maksimalan broj unosa u keš i dinamičku listu je 1.000.000.
Ovisno o tome šta je odabrano glavnom tablicom dinamičke liste i koju vrijednost ima svojstvo dinamičkog čitanja, koristi se jedan ili drugi način čitanja podataka:

● Jedna od sljedećih tabela je određena kao vrijednost svojstva glavne tabele: plan razmjene, imenik, lista dokumenata, dnevnik dokumenata, tipovi plana karakteristika, kontni plan, vrste obračuna, poslovni proces, zadatak, tabela tačke poslovnog procesa:



● Jedna od sljedećih tabela je specificirana kao vrijednost svojstva Main table: glavna tabela registra informacija, registar akumulacije, računovodstveni registar, registar obračuna, virtuelna tabela računovodstvenog registra MovementsSubconto:

● Svojstvo dinamičkog čitanja:
● Instalirano: koristi se metod 1 (opis metoda je dat gore).
● Resetovanje: Koristi se 2. metod (opis metoda je dat gore).

● Svojstvo Glavna tabela sadrži tabelu kriterijuma izbora ili tabelu zadataka po izvršiocu (Zadaci po izvođaču):
● Ključ za identifikaciju reda tabele: Veza.

● Svojstvo Main table specificira virtuelnu tabelu registra informacija SliceFirst ili SliceLast:
● Ključ za identifikaciju reda tabele: RecordKey.
● Svojstvo dinamičkog čitanja nije primenljivo.
● Koristi se metod 2 (opis metoda je dat gore).

● Svojstvo Main table je postavljeno na jednu od tabela virtuelnih registara, osim onih gore navedenih:

● Svojstvo dinamičkog čitanja nije primenljivo.

● Svojstvo Main table nije specificirano, koristi se proizvoljni upit:
● Ključ za identifikaciju reda tabele: Broj.
● Svojstvo dinamičkog čitanja nije primenljivo.
● Koristi se metod 3 (opis metoda je dat gore).

Za prikaz, podaci se prenose klijentu u porcijama, čija je veličina slična veličini porcije u 1. načinu čitanja podataka (opisanom na početku ovog odjeljka).
Kada kreirate obrazac koji sadrži dinamičku listu, 45 stavki podataka za svaku vidljivu dinamičku listu se inicijalno prosljeđuju klijentu (ako lista ima više od 45 stavki). Ako dinamička lista prikazuje više od 45 redova, dodatni poziv servera će se obaviti kada se obrazac otvori da bi se dohvatile stavke podataka koje nedostaju.

4. Postavke dinamičke liste

Postavke liste svojstava - klikom na hipervezu Otvori otvara se obrazac za podešavanje prikaza dinamičke liste. Postavljanje liste se vrši na isti način kao i slične operacije u sistemu sastavljanja podataka.


Rice. 2. Uslovno oblikovanje dinamičke liste

Prilikom postavljanja dinamičke liste u konfiguraciji, programer aplikacije ima priliku učiniti sljedeće:
● postavite polja po kojima želite sortirati;
● opisati izbor podataka na listi;
● odredite postavke uvjetnog izgleda;
● postavite polja po kojima želite da grupišete podatke.
Ima smisla podesiti sortiranje na programera ako niste zadovoljni zadanim sortiranjem koje je instalirao sistem.

SAVJET. Treba imati na umu da loš izbor polja za sortiranje (kao i odabir i grupisanje podataka) negativno utiče na efikasnost dinamičkog uzorkovanja.
Sa stanovišta programera aplikacije, postavke dinamičke liste se sastoje od nekoliko delova koji su međusobno povezani. Glavno svojstvo preko kojeg možete upravljati postavkama dinamičke liste je LinkerSettings. Ovaj objekt sadrži tri skupa postavki koje, kada se sistem pokrene, određuju konačne postavke primijenjene na dinamičku listu:
● Podešavanja – podešavanja kreirana u režimu konfiguratora. Svojstvo Order dinamičke liste omogućava brz pristup svojstvu Settings.Order u kreatoru postavki dinamičke liste, tako da su sljedeće konstrukcije ekvivalentne:
List.Order i List.SettingsLinker.Settings.Order;
● Korisničke postavke – ovo su postavke koje korisnik mijenja u načinu rada 1C:Enterprise;
● Fiksne postavke – ove postavke se postavljaju na ugrađenom jeziku. Ovo svojstvo također sadrži vrijednosti odabira koje se prenose u obrazac pomoću njegovih parametara. Svojstva dinamičke liste Selection, Options, Conditional Appearance omogućavaju brz pristup fiksnim postavkama graditelja postavki dinamičke liste. Drugim riječima, ovi pozivi su ekvivalentni:
List.Settings Composer.FixedSettings.Selection i List.Selection.
Prilikom kreiranja konačnih postavki za dinamičku listu, različite opcije postavki se kombiniraju na sljedeći način:
● Ako je bilo koja vrsta postavki u potpunosti označena kao prilagođena, onda rezultirajuće postavke uključuju prilagođene postavke
(List.ComposerSettings.UserSettings). Štaviše, ako su neki elementi postavki označeni kao nedostupni, tada će te postavke biti smještene u rezultirajuće postavke iz List.Settings Composer svojstva. Postavke.
● Ako je bilo koja vrsta podešavanja označena kao prilagođena ne u potpunosti, već element po element, tada:
● Stavke označene kao prilagođene biće uključene u rezultirajuće postavke iz svojstva List.SettingsComposer.CustomSettings.
● Stavke označene kao nedostupne biće uključene u rezultujuća podešavanja iz svojstva List.SettingsComposer.Settings.
● Fiksne postavke (List.SettingsComposer.FixedSettings) se dodaju rezultujućim postavkama „kao što jesu“. Istovremeno, neprihvatljivo je da fiksne i korisničke postavke sadrže postavke istog imena, na primjer, odabir sa istom lijevom vrijednošću u uvjetu.

Ako postavke dinamičke liste sadrže postavke koje su onemogućene korištenjem funkcionalnih opcija, ove postavke će biti uklonjene sa liste dostupnih postavki kada se podaci dinamičke liste dohvate.
Kontrola koje postavke će biti dostupne korisniku, a koje ne vrši se u prozoru postavki dinamičke liste.


Rice. 3. Kontrolirajte uključivanje u korisničkim postavkama

Polje za potvrdu na dnu prozora (vidi sliku 3) je odgovorno za postavljanje cjelokupne vrste postavki u postavke (normalne ili brze). Ova funkcija je dostupna za odabir, naručivanje, grupisanje i uslovljavanje. Ako su postavke specificirane u načinu za uređivanje Quick Select, tada u svojstvu Grupa korisničkih postavki tabele obrasca koja prikazuje dinamičku listu, morate navesti praznu grupu obrasca u kojoj se nalaze elementi povezani sa brzim korisničkim postavkama dinamička lista će biti locirana. Ako grupa nije navedena, brza korisnička podešavanja neće biti prikazana na obrascu. Također je moguće eksplicitno pozvati kreiranje prilagođenih postavki korištenjem ugrađenog jezika korištenjem CreateCustomSettingsFormItems() metode ekstenzije dinamičke liste.
Također je moguće odabrati da li ćete postaviti određene stavke postavki u korisnička podešavanja. Ova funkcija je dostupna za odabir i uslovne elemente dizajna (vidi sliku 3).

Ako trebate bilo kakve posebne postavke da se učitaju prilikom otvaranja dinamičke liste, to se može učiniti na dva načina:
● Korišćenje parametra obrasca dinamičke liste UserSettings. Podaci sadržani u ovom parametru bit će smješteni u korisničke postavke dinamičke liste.
● Korišćenje obrasca dinamičke liste parameterUserSettingsKey. Ako navedete ovaj parametar prilikom otvaranja obrasca, tada će se korisnička podešavanja koja se nalaze u skladištu postavki sa navedenim ključem učitati u dinamičku listu, što je glavni atribut obrasca.

5. Tražite u dinamičkoj listi

Dinamička lista koja se nalazi na obrascu pruža mogućnost interaktivnog pretraživanja prikazanih podataka. Pretraživanje se može izvršiti pomoću sljedećih alata: traka za pretraživanje, dijalog pretraživanja, traženje trenutne vrijednosti, korištenje historije pretraživanja i postavljanje perioda (za dinamičke liste koje prikazuju dokumente). Rezultat pretrage je ograničen skup zapisa
dinamička lista (dostupnih datom korisniku) koja odgovara kriterijima pretraživanja.
Za kontrolu mogućnosti pretraživanja dinamičke liste, postoje tri svojstva tablice na upravljanom obrascu koji prikazuje dinamičku listu:
● Položaj stringa za pretragu – određuje poziciju stringa za pretragu. Može imati sljedeće vrijednosti: Auto, Command Bar, None, Top, Bottom.


Rice. 4. Pretražite niz u dinamičkoj listi

Ako je vrijednost ovog svojstva postavljena na Komandna ploča, tada će niz za pretraživanje biti prikazan u komandnoj tabli obrasca (ako je dinamička lista glavni atribut obrasca) ili u komandnoj tabli povezanoj s dinamičkom listom. Traka za pretragu koja se nalazi u komandnoj traci uvek je pritisnuta na desnu ivicu komandne trake (zajedno sa dugmadima koja se nalaze desno od trake za pretragu).
Ako je svojstvo postavljeno na Ne, tada string za pretragu neće biti na obrascu, a kada počnete da kucate string za pretragu, otvoriće se dijalog.
Ako je svojstvo postavljeno na Top, traka za pretragu će se nalaziti između trake komandi liste i tabele koja prikazuje dinamičku listu. Ako je svojstvo postavljeno na Bottom, string za pretragu će biti postavljen odmah iza tabele koja prikazuje dinamičku listu.


● Ako je svojstvo Režim kompatibilnosti postavljeno na Ne koristiti ili starije od verzije 8.3.4 – vrijednost je Komandna tabla.
Idite na liniju za pretragu na sljedeći način:
● Pritiskom na kombinaciju tastera Ctrl+F;
● Miš;
● Kada počnete da kucate u dinamičku listu (uzimajući u obzir vrednost svojstva SearchOnTyping dinamičke liste).
● Položaj stanja prikaza – opisuje gdje će se prikazati stanje prikaza: koja polja su pretraživana i koje vrijednosti
pretraživali na svakom polju. Može imati sljedeće vrijednosti: Auto, None, Top, Bottom


Rice. 5. Traži stanje u dinamičkoj listi

Ako je svojstvo postavljeno na Ne, tada stanje prikaza neće biti prisutno na obrascu. Kao rezultat, biće moguće utvrditi da li je pretraga završena ili ne samo po dostupnosti dugmeta Otkaži pretragu.
Ako je svojstvo postavljeno na Top, stanje prikaza će se nalaziti između komandne trake liste i tabele koja prikazuje dinamičku listu. Ako je svojstvo postavljeno na Bottom, stanje prikaza će biti postavljeno odmah nakon tabele koja prikazuje dinamičku listu.
Ako je obrazac kreiran u 1C:Enterprise verziji 8.3.4 i ranije, svojstvo je postavljeno na Ne. Ako je obrazac kreiran u 1C:Enterprise verziji 8.3.5 i starijoj, svojstvo je postavljeno na Auto. Stvarna vrijednost imovine u ovom slučaju će se utvrditi na sljedeći način:
● Ako je svojstvo Način kompatibilnosti postavljeno na verziju 8.3.4 (i niže) – vrijednost No;
● Ako je svojstvo Način kompatibilnosti postavljeno na Ne koristiti ili starije od Verzije 8.3.4 – vrijednost Top;
● Kontrolna pozicija pretrage – Određuje gde će se pojaviti dugme za kontrolu pretrage. Dugme otvara meni koji sadrži sljedeće informacije: komande Pronađi po trenutnoj vrijednosti, Napredno pretraživanje, Otkaži pretragu, Postavi period (za liste dokumenata i dnevnika) i historiju upita pretraživanja (zadnjih 5 upita). Svojstvo može imati sljedeće vrijednosti: Auto, None, Command panel.


Rice. 6. Upravljanje pretraživanjem u dinamičkoj listi

Ako je svojstvo postavljeno na Ne, tada dugme za kontrolu pretraživanja neće biti na obrascu (ali komande će biti dostupne pomoću menija Više). Vrijednost svojstva Komandna traka postavlja dugme na komandnoj traci povezanom sa tabelom koja prikazuje dinamičku listu.
Ako je obrazac kreiran u 1C:Enterprise verziji 8.3.4 i ranije, svojstvo je postavljeno na Ne. Ako je obrazac kreiran u 1C:Enterprise verziji 8.3.5 i starijoj, svojstvo je postavljeno na Auto. Stvarna vrijednost imovine u ovom slučaju će se utvrditi na sljedeći način:
● Ako je svojstvo Način kompatibilnosti postavljeno na verziju 8.3.4 (i niže) – vrijednost No;
● Ako je svojstvo Režim kompatibilnosti postavljeno na Ne koristiti ili starije od verzije 8.3.4 – vrijednost je Komandna tabla;
Ako na obrascu postoji nekoliko komandnih panela, izvor naredbi za koje je jedna tabela upravljanog obrasca (prikazuje podatke dinamičke liste), tada će se linija za pretragu i dugme za kontrolu pretrage nalaziti u samo jednom komandnom panelu:
● Ili u komandnoj traci same dinamičke liste (ako ima omogućeno automatsko dovršavanje)
● Ili u bilo kojoj od preostalih komandnih ploča.

Pogledajmo karakteristike korištenja pretraživanja u dinamičkoj listi:
● Da biste učinili pretragu zgodnom za korištenje (uključujući u smislu performansi), morate omogućiti pretraživanje cijelog teksta za sve konfiguracijske objekte koji se mogu koristiti kao glavna tabela dinamičke liste. Također, pretraživanje punog teksta treba uključiti sve detalje konfiguracijskih objekata koji se mogu prikazati u dinamičkoj listi i za koje može biti potrebna pretraga.
Ako je objekt isključen iz pretraživanja punog teksta, tada će dotični mehanizam pretraživanja raditi, ali će performanse takvog pretraživanja biti izuzetno niske. Ne preporučuje se korištenje pretraživanja na objektima koji nisu indeksirani pretraživanjem cijelog teksta.
● Aplikacijsko rješenje mora imati rutinski zadatak koji redovno ažurira indeks pretraživanja punog teksta.

● Pretraga se ne vrši na svim kolonama dinamičke liste (i konfiguracionom objektu), već samo na onim kolonama koje su prikazane u tabeli.
● Pretraga u dinamičkoj listi po poljima referentnih tipova sa proizvoljnim prikazom se vrši po poljima koja se koriste za
formiranje reprezentacije (vidi ovdje). Polja uključena u prikaz se dobijaju uzimajući u obzir rukovalac ViewFieldGettingProcessing() odgovarajućeg objekta.
● Za dinamičke liste sa određenom glavnom tabelom, u glavnoj tabeli se koristi pretraga celog teksta. Sve neindeksirane veze iz glavne tabele biće dodane u rezultate pretrage celog teksta. Rezultat pune tekstualne pretrage za glavnu tabelu se koristi kao izbor na osnovu ključnih polja. Pretraživanje punog teksta se također izvodi na poljima prikazanim na listi iz drugih tabela (ako polje i konfiguracijski objekt koriste pretraživanje punog teksta). Podaci mogu biti bez omogućenog pretraživanja cijelog teksta
pronađeno, ali će sama pretraga biti veoma spora.
Ako dođe do greške prilikom pokušaja pretraživanja cijelog teksta, pretraživanje će se izvršiti bez primjene pretraživanja cijelog teksta.
Na primjer, to se može dogoditi kada se traži jedno slovo i veliki broj redova u bazi podataka koji počinju ovim slovom.
● Ako se izbor sa tipom poređenja Jednako koristi za polje u glavnoj tabeli dinamičke liste, tada će se prilikom pretraživanja celog teksta upitu za pretragu za ovu tabelu dodati vrednost izbora.
● Niz za pretragu je podeljen na reči. Ova particija se izvodi prema sljedećim pravilima:
● Linija je prekinuta korišćenjem razmaka i tabulatora kao graničnika.
● Zatim se svaki rezultujući fragment obrađuje:
● Ako je fragment prikaz datuma (sa ili bez vremena) zasnovan na trenutnoj lokaciji sesije, tada je riječ fragment.
● U suprotnom, fragment se dalje dijeli koristeći znakove “,.-/\” kao graničnike. U ovom slučaju, svaki rezultujući fragment niza se uzima kao riječ.

● Za svaku reč formira se sopstveni skup uslova koji se kombinuju „po ILI“. Ovaj skup uvjeta se generira ako pretraživanje cijelog teksta za datu riječ u tablici iz koje je ovo polje dobijeno vrati barem jedan objekt, ili ako pretraga cijelog teksta nije korištena za ovo polje. Uslovi se formiraju na sledeći način:
● Za polje tipa String, uslov je FieldName LIKE %Word%.
● Za polje tipa Broj, uslov ima oblik Ime polja=Vrijednost, gdje je Vrijednost riječ konvertovana u tip Broj. Ako se cast ne može izvršiti, pretraga polja se neće izvršiti.
● Riječ se traži kao podniz u zadanom Bulovom prikazu definiranom za trenutnu sesiju. Ako je tražena riječ pronađena u prikazu, tada se traži vrijednost koja odgovara pogledu u kojem je riječ pronađena. U ovom slučaju, pretraga ne koristi poglede koji su specificirani pomoću svojstva elementa Format forme.
● Za polje tipa Datum, uslov izgleda kao FieldName>=StartofDay(Word) ANDFieldName<=КонецДня(Слово). Если Слово подобно дате, в которой год
označena sa jednom ili dvije cifre, godina će biti svedena na tekući vijek i ova vrijednost će biti dodata uslovu pretraživanja.
● Za referentna polja, vrši se pretraga na poljima koja se koriste za formiranje referentnog prikaza. U svakom od ovih polja pretražite
izvodi se prema gore opisanim pravilima. Pretraga ne koristi polja koja se koriste za formiranje prilagođenog prikaza podataka.
Skup uslova za svaku riječ je kombinovan “I”.
● Za vrijednosti sa vodećim nulama, možete pretraživati ​​ili niz sa vodećim nulama ili niz specificiran bez vodećih nula.
● Ako dinamička lista prikazuje listu dokumenata ili istoriju dokumenta, interval prikaza liste koji navedete se takođe prikazuje u oblasti obrasca rezervisanom za prikaz statusa prikaza za željenu dinamičku listu.
● Pretraživanje po trenutnoj vrijednosti komanda nije dostupna ako je glavna tabela dinamičke liste kriterij odabira.
● Pronađeni fragmenti niza su istaknuti kada su prikazani u tabeli.
● Za jednu kolonu je podržan samo jedan niz za pretraživanje. Prilikom dodavanja novog upita za pretraživanje za kolonu koja se već traži, izraz za pretraživanje će biti zamijenjen umjesto da se dva upita za pretraživanje dodaju zajedno.
● Ako obrazac nema dodatak elementa obrasca za prikaz stringa za pretragu povezan sa tabelom (izvorno svojstvo dodavanja elementa obrasca) koja prikazuje dinamičku listu, tada pritiskom na kombinaciju tastera Ctrl+F otvara se dijalog za pretragu.


Rice. 7. Dijalog pretraživanja

Ako obrazac sadrži dodatak elementa obrasca prikaza stringa pretraživanja povezanog s tablicom (izvorno svojstvo dodatka elementa obrasca) koja prikazuje dinamičku listu, tada da biste otvorili dijalog za pretragu, trebate koristiti naredbu Napredno pretraživanje.
● Kada koristite dijalog za pretragu, imajte na umu sljedeće:
● Otvaranje dijaloga za pretragu pomoću prečice na tastaturi uzrokuje da se vrednost trenutne ćelije pojavi u redu Šta pretraživati, a vrednost prekidača Kako pretraživati ​​je postavljena na Po tačnom podudaranju.

● Otvaranje dijaloga za pretragu direktnim započinjanjem upisivanja stringa za pretragu u dinamičku listu dovodi do činjenice da je vrijednost prekidača Kako pretraživati ​​postavljena na vrijednost By dio niza, a ukucani tekst završava u What u polje za pretragu.

6. Dobivanje podataka prikazanih dinamičkom listom

Kada koristite dinamičke liste, možda ćete morati izvršiti različite radnje na podacima koje trenutno prikazuje dinamička lista, uzimajući u obzir primijenjene odabire i pretraživanja. Takve radnje uključuju: obradu prikazanih informacija, na primjer, ponovno slanje odabranih dokumenata ili postavljanje nekih detalja za odabrane objekte, generiranje liste dostupnih objekata (sa dizajnom, itd.), na primjer, za štampanje ili spremanje u tabelarni dokument.
Da biste dobili podatke koji se prikazuju dinamičkom listom, trebali biste koristiti GetExecutableDataCompositionSchema() i
GetExecutableDataCompositionSettings().
Primjer prijema podataka:

Shema = Elements.List.GetExecutableDataCompositionSchema();
Postavke = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(Scheme, Settings);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = Novi OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

Dobijanje podataka u kolekciju vrijednosti (tabelu ili listu vrijednosti) vrši se na isti način.
Dobijanje podataka dinamičke liste na ovaj način ima niz karakteristika koje se moraju uzeti u obzir pri razvoju aplikativnih rješenja:
● Sljedeći dizajn tablice nije podržan:
● Naizmjenične boje linija;
● Slika zaglavlja;
● Slika podruma;
● Boja pozadine podnožja;
● Boja teksta u podnožju;
● Font podnožja;
● Horizontalna pozicija u podrumu;
● Režim lozinke.
● Uslovni izgled specificiran za upravljani obrazac nije podržan;
● Kada poredite hijerarhijsku tabelu u rastućem redosledu prema polju tipa Link, zapisi koji sadrže praznu vezu uvek se postavljaju prvi.

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:



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) ; Kraj procedure