1c obide tabelo dinamičnega seznama. Pridobivanje podatkov dinamičnega seznama

V procesu dokončanja konfiguracij se vsak programer 1C sreča z dinamičnimi seznami.
Dinamični seznam je vmesniški objekt, ki se uporablja za prikaz različnih seznamov objektov baze podatkov ali neobjektnih podatkov – vnosov v register.
Na primer, dinamični seznam se uporablja za prikaz seznama elementov:

Da bi prikazali zmožnosti dinamičnega seznama, ustvarimo zunanja obdelava, dodajte glavni obrazec. V obrazec dodamo nov atribut z vrsto "Dinamični seznam". Pojdimo v njegove lastnosti in poglejmo, kaj je tam.
Zanima nas nepremičnina »Zahteva po meri«. Če ga omogočimo, se nam bodo pokazale vse zmožnosti dinamičnega seznama. Zahtevo bomo lahko napisali s skoraj vsemi zmožnostmi poizvedovalnega jezika sistema 1C: Enterprise. Potrdite polje in kliknite povezavo »Odpri«:

Naš seznam bo privzeto prikazal seznam artiklov s skupnim stanjem za vsa skladišča. Če želite izvesti tak seznam, dodajte naslednjo poizvedbo:


Kot glavno tabelo bomo izbrali »Imenik.Nomenklatura«, to nam bo omogočilo delo z dinamičnim seznamom, kot s seznamom nomenklature - dodajanje, spreminjanje, označevanje elementov imenika za brisanje. Tudi postavitev glavne mize naredi cenovno ugodna priložnost dinamično branje podatkov - to pomeni, da bo vzorčenje opravljeno po delih, kot je potrebno.
Nato moramo ustvariti elemente obrazca za naš seznam:

Če poskusimo zagnati našo obdelavo v tem obrazcu, bomo prejeli napako:


Če ga želite odpraviti, morate nastaviti vrednost za parameter »Obdobje«. Če želite to narediti, lahko uporabite metodo »SetParameterValue« zbirke »Parametri« dinamičnega seznama. Metoda upošteva dva parametra:
. "Parameter" - vrsta: niz; Parameter sestave podatkov. Ime parametra ali parametra sestave podatkov, katerega vrednost želite nastaviti;
. “Vrednost” - Vrsta: Poljubno. Vrednost, ki jo želite nastaviti.
Lahko se prikliče v upravljalniku »OnCreateOnServer« obrazca:

Imate vprašanje ali potrebujete pomoč svetovalca?


Uporabniku bomo omogočili spremembo obdobja prejemanja stanj. Če želite to narediti, dodajte atribut in z njim povezan element obrazca »Datum«:


V upravljalniku »OnChange« elementa obrazca »Datum« bomo poklicali metodo »SetParameterValue« in kot vrednost posredovali vrednost povezanega atributa. Na podoben način spremenimo postopek obrazca »Pri ustvarjanju na strežniku«. Ker je metoda na voljo na odjemalcu, ni treba klicati strežnika:


Zdaj, ko se datum spremeni, se stanja samodejno posodobijo:




Predpostavimo, da uporabniki želijo videti trenutna stanja ali načrtovane prejemke. Razmislimo o eni od možnosti izvedbe. Dodajmo atribut obrazca logičnega tipa in povezano stikalo:


Pri spremembi vrednosti stikala bomo spremenili besedilo zahteve. Za to bomo uporabili obravnavo dogodka »Ob spremembi« za element obrazca »Prikaži količino ob prevzemu«. Lastnost »QueryText« dinamičnega seznama moramo spremeniti glede na vrednost atributa. Ker ta lastnost ni na voljo na odjemalcu, je treba poklicati strežniško proceduro:


Rezultat opravljenih sprememb:



Platforma 1C:Enterprise 8.2 lahko dela s številnimi zapisi v tabeli baze podatkov na dinamičen način, torej bere podatke po delih. Prej smo v člankih preučili mehanizem dinamičnih seznamov in metode za optimizacijo dela z njimi.

Danes bomo rešili nestandardni problem za dinamične sezname. Skupaj bomo morali izračunati z atributom dokumenta »Znesek« in ga prikazati v nogi seznama. Podobno izračunajte povprečno vrednost za polje »Ocena« in jo prav tako prikažite v nogi dinamičnega seznama. Pri izračunu skupnih polj je treba upoštevati izbor, ki ga uporabnik določi v nastavitvah seznama dokumentov.

Vsa težava je v tem, da dinamični seznam ne prejme vseh vnosov naenkrat, ampak jih prejme po delih. Zato ne moremo takoj pridobiti povzetka vseh dokumentov, ki ustrezajo trenutnemu izboru. Kako izračunati skupno?

Izvedba

In tako, pojdimo k reševanju problema. Začnimo s spreminjanjem obrazca, nato pa bomo opisali algoritem za pridobivanje končnih vrednosti.

Oblika in vmesnik

Najprej pripravimo obrazec dokumenta za prikaz nastalih polj. Da bi to naredili, bomo dodali dve podrobnosti niza v obliki »Ocena« in »Količina«.

Skupne vrednosti za dokumente bodo zabeležene v teh podrobnostih.

Če želite prikazati vrednosti podrobnosti v nogi dinamičnega seznama, morate omogočiti ustrezno možnost za povezani element obrazca seznama (glejte naslednji posnetek zaslona).

Zdaj se morate odločiti, ob katerem dogodku bodo rezultati v nogi seznama posodobljeni. Za lažji razvoj dodajmo na ukazno ploščo ukaz »Posodobi« in ustrezen element obrazca. Ko se ta ukaz izvede, se vsote posodobijo.

V testno konfiguracijo, ki jo lahko prenesete s povezave na koncu članka, sem dodal tudi dogodek sumary update ob snemanju dokumenta. V tem primeru se uporablja mehanizem obveščanja obrazca. O tem se ne bomo podrobneje ukvarjali.

Algoritem

Najbolj problematičen del ostaja - pridobiti morate skupne vrednosti. Nadaljujmo takole: v bazo podatkov bomo oblikovali zahtevo za pridobitev vrednosti končnih polj v skladu z izborom, nastavljenim na dinamičnem seznamu. Upoštevati je treba, da ima lahko izbor zapleten pogoj iz skupin.

Opomba: nastavitve za dinamične sezname (glejte zgornji posnetek zaslona) temeljijo na mehanizmih sistema za sestavljanje podatkov (DCS). V skladu s tem lahko z njimi delate na podoben način (programsko dodajanje, spreminjanje, branje itd.).

Faze oblikovanja zahteve za pridobitev rezultatov so naslednje:

1. Prejmemo začetno zahtevo za dinamični seznam.

Kot lahko vidimo, zahteva izbere vse podrobnosti dokumenta. Da bi dodal malo več zapletenosti, sem dodal lastno polje »Raven ocene«, ki ga je ustvaril konstrukt »IZBERI«.

2. Oblikujemo besedilo pogojev povpraševanja (rubrika “KJE”) in ga nadomestimo v izvirno povpraševanje.

Prejetemu izvornemu besedilu zahteve moramo dodati pogoje v skladu s konfiguriranim izborom dinamičnega seznama.

Postopek glede na vrsto opravljenega izbirnega elementa (skupinski ali izbirni element) generira ustrezno besedilo pogoja. Vsi pogoji v skupini so obdani z oklepajem, tisti, ki so vključeni v skupino, pa so prav tako obdani z oklepajem. Pogoji med izrazi so odvisni od nadrejene skupine (pogoj »IN« je postavljen med najvišje elemente v hierarhiji).

Če ima element nastavljeno oznako uporabe (lastnost "Uporaba"), je element obdelan. Ustvarjeno besedilo je odvisno tudi od pogoja primerjave (Enako, ni enako, na seznamu itd.). Odvisnost generiranega besedila pogoja od vrste primerjave je razvidna iz naslednje funkcije.

