Dinaminio sąrašo parametrų nustatymas 1c. Dinaminio sąrašo nustatymai

Baigdamas konfigūraciją, kiekvienas 1C programuotojas susiduria su dinaminiais sąrašais.
Dinaminis sąrašas yra sąsajos objektas, naudojamas įvairiems duomenų bazės objektų sąrašams arba neobjektiniams duomenims – registro įrašams rodyti.
Pavyzdžiui, dinaminis sąrašas naudojamas elementų sąrašui rodyti:

Pademonstruoti savo galimybes dinaminis sąrašas kurkime išorinis apdorojimas, pridėkite pagrindinę formą. Pridėkime prie formos naują atributą su tipu „Dinaminis sąrašas“. Pažvelkime į jo savybes ir pažiūrėkime, kas ten yra.
Mus domina „Custom request“ nuosavybė. Jį įjungus bus parodytos visos dinaminio sąrašo galimybės. Užklausą galėsime parašyti naudodami beveik visas 1C: Enterprise sistemos užklausų kalbos galimybes. Pažymėkite langelį ir spustelėkite nuorodą „Atidaryti“:

Pagal numatytuosius nustatymus mūsų sąraše bus rodomas prekių sąrašas su bendru visų sandėlių likučiu. Norėdami įdiegti tokį sąrašą, pridėkite šią užklausą:


Kaip pagrindinę lentelę pasirinksime „Katalogas.Nomenklatūra“, tai leis mums dirbti su dinaminiu sąrašu, kaip ir su nomenklatūros sąrašu - pridėti, keisti, pažymėti katalogo elementus, kad juos būtų galima ištrinti. Be to, įdiegus pagrindinę lentelę, galima dinamiškai nuskaityti duomenis – tai reiškia, kad pasirinkimas bus atliekamas dalimis pagal poreikį.
Toliau turime sukurti savo sąrašo formos elementus:

Jei bandysime apdoroti šią formą, gausime klaidą:


Norėdami jį pašalinti, turite nustatyti parametro „Periodas“ reikšmę. Norėdami tai padaryti, galite naudoti dinaminio sąrašo rinkinio „Parameters“ metodą „SetParameterValue“. Metodas apima du parametrus:
. "Parametras" - tipas: eilutė; DataCompositionParameter. Parametro arba duomenų sudėties parametro, kurio reikšmę norite nustatyti, pavadinimas;
. „Vertė“ – tipas: savavališkas. Reikšmė, kurią reikia nustatyti.
Galima iškviesti formos „OnCreateOnServer“ tvarkyklėje:

Turite klausimų ar reikia konsultanto pagalbos?


Vartotojui suteiksime galimybę keisti likučių gavimo laikotarpį. Norėdami tai padaryti, pridėkite atributą ir su juo susietą formos elementą „Data“:


Formos elemento „Date“ tvarkyklėje „OnChange“ iškviesime metodą „SetParameterValue“, kaip reikšmę perduodant susijusio atributo reikšmę. Panašiai pakeisime formos procedūrą „Kuriant serveryje“. Kadangi metodas yra prieinamas kliente, nereikia skambinti serveriui:


Dabar, kai pasikeičia data, likučiai bus automatiškai atnaujinti:




Tarkime, kad vartotojai nori matyti esamus likučius arba planuojamas įplaukas. Panagrinėkime vieną iš įgyvendinimo variantų. Pridėkime loginio tipo formos atributą ir susijusį jungiklį:


Keičiant jungiklio reikšmę, pakeisime užklausos tekstą. Norėdami tai padaryti, formos elementui „Rodyti kiekį gavus“ naudosime įvykių tvarkyklę „Pakeitus“. Priklausomai nuo atributo vertės, turime pakeisti dinaminio sąrašo ypatybę „QueryText“. Kadangi ši nuosavybė kliente nepasiekiama, reikia iškviesti serverio procedūrą:


Atliktų pakeitimų rezultatas:



Pagaliau išsipildė kiekvieno septynmečio svajonė. Kaip dažnai programos 7.7 vartotojai prašydavo įprasto prekių pasirinkimo? Kad galėtumėte matyti likučius, kainas ir nustatyti filtrus. Teko sugalvoti įvairių gudrybių, tarp jų ir rašyti išoriniai komponentai. 1C 8.2 pasirodė dinaminiai sąrašai. Siūlau apsvarstyti, kas tai yra ir ką jie gali mums duoti 1C 8.3.

Paimkime pagrindu kai kuriuos bandymo konfigūracija 1C: „Įmonės apskaita 3.0“. Dabar pasirinkimo neatliksime, tiesiog įtrauksime kitą pasirinkimo formą kataloge „Nomenklatūra“ ir laikinai padarysime ją pagrindine:

Sukūrus, sistema pagal numatytuosius nustatymus pridės prie formos lentelės lauką „Dinaminis sąrašas“.

Pažvelkime į jo savybes ir pažiūrėkime, kas ten yra.

Visų pirma, mus domina žymės langelis „Custom request“. Tai atskleis mums visus dinaminio sąrašo pranašumus. Turėsime galimybę parašyti savo prašymą, su parametrais. Pažymėkite langelį ir spustelėkite nuorodą „Atidaryti“:

Atsidarys langas su baigtu kodu . Kol kas visi katalogo „Nomenklatūra“ laukai yra tiesiog išvardyti ten.

Gaukite 267 vaizdo įrašų pamokas 1C nemokamai:

Kaip matote, yra skambinimo mygtukas „ “ ir žymimasis laukelis, leidžiantis dinamiškai keisti sąrašo turinį. Tai yra, kai kitas vartotojas ką nors pakeis kataloge, tai pasikeis ir mūsų sąraše. Be to, yra skirtukas „Nustatymai“, bet mes tai paliesime vėliau.

Pasirinktinė užklausa dinaminiame sąraše

Pirmiausia sukurkime mums reikalingą užklausą su likučiais ir kainomis. Šitaip:

Skirtukas „Nustatymai“.

O dabar geriausia dalis! Eikite į skirtuką „Nustatymai“. Ir iškart matome, kad pirmame skirtuke galime pasirinkti bet kurį užklausos lauką:

Programinis užklausos parametrų nustatymas dinaminiame sąraše 1C 8.3

Nepamirškite, kad užklausoje turime du parametrus: „Laikotarpis“ ir „Kainos tipas“. Turime juos įtraukti į užklausą, kitaip įvyks klaida.

Šiuos parametrus įrašykime į formos parametrus, o formos modulyje pridėkite šias eilutes:

&OnServerProcedureWhenCreatingOnServer (gedimas, standartinis apdorojimas) sąrašas. Galimybės. SetParameterValue("Laikotarpis" , Parametrai. Data) ; Sąrašas. Galimybės. SetParameterValue("Kainos tipas", Parameters.PriceType) ; „EndProcedures“ namų užrašai iš pro žiūrintį stiklą

2014-04-21 Priimami dinaminio sąrašo duomenys

Įdiegta 8.3.6.1977 versijoje.

Įdiegėme galimybę lengvai ir patogiai gauti duomenis, rodomus naudojant dinaminį sąrašą.

Jums gali prireikti dinaminio sąrašo duomenų, kad galėtumėte spausdinti juos nestandartine, „specifine“ forma. Arba norint su jais atlikti tam tikrus veiksmus. Pavyzdžiui, išsiųskite laišką visiems rangovams, kuriuos pasirinkote sąraše pagal tam tikrus kriterijus.

Be to, yra keletas užduočių, kuriose vartotojas, be elementų sąrašo, taip pat nori matyti su šiuo sąrašu susietus suvestinius duomenis. Pavyzdžiui, pasirinkęs tam tikros prekių grupės ir tam tikro tiekėjo prekes, jis iš karto nori duomenų bazėje matyti bendrą tokių prekių skaičių.

