1s dynaaminen luettelo lisäämällä rivin. Dynaamisten listatietojen käsittely ja muotoilu. Rajoitukset muokattaville ja lisätyille kentille

Kotimuistiinpanoja katselasin läpi

21.4.2014 Vastaanotetaan dynaamisia luettelotietoja

Toteutettu versiossa 8.3.6.1977.

Olemme ottaneet käyttöön mahdollisuuden saada helposti ja kätevästi dynaamisen listan avulla näytettävät tiedot.

Saatat tarvita dynaamisia luettelotietoja, jotta voit tulostaa sen epästandardissa "tiedossa" muodossa. Tai suorittaakseen tiettyjä toimintoja heidän kanssaan. Lähetä esimerkiksi kirje kaikille urakoitsijoille, jotka olet valinnut luettelosta tiettyjen kriteerien perusteella.

Lisäksi on useita tehtäviä, joissa käyttäjä haluaa elementtiluettelon lisäksi nähdä myös tähän luetteloon liittyvät yhteenvetotiedot. Esimerkiksi, kun hän on valinnut tietyn tuoteryhmän ja tietyn toimittajan tuotteet, hän haluaa heti nähdä tällaisten tuotteiden kokonaismäärän tietokannassa.

Dynaaminen luettelo ei yksinään voi tarjota sinulle näitä tietoja. Dynaamisen luettelon tarkoitus on tarjota nopea katselu suurille tietomäärille. Siksi se lukee tiedot paloina, jotka tarvitaan näyttämään yhdellä tai kahdella näytöllä. Ja "ei tiedä mitään" esimerkiksi laskettavan datan kokonaismäärästä.

Yleisesti ottaen sinun on suoritettava tietokantakysely saadaksesi lisätietoja, joita käyttäjä haluaa. Täsmälleen sama kuin dynaamisessa luettelossa käytetty.

Ennen pystyit tähän. Mutta se ei aina ollut helppoa. Alkuperäisen pyynnön tekstin lisäksi, jossa dynaaminen luettelo toimii, piti nimittäin tietää kaikki valinnat, lajittelut ja muut parametrit, jotka käyttäjä on asettanut interaktiivisesti tietoja näyttävään taulukkoon.

Nyt tämä ongelma voidaan ratkaista yksinkertaisesti. Dynaamisessa luettelotaulukossa on nyt kaksi uutta menetelmää:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Siten saat itse tietojen asettelukaavion ja mikä tärkeintä, kaikki sen asetukset, joiden ansiosta käyttäjä näkee luettelon täsmälleen sellaisena. Sinun tarvitsee vain laatia asettelu ohjelmallisesti ja näyttää se arvokokoelmassa (ohjelman käsittelyä varten) tai laskentataulukkoasiakirjassa (näyttöä varten):

Tämän seurauksena saat rakenteen (tai raportin), joka sisältää sarakkeita ja rivejä, jotka näkyvät dynaamisessa luettelotaulukossa.

Tärkeää on, että dynaamisesta listataulukosta saamasi asettelu ja asetukset ottavat huomioon muun muassa sarakkeiden näkyvyyden ja käytetyn haun. Koska asetukset hankitaan erikseen, voit muuttaa kenttien koostumusta omiin tarpeisiisi ja saada esimerkiksi kaikki listan sarakkeet, ei vain niitä, jotka käyttäjälle näkyvät.

Laskentataulukkodokumenttiin tulostettaessa on vielä yksi miellyttävä hetki. Yleisesti ottaen raportin ulkoasu vastaa dynaamisen luettelotaulukon ulkoasua skeeman ja asetusten vastaanottamishetkellä. Sisältää taulukon ehdollisen suunnittelun. Tarvitset lisätoimenpiteitä vain, jos haluat siirtää lomakkeen ehdollisen suunnittelun raporttiin.

Primitiivisten tietotyyppien lisäksi, jotka löytyvät millä tahansa ohjelmointikielellä, 1C:ssä on ainutlaatuisia tyyppejä. Jokaisella niistä on omat ominaisuutensa, menetelmänsä, toimintonsa, tarkoituksensa ja käytön vivahteet järjestelmässä. Yksi näistä tyypeistä on dynaaminen luettelo, joka helpottaa suuresti monia sovellettavia tehtäviä. Siksi kehittäjien on tiedettävä ja kyettävä käsittelemään tämä universaali työkalu.