Druga zanimiva funkcija, po mojem mnenju, je "GetFieldTextByView". Potreben je za zamenjavo polj, ki so oblikovana z izrazi poizvedbenega jezika, v pogoje poizvedbe. Zgoraj sem prvotni zahtevi dodal polje »Raven ocene«. Če ga uporabnik uporabi pri izbiri, mora biti celoten izraz zamenjan v pogoj poizvedbe. Ta funkcija pridobi besedilo polja iz zahteve na podlagi njegove predstavitve. Za tako zapletena polja vrne celotno besedilo izraza.

Za več podrobnosti o algoritmu si oglejte testno konfiguracijo, priloženo članku. Spodaj je posnetek zaslona izbirnih nastavitev in pogojev zahteve, ustvarjenih zanje.

Ustvarjeno besedilo pogoja je dodano izvirni zahtevi za dinamični seznam. Rezultat poizvedbe se postavi v začasno tabelo.

3. Prvo poizvedbo postavimo v začasno tabelo in izvedemo grupiranje po povzetkih s potrebnimi agregatnimi funkcijami.

Naj vas spomnim, da moramo pridobiti povprečno vrednost za polje »Ocena« in skupni znesek za polje »Znesek«. Povpraševanje smo že izdelali glede na izbore, preostane le še izračun skupnih vrednosti. To se naredi z naslednjo zahtevo:

Po izvedbi zahteve dobljeni rezultat obdelamo, ga vrnemo stranki in zapišemo v podrobnosti obrazca, ki smo ga predhodno izdelali. Končno smo dobili rezultate, prikazane v nogi dinamičnega seznama (glejte prvi posnetek zaslona v članku).

Optimalnost rešitve

Na splošno lahko ta pristop negativno vpliva na uspešnost. Na primer, če bo program izračunal skupno brez uveljavljen izbor v dinamičnem seznamu je lahko število izbranih zapisov ogromno (na primer v več letih). Posledično lahko vsaka posodobitev rezultatov traja več deset (!!!) sekund. Zato je rezultate smiselno izračunati le, če je bila vzpostavljena selekcija. Ti pogoji nameščen v testni konfiguraciji.

Poleg tega lahko izračunamo samo vsote in zahtevamo na strani strežnika. Zato morate k strežniku pristopiti resno, saj je postopek posodabljanja vsot mogoče izvesti zelo pogosto. Predstavljajte si blagajniški dnevnik trgovske organizacije, kjer lahko vnesete do 5 računov na minuto in do 300 računov na uro. Vsakič, ko je dokument napisan, se vsote posodobijo. Zato bi bilo smiselno zmanjšati preneseni promet z uporabo postopkov zunaj konteksta.

Naslednji posnetek zaslona prikazuje programsko kodo klic strežniške funkcije zunaj konteksta, ki vrne vsote.

Prvi parameter posreduje izbiro dinamičnega seznama, drugi je struktura tipa “SelectionFieldNameSelectionFieldValueType”. Upoštevajte, da je prvi parameter v funkciji pridobljen kot lastna vrednost. Ne morem natančno povedati, zakaj, toda če izbiro posredujete kot povezavo, platforma prikaže napako, da izbire ni mogoče spremeniti. Napako smo zaobšli samo na ta način.->

Opomba: uporaba postopkov zunaj konteksta vam omogoča, da večkrat zmanjšate velikost poslanega prometa, saj se podatki obrazca ne prenašajo na strežnik, za razliko od kontekstno občutljivih strežniških postopkov (direktiva "&OnServer").

Zaključek

Na koncu bom rekel, da je ta pristop k izračunavanju vsot v dinamičnem seznamu z vidika razvojne metodologije napačen. Pravilno bi bilo dobiti skupno po registrih. Na primer, v čekovnem dnevniku lahko ponovno dobimo znesek denarja v tekoči blagajni bodisi iz dokumentov bodisi iz ustreznega akumulacijskega registra.

Poleg tega vam bo uporaba akumulacijskih registrov omogočila izračun seštevkov brez upoštevanja selekcije, saj sistem optimalno deluje z že izračunanimi seštevki za prejšnje mesece.

Kljub temu se metoda, opisana v članku, uporablja pri reševanju težav.

Datoteke za prenos:

Končno so se uresničile sanje vsakega sedemletnika. Kako pogosto so uporabniki programa 7.7 zahtevali normalen izbor artiklov? Da lahko vidite stanja, cene in nastavite filtre. Morali smo se domisliti raznih trikov, tudi pisanja zunanjih komponent. V 1C 8.2 so se pojavili dinamični seznami. Predlagam, da razmislimo, kaj je in kaj nam lahko dajo v 1C 8.3.

Vzemimo nekaj za osnovo testna konfiguracija 1C: "Računovodstvo podjetja 3.0". Zdaj ne bomo izbirali, samo dodali bomo še en obrazec za izbor v imenik »Nomenklatura« in ga začasno postavili za glavnega:

Ko je ustvarjen, bo sistem obrazcu privzeto dodal polje tabele tipa "Dinamični seznam".

Pojdimo v njegove lastnosti in poglejmo, kaj je tam.

Najprej nas zanima potrditveno polje »Zahteva po meri«. To nam bo razkrilo vse prednosti dinamičnega seznama. Imeli bomo možnost napisati lastno zahtevo, s parametri. Potrdite polje in kliknite povezavo »Odpri«:

Odpre se okno z že pripravljena koda na . Zaenkrat so tam preprosto navedena vsa polja imenika »Nomenklatura«.

Pridobite 267 video lekcij o 1C brezplačno:

Kot lahko vidite, obstaja gumb za klicanje “ ” in potrditveno polje, ki omogoča dinamično spreminjanje vsebine seznama. Se pravi, ko drug uporabnik nekaj spremeni v imeniku, se bo to spremenilo tudi na našem seznamu. Poleg tega obstaja zavihek »Nastavitve«, vendar se bomo tega dotaknili kasneje.

Poizvedba po meri na dinamičnem seznamu

Najprej ustvarimo zahtevo, ki jo potrebujemo, s stanjem in cenami. Kot to:

Zavihek »Nastavitve«.

In zdaj najboljši del! Pojdite na zavihek »Nastavitve«. In takoj vidimo, da lahko na prvem zavihku naredimo poljubne izbire za katero koli polje v zahtevi:

Programska nastavitev parametrov poizvedbe v dinamičnem seznamu 1C 8.3

Ne pozabite, da imamo v zahtevku dva parametra: »Obdobje« in »Vrsta cene«. Posredovati jih moramo v zahtevo, sicer bo prišlo do napake.

Te parametre zapišimo v parametre obrazca in v modul obrazca dodajmo naslednje vrstice:

&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing) List. Opcije. SetParameterValue("Obdobje" , Parametri. Datum) ; Seznam. Opcije. SetParameterValue("PriceType", Parameters.PriceType) ; Konec postopka

Natisni (Ctrl+P)

Dinamični seznam

1. Splošne informacije

Dinamični seznam je posebna vrsta podatkov, ki omogoča prikaz poljubnih informacij iz tabel baze podatkov na obrazcu. Če želite to narediti, morate določiti tabelo, iz katere želite prikazati podatke, ali opisati nastali izbor v poizvedovalnem jeziku.
Mehanizem temelji na sistemu sestavljanja podatkov in omogoča zmožnosti razvrščanja, izbiranja, iskanja, združevanja in pogojnega oblikovanja prejetih podatkov. V tem primeru je vir podatkov zahteva, ki jo sistem generira samodejno (na podlagi podanih podatkov) ali ročno napiše razvijalec.

riž. 1. Možnosti za ustvarjanje dinamičnega seznama