Pats dinaminis sąrašas negali suteikti šios informacijos. Dinaminio sąrašo tikslas – greitai peržiūrėti didelius duomenų kiekius. Todėl jis nuskaito duomenis dalimis, reikalingus rodyti viename ar dviejuose ekranuose. Ir „nieko nežino“, pavyzdžiui, apie bendrą duomenų kiekį, kurį jis turi suskaičiuoti.

Apskritai, norint gauti Papildoma informacija vartotojas nori, turite pateikti užklausą duomenų bazėje. Lygiai tokia pati, kaip ir naudojama dinaminiame sąraše.

Anksčiau tai galėjote padaryti. Bet tai ne visada buvo lengva. Juk be pradinės užklausos teksto, pagal kurį veikia dinaminis sąrašas, reikėjo žinoti visus pasirinkimus, rūšiavimus ir kitus parametrus, kuriuos vartotojas interaktyviai nustatė duomenis rodančioje lentelėje.

Dabar šią problemą galima išspręsti paprasčiausiai. Dinaminio sąrašo lentelėje dabar yra du nauji metodai:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Taigi jūs gaunate pačią duomenų išdėstymo schemą ir, svarbiausia, visus jos nustatymus, kurių dėka vartotojas sąrašą mato būtent taip. Viskas, ką jums reikia padaryti, tai programiškai sudaryti išdėstymą ir išvesti jį į reikšmių rinkinį (programiniam apdorojimui) arba skaičiuoklės dokumentas(Rodyti):

Dėl to gausite struktūrą (arba ataskaitą), kurioje yra stulpelių ir eilučių, rodomų dinaminio sąrašo lentelėje.

Svarbu tai, kad išdėstymas ir nustatymai, kuriuos gaunate iš dinaminio sąrašo lentelės, atsižvelgia, be kita ko, į stulpelių matomumą ir taikomą paiešką. Kadangi nustatymai gaunami atskirai, galite keisti laukų sudėtį savo reikmėms ir gauti, pavyzdžiui, visus sąrašo stulpelius, o ne tik tuos, kurie matomi vartotojui.

Išvedant į skaičiuoklės dokumentą, yra dar vienas malonus momentas. Apskritai ataskaitos išvaizda atitiks išvaizda dinaminių sąrašų lenteles schemos ir nustatymų gavimo metu. Įskaitant sąlyginį lentelės dizainą. Kai kurių papildomų veiksmų prireiks tik tuo atveju, jei į ataskaitą norite perkelti sąlyginį formos dizainą.

Spausdinti (Ctrl+P)

Dinaminis sąrašas

1. Bendra informacija

Dinaminis sąrašas yra specialus duomenų tipas, leidžiantis formoje rodyti savavališką informaciją iš duomenų bazės lentelių. Norėdami tai padaryti, turite nurodyti lentelę, iš kurios norite rodyti duomenis, arba aprašyti gautą pasirinkimą užklausos kalba.
Mechanizmas pagrįstas duomenų komponavimo sistema ir suteikia galimybę rūšiuoti, atrinkti, ieškoti, grupuoti ir sąlygiškai formatuoti gautus duomenis. Šiuo atveju duomenų šaltinis yra užklausa, kurią arba automatiškai sugeneruoja sistema (remdamasi nurodytais duomenimis), arba rankiniu būdu parašo kūrėjas.

Ryžiai. 1. Dinaminio sąrašo kūrimo parinktys

Kuriant tipo formos atributus Dinaminis sąrašas kūrėjas gali pasirinkti du duomenų užklausos formavimo būdus:
● Nurodžius pagrindinę lentelę – tokiu atveju tereikia nurodyti lentelę (Main table property), iš kurios norite gauti duomenis, ir sistema automatiškai sugeneruos duomenų užklausą (žr. dešiniąją dalį pav.). 1).
● Neautomatinis užklausos generavimas – tam reikia nustatyti ypatybę Custom request (žr. 1 pav. kairėje pusėje). Po to bus galima rankiniu būdu generuoti užklausą gauti duomenis iš informacijos bazės.
Užklausa gali gauti duomenis iš kelių lentelių, todėl galite nurodyti pirminę lentelę. Tai daroma tam, kad dinaminis sąrašas galėtų nustatyti, kurie duomenys yra pirminiai, o kurie antriniai, ir galėtų teisingai pasirinkti bei rodyti informaciją, taip pat pateikti standartines komandas. Tačiau, jei užklausoje neįmanoma nustatyti pagrindinės lentelės, tada jos negalima nurodyti, bet tada
dinaminis sąrašas nepateiks komandų, susijusių su pagrindine lentele. Be to, tokiu atveju (nenurodant pagrindinės lentelės) žymiai sumažės duomenų gavimo dinaminiu sąrašu efektyvumas.
Norint pagerinti našumą, rekomenduojama bet kokius sujungimus, naudojamus tinkintoje užklausoje tik papildomiems duomenims gauti, padaryti pasirenkamus, naudojant duomenų sudėties sistemos užklausos kalbos plėtinį.
Dinaminiam sąrašui, kuris yra pagrindinis formos atributas, galima nustatyti pasirinkimo reikšmes naudojant formos parametrą Pasirinkimas. Norėdami tai padaryti, būtinas parametre esančios struktūros savybės pavadinimas Pasirinkimas,
sutapo su dinaminio sąrašo pasirinkimo lauko pavadinimu. Tokiu atveju struktūros savybės vertė bus nustatyta kaip teisinga pasirinkimo elemento reikšmė. Jei masyvas, fiksuotas masyvas arba reikšmių sąrašas perduodamas kaip dinaminio sąrašo formos pasirinkimo parametro elemento reikšmė, tada prie pasirinkimo pridedama sąlyga su parinktimi Sąraše, tinkama verte. iš kurių pateikiamas reikšmių sąrašas (į kurį konvertuojamas masyvas ir fiksuotas masyvas).
Savavališka užklausa dinaminiame sąraše gali būti užklausa, kurioje parametras naudojamas lauko vertei generuoti, pavyzdžiui:

PASIRINKTI
PASIRINKIMAS
KAI Pristatymas.Koeficientas = 1 TAI &Pateikimas
KITAIP Pristatymas. Koeficientas
END AS Santykis
NUO

Be to, jei parametro reikšmės tipas skiriasi nuo objekto atributo tipo (pvz., Rekvizitas1 turi tipą Skaičius, o parametro reikšmė yra tipas Linija), tada, kad laukas būtų rodomas teisingai, turite aiškiai perduoti parametro reikšmę į norimą tipą:

PASIRINKTI
PASIRINKIMAS
KAI pristatymas.Koeficientas = 1 THEN EXPRESS(&Representation AS String(100)) ELSE Pristatymas. Koeficientas
END AS Santykis
NUO
Dokumentas. Produktų pristatymas KAIP pristatyti

Jei laukas, kuriuo nustatomas pasirinkimas, yra išjungtas naudojant funkcines parinktis, pasirinkimas pagal tokį lauką neįdiegtas, net jei pasirinkimo reikšmė perduodama kaip formos parametrai arba pasirinkimo parametrų nuorodos.
Naudodami ypatybę Dinaminis duomenų skaitymas, dinaminiame sąraše nurodote, kad duomenis reikia skaityti nedidelėmis dalimis
(daugiau informacijos apie būdus, kaip gauti duomenis naudojant dinaminį sąrašą ir duomenų kaupimą talpykloje, žr. toliau). Nepaisant šio požymio, taikomos šios sąlygos:

● Jei peržiūros režimas nustatytas į hierarchinį sąrašą, bus nuskaitomi tik esamos grupės duomenys ir visų pirminių elementų (be antrinių) duomenys.
● Jei nustatytas medžio peržiūros režimas, bus nuskaitomi tik duomenys iš atvirų medžio mazgų.
● Vienkartinis dinaminio sąrašo duomenų įkėlimas nepalaikomas, jei nustatytas hierarchinis naršymas (Rodymo ypatybė nustatyta į Medis), o pradinis medžio rodymas nustatytas į Išplėsti visus lygius. Norint gauti duomenis, serveriui bus pateikta tiek užklausų, kiek rodomame sąraše yra mazgų.
Vieno duomenų gavimo metu dinaminis sąrašas pakartotinai naudoja anksčiau sukurtas laikinąsias lenteles, jei tenkinamos šios sąlygos:
● Sąrašo paketinėje užklausoje nėra užklausų po pagrindinės paketinės užklausos.
● Laikinųjų lentelių ir jose esančių laukų sudėtis nesikeičia nuo ankstesnio paketinio užklausos vykdymo.

Savo darbe dinaminis sąrašas naudoja šių metaduomenų objekto detalių savybių reikšmes:
● formatas,
● redagavimo formatas,
● užuomina,
● ženklas, skirtas paryškinti neigiamas reikšmes,
● kaukė,
● kelių eilučių režimo ženklas,
● išplėstinio redagavimo ženklas,
● slaptažodžio režimas.
Rodant ir redaguojant duomenų komponavimo sistemos pasirinkimą ir parametrus, naudojamas atitinkamo lauko redagavimo formatas.

2. Apribojimai ir savybės

Nustatydami pasirinkimą dinaminiame sąraše, atminkite, kad pasirinkimas neturi įtakos grupėms, jei dinaminio sąrašo rodymo režimas yra hierarchinis sąrašas arba medis. „Grupės“ reiškia katalogo arba būdingų tipų plano elementą, kurio „ThisGroup“ ypatybė nustatyta į „True“.
Kvalifikacijos, kurias dinaminis sąrašas automatiškai pritaiko standartinei informacijai Savininkas, Tėvas, data, laikotarpis ir ši grupė.
standartinėmis priemonėmis duomenų komponavimo sistemos. Pasirinkimas, automatiškai taikomas dinaminiu sąrašu raktų laukams, gali būti taikomas tiek standartinėmis duomenų sudarymo sistemos priemonėmis, tiek tiesiogiai įtraukiant sąlygas į užklausos tekstą. INį pagrindinės lentelės laukus. Taikant pasirinkimus naudojant maketavimo įrankius, jie gali būti taikomi tiek įdėtose užklausose, tiek virtualių lentelių parametruose.

Kuriant dinaminius sąrašus, rekomenduojama išbandyti visus dinaminius sąrašus su pasirinktomis užklausomis. Patvirtinimo proceso metu turėtumėte įsitikinti, kad jei sąrašo užklausoje yra įdėtųjų užklausų arba virtualių lentelių, o jose yra laukų su slapyvardžiais, atitinkančiais standartinės išsamios informacijos Savininkas, Tėvas, Data, Laikotarpis, Ši grupė arba rakto laukai. pasirinkimas, tada šie laukai galioja, atitinka standartinius duomenis, su kuriais atitinka jų slapyvardis. Jei taip nėra, turėtumėte pakeisti užklausą, kad jos atitiktų arba
slapyvardis buvo kitoks.
Jei pasirinksite užklausą generuoti rankiniu būdu, užklausai taikomi tam tikri apribojimai:
● Teiginio FIRST naudojimas dinaminio sąrašo užklausoje nepalaikomas. Jei reikia naudoti pasirinkimą, apribotą dinaminio sąrašo įrašų skaičiumi, dinaminio sąrašo generavimo užklausą turėtumėte pakeisti taip, kad tikrasis užklausos turinys būtų įtrauktas į antrinę užklausą ir apribotų įrašų skaičių. gautas šioje antrinėje užklausoje. Vietoj papildomos užklausos taip pat galite naudoti laikiną lentelę.
● Pasirinkimas, rūšiavimas ir grupavimas nepalaikomas:

  • Pagal detales lentelių dalys.
  • Žiūrėti laukus.
  • DataVersion laukas.
  • Iš anksto nustatytas duomenų pavadinimas.
  • Sąskaitų plano lentelės tipo laukas.
  • Kaupimo registro lentelės laukas Judėjimo tipas.
  • Lauko tipas Būdingo tipo plano lentelės reikšmės.
  • Tipo laukas Tipas;
  • Laukas tipo String (neriboto ilgio).
  • BinaryData tipo laukas.

● Rūšiavimas ir grupavimas pagal subconto laukus nepalaikomas<НомерСубконто>ir ViewSubconto<НомерСубконто>Lentelės Judėjimai Apskaitos registro subkonto.
● Grupavimas pagal laukus, kurie yra užklausos kalbos išraiškos, kuriose yra sukauptų funkcijų, nepalaikomas.
● Kai pasirenkama pagrindinė lentelė, dinaminio sąrašo užklausai taikomi šie apribojimai:

  • Prisijungimai nepalaikomi.
  • Skyrius ORDER BY nepalaikomas. Turėtumėte naudoti užklausą be pagrindinės lentelės arba nustatyti reikiamą tvarką per dinaminio sąrašo nustatymus.

● Jei dinaminis sąrašas rodomas kaip hierarchinis sąrašas arba medis, įrašas nebus rodomas kaip dinaminis sąrašas, nebent bus rodomas bent vienas to įrašo pirminis elementas. Kitaip tariant, norint rodyti hierarchinio sąrašo elementą, dinaminiame sąraše taip pat turi būti rodomi visi to elemento pirminiai elementai iki sąrašo viršaus. Šiuo atveju sąrašo viršuje turime omenyje bet kurį
pagrindinis hierarchinio objekto elementas, rodomas dinaminiame sąraše, arba elementas, nustatytas kaip dinaminio sąrašo formos lentelės plėtinio ParentTopLevel ypatybė.

Šių lentelių naudojimas kaip pagrindinė dinaminio sąrašo lentelė nepalaikomas:

● Lentelė, kurioje nėra rakto, kuris unikaliai identifikuotų kiekvieną lentelės įrašą (objektų lentelių nuoroda ir registro lentelių įrašo raktas). Tačiau šias lenteles galima nustatyti kaip pagrindinę dinaminio sąrašo lentelę (nepaisant to, kad rakto nėra):

● Apskaitos registro subkonto lentelė;
● visos virtualios apskaitos registro lentelės, išskyrus lentelę MovementsSubconto;
● pastovių verčių lentelės (įskaitant lentelę Konstantos);
● išorinių duomenų šaltinių lentelės be raktų laukų;
● išorinių duomenų šaltinių kubinės lentelės;
● kaupimo registrų lentelės:

  • revoliucinis stalas;
  • balanso stalas;
  • apyvartos ir likučių lentelė.

● skaičiavimo registrų lentelės:

  • faktinio galiojimo laikotarpio lentelė;
  • tvarkaraščio duomenys;
  • pagrindiniai duomenys.

● Lentelinių objektų dalių lentelės;
● Keisti registracijos lenteles (naudojamas duomenų mainų mechanizmuose);
● Sekos lentelės;
● Konversijų lentelės (naudojamos periodinių atsiskaitymų mechanizmuose).
● Lentelė, kuri naudojama užklausoje tik išoriniame sujungime.