Dynaamisten luetteloiden ominaisuudet 1C:ssä

Tämän tyypin tarkoitus on näyttää tietoja kaikista tietokantataulukoista niiden tyypistä riippumatta. Mekanismi luotiin SKD:n pohjalta ja sillä on samanlaiset ominaisuudet. Mutta tämä ei tarkoita, että sinun on välttämättä kirjoitettava pyyntö 1C-kielellä, vaikka tämä mahdollisuus on olemassa ja sitä tulisi käyttää. Voit yksinkertaisesti määrittää taulukon, jonka tiedot kiinnostavat sinua, ja 1C luo itsenäisesti yksinkertaisen kyselyn.

Nähdäksesi, kuinka dynaaminen luettelo muodostuu ja mitä tietoja se näyttää, sinun on avattava hallitut lomakkeet siellä, missä se sijaitsee konfiguraattorissa: avaa tietoluettelossa sen ominaisuudet kontekstivalikosta ja kiinnitä huomiota "Mukautettuun" Pyydä" kohde. Jos valintaruutua ei ole, "Main table" -parametri kuvastaa tietokantataulukkoa, josta tiedot on otettu. Muussa tapauksessa dynaaminen luettelo heijastaa mukautetun kyselyn tietoja, jotka näkyvät avaamalla luetteloasetukset.

Mukautettua kyselyjärjestelmää käytetään paljon yleisemmin, koska se tarjoaa erinomaisen mahdollisuuden yhdistää ja näyttää monenlaista tietoa. Useimmiten tätä mekanismia käytetään heijastamaan varastosaldot, nimikkeiden hinnat, kuitit, kulut tai ostot. Sinun on käytettävä sitä varovasti, koska suorituskyky saattaa heikentyä monimutkaisissa kyselyissä.

Toinen hyödyllinen dynaamisen luettelon ominaisuus avautuu, kun napsautat "Listaasetukset" -tekstiä. Tämän valikon avulla voit tehdä tiedoista helpommin saatavilla ja ymmärrettävämpiä loppukäyttäjille, jopa käytettäessä vakiokenttiä. Riippumatta siitä, onko pyyntö mielivaltainen vai ei, näet "Asetukset"-välilehden, jossa voit määrittää:

  • Dynaaminen luettelon valinta;
  • Ryhmät;
  • Lajittelu;
  • Sisustus.

Parametrien käyttö tekee dynaamisista luetteloista universaaleja ja melko joustavia. Voit myös linkittää ne hallitun lomakkeen tietoihin, jolloin tiedot muuttuvat käyttäjän valitsemien parametrien mukaan. Näiden mekanismien käyttöä voidaan ymmärtää ja arvostaa tarkastelemalla esimerkkejä tosielämän ongelmista.

Harkitse esimerkkinä tehtävää heijastaa nimikkeistön jäännökset valvotussa muodossa. Käytännössä tällaisia ​​tilauksia esiintyy melko usein eri kokoonpanoissa, ja dynaaminen lista on ihanteellinen työkalu. Tätä tehtävää varten meidän on käytettävä mukautettua kyselyä, dynaamisia luetteloparametreja ja sen asetuksia.

Selvyyden vuoksi luodaan erillinen ulkoinen käsittely ja sijoitetaan siihen dynaaminen luettelo. Suunnitelmiemme toteuttamiseksi taulukko nimikkeistöllä ei riitä, joten meidän on sallittava mielivaltainen kysely. Siinä kuvataan hakemiston vasen yhteys eräluetteloon ja saldorekisteriin ja asetetaan hakemisto päätaulukoksi. Tämän mallin avulla käyttäjät voivat lisätä tai muuttaa kohteita dynaamisen luettelon kanssa.