Pri ustvarjanju atributov obrazca tipa DynamicList razvijalec lahko izbere dva načina za oblikovanje podatkovne poizvedbe:
● Z določitvijo glavne tabele - v tem primeru morate samo določiti tabelo (lastnost glavne tabele), iz katere želite prejeti podatke, in sistem bo samodejno ustvaril poizvedbo za podatke (glejte desni del na sl. 1).
● Ročno generiranje zahteve - za to morate nastaviti lastnost Zahteva po meri (glejte levo stran slike 1). Po tem bo na voljo ročno generiranje zahteve za pridobitev podatkov iz informacijske baze.
Poizvedba lahko pridobi podatke iz več tabel, tako da lahko določite primarno tabelo. To je zato, da lahko dinamični seznam določi, kateri podatki so primarni in kateri sekundarni, ter lahko pravilno izbere in prikaže informacije ter zagotovi standardne ukaze. Če pa v poizvedbi ni mogoče določiti glavne tabele, je ni mogoče določiti, ampak potem
dinamični seznam ne bo zagotavljal ukazov, povezanih z glavno tabelo. Poleg tega bo v tem primeru (brez podajanja glavne tabele) učinkovitost pridobivanja podatkov z dinamičnim seznamom znatno zmanjšana.
Za izboljšanje zmogljivosti je priporočljivo, da so vsa združevanja, ki se uporabljajo v poizvedbi po meri samo za pridobivanje dodatnih podatkov, neobvezna z uporabo razširitve poizvedbenega jezika sistema za sestavo podatkov.
Za dinamični seznam, ki je glavni atribut obrazca, je mogoče nastaviti izbirne vrednosti s parametrom obrazca Izbira. Če želite to narediti, je potrebno, da se ime lastnosti strukture nahaja v parametru Izbira,
sovpada z imenom izbirnega polja dinamičnega seznama. V tem primeru bo vrednost lastnosti strukture nastavljena kot prava vrednost izbirnega elementa. Če se matrika, fiksna matrika ali seznam vrednosti posreduje kot vrednost elementa izbirnega parametra obrazca dinamičnega seznama, se izboru doda pogoj z možnostjo Na seznamu v desni vrednosti od katerih je postavljen seznam vrednosti (v katere se pretvorita matrika in fiksna matrika).
Poljubna poizvedba na dinamičnem seznamu je lahko poizvedba, v kateri se parameter uporablja za ustvarjanje vrednosti polja, na primer:

IZBERI
IZBIRA
WHEN Delivery.Coefficient = 1 THEN &Presentation
DRUGAČE Dostava. Koeficient
KONEC KOT Razmerje
OD

Še več, če se vrsta vrednosti parametra razlikuje od vrste atributa objekta (npr. Rekviziti1 ima vrsto številka, vrednost parametra pa je vrsta Linija), potem morate za pravilen prikaz polja vrednost parametra izrecno pretvoriti v želeni tip:

IZBERI
IZBIRA
WHEN Delivery.Coefficient = 1 THEN EXPRESS(&Representation AS String(100)) ELSE Delivery. Koeficient
KONEC KOT Razmerje
OD
Dokument. Dostava izdelkov KAKO dostaviti

Če je polje, s katerim je nastavljen izbor, onemogočeno s funkcionalnimi možnostmi, potem izbor s takim poljem ni nameščen, tudi če je vrednost izbora posredovana kot parametri obrazca ali povezave parametrov izbora.
Z lastnostjo Dinamično branje podatkov nakažete dinamičnemu seznamu potrebo po branju podatkov v majhnih delih
(za več podrobnosti o načinih pridobivanja podatkov z uporabo dinamičnega seznama in predpomnjenja podatkov glejte spodaj). Ne glede na ta atribut veljajo naslednji pogoji:

● Če je nastavljen način pogleda hierarhičnega seznama, samo podatki trenutne skupine in podatki vseh nadrejeni elementi(brez podrejenih elementov).
● Če je nastavljen način drevesnega pogleda, bodo prebrani samo podatki iz odprtih drevesnih vozlišč.
● Enkratno nalaganje podatkov dinamičnega seznama ni podprto, če je nastavljeno hierarhično brskanje (lastnost Prikaz je nastavljena na Drevo) in je začetni prikaz drevesa nastavljen na Razširi vse ravni. Za pridobitev podatkov bo podanih toliko zahtev strežniku, kolikor je vozlišč na prikazanem seznamu.
Znotraj enega samega pridobivanja podatkov dinamični seznam ponovno uporabi predhodno ustvarjene začasne tabele, če so izpolnjeni naslednji pogoji:
● Paketna poizvedba seznama nima poizvedb po glavni paketni poizvedbi.
● Sestava začasnih tabel in polj v njih je nespremenjena glede na predhodno izvedbo paketne zahteve.

Dinamični seznam pri svojem delu uporablja vrednosti naslednjih lastnosti podrobnosti metapodatkovnega objekta:
● format,
● format za urejanje,
● namig,
● znak za poudarjanje negativnih vrednosti,
● maska,
● znak za večvrstični način,
● znak za napredno urejanje,
● način gesla.
Pri prikazu in urejanju izbora in parametrov sistema za sestavljanje podatkov se uporablja format urejanja ustreznega polja.

2. Omejitve in funkcije

Ko nastavljate izbiro na dinamičnem seznamu, ne pozabite, da izbira ne vpliva na skupine, če je način prikaza za dinamični seznam Hierarhični seznam ali Drevo. S "skupinami" mislimo na element imenika ali načrta značilnih vrst, katerih lastnost ThisGroup je nastavljena na True.
Uporabijo se kvalifikacije, ki jih dinamični seznam samodejno uporabi za standardne podrobnosti Lastnik, Starš, Datum, Obdobje in TaSkupina
standardna sredstva sistemi za sestavljanje podatkov. Izbor, ki ga dinamični seznam samodejno uporabi za ključna polja, je mogoče uporabiti s standardnimi sredstvi sistema za sestavljanje podatkov in z neposrednim dodajanjem pogojev v besedilo zahteve IN na polja glavne tabele. Kot rezultat uporabe izbir z uporabo orodij za postavitev, jih je mogoče uporabiti tako v ugnezdenih poizvedbah kot v parametrih virtualnih tabel.

Pri razvoju dinamičnih seznamov je priporočljivo testirati vse dinamične sezname s poizvedbami po meri. Med postopkom preverjanja se morate prepričati, da če poizvedba na seznamu vsebuje ugnezdene poizvedbe ali navidezne tabele in v njih polja z vzdevki, ki se ujemajo z vzdevki standardnih podrobnosti Owner, Parent, Date, Period, ThisGroup ali ključna polja so na voljo za izbor, potem so ta polja veljavna in ustrezajo standardnim podrobnostim, s katerimi se ujema njihov vzdevek. Če temu ni tako, spremenite zahtevo tako, da se ujemajo oz
vzdevek je bil drugačen.
Če se odločite za ročno ustvarjanje zahteve, so za zahtevo naložene nekatere omejitve:
● Uporaba stavka FIRST v poizvedbi po dinamičnem seznamu ni podprta. Če morate uporabiti izbor, omejen s številom zapisov v dinamičnem seznamu, predelajte zahtevo za generiranje dinamičnega seznama tako, da bo dejanska vsebina zahteve postavljena v podpoizvedbo in omejite število zapisov prejeli v tej podpoizvedbi. Namesto podpoizvedbe lahko uporabite tudi začasno tabelo.
● Izbira, razvrščanje in združevanje niso podprti:

  • Po podrobnostih tabelarnih delov.
  • Ogled polj.
  • Polje DataVersion.
  • Polje PredefinedDataName.
  • Polje vrste tabele kontnega načrta.
  • Polje Vrsta gibanja tabele registra akumulacije.
  • Vrednosti vrste polja značilnosti tabele načrta tipa.
  • Vrsta polja Vrsta;
  • Polje tipa String (neomejena dolžina).
  • Polje tipa BinaryData.

