1c čitanje iz tabelarnog dijela dokumenta. Kako doći do podataka iz tabelarnog dijela dokumenata? Kako programski popuniti detalje reda tabele

17.03.2024

Tablični dijelovi postoje za mnoge objekte u 1C:

  • Imenici
  • Dokumenti
  • Izvještaji i obrada
  • Kontni planovi
  • Planovi karakterističnih tipova
  • Planovi kalkulacije
  • Poslovni procesi i zadaci

Tablični dijelovi vam omogućavaju pohranjivanje neograničene količine strukturiranih informacija koje pripadaju jednom objektu.

Pogledajmo neke tehnike za rad s tabelarnim dijelovima.

Kako zaobići tabelarni dio

Da biste prešli dio tablice, možete koristiti petlju Za svakoga

Za svaki red iz tabelarnog dijela ciklusa

Izvještaj(String. TabularPart atribut) ;

EndCycle ;

Na svakoj iteraciji u varijablu Linija prenosi se sljedeći red tabelarnog dijela. Vrijednosti detalja reda mogu se dobiti izrazom Line.AttributeName.

Kako doći i zaobići odabrane redove tabelarnog dijela

Za prikaz informacija iz tabelarnog dijela objekta koristite element obrasca Polje tabele. Da biste omogućili mogućnost odabira više redova u polju tabele, morate postaviti vrijednost Višestruko na njegovom imanju Način odabira.

Da biste dobili listu odabranih linija, koristite sljedeći kod:

Petlja se koristi za ponavljanje kroz odabrane linije. Za svakoga:

SelectedRows = FormElements. TableFieldName. SelectedRows;

Za svaki red iz petlje odabranih redova

//sadržaj petlje

EndCycle ;

Kako programski odabrati redove tabelarnog dijela (polje tabele) i poništiti njihov odabir

Da programski poništite odabir redova polja tabele:

Elementi forme. TableFieldName. SelectedRows. Clear() ;

Da programski odaberete sve redove polja tabele:

Za svaki CurrentRow From TabularPart Loop
Elementi forme. TableFieldName. SelectedLines. Dodaj (TrenutniRed) ;
EndCycle ;

Kako očistiti dio tabele

TabularPart. Clear() ;

Kako dobiti trenutni red sekcije tabele

Trenutna linija je vremenska linija u kojoj korisnik trenutno ima kursor. Da biste ga dobili, potrebno je pristupiti kontrolnom elementu na obrascu koji je pridružen tabelarnom dijelu.

Za obične forme kod će izgledati ovako:

Elementi forme. TableFieldName. CurrentData;

Za upravljane forme:

Elementi. TableFieldName. CurrentData;

Kako dodati novi red u sekciju tabele

Dodavanje novog reda na kraj dijela tabele:

NewRow = TablePart. Dodaj() ;

Dodavanje novog reda bilo gdje u odjeljku tablice (naredni redovi će biti pomaknuti):

NewRow = TablePart. umetnuti (indeks)
//Indeks - broj dodane linije. Numerisanje redova počinje od nule.

NewRow. Props1 = "Vrijednost" ;

Kako programski popuniti detalje reda tabele

Ako trebate programski popuniti detalje reda odjeljka tablice koji je dodao korisnik, morate koristiti rukovalac događaja odjeljka tablice Kada započnete uređivanje.

Procedura koju kreira rukovalac ima tri parametra:

  • Element- sadrži kontrolni element TableField.
  • NewString- boolean. Sadrži vrijednost Istina, ako se doda novi red tabele, i laž, ako je korisnik počeo uređivati ​​već postojeću liniju.
  • Kopiraj- boolean. Sadrži vrijednost Istina, ako korisnik kopira liniju, i Lazi u drugim slučajevima.

Pogledajmo primjer. Recimo da trebamo popuniti detalje tabelarnog dijela AccountAccount, u slučaju da se doda novi red. Prilikom uređivanja postojeće linije, ne morate mijenjati računski račun.

Procedura TabularPartAtStartEditing(Element, NewRow, Copy)

//Ako korisnik uređuje postojeću liniju, onda ništa ne radimo
Ako NIJE NewRow Onda
Povratak;
EndIf ;

//Ako je linija nova, postavite računski račun
TechString = Stavka. CurrentData; //Nabavite trenutni red tabelarnog dijela
TechString. Računovodstvo = Kontni plan. Samonosivi. RequiredAccount;
Kraj procedure

Za obračun novca i robe u poslovanju se široko koriste razne tablice. Gotovo svaki dokument je tabela.

U jednoj tabeli je navedena roba koja se otprema iz skladišta. Druga tabela prikazuje obaveze plaćanja ove robe.

Stoga u 1C rad sa tablicama zauzima istaknuto mjesto.

Tabele u 1C nazivaju se i „tabelarni dijelovi“. Imenici, dokumenti i ostalo ih imaju.

Upit, kada se izvrši, vraća tablicu kojoj se može pristupiti na dva različita načina.

Prvi - brži - odabir, dobijanje redova iz njega moguće je samo redom. Drugi je učitavanje rezultata upita u tablicu vrijednosti i zatim nasumični pristup njoj.

//Opcija 1 – sekvencijalni pristup rezultatima upita

//uzmite sto
Odaberite = Query.Run().Select();
// prolazimo redom kroz sve redove rezultata upita
Dok Select.Next() petlja
Izvještaj(Izbor.Naziv);
EndCycle;

