Hur får man data från tabelldelen av dokument? 1s åtkomst till den tabellformade delen av dokumentet

Tabelldelar finns för många objekt i 1C:

  • Uppslagsverk
  • Dokumentation
  • Rapporter och bearbetning
  • Kontoplaner
  • Planer över typer av egenskaper
  • Typplaner för beräkning
  • Affärsprocesser och arbetsuppgifter

Tabelldelar låter dig lagra en obegränsad mängd strukturerad information som tillhör ett objekt.

Låt oss titta på några metoder för att arbeta med tabelldelar.

Hur man kringgår den tabellformade delen

Du kan använda en slinga för att korsa den tabellformade delen För varje

För varje rad från TabularPart Loop

Report(String.TablePartAttribute) ;

EndCycle ;

Vid varje iteration till en variabel Linje nästa rad i tabelldelen överförs. Strängattributvärden kan erhållas av uttrycket String.AttributeName.

Hur man får och kringgår de valda raderna i tabellsektionen

Formelementet används för att visa information från den tabellformade delen av objektet. tabellfält. För att aktivera möjligheten att välja flera rader i ett tabellfält måste du ställa in värdet Flera olika på sin egendom Urvalsläge.

För att få en lista över valda rader, använd följande kod:

Loop används för att iterera över valda linjer För varje:

SelectedLines = FormElements. TabellFältnamn. Valda rader;

För varje rad från valda rader Loop

//slingans innehåll

EndCycle ;

Hur man programmatiskt väljer raderna i tabelldelen (tabellfält) och tar bort markeringen

Så här avmarkerar du rader i ett tabellfält programmatiskt:

ElementsForm. TabellFältnamn. SelectedStrings. Klar() ;

Så här väljer du alla rader i ett tabellfält programmatiskt:

För varje Current Row From TabularPart Loop
ElementsForm. TabellFältnamn. Valda rader. Add(CurrentRow) ;
EndCycle ;

Hur man rensar kalkylarket

Tabelldel. Klar() ;

Hur man får den aktuella raden i en tabellsektion

Den aktuella raden är den period som användaren har det här ögonblicket markören är placerad. För att få det måste du hänvisa till kontrollen på formuläret, som är associerad med tabelldelen.

För vanliga formulär skulle koden se ut så här:

ElementsForm. TabellFältnamn. Nuvarande data;

För hanterade formulär:

Element. TabellFältnamn. Nuvarande data;

Hur man lägger till en ny rad i ett kalkylblad

Lägga till en ny rad i slutet av tabellsektionen:

NewRow = Tabelldel. Lägg till() ;

Lägga till en ny rad var som helst i tabellsektionen (efterföljande rader kommer att flyttas):

NewRow = Tabelldel. Klistra in (index)
//Index - numret på den tillagda raden. Radnumreringen börjar från noll.

Ny linje. Attribute1 = "Värde" ;

Hur man programmatiskt fyller i detaljerna för en tabellrad

Om du programmässigt behöver fylla i detaljerna för raden i tabellsektionen som användaren lägger till, måste du använda händelsehanteraren för tabellsektionen AtStartEditing.

Proceduren som skapas av hanteraren har tre parametrar:

  • Element- innehåller en kontroll Tabellfält.
  • Ny linje- booleskt. Innehåller värde Sann, om en ny rad i tabellsektionen läggs till, och Lögn, om användaren började redigera en redan befintlig rad.
  • kopiering- booleskt. Innehåller värde Sann om användaren kopierar strängen, och Lögn i andra fall.

Tänk på ett exempel. Låt oss säga att vi måste fylla i detaljerna i tabellsektionen Kontokonto, om en ny rad läggs till. När du redigerar en befintlig rad behöver du inte ändra reskontrakontot.

Procedur TabularPart Vid redigeringsstart (Element, New Row, Copy)

//Om användaren redigerar en befintlig rad, gör ingenting
Om INTE NewString då
Lämna tillbaka;
EndIf ;

//Om strängen är ny, ställ in kontot
TextString = Element. Nuvarande data; //Mottog den aktuella raden i tabellsektionen
TekString. AccountAccount = Kontoplan. Självförsörjande. Önskat konto;
Slutprocedur

För att ta hänsyn till pengar och varor används olika bord flitigt i näringslivet. Nästan varje dokument är ett bord.

En tabell visar varorna som ska skickas från lagret. I en annan tabell - skyldigheten att betala för dessa varor.

Därför, i 1C, intar arbete med bord en framträdande plats.

Tabeller i 1C kallas även "bordsdelar". Referensböcker, dokument och andra har dem.

Frågan returnerar en tabell som ett resultat av dess körning, som kan nås på två olika sätt.

Det första - snabbare - urvalet, att få rader från det är endast möjligt i ordning. Det andra är att ladda frågeresultatet till en värdetabell och sedan slumpmässig tillgång till det.

//Alternativ 1 - sekventiell åtkomst till frågeresultat

// få bord
Selection = Query.Execute().Select();
// kringgå alla rader i frågeresultatet i ordning
Medan Selection.Next() Loop
Rapport(Utval.Namn);
EndCycle;