Kitaip tariant, dinaminis sąrašas su nurodyta pagrindine lentele veiks tinkamai, jei dėl užklausos vykdymo
nurodytas kaip duomenų šaltinis, iš pagrindinės lentelės gaunamų eilučių skaičius nedidėja (atsižvelgiant į primestą pasirinkimą). Jei dėl užklausos vykdymo padidėja pagrindinės lentelės užklausa gautų eilučių skaičius, tai sukels sąraše rodomų lentelės įrašų rakto unikalumo pažeidimą. Tokiu atveju turite išjungti pagrindinės dinaminio sąrašo lentelės naudojimą.
Dirbdami su dinaminiu sąrašu, turite atsižvelgti į prieigos prie sąraše rodomos informacijos teises:
● Duomenys iš dinaminio sąrašo stulpelių, kurie pažymėti ypatybe Visada naudoti, bet kuriems dabartinis vartotojas neturi peržiūros teisės, neperduodami į kliento pusę. Prieiga prie tokių stulpelių duomenų (naudojant ypatybę CurrentData ir metodą RowData())
neįmanoma iš kliento pusės.
● Jei dabartinis vartotojas neturi teisės peržiūrėti dinaminio sąrašo rakto lauke, nuskaitant duomenis iš to dinaminio sąrašo atsiranda prieigos pažeidimo klaida.
Dinaminiam sąrašui, kuriame rodomas surašymo sąrašas, parinkties nėra interaktyvūs nustatymai sąrašą.
Dinaminio sąrašo stulpelių sudėtis ir nustatymai susiejami su užklausos laukais naudojant pasirinkimo laukų slapyvardžius. Jei pasirinkimo lauko užklausoje slapyvardis nėra aiškiai nurodytas, o laukas yra sisteminis, tada kaip slapyvardis naudojamas angliškos integruotos kalbos versijos lauko pavadinimas.
Nurodytas ryšys reiškia, kad keičiant (arba aiškiai nurodant slapyvardį laukui, kuriam buvo naudojamas automatinis pseudonimas)
dinaminio sąrašo duomenis generuojančio užklausos lauko slapyvardis, dinaminio sąrašo atributų nustatymai bus prarasti, formos elementai „praras“ rodomus duomenis, dinaminio sąrašo nustatymai taps neteisingi ir pan.
Jei dinaminio sąrašo duomenų šaltinis yra lentelė (įprasta arba virtuali), kuri leidžia nustatyti pasirinkimą pagal laikotarpį, tai jei vartotojas tokiame dinaminiame sąraše nustato rodymo laikotarpį (komanda Nustatyti datos intervalą...),
nurodytos laikotarpio ribos bus nustatytos kaip pasirinkimo reikšmės arba virtualios lentelės parametrai. Jei kalbos praplėtimo priemonėmis
užklausų duomenų komponavimo sistemai, buvo aiškiai nurodyti virtualios lentelės parametrų pavadinimai - parametrai su nurodytais
vardai. Lentelės, kuriose galima valdyti duomenų rodymo ar apdorojimo laikotarpį:
● registrų lenteles (pagrindines arba virtualias), kurias galima pasirinkti pagal laikotarpį (skaičiuojant registrui - pagal registracijos laikotarpį);
● pagrindinės dokumentų, verslo procesų ir užduočių lentelės;
● pagrindinės dokumentų žurnalų lentelės;
● pagrindinių sekų lentelės, sekos ribų lentelės.
Dinaminio sąrašo užklausos parametras gali būti masyvas arba reikšmių sąrašas. Tačiau jei parametras yra reikšmių sąrašas, kaip pasirinkimo reikšmė bus naudojama tik pirmoji sąrašo reikšmė. Jei dinaminiame sąraše naudojama užklausa su parametrais, pradinis parametrų reikšmių nustatymas turi būti atliktas OnCreateOnServer tvarkyklėje.
Rodydami dinaminio sąrašo duomenis, atminkite šiuos dalykus:
● Kada programos pakeitimas dinaminio sąrašo ypatybės automatiškai neperpildo susijusių komandų juostų
su šiuo dinamišku sąrašu.
● Jei keli laukai yra sugrupuoti į grupę su grupavimo režimu langelyje ir sugrupuotuose laukuose yra laukas, kuris rodomas kaip žymimasis laukelis, tada šis žymimasis laukelis visada bus rodomas pirmas gautame langelyje (kairėje nuo tekstas).
Dinaminiame sąraše, nustatant duomenų tipą laukams, kurių išraiškose yra parametrų, laukų arba literalų, gautas tipas nustatomas pagal laukų ir literalų tipus. Jei parametro vertės tipas neįtrauktas į gautą duomenų tipą, jo reikšmė bus sutrumpinta.
Pavyzdžiui, kitame pavyzdyje lauko tipas bus Skaičius.

PASIRINKIMAS
KAI TAI MELAS
TADA 5
KITAIP
&Parametras
GALAS

Jei parametro parametrą nustatysite į kito tipo reikšmę, to lauko dinaminis sąrašas gaus reikšmę 0 (numatytoji skaičiaus tipo reikšmė).
Jei tokioje situacijoje reikia pasirinkti kito tipo parametrą, rekomenduojama naudoti užklausos kalbos konstrukciją EXPRESS. Pavyzdžiui,
jei aukščiau pateiktame pavyzdyje į parametrą reikia perduoti ne ilgesnę nei 100 simbolių eilutę, tuomet paprastą parametro nuorodą turėtumėte pakeisti išraiška su aiškaus tipo išmetimu:

PASIRINKIMAS
KAI TAI MELAS
TADA 5
KITAIP
EXPRESS(¶metras AS eilutė(100))
GALAS

Jei savavališkame dinaminio sąrašo užklausos tekste pasirinkimo laukų išraiškose naudojami parametrai, turėtumėte aiškiai nurodyti parametrų tipą naudodami konstrukciją EXPRESS. Pavyzdžiui, vietoj &Nomenklatūra AS nomenklatūra naudoti
EXPRESS(&Nomenclature AS Directory.Nomenclature) AS nomenklatūra. Priešingu atveju paieška per paieškos juostą gali veikti
neteisingai arba padaryti klaidų.

3. Duomenų gavimo ir talpyklos su dinaminiu sąrašu metodai

Kai gaunami rodytini duomenys, dinaminiame sąraše naudojamas vienas iš trijų būdų:
1. Skaitymas iš duomenų bazės atliekamas dalimis, kurių duomenų elementų skaičius yra šiek tiek didesnis nei sąraše vienu metu rodomų eilučių (bet ne mažiau kaip 20). Duomenys nėra talpykloje serveryje.
2. Skaitymas iš duomenų bazės atliekamas 1000 duomenų vienetų puslapiuose. Duomenys kaupiami talpykloje serveryje. Hierarchiniai duomenys saugomi talpykloje: kiekvienam iš pirminių elementų talpykloje saugoma ne daugiau kaip 2 puslapiai elementų. Viename dinaminiame sąraše talpykloje saugoma ne daugiau kaip 20 puslapių elementų. Talpyklą įjungs šių lentelių dinaminis sąrašas:
● Atrankos kriterijai;
● Visos apskaitos registro lentelės, išskyrus pagrindinę ir MovementsSubconto lentelę;
● Visos kaupimo registrų lentelės, išskyrus pagrindinę;
● Visos informacijos registro lentelės, išskyrus pagrindinę;
● Visos skaičiavimo registro lentelės, išskyrus pagrindinę;
● Virtuali užduočių lentelė pagal atlikėją;
● Išorinių šaltinių lentelės be raktų;
● Kubeliai iš išorinių šaltinių.

3. Skaitymas iš duomenų bazės atliekamas 1000 elementų puslapiuose. Pirmoji dalis lygi 1 puslapiui. Kiekviena paskesnė dalis padidėja 1 puslapiu (kai pasiekiama ankstesnio pavyzdžio pabaiga). Kuo arčiau „žiūros taškas“ artėja prie rodomų duomenų pabaigos, tuo didesnis pavyzdys nuskaitomas iš duomenų bazės, galiausiai tampa lygus visiems rodomiems duomenims. Duomenys kaupiami talpykloje serveryje. Didžiausia sumaįrašų talpykloje ir dinaminiame sąraše – 1 000 000.
Priklausomai nuo to, kas pasirinkta pagrindinėje dinaminio sąrašo lentelėje ir kokią reikšmę įgauna dinaminio skaitymo savybė, naudojamas vienas ar kitas duomenų nuskaitymo būdas:

● Viena iš šių lentelių nurodoma kaip pagrindinės lentelės ypatybės reikšmė: mainų planas, katalogas, dokumentų sąrašas, dokumentų žurnalas, charakteristikų tipų planas, sąskaitų planas, skaičiavimo tipų planas, verslo procesas, užduotis, dokumentų lentelė. verslo proceso taškai:



● Pagrindinė lentelės ypatybės reikšmė yra nurodyta viena iš šių lentelių: pagrindinė informacijos registro lentelė, kaupimo registras, apskaitos registras, skaičiavimo registras, apskaitos registro MovementsSubconto virtuali lentelė:

● Dinaminio skaitymo ypatybė:
● Įdiegta: naudojamas 1 metodas (būdų aprašymas pateiktas aukščiau).
● Atstatyti: naudojamas 2 metodas (metodų aprašymas pateiktas aukščiau).

● Ypatybėje Pagrindinė lentelė yra pasirinkimo kriterijų lentelė arba užduočių lentelė pagal vykdytoją (Tasks By Performer):
● Raktas, identifikuojantis lentelės eilutę: nuoroda.

● Ypatybė Pagrindinė lentelė nurodo informacijos registro SliceFirst arba SliceLast virtualią lentelę:
● Raktas, identifikuojantis lentelės eilutę: RecordKey.
● Dinaminio skaitymo ypatybė netaikoma.
● Naudojamas 2 metodas (metodų aprašymas pateiktas aukščiau).

● Ypatybė Pagrindinė lentelė nustatyta į vieną iš virtualių registrų lentelių, išskyrus išvardytas aukščiau:

● Dinaminio skaitymo ypatybė netaikoma.

● Pagrindinės lentelės ypatybė nenurodyta, naudojama individualus prašymas:
● Raktas, identifikuojantis lentelės eilutę: skaičius.
● Dinaminio skaitymo ypatybė netaikoma.
● Naudojamas 3 metodas (metodų aprašymas pateiktas aukščiau).

Rodymui duomenys klientui perduodami dalimis, kurių dydis yra panašus į porcijos dydį 1-uoju duomenų nuskaitymo būdu (aprašyta šio skyriaus pradžioje).
Kai kuriate formą, kurioje yra dinaminis sąrašas, klientui iš pradžių perduodami 45 kiekvieno matomo dinaminio sąrašo duomenų elementai (jei sąraše yra daugiau nei 45 elementai). Jei dinaminiame sąraše rodoma daugiau nei 45 eilutės, atidarius formą bus atliktas papildomas serverio iškvietimas, kad būtų gauti trūkstami duomenų elementai.

4. Dinaminio sąrašo nustatymai

Ypatybių sąrašo nustatymai – spustelėjus nuorodą Atidaryti atidaroma dinaminio sąrašo rodymo nustatymo forma. Sąrašo nustatymas atliekamas taip pat, kaip ir panašios operacijos duomenų komponavimo sistemoje.


Ryžiai. 2. Sąlyginis dinaminio sąrašo stilius

Nustatydamas dinaminį sąrašą konfigūracijoje, programos kūrėjas turi galimybę atlikti šiuos veiksmus:
● nustatyti laukus, pagal kuriuos norite rūšiuoti;
● aprašyti duomenų pasirinkimą sąraše;
● nurodyti sąlyginės išvaizdos nustatymus;
● nustatyti laukus, pagal kuriuos norite grupuoti duomenis.
Tikslinga nustatyti rūšiavimą kūrėjui, jei nesate patenkinti numatytuoju sistemos įdiegtu rūšiavimu.

PATARIMAS. Reikia atsiminti, kad prastas rūšiavimo laukų parinkimas (taip pat ir duomenų parinkimas bei grupavimas) neigiamai veikia dinaminės atrankos efektyvumą.
Programų kūrėjo požiūriu, dinaminio sąrašo parametrai susideda iš kelių dalių, kurios yra tarpusavyje susijusios. Pagrindinė ypatybė, per kurią galite tvarkyti dinaminio sąrašo nustatymus, yra LinkerSettings. Šiame objekte yra trys nustatymų rinkiniai, kurie, kai sistema veikia, nustato galutinius parametrus, taikomus dinaminiam sąrašui:
● Nustatymai – nustatymai, sukurti konfigūratoriaus režimu. Dinaminio sąrašo ypatybė Užsakymas suteikiama greita prieigaį dinaminio sąrašo nustatymų kūrimo priemonės ypatybę Settings.Order, todėl šios konstrukcijos yra lygiavertės:
List.Order ir List.SettingsLinker.Settings.Order;
● UserSettings – tai nustatymai, kuriuos vartotojas keičia režimu 1C:Enterprise;
● Fiksuoti nustatymai – šie nustatymai nustatomi naudojant įtaisytąją kalbą. Šioje savybėje taip pat yra pasirinkimo verčių, kurios perkeliamos į formą naudojant jos parametrus. Dinaminio sąrašo ypatybių pasirinkimas, parinktys, sąlyginė išvaizda suteikia greitą prieigą prie fiksuotų dinaminio sąrašo nustatymų kūrimo priemonės nustatymų. Kitaip tariant, šie skambučiai yra lygiaverčiai:
List.Settings Composer.FixedSettings.Selection ir List.Selection.
Kuriant galutinius dinaminio sąrašo nustatymus, įvairios nustatymų parinktys derinamos taip:
● Jei bet kurio tipo nustatymai yra visiškai pažymėti kaip pasirinktiniai, į gautus nustatymus įtraukiami pasirinktiniai nustatymai
(List.ComposerSettings.UserSettings). Be to, jei kokie nors nustatymų elementai pažymėti kaip nepasiekiami, šie nustatymai bus patalpinti į gautus parametrus iš nuosavybės List.Settings Composer. Nustatymai.
● Jei bet kurio tipo nustatymai pažymėti kaip pasirinktiniai ne visiškai, o po kiekvieno elemento, tada:
● Elementai, pažymėti kaip pasirinktiniai, bus įtraukti į gautus parametrus iš nuosavybės List.SettingsComposer.CustomSettings.
● Elementai, pažymėti kaip nepasiekiami, bus įtraukti į gautus parametrus iš nuosavybės List.SettingsComposer.Settings.
● Fiksuoti nustatymai (List.SettingsComposer.FixedSettings) pridedami prie gautų nustatymų „tokie, kokie yra“. Tuo pačiu metu nepriimtina, kad fiksuotuose ir vartotojo nustatymuose yra to paties pavadinimo nustatymai, pavyzdžiui, pasirinkimas su ta pačia kairiąja sąlygos reikšme.

Jei dinaminio sąrašo nustatymuose yra nustatymų, kurie išjungti naudojant funkcines parinktis, šie nustatymai bus pašalinti iš galimų nustatymų sąrašo, kai bus gauti dinaminio sąrašo duomenys.
Valdymas, kurie nustatymai bus prieinami vartotojui, o kurie ne, atliekami dinaminio sąrašo nustatymų lange.


Ryžiai. 3. Valdykite įtraukimą į vartotojo nustatymus

Lango apačioje esantis žymimasis langelis (žr. 3 pav.) yra atsakingas už viso tipo nustatymų patalpinimą nustatymuose (normalus arba greitas). Šią funkciją galima pasirinkti, rūšiuoti, grupuoti ir sąlygoti. Jei parametrai nurodyti naudojant greitojo pasirinkimo redagavimo režimą, tada dinaminį sąrašą rodančios formos lentelės ypatybėje Vartotojo parametrų grupė turite nurodyti tuščią formos grupę, kurioje elementai, susieti su greitojo vartotojo parametrais. bus pateiktas dinaminis sąrašas. Jei grupė nenurodyta, greitieji vartotojo nustatymai formoje nebus rodomi. Be to, naudojant dinaminio sąrašo plėtinio CreateCustomSettingsFormItems() metodą, galima aiškiai iškviesti pasirinktinių parametrų kūrimą naudojant įtaisytąją kalbą.
Taip pat galima pasirinkti, ar vartotojo nustatymuose įdėti konkrečius nustatymų elementus. Ši funkcija galima pasirinkti ir sąlyginius dizaino elementus (žr. 3 pav.).