● Razvrščanje in združevanje po poljih Subconto ni podprto<НомерСубконто>in ViewSubconto<НомерСубконто>Tabele PremikiPodkonto knjigovodskega registra.
● Združevanje po poljih, ki vsebujejo izraze v poizvedovalnem jeziku agregatne funkcije.
● Ko je izbrana glavna tabela, ima poizvedba po dinamičnem seznamu naslednje omejitve:

  • Združitve niso podprte.
  • Razdelek ORDER BY ni podprt. Uporabite poizvedbo brez glavne tabele ali nastavite potrebno vrstni red prek nastavitev dinamičnega seznama.

● Če je dinamični seznam prikazan kot hierarhični seznam ali drevo, vnos ne bo prikazan kot dinamični seznam, razen če je prikazan vsaj en nadrejeni element tega vnosa. Z drugimi besedami, za prikaz elementa hierarhičnega seznama mora dinamični seznam prikazati tudi vse starše tega elementa do vrha seznama. V tem primeru z vrhom seznama mislimo bodisi
korenski element hierarhičnega objekta, ki ga prikazuje dinamični seznam, ali element, nastavljen kot lastnost ParentTopLevel razširitve tabele obrazca za dinamični seznam.

Uporaba naslednjih tabel kot glavne tabele dinamičnega seznama ni podprta:

● Tabela, ki nima ključa, ki enolično identificira vsak zapis tabele (sklic za tabele objektov in ključ zapisa za tabele registrov). Vendar pa lahko naslednje tabele nastavite kot glavne tabele dinamičnega seznama (kljub temu, da nimajo ključa):

● Podkonto tabela knjigovodskega registra;
● vse virtualne tabele knjigovodskega registra, razen tabele MovementsSubconto;
● tabele konstantnih vrednosti (vključno s tabelo Konstante);
● mize zunanji viri podatki brez ključnih polj;
● kubusne tabele zunanjih virov podatkov;
● tabele akumulacijskega registra:

  • revolucijska miza;
  • bilančna miza;
  • tabela prometa in stanja.

● tabele računskega registra:

  • tabela dejanskega obdobja veljavnosti;
  • podatki o urniku;
  • osnovni podatki.

● Preglednice tabelarnih delov predmetov;
● Tabele registracije sprememb (uporabljajo se v mehanizmih za izmenjavo podatkov);
● tabele zaporedij;
● Pretvorbene tabele (uporabljene v mehanizmih periodične poravnave).
● Tabela, ki se uporablja v poizvedbi samo v zunanjem združevanju.

Z drugimi besedami, dinamični seznam z navedeno glavno tabelo bo deloval pravilno, če bo kot rezultat izvedbe poizvedbe
naveden kot vir podatkov, se število vrstic, pridobljenih iz glavne tabele, ne poveča (ob upoštevanju vsiljene izbire). Če se zaradi izvajanja poizvedbe poveča število vrstic, pridobljenih s poizvedbo iz glavne tabele, bo to povzročilo kršitev edinstvenosti ključa zapisov tabele, ki jih prikaže seznam. V tem primeru morate onemogočiti uporabo glavne tabele dinamičnega seznama.
Pri delu z dinamičnim seznamom morate upoštevati pravice dostopa do podrobnosti, ki jih prikazuje seznam:
● Podatki iz stolpcev dinamičnega seznama, ki so označeni z lastnostjo Vedno uporabi, vendar za katere Trenutni uporabnik Ni desnega pogleda. Dostop do podatkov takih stolpcev (z uporabo lastnosti CurrentData in metode RowData())
ni mogoče na strani odjemalca.
● Če trenutni uporabnik nima pravice pogleda na ključno polje dinamičnega seznama, bo pridobitev podatkov s tega dinamičnega seznama povzročila napako kršitve dostopa.
Za dinamični seznam, ki prikazuje seznam oštevilčenja, ni možnosti za interaktivno prilagajanje seznama.
Sestava stolpcev in nastavitve dinamičnega seznama so povezani s poizvedbenimi polji z uporabo vzdevkov izbirnih polj. Če vzdevek ni izrecno naveden v poizvedbi za izbirno polje in je polje sistemsko, se kot vzdevek uporabi ime polja za angleško različico vgrajenega jezika.
Navedeno razmerje pomeni, da pri spreminjanju (ali izrecnem podajanju vzdevka za polje, za katerega je bil uporabljen samodejni vzdevek)
vzdevek polja poizvedbe, ki generira podatke dinamičnega seznama, bodo nastavitve atributa dinamičnega seznama izgubljene, elementi obrazca bodo »izgubili« prikazane podrobnosti, nastavitve dinamičnega seznama bodo postale napačne itd.
Če je vir podatkov dinamičnega seznama tabela (navadna ali virtualna), ki omogoča nastavitev izbire po obdobjih, potem, če uporabnik nastavi obdobje prikaza v takšnem dinamičnem seznamu (ukaz Nastavi datumski interval...),
podane meje obdobja bodo nastavljene kot izbirne vrednosti ali parametri virtualne tabele. Če s pomočjo jezikovne razširitve
poizvedbe za sistem sestavljanja podatkov so bila eksplicitno podana imena parametrov virtualne tabele - parametri z navedenim
imena. Tabele, za katere je možno kontrolirati obdobje prikaza oziroma obdelave podatkov:
● registrske tabele (glavne ali virtualne), za katere je možno izbirati po obdobju (za obračunski register - po registracijskem obdobju);
● glavne tabele dokumentov, poslovnih procesov in opravil;
● glavne tabele dnevnikov dokumentov;
● glavne zaporedne tabele, zaporedne mejne tabele.
Poizvedbeni parameter dinamičnega seznama je lahko matrika ali seznam vrednosti. Če pa je parameter seznam vrednosti, bo kot izbirna vrednost uporabljena le prva vrednost na seznamu. Če dinamični seznam uporablja poizvedbo s parametri, začetna namestitev vrednosti parametrov je treba izvesti v upravljalniku OnCreationOnServer.
Ko prikazujete podatke dinamičnega seznama, upoštevajte naslednje:
● Ko programsko spremenite lastnosti dinamičnega seznama, se ukazne plošče, povezane s seznamom, ne ponovno samodejno zapolnijo.
s tem dinamičnim seznamom.
● Če je več polj združenih v skupino z načinom združevanja v celici in je v združenih poljih polje, ki je prikazano kot potrditveno polje, bo to potrditveno polje vedno prikazano najprej v nastali celici (levo od besedilo).
Na dinamičnem seznamu je pri določanju tipa podatkov za polja, katerih izrazi vključujejo parametre, polja ali literale, nastali tip določen s tipi polj in literalov. Če tip vrednosti parametra ni vključen v nastali podatkovni tip, bo njegova vrednost okrnjena.
Na primer, v naslednjem primeru bo polje tipa Število.

IZBIRA
KO JE LAŽ
POTEM 5
DRUGAČE
&Parameter
KONEC

Če parameter Parameter nastavite na vrednost drugega tipa, bo dinamični seznam za to polje prejel vrednost 0 (privzeta vrednost za vrsto Številka).
Če morate v takšni situaciji izbrati parameter drugačne vrste, je priporočljivo uporabiti konstrukcijo poizvedbenega jezika EKSPRES. na primer
če morate v zgornjem primeru v parameter posredovati niz, ki ni daljši od 100 znakov, potem preprosto navedbo parametra zamenjajte z izrazom z eksplicitnim tipom:

IZBIRA
KO JE LAŽ
POTEM 5
DRUGAČE
EXPRESS(&Parameter AS String(100))
KONEC

Če poljubno besedilo zahteve za dinamični seznam uporablja parametre v izrazih izbirnih polj, morate izrecno navesti vrsto parametrov z uporabo konstrukta EKSPRES. Na primer, namesto &Nomenklatura AS Nomenklatura uporaba
EXPRESS(&Nomenklatura AS Imenik.Nomenklatura) AS Nomenklatura. V nasprotnem primeru lahko iskanje prek iskalne vrstice deluje
napačni ali povzročajo napake.