//Alternativ 2 - ladda upp till värdetabellen
Query = New Query("SELECT Name FROM Directory.Nomenclature");
// få bord
Tabell = Query.Execute().Upload().
// då kan vi även kringgå alla linjer
För varje rad från bordsslingan
Report(String.Name);
EndCycle;
//eller godtyckligt åtkomst till strängar
String = Table.Find("Skovel", "Namn");

En viktig funktion är att i tabellen, som erhålls från resultatet av frågan, kommer alla kolumner att vara starkt skrivna. Detta innebär att genom att begära fältet Namn från nomenklatursökningen får du en kolumn av typen String med en tillåten längd på högst N tecken.

Tabell på formuläret (tjock klient)

Användaren arbetar med tabellen när den placeras i formuläret.

Vi diskuterade de grundläggande principerna för att arbeta med formulär i lektionen om och i lektionen om

Så låt oss placera tabellen på formuläret. För att göra detta kan du dra tabellen från kontrollpanelen. På samma sätt kan du välja kontrollen Form/Infoga från menyn.

Data kan lagras i en konfiguration - då måste du välja en befintlig (tidigare tillagd) tabelldel konfigurationsobjektet vars formulär du redigerar.

Klicka på knappen "..." i egenskapen Data. För att se listan med tabelldelar måste du expandera objektgrenen.

När du väljer en tabelldel lägger 1C själv till kolumner i tabellen på formuläret. De strängar som användaren matat in i en sådan tabell sparas automatiskt tillsammans med katalogen/dokumentet.

I samma dataegenskap kan du ange ett godtyckligt namn och välja typen ValueTable.

Det betyder att en godtycklig värdetabell har valts. Det kommer inte automatiskt att lägga till kolumner, det kommer inte att sparas automatiskt, men du kan göra vad du vill med det.

Genom att högerklicka på tabellen kan du lägga till en kolumn. I egenskaperna för kolumnen kan du ange dess namn (för referens i 1C-koden), kolumnrubriken på formuläret, kopplingen till attributet för den tabellformade delen (den senare - om inte en godtycklig tabell är vald, men en tabelldel).

I tabellegenskaperna på formuläret kan du ange om användaren kan lägga till/ta bort rader. Ett mer avancerat formulär är kryssrutan ViewOnly. Dessa egenskaper är användbara för att organisera tabeller avsedda för att visa information, men inte för redigering.

För att hantera tabellen måste du visa kommandopanelen i formuläret. Välj menyalternativet Formulär/Infoga Kontroll/Kommandopanel.

I egenskaperna för kommandoraden markerar du kryssrutan Autoslutför så att knapparna i verktygsfältet visas automatiskt.

Tabell på formulär (tunn/hanterad klient)

hanterad form dessa åtgärder ser lite annorlunda ut. Om du behöver placera en tabellsektion på formuläret, expandera objektgrenen och dra en av tabellsektionerna till vänster. Och det är allt!

Om du behöver placera en värdetabell, lägg till ett nytt formulärattribut och ange typen i dess egenskaper - en värdetabell.

För att lägga till kolumner, använd menyn med höger musknapp på detta formulärattribut, objektet Lägg till attributkolumn.

Dra sedan även tabellen åt vänster.

För att tabellen ska ha en kommandorad, i tabellens egenskaper, välj värdena i avsnittet Användning - Kommandoradsposition.

Exportera en tabell till Excel

Alla 1C-tabeller som finns på formuläret kan skrivas ut eller laddas upp till Excel.

För att göra detta, högerklicka på fritt utrymme i tabellen och välj Visa lista.

I en hanterad (tunn) klient kan liknande åtgärder utföras med hjälp av menyalternativet Alla åtgärder/Visa lista.

Hem För nybörjarutvecklare Lär dig programmera

Hur får man data från tabelldelen av dokument?

Tänk till exempel på en situation där du vill få alla lagerartiklar som anges i tabelldelen Varor dokument Realisering av varor och tjänster.

För att göra detta kan du använda en fråga med följande text:

VÄLJ OLIKA Realisering av varor av tjänster Varor.Nomenclature AS Nomenklatur FRÅN dokument. Realisering av varor av tjänster. Goods AS Realisering av varor av tjänster Varor

Som källa anger vi den tabellformade delen av dokumenten - tabellen Document.Sale of GoodsServices.Goods. Deklarera ett fält som ett utdatafält Nomenklatur A som är en del av källtabellen. Dessutom, eftersom samma vara givetvis kan finnas mer än en gång i dokumenten, tillämpar vi OLIKA för att bara få distinkta rader i frågeutdatatabellen.

Låt oss till exempel skapa en bearbetning Produktlista där dokumentet är valt Realisering av varor och tjänster, och genom att klicka på motsvarande knapp, visas en lista över icke-repeterande poster i nomenklaturen som finns i tabelldelen av detta dokument i meddelandefönstret.

För att begränsa valet av nomenklatur till endast nomenklaturen från tabelldelen av ett specifikt dokument använder vi parametern Länk i skicket i begäran ( VAR...):

VÄLJ OLIKA Realisering av Tjänstevaror Varor Nomenklatur AS Nomenklatur FRÅN Dokument Realisering av Tjänstevaror Goods AS Realisering av Tjänstevaror Varor VAR Realisering av Tjänstevaror Varor Länk = & Länk




Topp