SELECT NomenclatureList.Name AS Name, GoodsInWarehousesRemainings.Warehouse AS Warehouse, GoodsInWarehousesRemainings.QuantityRemaining AS QuantityRemaining FROM Directory.Nomenclature AS NomenclatureList LEFT CONNECTION, GoodsInWarehouses. sRemaining software NomenclatureList.Link = ProductsInWarehousesRemainings.Nomenclature WHERE

Koska pyyntömme käytti "CurrentDate" -parametria, meidän on asetettava sen arvo ennen käsittelyä. Voit tehdä tämän määrittämällä "When CreatedOnServer" -menettelyn lomakemoduulissa vakiokomennolla "CurrentSessionDate" -funktion. Meidän on myös näytettävä dynaaminen luettelo ohjauslomakkeella ja muutettava kenttien järjestystä selvyyden vuoksi. Vedä "Jäljellä oleva nimikkeistö" -attribuutti lomakeelementteihin (vasen yläosa) ja muuta lomakkeen taulukon kenttien järjestystä sinisten nuolien avulla.

&Palvelinmenettelyssä luodessaan palvelimelle (virhe, vakiokäsittely) nimikkeistö säilyy. Parametrit. Aseta ParameterValue("CurrentDate", CurrentSessionDate()) EndProcedure


Jo tässä vaiheessa voimme avata ulkoisen käsittelymme 1C:ssä ja nähdä, että dynaaminen luettelo toimii. Voimme tarkastella saldoja, luoda kohteita ja ryhmiä ja etsiä. Usein asiakkaat pyytävät lisäämään mahdollisuuden valita päivämäärä, jolloin he näkevät saldot. Lomakkeessa, jossa on dynaaminen luettelo, tämä saavutetaan lisäkentällä ja parametrien asettamisella sen avulla.

Lisää Date-tyyppinen attribuutti DateRemaining ja siirrä se lomakeelementteihin. Kenttätapahtumiin luomme OnChange-tapahtuman ja kirjoitamme koodin dynaamisessa pyynnössä käytetyn CurrentDate-parametrin asettamiseen. Jotta käyttäjä lomakkeen avatessaan ymmärtäisi heti, minä päivänä hän näkee saldot, teemme pieniä muutoksia "When CreatedOnServer" -menettelyyn.



&OnServerProcedureWhenCreatingOnServer(virhe, StandardProcessing)RemainingDate = CurrentSessionDate(); Nimike Remains.Parameters.SetParameterValue("CurrentDate", RemainingDate); Toimenpiteen päättyminen &Asiakasmenettelyssä Remaining DateWhenChanged(Element)Nomenclature Remaining.Parameters.SetParameterValue("CurrentDate",RemainingDate); Menettelyn loppu

Tämän seurauksena dynaaminen luettelo -lomake voi näyttää saldot milloin tahansa.

Olemme tarkastelleet vain pientä osaa tämän työkalupakin ominaisuuksista, mutta tämä riittää jo ymmärtämään tämän tyyppisen dynaamisen luettelon mukavuuden. Samanlaista mekanismia käytetään moniin tehtäviin, mutta se löytyy useimmiten tyypillisistä kokoonpanoista hallituissa lomakkeissa:

  1. Valinta;
  2. Luettelot.

Saadakseen dynaamisen luettelon ja sen pyynnön standardoiduissa hallituissa lomakkeissa kehittäjän on avattava haluttu lomake konfiguraattorissa. Etsi tiedot-osiosta tiedot "DynamicList"-tietotyypillä (useimmiten se on lihavoitu). Sen ominaisuudet sisältävät pyyntötekstin, valinnat ja muut asetukset.

Toteutettu versiossa 8.3.10.2168.

Kuten tiedät, dynaaminen luettelo on kätevä ja hyödyllinen suurten luetteloiden nopeaan näyttämiseen. Se on melko joustava, joten voit muokata vakiokyselyä ja jopa luoda oman monimutkaisen kyselyn. Tämän ansiosta sinulla on mahdollisuus näyttää luettelossa erilaisia ​​​​lisätietoja, jotka liittyvät luettelon päätietoihin.

Tällaisella monipuolisuudella on kuitenkin myös varjopuolensa. Halu "näyttää kaikki kerralla" voi saada sinut monimutkaisemaan pyyntöä huomattavasti. Seurauksena on tehottomia toteutussuunnitelmia ja sen seurauksena suorituskyvyn heikkeneminen luettelon näyttämisen ja selaamisen aikana.