3. Metode za pridobivanje in predpomnjenje podatkov z dinamičnim seznamom

Pri pridobivanju podatkov za prikaz dinamični seznam uporablja eno od treh metod:
1. Branje iz baze podatkov se izvaja v kosih s številom podatkovnih elementov, ki je nekoliko večje od števila vrstic, ki jih hkrati prikazuje seznam (vendar ne manj kot 20). Podatki se na strežniku ne shranjujejo v predpomnilnik.
2. Branje iz baze podatkov poteka na straneh po 1000 podatkovnih elementov. Podatki se shranjujejo v predpomnilnik na strežniku. Hierarhični podatki so predpomnjeni: največ 2 strani elementov sta predpomnjeni za vsakega starša. Na dinamični seznam se ne shrani več kot 20 strani elementov. Predpomnjenje bo omogočeno z dinamičnim seznamom za naslednje tabele:
● Merila za izbor;
● Vse tabele knjigovodskega registra, razen glavne tabele in tabele MovementsSubconto;
● Vse tabele akumulacijskega registra, razen glavne tabele;
● Vse tabele informacijskega registra, razen glavne tabele;
● Vse tabele računskega registra, razen glavne tabele;
● Virtualna tabela nalog po izvajalcu;
● Tabele zunanjih virov brez ključev;
● Kocke iz zunanjih virov.

3. Branje iz baze se izvaja na straneh po 1000 elementov. Prvi del je enak 1 strani. Vsak naslednji del se poveča za 1 stran (ko je dosežen konec prejšnjega vzorca). Bolj kot se »vidna točka« pomika koncu prikazanih podatkov, večji vzorec se prebere iz baze podatkov in sčasoma postane enak vsem prikazanim podatkom. Podatki se shranjujejo v predpomnilnik na strežniku. Največje število vnosov v predpomnilnik in dinamični seznam je 1.000.000.
Odvisno od tega, kaj izbere glavna tabela dinamičnega seznama in kakšno vrednost ima lastnost Dinamično branje, se uporabi ena ali druga metoda branja podatkov:

● Kot vrednost lastnosti glavne tabele je določena ena od naslednjih tabel: načrt izmenjave, imenik, seznam dokumentov, dnevnik dokumentov, plan karakteristik tipov, kontni načrt, plan obračunskih tipov, poslovni proces, naloga, tabela oz. točke poslovnega procesa:



● Kot vrednost lastnosti glavne tabele je podana ena od naslednjih tabel: glavna tabela informacijskega registra, akumulacijski register, obračunski register, računski register, virtualna tabela obračunskega registra MovementsSubconto:

● Lastnost dinamičnega branja:
● Nameščeno: uporabljena je metoda 1 (opis metod je podan zgoraj).
● Ponastavitev: Uporabljena je 2. metoda (opis metod je podan zgoraj).

● Lastnost glavne tabele vsebuje tabelo izbirnih kriterijev ali tabelo opravil po izvajalcu (Tasks By Performer):
● Ključ za identifikacijo vrstice tabele: povezava.

● Lastnost glavne tabele podaja navidezno tabelo informacijskega registra SliceFirst ali SliceLast:
● Ključ, ki identificira vrstico tabele: RecordKey.
● Lastnost dinamičnega branja ni uporabna.
● Uporabljena je metoda 2 (opis metod je podan zgoraj).

● Lastnost glavne tabele je nastavljena na eno od virtualne mize registri, razen zgoraj navedenih:

● Lastnost dinamičnega branja ni uporabna.

● Lastnost glavne tabele ni navedena, uporabljena je poljubna poizvedba:
● Ključ za identifikacijo vrstice tabele: Število.
● Lastnost dinamičnega branja ni uporabna.
● Uporabljena je 3. metoda (opis metod je podan zgoraj).

Za prikaz se podatki prenesejo odjemalcu po delih, katerih velikost je podobna velikosti porcij pri 1. načinu branja podatkov (opisanem na začetku tega razdelka).
Ko ustvarite obrazec, ki vsebuje dinamični seznam, se 45 podatkovnih postavk za vsak viden dinamični seznam najprej posreduje odjemalcu (če ima seznam več kot 45 postavk). Če dinamični seznam prikazuje več kot 45 vrstic, bo ob odprtju obrazca izveden dodaten klic strežnika za pridobitev manjkajočih podatkovnih postavk.

4. Nastavitve dinamičnega seznama

Nastavitve seznama lastnosti - s klikom na hiperpovezavo Odpri se odpre obrazec za nastavitev prikaza dinamičnega seznama. Nastavitev seznama poteka na enak način kot podobne operacije v sistemu za sestavljanje podatkov.


riž. 2. Pogojno oblikovanje dinamičnega seznama

Pri nastavljanju dinamičnega seznama v konfiguraciji ima razvijalec aplikacije možnost narediti naslednje:
● nastavite polja, po katerih želite razvrščati;
● opiše izbor podatkov na seznamu;
● določite pogojne nastavitve videza;
● nastavite polja, po katerih želite združevati podatke.
Smiselno je, da razvrščanje nastavite razvijalcu, če niste zadovoljni s privzetim razvrščanjem, ki ga nastavi sistem.

NASVET. Ne smemo pozabiti, da slab izbor polj za razvrščanje (kot tudi izbor in združevanje podatkov) negativno vpliva na učinkovitost dinamičnega vzorčenja.
Z vidika razvijalca aplikacije so nastavitve dinamičnega seznama sestavljene iz več delov, ki so med seboj povezani. Glavna lastnost, prek katere lahko upravljate nastavitve dinamičnega seznama, je LinkerSettings. Ta objekt vsebuje tri nize nastavitev, ki ob zagonu sistema določajo končne nastavitve, uporabljene za dinamični seznam:
● Nastavitve – nastavitve, ustvarjene v načinu Konfigurator. Omogoča lastnost dinamičnega seznama Order hiter dostop na lastnost Settings.Order graditelja nastavitev dinamičnega seznama, zato so naslednji konstrukti enakovredni:
List.Order in List.SettingsLinker.Settings.Order;
● Uporabniške nastavitve – to so nastavitve, ki jih uporabnik spreminja v načinu 1C:Enterprise;
● Fiksne nastavitve – te nastavitve se nastavijo iz vgrajenega jezika. Ta lastnost vsebuje tudi izbirne vrednosti, ki se prenesejo v obrazec z uporabo njegovih parametrov. Lastnosti dinamičnega seznama Izbira, Možnosti, Pogojni videz omogočajo hiter dostop do fiksnih nastavitev graditelja nastavitev dinamičnega seznama. Z drugimi besedami, ti klici so enakovredni:
List.Settings Composer.FixedSettings.Selection in List.Selection.
Pri ustvarjanju končnih nastavitev za dinamični seznam se različne možnosti nastavitev kombinirajo na naslednji način:
● Če je katera koli vrsta nastavitev v celoti označena kot po meri, potem nastale nastavitve vključujejo nastavitve po meri
(List.ComposerSettings.UserSettings). Poleg tega, če so kateri koli elementi nastavitev označeni kot nerazpoložljivi, bodo te nastavitve postavljene v nastale nastavitve iz lastnosti List.Settings Composer. nastavitve.
● Če je katera koli vrsta nastavitev označena kot po meri ne v celoti, ampak element za elementom, potem:
● Elementi, označeni kot po meri, bodo vključeni v nastale nastavitve iz lastnosti List.SettingsComposer.CustomSettings.
● Elementi, označeni kot nerazpoložljivi, bodo vključeni v nastale nastavitve iz lastnosti List.SettingsComposer.Settings.
● Fiksne nastavitve (List.SettingsComposer.FixedSettings) so dodane nastalim nastavitvam »kot so«. Hkrati je nesprejemljivo, da fiksne in uporabniške nastavitve vsebujejo istoimenske nastavitve, na primer izbor z isto levo vrednostjo v pogoju.