//Opcija 2 – učitavanje u tablicu vrijednosti
Zahtjev = Novi Zahtjev("IZABERI Ime IZ Direktorija.Nomenklature");
//uzmite sto
Tabela = Query.Run().Unload().
// nadalje možemo iterirati kroz sve redove
Za svaki red iz ciklusa tabele
Izvještaj(String.Name);
EndCycle;
//ili proizvoljno pristupiti nizovima
Red = Table.Find("Lopata", "Ime");

Važna karakteristika je da će u tabeli koja se dobija iz rezultata upita sve kolone biti striktno otkucane. To znači da ćete zahtjevom za polje Ime iz imenika Nomenklature dobiti stupac tipa String s dozvoljenom dužinom od najviše N znakova.

Tabela na obrascu (debeli klijent)

Korisnik radi sa tabelom kada je postavljena na obrazac.

O osnovnim principima rada sa formama razgovarali smo u lekciji i u lekciji dalje

Dakle, stavimo tabelu na obrazac. Da biste to uradili, možete prevući tabelu sa panela Kontrole. Slično, možete odabrati Form/Insert Control iz menija.

Podaci se mogu pohraniti u konfiguraciju - tada je potrebno odabrati postojeći (prethodno dodan) tabelarni dio konfiguracijskog objekta čiji obrazac uređujete.

Kliknite na dugme "..." u svojstvu Podaci. Da biste vidjeli listu tabelarnih dijelova, potrebno je proširiti granu Objekt.

Kada odaberete tabelarni dio, 1C će sam dodati kolone u tablicu na obrascu. Redovi koje korisnik unese u takvu tabelu biće automatski sačuvani zajedno sa referentnom knjigom/dokumentom.

U isto svojstvo podataka možete unijeti proizvoljno ime i odabrati tip tablice vrijednosti.

To znači da je odabrana proizvoljna tablica vrijednosti. Neće automatski dodavati kolone, niti će se automatski čuvati, ali s njim možete raditi šta god želite.

Desnim klikom na tabelu možete dodati kolonu. U svojstvima kolone možete odrediti njen naziv (za referencu u 1C kodu), naslov kolone na obrascu, vezu s atributom tabelarnog dijela (potonji - ako nije odabrana proizvoljna tabela, već tabelarni deo).

U svojstvima tabele na obrascu možete odrediti da li korisnik može dodavati/brisati redove. Napredniji obrazac je okvir za potvrdu Samo prikaz. Ova svojstva su zgodna za korištenje za organiziranje tabela namijenjenih za prikaz informacija, ali ne i za uređivanje.

Da biste upravljali tabelom, potrebno je da na obrascu prikažete komandnu tablu. Odaberite stavku menija Form/Insert Control/Command Bar.

U svojstvima komandne trake potvrdite izbor u polju za potvrdu Automatsko popunjavanje tako da se dugmad na panelu automatski pojavljuju.

Tabela na obrascu (tanki/upravljani klijent)

Na upravljanom obrascu ove akcije izgledaju malo drugačije. Ako trebate postaviti tabelarni dio na obrazac, proširite granu Objekt i povucite jedan od tabelarnih dijelova ulijevo. To je sve!

Ako trebate postaviti tablicu vrijednosti, dodajte novi atribut forme i u njegovim svojstvima navedite tip – tablicu vrijednosti.

Da biste dodali kolone, koristite meni desnim klikom na ovaj atribut obrasca, odaberite Dodaj kolonu atributa.

Zatim povucite tabelu ulijevo.

Da bi tabela imala komandnu traku, u svojstvima tabele izaberite vrednosti u odeljku Upotreba – Položaj komandne trake.

Učitavanje tabele u Excel

Bilo koja tabela 1C koja se nalazi na obrascu može se ispisati ili prenijeti u Excel.

Da biste to uradili, kliknite desnim tasterom miša na prazan prostor u tabeli i izaberite Lista.

U upravljanom (tankom) klijentu, slične radnje se mogu izvesti pomoću stavke menija Sve akcije/Prikaži listu.

Početna Za programere početnike Učenje programiranja

Kako doći do podataka iz tabelarnog dijela dokumenata?

Na primjer, uzmite u obzir situaciju u kojoj trebate dobiti sve stavke stavke navedene u tabličnom dijelu Roba dokumenata Prodaja roba i usluga.

Da biste to učinili, možete koristiti zahtjev sa sljedećim tekstom:

ODABERITE RAZLIČITIH Prodaja roba i usluga Nomenklatura AS Iz dokumenta Prodaja robe i usluga

Kao izvor navodimo tabelarni dio dokumenata - tabelu Dokument o prodaji robe i usluga. Izlazno polje deklariramo kao polje Nomenklatura, koji je dio izvorne tabele. Osim toga, budući da bi isti proizvod, naravno, mogao biti prisutan više puta u dokumentima, koristimo se VARIOUS da dobijete samo različite redove u tabeli izlaza upita.

Na primjer, napravimo obradu Lista proizvoda, gdje je dokument odabran Prodaja roba i usluga, a klikom na odgovarajuće dugme u prozoru za poruke prikazuje se lista neponovljivih stavki nomenklature sadržanih u tabelarnom delu ovog dokumenta.

Kako bismo ograničili izbor stavki samo na stavke iz tabelarnog dijela određenog dokumenta, koristimo parametar Link u stanju u zahtjevu ( GDJE...):

ODABIR RAZLIČITIH Prodaja roba i usluga AS Nomenklatura KAKO Prodaja robe i usluga Roba