Jei norite, kad kai kurie elementai būtų įkelti atidarius dinaminį sąrašą specialius nustatymus, tada tai galima padaryti dviem būdais:
● Naudojant dinaminio sąrašo formos parametrą UserSettings. Šiame parametre esantys duomenys bus įtraukti į vartotojo dinaminio sąrašo nustatymus.
● Naudojant dinaminio sąrašo formos parametrą UserSettingsKey. Jei atidarydami formą nurodysite šį parametrą, tada nustatymų saugykloje esantys vartotojo nustatymai su nurodytu raktu bus įkeliami į dinaminį sąrašą, kuris yra pagrindinis formos atributas.

5. Ieškokite dinaminiame sąraše

Formoje esantis dinaminis sąrašas suteikia galimybę interaktyviai ieškoti rodomų duomenų. Paieška gali būti atliekama naudojant šiuos įrankius: paieškos juosta, paieškos dialogas, esamos reikšmės paieška, paieškos istorija ir laikotarpio nustatymas (dinaminiams sąrašams, rodantiems dokumentus). Paieškos rezultatas yra ribotas įrašų rinkinys
dinaminis sąrašas (iš galimų šiam vartotojui), kurie atitinka paieškos kriterijus.
Yra trys lentelės ypatybės, leidžiančios valdyti paieškos galimybes dinaminiame sąraše: kontroliuojama forma, rodomas dinaminis sąrašas:
● Paieškos eilutės padėtis – nustato paieškos eilutės padėtį. Gali turėti šias reikšmes: Auto, Command Bar, None, Top, Bottom.


Ryžiai. 4. Ieškokite eilutės dinaminiame sąraše

Jei šios ypatybės reikšmė nustatyta į komandų skydelį, paieškos eilutė bus rodoma formos komandų skydelyje (jei dinaminis sąrašas yra pagrindinis formos atributas) arba komandų skydelyje, susietame su dinaminiu sąrašu. Komandų juostoje esanti paieškos juosta visada spaudžiama dešiniajame komandų juostos krašte (kartu su mygtukais, esančiais paieškos juostos dešinėje).
Jei ypatybė nustatyta į Ne, tada paieškos eilutė nebus formoje ir pradėjus vesti tekstą paieškos eilutė prasidės dialogas.
Jei ypatybė nustatyta į viršų, paieškos juosta bus tarp sąrašo komandų juostos ir lentelės, kurioje rodomas dinaminis sąrašas. Jei ypatybė nustatyta į Apačia, paieškos eilutė bus įdėta iškart po lentelės, kurioje rodomas dinaminis sąrašas.


● Jei ypatybė Suderinamumo režimas nustatyta kaip Nenaudoti arba senesnė nei 8.3.4 versija, reikšmė yra komandų skydelis.
Eikite į paieškos eilutę taip:
● Paspaudus klavišų kombinaciją Ctrl+F;
● Pelės;
● Kai pradedate vesti tekstą į dinaminį sąrašą (atsižvelgiant į dinaminio sąrašo ypatybės SearchOnTyping reikšmę).
● View State Position – aprašoma, kur bus rodoma rodinio būsena: kokiuose laukuose buvo ieškoma ir kokios reikšmės
ieškojo kiekvienoje srityje. Gali būti tokios reikšmės: Auto, None, Top, Bottom


Ryžiai. 5. Paieškos būsena dinaminiame sąraše

Jei ypatybė nustatyta į Ne, rodinio būsena formoje nebus. Dėl to bus galima nustatyti, ar paieška buvo baigta, ar ne tik pagal mygtuką Atšaukti paiešką.
Jei ypatybė nustatyta į viršų, rodinio būsena bus tarp sąrašo komandų juostos ir lentelės, kurioje rodomas dinaminis sąrašas. Jei ypatybė nustatyta į Apačia, rodinio būsena bus iškart po lentelės, kurioje rodomas dinaminis sąrašas.
Jei forma buvo sukurta naudojant 1C:Enterprise 8.3.4 ir senesnę versiją, ypatybė nustatyta į Ne. Jei forma buvo sukurta naudojant 1C:Enterprise 8.3.5 ir senesnę versiją, ypatybė nustatyta kaip Auto. Tikroji turto vertė šiuo atveju bus nustatyta taip:
● Jei ypatybė Suderinamumo režimas nustatyta į 8.3.4 (ir senesnę) versiją – reikšmė Nr;
● Jei ypatybė Suderinamumo režimas nustatyta į Nenaudoti arba senesnė nei 8.3.4 versija – reikšmė Top;
● Paieškos valdymo padėtis – nustato, kur bus rodomas paieškos valdymo mygtukas. Mygtukas atidaro meniu, kuriame yra ši informacija: komandos Ieškoti pagal dabartinę reikšmę, Išplėstinė paieška, Atšaukti paiešką, Nustatyti laikotarpį (dokumentų ir žurnalų sąrašams) ir paieškos užklausų istorija (paskutinės 5 užklausos). Ypatybė gali turėti šias reikšmes: Auto, None, Command panel.


Ryžiai. 6. Paieškos tvarkymas dinaminiame sąraše

Jei ypatybė nustatyta kaip Ne, paieškos valdymo mygtuko formoje nebus (tačiau komandos bus pasiekiamos naudojant meniu Daugiau). Komandų juostos ypatybės reikšmė įdeda mygtuką komandų juostoje, susietoje su lentele, kurioje rodomas dinaminis sąrašas.
Jei forma buvo sukurta naudojant 1C:Enterprise 8.3.4 ir senesnę versiją, ypatybė nustatyta į Ne. Jei forma buvo sukurta naudojant 1C:Enterprise 8.3.5 ir senesnę versiją, ypatybė nustatyta kaip Auto. Tikroji turto vertė šiuo atveju bus nustatyta taip:
● Jei ypatybė Suderinamumo režimas nustatyta į 8.3.4 (ir senesnę) versiją – reikšmė Nr;
● Jei ypatybė Suderinamumo režimas nustatyta į Nenaudoti arba senesnė nei 8.3.4 versija – reikšmė yra Command Panel;
Jei formoje yra keli komandų skydeliai, kurių komandų šaltinis yra viena valdomos formos lentelė (rodomi dinaminio sąrašo duomenys), tada paieškos eilutė ir paieškos valdymo mygtukas bus tik viename komandų skydelyje:
● Arba paties dinaminio sąrašo komandų skydelyje (jei jis įjungtas automatinis užpildymas)
● Arba bet kuriame iš likusių komandų skydelių.

Pažvelkime į paieškos dinaminiame sąraše naudojimo ypatybes:
● Kad paieška būtų patogi naudoti (taip pat ir našumo požiūriu), turite įjungti visų konfigūracijos objektų, kurie gali būti naudojami kaip pagrindinė dinaminio sąrašo lentelė, viso teksto paiešką. Be to, viso teksto paieška turėtų apimti visą informaciją apie konfigūracijos objektus, kurie gali būti rodomi dinaminiame sąraše ir kuriems gali prireikti paieškos.
Jei objektas neįtraukiamas į viso teksto paiešką, atitinkamas paieškos mechanizmas veiks, tačiau tokios paieškos našumas bus itin žemas. Nerekomenduojama naudoti paieškos objektuose, kurie nėra indeksuojami viso teksto paieška.
●B taikymo sprendimasčia turi būti rutininė užduotis, kuri reguliariai atnaujina viso teksto paieškos indeksą.