Če so v nastavitvah dinamičnega seznama nastavitve, ki so onemogočene s funkcionalnimi možnostmi, bodo te nastavitve odstranjene s seznama razpoložljive nastavitve pri pridobivanju podatkov dinamičnega seznama.
Nadzor nad tem, katere nastavitve bodo na voljo uporabniku in katere ne, poteka v oknu z nastavitvami dinamičnega seznama.


riž. 3. Nadzor vključitve v uporabniških nastavitvah

Potrditveno polje na dnu okna (glej sliko 3) je odgovorno za postavitev celotne vrste nastavitev v nastavitve (normalno ali hitro). Ta funkcija je na voljo za izbiro, razvrščanje, združevanje in pogojevanje. Če so nastavitve določene z načinom urejanja Hitra izbira, potem morate v lastnosti Skupina nastavitev po meri tabele obrazca, ki prikazuje dinamični seznam, določiti prazno skupino obrazcev, v kateri bodo elementi, povezani s hitrimi nastavitvami po meri dinamičnega seznama. Če skupina ni navedena, hitre uporabniške nastavitve ne bodo prikazane na obrazcu. Prav tako je mogoče izrecno priklicati ustvarjanje nastavitev po meri z uporabo vgrajenega jezika z uporabo metode CreateCustomSettingsFormItems() razširitve dinamičnega seznama.
Izberete lahko tudi, ali želite v uporabniških nastavitvah umestiti določene elemente nastavitev. Ta funkcija je na voljo za izbiro in pogojne elemente oblikovanja (glej sliko 3).

Če želite ob odpiranju dinamičnega seznama naložiti kakšne posebne nastavitve, lahko to storite na dva načina:
● Uporaba parametra obrazca dinamičnega seznama UserSettings. Podatki, ki jih vsebuje ta parameter, bodo uvrščeni v nastavitve dinamičnega seznama uporabnika.
● Uporaba parametra obrazca dinamičnega seznamaUserSettingsKey. Če ta parameter določite ob odpiranju obrazca, se uporabniške nastavitve, ki se nahajajo v pomnilniku nastavitev z navedenim ključem, naložijo v dinamični seznam, ki je glavni atribut obrazca.

5. Iščite po dinamičnem seznamu

Dinamični seznam, ki se nahaja na obrazcu, omogoča interaktivno iskanje po prikazanih podatkih. Iskanje je možno z naslednjimi orodji: iskalna vrstica, iskalno pogovorno okno, iskanje trenutne vrednosti, uporaba zgodovine iskanja in nastavitev obdobja (za dinamične sezname, ki prikazujejo dokumente). Rezultat iskanja je omejen nabor zapisov
dinamični seznam (od razpoložljivih temu uporabniku), ki ustrezajo iskalnim kriterijem.
Obstajajo tri lastnosti tabele za nadzor zmožnosti iskanja na dinamičnem seznamu: kontrolirani obliki, ki prikazuje dinamični seznam:
● Položaj iskalnega niza – določa položaj iskalnega niza. Lahko ima naslednje vrednosti: Auto, Command Bar, None, Top, Bottom.


riž. 4. Išči niz v dinamičnem seznamu

Če je vrednost te lastnosti nastavljena na ukazno ploščo, bo iskalni niz prikazan na ukazni plošči obrazca (če je dinamični seznam glavni atribut obrazca) ali na ukazni plošči, povezani z dinamičnim seznamom. Iskalna vrstica v ukazni vrstici je vedno pritisnjena na desni rob ukazne vrstice (skupaj z gumbi, ki se nahajajo desno od iskalne vrstice).
Če je lastnost nastavljena na Ne, potem iskalni niz ne bo na obrazcu in ko začnete tipkati iskalni niz odprl se bo dialog.
Če je lastnost nastavljena na Top, se iskalna vrstica nahaja med ukazno vrstico seznama in tabelo, ki prikazuje dinamični seznam. Če je lastnost nastavljena na Bottom, bo iskalni niz postavljen takoj za tabelo, ki prikazuje dinamični seznam.


● Če je lastnost Način združljivosti nastavljena na Ne uporabljaj ali je starejša od različice 8.3.4 – je vrednost Ukazna plošča.
Pojdite v iskalno vrstico na naslednji način:
● S pritiskom na kombinacijo tipk Ctrl+F;
● Miška;
● Ko začnete vnašati v dinamični seznam (ob upoštevanju vrednosti lastnosti SearchOnTyping dinamičnega seznama).
● Položaj stanja pogleda – opisuje, kje bo prikazano stanje pogleda: katera polja so bila preiskana in katere vrednosti
iskali na vseh področjih. Lahko ima naslednje vrednosti: Auto, None, Top, Bottom


riž. 5. Stanje iskanja v dinamičnem seznamu

Če je lastnost nastavljena na Ne, stanje pogleda ne bo prisotno na obrazcu. Posledično bo mogoče ugotoviti, ali je bilo iskanje končano ali ne le z razpoložljivostjo gumba Prekliči iskanje.
Če je lastnost nastavljena na Top, bo stanje pogleda med ukazno vrstico seznama in tabelo, ki prikazuje dinamični seznam. Če je lastnost nastavljena na Bottom, bo stanje pogleda postavljeno takoj za tabelo, ki prikazuje dinamični seznam.
Če je bil obrazec ustvarjen v 1C:Enterprise različici 8.3.4 in starejših, je lastnost nastavljena na Ne. Če je bil obrazec ustvarjen v 1C:Podjetju različice 8.3.5 in starejših, je lastnost nastavljena na Samodejno. Realna vrednost nepremičnine se v tem primeru določi na naslednji način:
● Če je lastnost Compatibility Mode nastavljena na različico 8.3.4 (in nižjo) – vrednost No;
● Če je lastnost Način združljivosti nastavljena na Ne uporabljaj ali je starejša od različice 8.3.4 – vrednost Top;
● Položaj nadzora iskanja – Določa, kje bo prikazan gumb za nadzor iskanja. Gumb odpre meni, ki vsebuje naslednje informacije: ukazi Najdi po trenutni vrednosti, Napredno iskanje, Prekliči iskanje, Nastavi obdobje (za sezname dokumentov in dnevnikov) in zgodovino iskalnih poizvedb (zadnjih 5 poizvedb). Lastnost ima lahko naslednje vrednosti: Samodejno, Brez, Ukazna plošča.


riž. 6. Upravljanje iskanja v dinamičnem seznamu

Če je lastnost nastavljena na Ne, gumb za nadzor iskanja ne bo na obrazcu (vendar bodo ukazi na voljo v meniju Več). Vrednost lastnosti ukazne vrstice postavi gumb v ukazno vrstico, povezano s tabelo, ki prikazuje dinamični seznam.
Če je bil obrazec ustvarjen v 1C:Enterprise različici 8.3.4 in starejših, je lastnost nastavljena na Ne. Če je bil obrazec ustvarjen v 1C:Podjetju različice 8.3.5 in starejših, je lastnost nastavljena na Samodejno. Realna vrednost nepremičnine se v tem primeru določi na naslednji način:
● Če je lastnost Compatibility Mode nastavljena na različico 8.3.4 (in nižjo) – vrednost No;
● Če je lastnost Način združljivosti nastavljena na Ne uporabljaj ali je starejša od različice 8.3.4 – vrednost je Ukazna plošča;
Če je na obrazcu več ukaznih plošč, katerih vir ukazov je ena tabela upravljanega obrazca (prikaz podatkov dinamičnega seznama), se bosta vrstica za iskanje in kontrolni gumb za iskanje nahajala samo v eni ukazni plošči:
● Ali v ukazni vrstici samega dinamičnega seznama (če ima omogočeno samodejno dokončanje)
● Ali v kateri koli od preostalih ukaznih plošč.