Lisäksi on useita sovellettavia ongelmia, joissa algoritmi listatietojen valitsemiseksi ja muotoiluksi on melko monimutkainen. Näissä tapauksissa mukautetun kyselyn ja ehdollisen muotoilun ominaisuudet eivät yksinkertaisesti riitä. Haluaisin "vapaamman" ja "tarkemman" työkalun, jonka avulla voin tehdä "mitä tahansa" ja "vain missä tarvitaan".

Tapahtuma vastaanotettaessa tietoja palvelimella

Olemme ottaneet käyttöön uuden käsittelijän erityisesti näitä tarkoituksia varten. Se lisätään taulukkolaajennukseen, joka näyttää dynaamisen luettelon.

Tätä käsittelijää kutsutaan palvelimelta, kun dynaaminen luettelo on vastaanottanut ja muotoillut seuraavan datan näytettäväksi.

Tärkeä ominaisuus on, että lomakekonteksti ei ole käytettävissä tässä käsittelijässä. Voit käyttää vain niiden listarivien kokoelmaa, jotka on vastaanotettu tietokannasta, jotka on jo valittu ja suunniteltu dynaamisen listan asetusten mukaisesti.

Voit muuttaa näiden rivien tietoja tai soveltaa soluihin omaa malliasi. Seuraavat suunnitteluvaihtoehdot ovat käytettävissä: Taustaväri, Tekstin väri, Fontti, Vaaka-asento, Näkyvyys, Saatavuus, Näyttö, Teksti Ja Muoto.

Voit myös tarvittaessa tarkastella ja analysoida kopiota kaikista dynaamisen luettelon asetuksista. Mutta et voi muuttaa asetuksia.

Yksinkertaisin käyttötapaus

Helpoin tapa ymmärtää tämän käsittelijän tarkoitus on esimerkin avulla. Esimerkkinä on näyttää niiden saldot varastointirekisteristä tavaraluettelossa. Tiettyä arvoa pienempi määrä on korostettu punaisella.

Tähän asti tämä ongelma on ratkaistu liittämällä vasemmalle dynaamisessa luettelopyynnössä ja asettamalla ehdollinen luettelo konfiguraattoriin.

Nyt hän päättää näin. Vakioluettelokysely ei ole monimutkainen, se lisää vain valekentän Loput.

Ja ohjaajassa WhenReceivingDataOnServer() Vain vastaanotettujen rivien jäännökset lasketaan. Ja sitten pienet jäännökset korostetaan punaisella.

Tässä menetelmällä GetKeys(), saat niiden avaimet (linkit) joukosta dynaamisia luettelorivejä ja välität nämä avaimet loppukyselyyn.

Sitten, kun selaat kyselyn tuloksia, saat tarvittavat rivit avaimella sarakkeeseen Loput aseta arvo ja aseta tämän kentän ulkoasu tarvittaessa.

Tämän seurauksena käyttäjä näkee seuraavan luettelon:

Mitä hyötyä tästä vaihtoehdosta on?

Ensinnäkin luettelokysely pysyy yksinkertaisena. Tai se ei jää yksinkertaiseksi, mutta siinä olevien yhteyksien määrä vähenee. Tämä tarkoittaa, että hänelle rakennetaan hyvä suunnitelma suurella todennäköisyydellä.

Toiseksi käsittelijän jäännösten haku suoritetaan vain kerran, kun taas listapyyntö voidaan suorittaa useita kertoja (riippuen luettelon asetuksista ja sivutusskriptistä).

Ja kolmanneksi uusi käsittelijä suoritetaan sen jälkeen, kun päätiedot on vastaanotettu tietokannasta ja läpäissyt oikeudet. Tämä tarkoittaa, että joissakin skenaarioissa aiheeseen liittyvien tietojen hakeminen käsittelijässä voidaan tehdä etuoikeutetussa tilassa ilman käyttöoikeuksien tarkistamista. Tämä nopeuttaa listaa.

Rajoitukset muokattaville ja lisätyille kentille

