Hvordan hente data fra tabelldelen av dokumenter? 1c tilgang til tabelldelen av dokumentet

Tabelldeler finnes for mange objekter i 1C:

  • Kataloger
  • Dokumentasjon
  • Rapporter og behandling
  • Kontoplaner
  • Karakteristiske typeplaner
  • Beregningstypeplaner
  • Forretningsprosesser og oppgaver

Tabelldeler lar deg lagre en ubegrenset mengde strukturert informasjon som tilhører ett objekt.

La oss se på noen teknikker for å jobbe med tabelldeler.

Hvordan omgå den tabellformede delen

For å krysse borddelen kan du bruke en løkke For hver

For hver rad fra den tabellformede delen av syklusen

Report(String. TabularPart-attributt) ;

EndCycle ;

Ved hver iterasjon inn i variabelen Linje neste rad i tabellseksjonen overføres. Verdiene til raddetaljene kan fås ved uttrykket Line.AttributeName.

Hvordan få og omgå valgte rader i tabelldelen

For å vise informasjon fra den tabellformede delen av objektet, bruk et skjemaelement Tabellfelt. For å aktivere muligheten til å velge flere rader i et tabellfelt, må du angi verdien Flere på eiendommen hans Valgmodus.

For å få en liste over valgte linjer, bruk følgende kode:

En løkke brukes til å iterere gjennom de valgte linjene. For hver:

SelectedRows = FormElements. Tabellfeltnavn. Selected Rows;

Løkke for hver rad fra utvalgte rader

//løkkeinnhold

EndCycle ;

Slik velger du rader i en tabelldel (tabellfelt) og fjerner markeringen av dem

Slik fjerner du markeringen av rader i et tabellfelt programmatisk:

Formelementer. Tabellfeltnavn. Utvalgte rader. Clear() ;

Slik velger du alle radene i et tabellfelt programmatisk:

For hver Current Row From Tabular Part Loop
Formelementer. Tabellfeltnavn. Utvalgte linjer. Add(Current Row) ;
EndCycle ;

Slik tømmer du borddelen

Tabelldel. Clear() ;

Hvordan få den gjeldende raden i en tabelldel

Gjeldende linje er perioden brukeren har dette øyeblikket markøren er plassert. For å få det, må du få tilgang til kontrollelementet på skjemaet som er knyttet til tabelldelen.

For vanlige skjemaer vil koden se slik ut:

Formelementer. Tabellfeltnavn. CurrentData;

For administrerte skjemaer:

Elementer. Tabellfeltnavn. CurrentData;

Hvordan legge til en ny rad i en tabelldel

Legge til en ny linje på slutten av tabelldelen:

NewRow = TablePart. Legg til() ;

Legge til en ny linje hvor som helst i tabelldelen (påfølgende linjer vil bli forskjøvet):

NewRow = TablePart. Sett inn (indeks)
//Indeks - nummeret på den tilføyde linjen. Linjenummerering starter fra null.

Ny linje. Props1 = "Verdi" ;

Hvordan programmere fyller ut detaljene i en tabellrad

Hvis du må programmere fylle ut detaljene for en tabelldelrad som er lagt til av brukeren, må du bruke hendelsesbehandleren for tabellseksjonen Når du starter redigering.

Prosedyren opprettet av behandleren har tre parametere:

  • Element- inneholder et kontrollelement Tabellfelt.
  • Ny linje- boolsk. Inneholder verdi ekte, hvis en ny tabellrad legges til, og Å ligge, hvis brukeren begynte å redigere en allerede eksisterende linje.
  • Kopiere- boolsk. Inneholder verdi ekte, hvis brukeren kopierer linjen, og Å ligge i andre tilfeller.

La oss se på et eksempel. La oss si at vi må fylle ut detaljene i tabelldelen Kontokonto, i tilfelle en ny linje legges til. Når du redigerer en eksisterende linje, trenger du ikke endre regnskapskontoen.

Prosedyre TabularPartAtStartEditing(Element, NewRow, Copy)

//Hvis brukeren redigerer en eksisterende linje, gjør vi ingenting
Hvis IKKE NewRow Da
Komme tilbake;
Slutt om ;

//Hvis linjen er ny, sett regnskapskontoen
TechString = Vare. CurrentData; //Få den gjeldende raden i tabelldelen
TechString. Regnskap = Kontoplaner. Selvbærende. RequiredAccount;
Slutt på prosedyre

For å gjøre rede for penger og varer, er ulike tabeller mye brukt i næringslivet. Nesten hvert dokument er et bord.

En tabell viser varene som skal sendes fra lageret. En annen tabell viser forpliktelsene til å betale for disse varene.

Derfor, i 1C, inntar arbeid med bord en fremtredende plass.

Tabeller i 1C kalles også "tabelldeler". Kataloger, dokumenter og andre har dem.

Spørringen, når den utføres, returnerer en tabell som kan nås på to forskjellige måter.

Det første - raskere - utvalget, å skaffe rader fra det, er bare mulig i rekkefølge. Den andre er å laste opp søkeresultatet til en verditabell og deretter tilfeldig tilgang til det.

//Alternativ 1 – sekvensiell tilgang til søkeresultater

//få bordet
Select = Query.Run().Select();
// vi går gjennom alle linjene i søkeresultatet i rekkefølge
Mens Select.Next() Loop
Rapport(Utvalg.Navn);
EndCycle;