Oglejmo si značilnosti uporabe iskanja na dinamičnem seznamu:
● Da bo iskanje priročno za uporabo (vključno z vidika zmogljivosti), morate omogočiti iskanje po celotnem besedilu za vse konfiguracijske objekte, ki jih je mogoče uporabiti kot glavno tabelo dinamičnega seznama. Prav tako mora iskanje po celotnem besedilu vključevati vse podrobnosti o konfiguracijskih objektih, ki so lahko prikazani na dinamičnem seznamu in za katere je morda potrebno iskanje.
Če je predmet izključen iz iskanja po celotnem besedilu, bo zadevni iskalni mehanizem deloval, vendar bo zmogljivost takšnega iskanja izjemno nizka. Ni priporočljivo uporabljati iskanja po objektih, ki niso indeksirani z iskanjem po celotnem besedilu.
● Aplikacijska rešitev mora imeti rutinsko opravilo, ki redno posodablja indeks iskanja po celotnem besedilu.

● Iskanje se ne izvaja po vseh stolpcih dinamičnega seznama (in konfiguracijskega objekta), ampak le po tistih stolpcih, ki so prikazani v tabeli.
● Iskanje v dinamičnem seznamu po poljih referenčnih vrst s poljubnim prikazom se izvaja po poljih, ki se uporabljajo za
oblikovanje reprezentance (glej tukaj). Polja, vključena v pogled, so pridobljena ob upoštevanju upravljalnika ViewFieldGettingProcessing() ustreznega predmeta.
● Za dinamične sezname z določeno glavno tabelo se v glavni tabeli uporablja iskanje po celotnem besedilu. Vse neindeksirane povezave iz glavne tabele bodo dodane v rezultate iskanja po celotnem besedilu. Rezultat iskanja po celotnem besedilu za glavno tabelo se uporabi kot izbor na podlagi ključnih polj. Iskanje po celotnem besedilu se izvaja tudi na poljih, prikazanih na seznamu iz drugih tabel (če polje in objekt konfiguracije uporabljata iskanje po celotnem besedilu). Brez omogočenega iskanja po celotnem besedilu so lahko podatki
našli, vendar bo samo iskanje zelo počasno.
Če med poskusom iskanja po celotnem besedilu pride do napake, bo iskanje izvedeno brez uporabe iskanja po celotnem besedilu.
To se lahko na primer zgodi pri iskanju ene črke in velikega števila vrstic informacijsko bazo, ki se začne s to črko.
● Če je za polje v glavni tabeli dinamičnega seznama uporabljen izbor s primerjalno vrsto Equals, bo pri izvajanju iskanja po celotnem besedilu iskalni poizvedbi za to tabelo dodana vrednost izbora.
● Iskalni niz je razdeljen na besede. Ta razdelitev se izvaja v skladu z naslednjimi pravili:
● Vrstica je prekinjena z uporabo presledkov in tabulatorjev kot ločil.
● Nato se vsak nastali fragment obdela:
● Če je fragment predstavitev datuma (s časom ali brez), ki temelji na trenutni področni nastavitvi seje, potem je beseda fragment.
● V nasprotnem primeru se fragment razdeli naprej z uporabo znakov “,.-/\” kot ločila. V tem primeru se vsak nastali del niza vzame kot beseda.

● Za vsako besedo se oblikuje svoj niz pogojev, ki se združujejo z ALI. Ta nabor pogojev je ustvarjen, če je iskanje po celotnem besedilu za dano besedo v tabeli, iz katere je bilo pridobljeno to polje, vrnilo vsaj en predmet ali če za to polje ni bilo uporabljeno iskanje po celotnem besedilu. Pogoji so oblikovani na naslednji način:
● Za polje tipa String je pogoj FieldName LIKE %Word%.
● Za polje vrste Število ima pogoj obliko ImePolja=Vrednost, kjer je Vrednost beseda, pretvorjena v vrsto Število. Če oddajanja ni mogoče izvesti, se iskanje na terenu ne izvede.
● Beseda se išče kot podniz v privzeti logični predstavitvi, definirani za trenutno sejo. Če je iskalna beseda najdena v pogledu, nato išče vrednost, ki ustreza pogledu, v katerem je bila beseda najdena. V tem primeru iskanje ne uporablja pogledov, ki so podani z lastnostjo Oblikuj element obrazca.
● Za polje vrste Datum je pogoj videti takole ImePolja>=ZačetekDana(Beseda) ANDImePolja<=КонецДня(Слово). Если Слово подобно дате, в которой год
označeno z eno ali dvema števkama, bo leto zmanjšano na trenutno stoletje in ta vrednost bo dodana iskalnemu pogoju.
● Za referenčna polja se iskanje izvede po poljih, uporabljenih za oblikovanje referenčnega pogleda. V vsakem od teh polj poiščite
izvedeno po zgoraj opisanih pravilih. Iskanje ne uporablja polj, ki se uporabljajo za oblikovanje predstavitve podatkov po meri.
Nabor pogojev za vsako besedo je združen z "IN".
● Za vrednosti z začetnimi ničlami ​​lahko iščete niz z začetnimi ničlami ​​ali niz, naveden brez začetnih ničel.
● Če dinamični seznam prikazuje seznam dokumentov ali zgodovino dokumenta, je interval pogleda seznama, ki ga določite, prikazan tudi v območju obrazca, ki je rezerviran za prikaz statusa pogleda za želeni dinamični seznam.
● Ukaz Iskanje po trenutni vrednosti ni na voljo, če je izbirni kriterij glavna tabela dinamičnega seznama.
● Najdeni fragmenti niza so označeni, ko so prikazani v tabeli.
● Za en stolpec je podprt samo en iskalni niz. Pri dodajanju nove iskalne poizvedbe za stolpec, ki ga že iščete, bo iskalni izraz zamenjan, namesto da bi bili dve iskalni poizvedbi dodani skupaj.
● Če obrazec nima dodatka elementa obrazca za prikaz iskalnega niza obrazca, povezanega s tabelo (lastnost izvora dodatka elementa obrazca), ki prikazuje dinamični seznam, se s pritiskom na kombinacijo tipk Ctrl+F odpre pogovorno okno za iskanje.


riž. 7. Pogovorno okno za iskanje

Če obrazec vsebuje dodatek elementa obrazca Prikaz iskalnega niza obrazca, ki je povezan s tabelo (lastnost izvora dodatka elementa obrazca), ki prikazuje dinamični seznam, morate za odpiranje iskalnega pogovornega okna uporabiti ukaz Napredno iskanje.
● Ko uporabljate pogovorno okno za iskanje, upoštevajte naslednje:
● Če odprete iskalno pogovorno okno z bližnjico na tipkovnici, se vrednost trenutne celice prikaže v vrstici Kaj iskati, vrednost stikala Kako iskati pa je nastavljena na Po natančnem ujemanju.

● Odpiranje iskalnega pogovornega okna z neposrednim začetkom vnašanja iskalnega niza v dinamičnem seznamu vodi do dejstva, da je vrednost stikala Kako iskati nastavljena na vrednost Po delu niza in vneseno besedilo konča v Kaj v iskalno polje.

6. Pridobivanje podatkov, prikazanih z dinamičnim seznamom

Pri uporabi dinamičnih seznamov boste morda morali izvesti različna dejanja na podatkih, ki jih trenutno prikazuje dinamični seznam, ob upoštevanju uporabljenih izbir in iskanj. Takšna dejanja vključujejo: obdelavo prikazanih informacij, na primer ponovno pošiljanje izbranih dokumentov ali nastavitev nekaterih podrobnosti za izbrane predmete, ustvarjanje seznama razpoložljivih predmetov (z dizajnom itd.), na primer za tiskanje ali shranjevanje v dokument preglednice.
Če želite pridobiti podatke, ki jih prikaže dinamični seznam, morate uporabiti GetExecutableDataCompositionSchema() in
GetExecutableDataCompositionSettings().
Primer prejema podatkov:

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