Se, että käsittelijässä voit muuttaa listakenttien arvoja, on ominaisuus, joka tulee aina ottaa huomioon.

Jos et ryhdy lisätoimenpiteisiin, käyttäjä saattaa yllättyä suuresti muutamiesi kenttien ryhmittelyn, lajittelun tai valinnan (mukaan lukien haun) tuloksista. Loppujen lopuksi nämä toimet suoritetaan pyynnön vastaanottamien alkuperäisten tietojen perusteella, ei käyttäjän näkemien tietojen perusteella.

Siksi, jos muutat kenttäarvoja, älä unohda jättää niitä ryhmittelyn, järjestyksen ja valinnan ulkopuolelle. Olemme ottaneet käyttöön kolme uutta menetelmää erityisesti tätä tarkoitusta varten.

Lisäksi joissakin skenaarioissa voi olla järkevää korostaa tällaiset sarakkeet visuaalisesti taulukossa, jotta käyttäjät näkevät, että nämä sarakkeet ovat "erityisiä", eivät kuten kaikki muut.

Lopulta jokaisen seitsemänvuotiaan unelma on toteutunut. Kuinka usein ohjelman 7.7 käyttäjät pyysivät normaalia tuotevalikoimaa? Jotta näet saldot, hinnat ja suodattimet. Meidän piti keksiä erilaisia ​​temppuja, mukaan lukien ulkoisten komponenttien kirjoittaminen. 1C 8.2:ssa ilmestyi dynaamisia luetteloita. Ehdotan pohtimaan, mikä se on ja mitä he voivat antaa meille 1C 8.3:ssa.

Otetaan pohjaksi tietty 1C:n testikokoonpano: "Enterprise Accounting 3.0". Emme tee valintaa nyt, lisäämme vain toisen valintalomakkeen "Nimikkeistö"-hakemistoon ja teemme siitä väliaikaisesti päälomakkeen:

Luodessaan järjestelmä lisää oletusarvoisesti "Dynaaminen lista" -tyyppisen taulukkokentän lomakkeeseen.

Mennään sen ominaisuuksiin ja katsotaan mitä siellä on.

Ensinnäkin olemme kiinnostuneita "Mukautettu pyyntö" -valintaruudusta. Tämä paljastaa meille kaikki dynaamisen luettelon edut. Meillä on mahdollisuus kirjoittaa oma pyyntömme parametrein. Valitse valintaruutu ja napsauta "Avaa"-linkkiä:

Näyttöön tulee ikkuna, jossa on valmis koodi . Toistaiseksi kaikki "Nimikkeistö"-hakemiston kentät on yksinkertaisesti lueteltu siellä.

Hanki 267 videotuntia 1C:llä ilmaiseksi:

Kuten näet, siellä on soittopainike “ ” ja valintaruutu, jonka avulla voit muuttaa luettelon sisältöä dynaamisesti. Eli kun toinen käyttäjä muuttaa jotain hakemistossa, se muuttuu myös luettelossamme. Lisäksi siellä on "Asetukset"-välilehti, mutta käsittelemme sitä myöhemmin.

Mukautettu kysely dynaamisessa luettelossa

Ensin luodaan tarvitsemamme pyyntö saldoineen ja hinnoin. Näin:

"Asetukset" -välilehti

Ja nyt paras osa! Siirry "Asetukset" -välilehteen. Ja näemme heti, että ensimmäisessä välilehdessä voimme tehdä valintoja mille tahansa pyynnön kentälle:

Kyselyparametrien asettaminen ohjelmallisesti dynaamiseen luetteloon 1C 8.3

Muista, että pyynnössämme on kaksi parametria: "Kausi" ja "Hintatyyppi". Meidän on välitettävä ne pyyntöön, muuten tapahtuu virhe.

Kirjoitetaan nämä parametrit lomakeparametreihin ja lisätään seuraavat rivit lomakemoduuliin:

&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing) -luettelo. Vaihtoehdot. SetParameterValue("Jakso" , Parametrit. Päivämäärä) ; Lista. Vaihtoehdot. SetParameterValue("Hintatyyppi", Parameters.PriceType) ; Menettelyn loppu