● Paieška atliekama ne visuose dinaminio sąrašo (ir konfigūracijos objekto) stulpeliuose, o tik tuose stulpeliuose, kurie rodomi lentelėje.
● Paieška dinaminiame sąraše pagal nuorodų tipų laukus su savavališkai pateikiama pagal laukus, kurie naudojami
reprezentacijos formavimas (žr. čia). Į rodinį įtraukti laukai gaunami atsižvelgiant į atitinkamo objekto ViewFieldGettingProcessing() tvarkyklę.
● Dinaminiams sąrašams su nurodyta pagrindine lentele pagrindinėje lentelėje naudojama viso teksto paieška. Visos neindeksuotos nuorodos iš pagrindinės lentelės bus įtrauktos į viso teksto paieškos rezultatus. Pagrindinės lentelės viso teksto paieškos rezultatas naudojamas kaip pasirinkimas pagal pagrindinius laukus. Viso teksto paieška taip pat atliekama laukuose, rodomuose sąraše iš kitų lentelių (jei laukas ir konfigūracijos objektas naudoja viso teksto paiešką). Neįjungus viso teksto paieškos, duomenys gali būti
rasta, bet pati paieška bus labai lėta.
Jei bandant atlikti viso teksto paiešką įvyksta klaida, paieška bus atliekama netaikant viso teksto paieškos.
Pavyzdžiui, taip gali nutikti ieškant vienos raidės ir daugybės eilučių informacinė bazė, pradedant šiuo laišku.
● Jei dinaminio sąrašo pagrindinės lentelės laukui naudojamas pasirinkimas su palyginimo tipu Lygu, tada atliekant viso teksto paiešką paieškos užklausą Pasirinkimo reikšmė bus pridėta iš šios lentelės.
● Paieškos eilutė yra padalinta į žodžius. Šis skaidymas atliekamas pagal šias taisykles:
● Linija nutraukiama naudojant tarpo ir tabuliavimo simbolius kaip skiriamuosius ženklus.
● Tada kiekvienas gautas fragmentas apdorojamas:
● Jei fragmentas yra datos vaizdas (su laiku arba be jo), pagrįstas dabartine seanso lokale, tada žodis yra fragmentas.
● Priešingu atveju fragmentas toliau padalijamas naudojant simbolius „,.-/\“ kaip skiriamuosius ženklus. Šiuo atveju kiekvienas gautas eilutės fragmentas laikomas žodžiu.

● Kiekvienam žodžiui sudaromos savo sąlygos, kurios derinamos „ar ARBA“. Šis sąlygų rinkinys sugeneruojamas, jei visa teksto paieška pagal duotą žodį lentelėje, iš kurios buvo gautas šis laukas, grąžino bent vieną objektą arba viso teksto paieška šiam laukui nebuvo naudojama. Sąlygos sudaromos taip:
● Lauko tipo String sąlyga yra lauko pavadinimas LIKE %Word%.
● Skaičiaus tipo lauko sąlyga turi formą FieldName=Value, kur Reikšmė yra žodis, konvertuotas į skaičių tipą. Jei gipso atlikti nepavyks, lauko paieška nebus atliekama.
● Žodis ieškomas kaip poeilutė numatytojoje Būlio atvaizde, apibrėžtoje dabartinei sesijai. Jei paieškos žodis randamas rodinyje, jis ieško reikšmės, atitinkančios rodinį, kuriame buvo rastas žodis. Šiuo atveju paieška nenaudoja rodinių, kurie nurodyti naudojant ypatybę Format form element.
● Lauko, kurio tipas yra data, sąlyga atrodo taip FieldName>=StartofDay(Word) ANDFieldName<=КонецДня(Слово). Если Слово подобно дате, в которой год
pažymėtas vienu ar dviem skaitmenimis, metai bus sumažinti iki dabartinio šimtmečio ir ši reikšmė bus pridėta prie paieškos sąlygos.
● Nuorodos laukų paieška atliekama laukuose, naudojamuose formuojant nuorodos vaizdą. Kiekviename iš šių laukų ieškokite
atliekama pagal aukščiau aprašytas taisykles. Paieškoje nenaudojami laukai, naudojami pasirinktiniam duomenų vaizdui formuoti.
Sąlygų rinkinys kiekvienam žodžiui yra sujungtas „IR“.
● Vertės su nuliais priekyje galite ieškoti eilutėje su nuliais priekyje arba eilutėje, nurodytoje be nulių priekyje.
● Jei dinaminiame sąraše rodomas dokumentų sąrašas arba dokumentų istorija, jūsų nurodytas sąrašo peržiūros intervalas taip pat rodomas formos srityje, skirta norimo dinaminio sąrašo peržiūros būsenai rodyti.
● Komanda paieška pagal dabartinę reikšmę negalima, jei pasirinkimo kriterijus yra pagrindinė dinaminio sąrašo lentelė.
● Rastos eilutės fragmentai paryškinami, kai rodomi lentelėje.
● Viename stulpelyje palaikoma tik viena paieškos eilutė. Pridedant naują paieškos užklausą stulpelyje, kurio jau ieškoma, paieškos išraiška bus pakeista, o ne dvi paieškos užklausos bus sudedamos kartu.
● Jei formoje nėra formos elemento papildymo su paieškos eilutės rodiniu, susietu su lentele (formos elemento papildymas Šaltinio ypatybe), rodančiu dinaminį sąrašą, tada paspaudus klavišų kombinaciją Ctrl+F atidaromas paieškos dialogo langas.


Ryžiai. 7. Paieškos dialogas

Jei formoje yra formos elemento papildymas su formos Paieškos eilutės rodiniu, susietu su lentele (formos elemento papildymas Šaltinio ypatybe), rodančiu dinaminį sąrašą, tada norėdami atidaryti paieškos dialogo langą turėtumėte naudoti komandą Išplėstinė paieška.
● Naudodami paieškos dialogo langą atminkite šiuos dalykus:
● Atidarius paieškos dialogo langą naudojant sparčiuosius klavišus, dabartinio langelio reikšmė rodoma eilutėje Ko ieškoti, o jungiklio Kaip ieškoti reikšmė nustatoma į Pagal tikslią atitiktį.

● Atidarius paieškos dialogo langą tiesiogiai pradėjus įvesti paieškos eilutę dinaminiame sąraše, jungiklio Kaip ieškoti reikšmė nustatoma į reikšmę Pagal eilutės dalį, o įvestas tekstas patenka į Kas į paieškos laukelį.

6. Duomenų, rodomų dinaminiame sąraše, gavimas

Naudojant dinaminius sąrašus, gali tekti atlikti įvairius veiksmus su duomenimis, kuriuos šiuo metu rodo dinaminis sąrašas, atsižvelgiant į pasirinkimus ir taikomas paieškas. Tokie veiksmai apima: rodomos informacijos apdorojimą, pvz., pakartotinį pasirinktų dokumentų siuntimą arba tam tikrų pasirinktų objektų detalių nustatymą, galimų objektų sąrašo (su dizainu ir pan.) generavimą, pavyzdžiui, spausdinimui ar įrašymui į skaičiuoklės dokumentą.
Norėdami gauti duomenis, kurie rodomi dinaminiame sąraše, turėtumėte naudoti GetExecutableDataCompositionSchema() ir
GetExecutableDataCompositionSettings().
Duomenų gavimo pavyzdys:

Schema = Elements.List.GetExecutableDataCompositionSchema();
Nustatymai = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(schema, nustatymai);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

Duomenų patekimas į verčių rinkinį (lentelę arba verčių sąrašą) atliekamas tokiu pačiu būdu.
Dinaminio sąrašo duomenų gavimas tokiu būdu turi keletą ypatybių, į kurias reikia atsižvelgti kuriant taikomųjų programų sprendimus:
● Šis lentelės dizainas nepalaikomas:
● Kintamosios linijų spalvos;
● Antraštės paveikslėlis;
● Rūsio paveikslas;
● Poraštės fono spalva;
● Poraštės teksto spalva;
● Poraštės šriftas;
● Horizontali padėtis rūsyje;
● Slaptažodžio režimas.
● Valdomai formai nurodyta sąlyginė išvaizda nepalaikoma;
● Tvarkant hierarchinę lentelę didėjančia tvarka pagal lauką, kurio tipas yra Nuoroda, įrašai, kuriuose yra tuščia nuoroda, visada pateikiami pirmiausia.