Pridobivanje podatkov v zbirko vrednosti (tabelo ali seznam vrednosti) poteka na enak način.
Pridobivanje podatkov dinamičnega seznama na ta način ima številne značilnosti, ki jih je treba upoštevati pri razvoju aplikacijskih rešitev:
● Ta oblika tabele ni podprta:
● Izmenične barve črt;
● Slika glave;
● Slika kleti;
● Barva ozadja noge;
● Barva besedila v nogi;
● Pisava noge;
● Horizontalna lega v kleti;
● Način gesla.
● Pogojni videz, določen za upravljani obrazec, ni podprt;
● Pri urejanju hierarhične tabele v naraščajočem vrstnem redu po polju tipa Povezava so zapisi, ki vsebujejo prazno povezavo, vedno postavljeni na prvo mesto.

Poleg primitivnih tipov podatkov, ki jih je mogoče najti v katerem koli programskem jeziku, obstajajo edinstveni tipi v 1C. Vsak od njih ima svoje lastnosti, metode, funkcije, namen in nianse uporabe v sistemu. Ena od teh vrst je dinamični seznam, ki močno olajša številna aplikativna opravila. Zato morajo razvijalci znati in znati ravnati s tem univerzalnim orodjem.

Značilnosti dinamičnih seznamov v 1C

Namen te vrste je prikazati informacije iz katere koli tabele zbirke podatkov, ne glede na vrsto. Mehanizem je bil ustvarjen na podlagi SKD in ima podobne zmogljivosti. Vendar to ne pomeni, da boste morali nujno napisati zahtevo v jeziku 1C, čeprav ta možnost obstaja in jo je treba uporabiti. Lahko preprosto določite tabelo, katere informacije vas zanimajo, in 1C bo samostojno ustvaril preprosto poizvedbo.

Če želite videti, kako je oblikovan dinamični seznam in katere podatke prikazuje, morate odpreti upravljane obrazce, kjer se nahaja v konfiguratorju: na seznamu podrobnosti uporabite kontekstni meni, da odprete njegove lastnosti in bodite pozorni na »Po meri Zahtevaj«. Če potrditvenega polja ni, potem parameter »Glavna tabela« odraža tabelo zbirke podatkov, iz katere so vzeti podatki. V nasprotnem primeru dinamični seznam odraža podatke poizvedbe po meri, ki jih lahko vidite tako, da odprete nastavitve seznama.

Veliko pogosteje se uporablja shema poizvedb po meri, saj nudi odlično priložnost za kombiniranje in prikaz najrazličnejših podatkov. Najpogosteje se ta mehanizem uporablja za prikaz stanja v skladišču, cen artiklov, prejemkov, stroškov ali nakupov. Uporabljati ga morate previdno, saj lahko pri zapletenih poizvedbah zmogljivost pade.

Druga uporabna lastnost dinamičnega seznama se odpre, ko kliknete napis »Nastavitve seznama«. Ta meni vam omogoča, da naredite informacije bolj dostopne in razumljive končnim uporabnikom, tudi če uporabljate standardni nabor polj. Ne glede na to, ali je zahteva poljubna ali ne, boste videli zavihek »Nastavitve«, kjer lahko določite:

  • Izbira dinamičnega seznama;
  • skupine;
  • Razvrščanje;
  • Dekoracija.

Zaradi uporabe parametrov so dinamični seznami univerzalni in precej prilagodljivi. Lahko jih tudi povežete s podrobnostmi na upravljanem obrazcu in podatki se bodo spreminjali glede na parametre, ki jih je izbral uporabnik. Uporabo teh mehanizmov je mogoče razumeti in ceniti z upoštevanjem primerov težav iz resničnega življenja.

Kot primer razmislite o nalogi odražanja ostankov nomenklature na nadzorovani obliki. V realni praksi se takšna naročila pojavljajo precej pogosto v različnih konfiguracijah, dinamični seznam pa je idealen kot orodje. Za to nalogo bomo morali uporabiti poizvedbo po meri, parametre dinamičnega seznama in njegove nastavitve.

Za večjo jasnost ustvarimo ločeno zunanjo obdelavo in nanjo postavimo dinamični seznam. Za uresničitev naših načrtov tabela z nomenklaturo ne bo dovolj, zato moramo omogočiti poljubno poizvedbo. V njem bomo opisali levo povezavo imenika s popisom postavk in registrom stanj ter nastavili imenik kot glavno tabelo. Ta shema bo uporabnikom, ki delajo z dinamičnim seznamom, omogočila dodajanje ali spreminjanje elementov.



SELECT NomenclatureList.Name AS Name, GoodsInWarehousesRemainings.Warehouse AS Warehouse, GoodsInWarehousesRemainings.QuantityRemaining AS QuantityRemaining FROM Directory.Nomenclature AS NomenclatureList LEVA POVEZAVA RegisterAccumulations.GoodsInWarehouses.Remainings(&CurrentDate,) AS Good sOnUS treasuresRemaining software NomenclatureList.Link = ProductsInWarehousesRemainings.Nomenclature WHERE

Ker je naša zahteva uporabljala parameter »CurrentDate«, moramo pred uporabo obdelave nastaviti njegovo vrednost. Če želite to narediti, mu v modulu obrazca v postopku “When CreatedOnServer” s standardnim ukazom dodelite funkcijo “CurrentSessionDate”. Prav tako moramo prikazati dinamični seznam na obrazcu za nadzor in zaradi jasnosti spremeniti vrstni red polj. Povlecite atribut “Preostala nomenklatura” v elemente obrazca (zgornji levi del) in z modrimi puščicami spremenite vrstni red polj v tabeli na obrazcu.

&Na strežniškem postopku Ko je ustvarjen na strežniku (napaka, standardna obdelava) Ostaja nomenklatura Parametri Nastavi ParameterValue("CurrentDate", CurrentSessionDate()) EndProcedure


Že na tej stopnji lahko odpremo našo zunanjo obdelavo v 1C in vidimo, da dinamični seznam deluje. Ogledamo si lahko stanja, ustvarimo predmete in skupine ter iščemo. Stranke pogosto zahtevajo dodajanje možnosti izbire datuma, na katerega bodo videle stanja. V primeru obrazca z dinamičnim seznamom to dosežemo z dodatnim poljem in nastavitvijo parametrov z njim.

Dodajte atribut “DateRemaining” tipa “Date” in ga prenesite v elemente obrazca. V polju dogodki ustvarimo dogodek “OnChange” in zapišemo kodo za nastavitev parametra “CurrentDate”, ki se uporablja v dinamični zahtevi. Da bo uporabnik ob odpiranju obrazca takoj razumel, na kateri datum vidi bilance, bomo naredili majhne spremembe v postopku »When CreatedOnServer«.



&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing)RemainingDate = CurrentSessionDate(); Item Remains.Parameters.SetParameterValue("CurrentDate", RemainingDate); Konec postopka &Na odjemalskem postopku Remaining DateWhenChanged(Element)Nomenclature Remaining.Parameters.SetParameterValue("CurrentDate",RemainingDate); Konec postopka

Posledično lahko naš obrazec dinamičnega seznama prikazuje stanja na kateri koli datum.

Upoštevali smo le majhen del zmogljivosti tega kompleta orodij, vendar je že to dovolj, da razumemo priročnost te vrste dinamičnega seznama. Podoben mehanizem se uporablja za številne naloge, vendar ga najpogosteje najdemo v tipičnih konfiguracijah v upravljanih oblikah:

  1. Izbira;
  2. Seznami.

Za prejem dinamičnega seznama in njegove zahteve v standardnih upravljanih obrazcih mora razvijalec odpreti želeni obrazec v konfiguratorju. V razdelku s podrobnostmi poiščite podrobnosti s podatkovnim tipom »DynamicList« (najpogosteje je označen s krepko pisavo). Njegove lastnosti vsebujejo besedilo zahteve, izbire in druge nastavitve.