//Alternativ 2 – opplasting til en verditabell
Request = New Request("SELECT Name FROM Directory.Nomenclature");
//få bordet
Tabell = Query.Run().Unload().
//Videre kan vi også iterere gjennom alle linjene
For hver rad fra tabellsyklus
Rapport(String.Name);
EndCycle;
//eller vilkårlig tilgang til strenger
Rad = Tabell.Finn("Skovel", "Navn");

En viktig funksjon er at i tabellen som er hentet fra søkeresultatet, vil alle kolonner være strengt skrevet. Dette betyr at ved å be om Navn-feltet fra nomenklaturkatalogen, vil du motta en kolonne av typen String med en tillatt lengde på ikke mer enn N tegn.

Tabell på skjemaet (tykk klient)

Brukeren arbeider med tabellen når den er plassert på skjemaet.

Vi diskuterte de grunnleggende prinsippene for å jobbe med skjemaer i timen på og i timen på

Så la oss plassere tabellen på skjemaet. For å gjøre dette kan du dra tabellen fra kontrollpanelet. På samme måte kan du velge Form/Insert Control fra menyen.

Dataene kan lagres i konfigurasjonen - da må du velge en eksisterende (tidligere lagt til) tabelldel konfigurasjonsobjektet hvis skjema du redigerer.

Klikk på "..."-knappen i Data-egenskapen. For å se listen over tabelldeler, må du utvide objektgrenen.

Når du velger tabelldelen, vil 1C selv legge til kolonner i tabellen på skjemaet. Rader som legges inn av brukeren i en slik tabell vil bli lagret automatisk sammen med oppslagsboken/dokumentet.

I den samme Data-egenskapen kan du skrive inn et vilkårlig navn og velge typen Verditabell.

Dette betyr at en vilkårlig verditabell er valgt. Den vil ikke automatisk legge til kolonner, og den vil heller ikke automatisk lagres, men du kan gjøre hva du vil med den.

Ved å høyreklikke på tabellen kan du legge til en kolonne. I egenskapene til en kolonne kan du spesifisere navnet (for referanse i 1C-kode), kolonneoverskriften på skjemaet, forbindelsen med attributtet til den tabellformede delen (sistnevnte - hvis ikke en vilkårlig tabell er valgt, men en tabelldel).

I tabellegenskapene på skjemaet kan du angi om brukeren kan legge til/slette rader. Et mer avansert skjema er avmerkingsboksen Vis Bare. Disse egenskapene er praktiske å bruke for å organisere tabeller beregnet for visning av informasjon, men ikke redigering.

For å administrere tabellen må du vise et kommandopanel på skjemaet. Velg menypunktet Skjema/Sett inn kontroll/kommandolinje.

I kommandolinjens egenskaper merker du av for Autofyll slik at knappene på panelet vises automatisk.

Tabell på skjema (tynn/administrert klient)

i en overkommelig form Disse trinnene ser litt annerledes ut. Hvis du trenger å plassere en tabelldel på skjemaet, utvider du objektgrenen og drar en av tabelldelene til venstre. Det er alt!

Hvis du trenger å plassere en verditabell, legg til et nytt skjemaattributt og spesifiser typen – verditabell i egenskapene.

For å legge til kolonner, bruk høyreklikkmenyen på dette skjemaattributtet, velg Legg til attributtkolonne.

Dra også tabellen til venstre.

For at en tabell skal ha en kommandolinje, i tabellegenskapene, velg verdiene i delen Bruk – Kommandolinjeposisjon.

Laster opp en tabell til Excel

Enhver 1C-tabell på skjemaet kan skrives ut eller lastes opp til Excel.

For å gjøre dette, høyreklikk på ledig plass i tabellen og velg Liste.

I en administrert (tynn) klient kan lignende handlinger utføres ved å bruke menypunktet Alle handlinger/Vis liste.

Hjem For nybegynnere utviklere Lære å programmere

Hvordan hente data fra tabelldelen av dokumenter?

Vurder for eksempel en situasjon der du trenger å få alle vareelementene spesifisert i tabelldelen Varer dokumenter Salg av varer og tjenester.

For å gjøre dette kan du bruke en forespørsel med følgende tekst:

VELG DIVERSE Salg av varer og tjenester Varer Nomenclature AS Nomenklatur FROM Dokument Salg av varer og tjenester Goods AS Salg av varer og tjenester Varer

Som kilde angir vi den tabellformede delen av dokumentene - tabell Dokument. Salg av varer og tjenester. Varer. Vi erklærer utdatafeltet for å være feltet Nomenklatur, som er en del av kildetabellen. I tillegg, siden det samme produktelementet naturligvis kan være til stede mer enn én gang i dokumentene, bruker vi DIVERSE for å få bare de distinkte radene i spørringsutdatatabellen.

La oss for eksempel lage en prosessering Produktliste, hvor dokumentet er valgt Salg av varer og tjenester, og ved å klikke på den tilsvarende knappen, vises en liste over ikke-gjentakende elementer i nomenklaturen i tabelldelen av dette dokumentet i meldingsvinduet.

For å begrense utvalget av elementer kun til elementer fra tabelldelen av et spesifikt dokument, bruker vi parameteren Link i tilstanden i forespørselen ( HVOR...):

VELG DIVERSE Salg av varer og tjenester Varer Nomenclature AS Nomenklatur FROM Dokument Salg av varer og tjenester Varer HVORDAN Salg av varer og tjenester Varer HVOR Salg av varer og tjenester varer. Link = &Link




Topp