Be primityvių duomenų tipų, kuriuos galima rasti bet kurioje programavimo kalboje, 1C yra ir unikalių tipų. Kiekvienas iš jų turi savo savybes, metodus, funkcijas, paskirtį ir naudojimo sistemoje niuansus. Vienas iš šių tipų yra dinaminis sąrašas, kuris labai palengvina daugelį taikomų užduočių. Štai kodėl kūrėjai turi žinoti ir mokėti valdyti šį universalų įrankį.

Dinaminių sąrašų ypatybės 1C

Šio tipo tikslas – rodyti informaciją iš bet kokių duomenų bazės lentelių, neatsižvelgiant į jos tipą. Mechanizmas buvo sukurtas SKD pagrindu ir turi panašias galimybes. Bet tai nereiškia, kad būtinai turėsite parašyti prašymą 1C kalba, nors tokia galimybė yra ir ja reikėtų pasinaudoti. Galite tiesiog nurodyti lentelę, kurios informacija jus domina, o 1C savarankiškai sugeneruos paprastą užklausą.

Norėdami pamatyti, kaip formuojamas dinaminis sąrašas ir kokius duomenis jis rodo, konfigūravimo priemonėje turite atidaryti tvarkomas formas, kuriose jis yra: detalių sąraše kontekstiniu meniu atidarykite jo ypatybes ir atkreipkite dėmesį į „Custom. Prašymas“ elementą. Jei žymės langelio nėra, parametras „Pagrindinė lentelė“ atspindi duomenų bazės lentelę, iš kurios paimti duomenys. Kitu atveju dinaminis sąrašas atspindi pasirinktinės užklausos duomenis, kuriuos galima pamatyti atidarius sąrašo nustatymus.

Pasirinktinė užklausų schema naudojama daug dažniau, nes tai suteikia puikią galimybę derinti ir rodyti įvairius duomenis. Dažniausiai šis mechanizmas naudojamas norint atspindėti sandėlio likučius, prekių kainas, kvitus, išlaidas ar pirkimus. Turite jį naudoti atsargiai, nes sudėtingų užklausų našumas gali sumažėti.

Dar viena naudinga dinaminio sąrašo savybė atsidaro spustelėjus užrašą „Sąrašo nustatymai“. Šis meniu leidžia padaryti informaciją prieinamesnę ir suprantamesnę galutiniams vartotojams, net ir naudojant standartinį laukų rinkinį. Nepriklausomai nuo to, ar užklausa savavališka, ar ne, pamatysite skirtuką „Nustatymai“, kuriame galėsite nurodyti:

  • Dinaminis sąrašo pasirinkimas;
  • Grupės;
  • Rūšiavimas;
  • Dekoras.

Naudojant parametrus dinaminiai sąrašai yra universalūs ir gana lankstūs. Taip pat galite susieti juos su išsamia informacija valdomoje formoje, o duomenys keisis priklausomai nuo vartotojo pasirinktų parametrų. Šių mechanizmų naudojimą galima suprasti ir įvertinti atsižvelgiant į realių problemų pavyzdžius.

Kaip pavyzdį apsvarstykite užduotį atspindėti nomenklatūros liekanas kontroliuojamoje formoje. Realioje praktikoje tokie užsakymai pasitaiko gana dažnai įvairiose konfigūracijose, o dinaminis sąrašas idealiai tinka kaip įrankis. Šiai užduočiai atlikti turėsime naudoti pasirinktinę užklausą, dinaminio sąrašo parametrus ir jo nustatymus.

Kad būtų daugiau aiškumo, sukurkime atskirą išorinį apdorojimą ir patalpinkime jame dinaminį sąrašą. Norėdami įgyvendinti savo planus, lentelės su nomenklatūra nepakaks, todėl turime leisti savavališką užklausą. Jame aprašysime kairįjį katalogo ryšį su prekių sąrašu ir likučių registru ir nustatysime katalogą kaip pagrindinę lentelę. Ši schema leis vartotojams, dirbantiems su dinaminiu sąrašu, pridėti arba keisti elementus.



SELECT NomenclatureList.Name AS Pavadinimas, PrekėsSandėliuoseLiktos.Sandėlio AS Sandėlis, PrekėsSandėliuoseLikučiai.Kiekis Likęs AS KiekisLikęs IŠ Katalogo.Nomenklatūros AS Nomenklatūros sąrašas KAIRĖS RYŠYS)RegistruotisAkumuliacijos.Prekių likutis. sLikusi programinė įranga NomenclatureList.Link = ProductsInWarehousesRemainings.Nomenclature WHERE

Kadangi mūsų užklausoje buvo naudojamas parametras „CurrentDate“, prieš naudodami apdorojimą turime nustatyti jo vertę. Norėdami tai padaryti, formos modulyje procedūroje „When CreatedOnServer“, naudodami standartinę komandą, priskirkite jai funkciją „CurrentSessionDate“. Taip pat turime rodyti dinaminį sąrašą valdymo formoje ir aiškumo dėlei pakeisti laukų tvarką. Vilkite atributą „Likusi nomenklatūra“ į formos elementus (viršutinėje kairėje dalyje) ir naudokite mėlynas rodykles, kad pakeistumėte laukų tvarką formos lentelėje.

&Serverio procedūroje, kai sukuriama serveryje (gedimas, standartinis apdorojimas) lieka nomenklatūra. Parametrai. Nustatyti ParameterValue("CurrentDate", CurrentSessionDate()) EndProcedure


Jau šiame etape galime atidaryti išorinį apdorojimą 1C ir pamatyti, kad dinaminis sąrašas veikia. Galime peržiūrėti likučius, kurti elementus ir grupes bei ieškoti. Dažnai klientai prašo pridėti galimybę pasirinkti datą, kurią matys likučius. Formos su dinaminiu sąrašu atveju tai pasiekiama naudojant papildomą lauką ir jį naudojant nustatant parametrus.

Pridėkite „Date“ tipo atributą „DateRemaining“ ir perkelkite jį į formos elementus. Lauko įvykiuose sukuriame įvykį „OnChange“ ir įrašome dinaminėje užklausoje naudojamo parametro „CurrentDate“ nustatymo kodą. Kad atidarius formą vartotojas iš karto suprastų, kurią dieną jis mato likučius, atliksime nedidelius procedūros „When CreatedOnServer“ pakeitimus.



&OnServerProcedureCreatingOnServer(gedimas, standartinis apdorojimas)RemainingDate = CurrentSessionDate(); Elementas Remains.Parameters.SetParameterValue("CurrentDate", RemainingDate); Procedūros pabaiga &Kliento procedūros Remaining DateWhenChanged(Element)Nomenklatūra Remaining.Parameters.SetParameterValue("CurrentDate",RemainingDate); Procedūros pabaiga

Todėl mūsų dinaminio sąrašo forma gali atspindėti bet kurios datos likučius.

Mes apsvarstėme tik nedidelę šio įrankių rinkinio galimybių dalį, tačiau to jau pakanka, kad suprastume tokio tipo dinaminio sąrašo patogumą. Panašus mechanizmas naudojamas daugeliui užduočių, tačiau dažniausiai jis randamas tipinėse valdomų formų konfigūracijose:

  1. Pasirinkimas;
  2. Sąrašai.

Norėdami gauti dinaminį sąrašą ir jo užklausą standartinėmis valdomomis formomis, kūrėjas turi atidaryti norimą formą konfigūravimo priemonėje. Išsamios informacijos skiltyje raskite išsamią informaciją su duomenų tipu „DynamicList“ (dažniausiai jis paryškinamas paryškintu šriftu). Jo ypatybėse yra užklausos tekstas, pasirinkimai ir kiti nustatymai.

Dalintis