Määrityksiä viimeistellessään jokainen 1C-ohjelmoija kohtaa dynaamisia luetteloita.
Dynaaminen lista on käyttöliittymäobjekti, jota käytetään näyttämään erilaisia ​​tietokantaobjektien tai ei-objektitietojen luetteloita - rekisterimerkintöjä.
Esimerkiksi dynaamista luetteloa käytetään kohteiden luettelon näyttämiseen:

Havainnollistaaksesi dynaamisen luettelon ominaisuudet, luodaan ulkoinen käsittely ja lisätään päälomake. Lisätään lomakkeeseen uusi attribuutti, jonka tyyppi on "Dynaaminen luettelo". Mennään sen ominaisuuksiin ja katsotaan mitä siellä on.
Olemme kiinnostuneita "Custom request" -ominaisuudesta. Sen ottaminen käyttöön näyttää meille kaikki dynaamisen luettelon ominaisuudet. Pystymme kirjoittamaan pyynnön käyttämällä lähes kaikkia 1C: Enterprise -järjestelmän kyselykielen ominaisuuksia. Valitse valintaruutu ja napsauta "Avaa"-linkkiä:

Oletusarvoisesti luettelomme näyttää luettelon nimikkeistä, joissa on kaikkien varastojen kokonaissaldo. Ota tällainen luettelo käyttöön lisäämällä seuraava kysely:


Päätaulukoksi valitsemme "Directory.Nomenclature", jolloin voimme työskennellä dynaamisen luettelon kanssa, kuten nimikkeistöluettelon kanssa - lisää, muuta, merkitse hakemistoelementtejä poistettavaksi. Päätaulukon asentaminen mahdollistaa myös tietojen dynaamisen lukemisen - tämä tarkoittaa, että valinta tehdään osissa tarpeen mukaan.
Seuraavaksi meidän on luotava lomakeelementtejä luetteloomme:

Jos yritämme suorittaa käsittelymme tässä muodossa, saamme virheilmoituksen:


Sen poistamiseksi sinun on asetettava arvo "Jakso"-parametrille. Voit tehdä tämän käyttämällä dynaamisen luettelon "Parameters" -kokoelman "SetParameterValue" -menetelmää. Menetelmä vaatii kaksi parametria:
. "Parametri" - Tyyppi: Merkkijono; DataCompositionParameter. Sen parametrin tai tietojen koostumusparametrin nimi, jonka arvon haluat asettaa;
. "Arvo" - Tyyppi: mielivaltainen. Asetettava arvo.
Voidaan kutsua lomakkeen "OnCreateOnServer" -käsittelijässä:

Onko sinulla kysyttävää tai tarvitsetko apua konsultilta?


Tarjoamme käyttäjälle mahdollisuuden muuttaa saldon vastaanottoaikaa. Voit tehdä tämän lisäämällä attribuutin ja siihen liittyvän Date-lomakeelementin:


"Date"-lomakeelementin "OnChange"-käsittelijässä kutsumme "SetParameterValue"-metodia välittäen arvona siihen liittyvän attribuutin arvon. Muutetaan samalla tavalla lomakkeen "Kun luominen palvelimelle" -menettelyä. Koska menetelmä on käytettävissä asiakkaalla, palvelimelle ei tarvitse soittaa:


Nyt kun päivämäärä muuttuu, saldot päivitetään automaattisesti:




Oletetaan, että käyttäjät haluavat nähdä joko nykyiset saldot tai suunnitellut kuitit. Harkitsemme yhtä toteutusvaihtoehdoista. Lisätään loogisen tyyppinen lomakeattribuutti ja siihen liittyvä kytkin:


Kun vaihdat kytkimen arvoa, muutamme pyynnön tekstiä. Tätä varten käytämme "Näytä määrä kuitissa" -lomakeelementille "On Change" -tapahtumakäsittelijää. Meidän on muutettava dynaamisen luettelon "QueryText" -ominaisuutta attribuutin arvon mukaan. Koska tämä ominaisuus ei ole käytettävissä asiakkaalla, palvelinproseduuri on kutsuttava:


Tehtyjen muutosten tulos: