1s 8.2 tablični dio dobiti. Kako doći do podataka iz tabelarnog dijela dokumenata? Kako dobiti i zaobići odabrane retke tabelarnog dijela

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

Kako doći do podataka iz tabelarnog dijela dokumenata?

Na primjer, razmotrite situaciju u kojoj trebate dobiti sve stavke navedenih u tabličnom odjeljku Roba dokumenata Prodaja roba i usluga.

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

SELECT VARIOUS Prodaja robe i usluga Roba Nomenklatura KAO Nomenklatura IZ dokumenta Prodaja robe i usluga Roba KAO Prodaja robe i usluga Roba

Kao izvor navodimo tablični dio dokumenata – tablicu Dokument Prodaja roba i usluga Roba. Izlazno polje deklariramo kao polje Nomenklatura, koji je dio izvorne tablice. Osim toga, budući da ista stavka proizvoda, naravno, može biti prisutna više puta u dokumentima, koristimo RAZNO da biste dobili samo različite retke u tablici izlaza upita.

Na primjer, stvorimo obradu Lista proizvoda, gdje je dokument odabran Prodaja roba i usluga, a klikom na odgovarajući gumb u prozoru s porukom prikazuje se popis neponovljivih stavki nomenklature sadržanih u tabelarnom dijelu ovog dokumenta.

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

SELECT VARIOUS Prodaja dobara i usluga Roba Nomenklatura KAO Nomenklatura IZ dokumenta Prodaja roba i usluga Roba KAKO Prodaja roba i usluga Roba WHERE Prodaja roba i usluga Roba Link = &Veza

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

  • Imenici
  • Dokumentacija
  • Izvješća i obrada
  • Kontni planovi
  • Karakteristični tipski planovi
  • Planovi kalkulacijske vrste
  • Poslovni procesi i zadaci

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

Pogledajmo neke tehnike za rad s tabličnim dijelovima.

Kako zaobići tabularni dio

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

Za svaki red iz tabelarnog dijela ciklusa

Izvješće(String. TabularPart atribut) ;

Kraj ciklusa ;

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

Kako dobiti i zaobići odabrane retke tabelarnog dijela

Za prikaz informacija iz tabelarnog dijela objekta upotrijebite element forme Polje tablice. Da biste omogućili mogućnost odabira više redaka u polju tablice, trebate postaviti vrijednost Višestruki na njegovom imanju Način odabira.

Da biste dobili popis odabranih redaka, koristite sljedeći kod:

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

SelectedRows = FormElements. TableFieldName. SelectedRows;

Za svaki red iz petlje odabranih redaka

//sadržaj petlje

Kraj ciklusa ;

Kako programski odabrati retke tabelarnog dijela (polja tablice) i poništiti njihov odabir

Da biste programski poništili odabir redaka polja tablice:

Elementi obrasca. TableFieldName. SelectedRows. Čisto() ;

Za programski odabir svih redaka polja tablice:

Za svaki CurrentRow From TabularPart Loop
Elementi obrasca. TableFieldName. SelectedLines. Dodaj(TrenutniRed) ;
Kraj ciklusa ;

Kako očistiti dio stola

TabularPart. Čisto() ;

Kako dobiti trenutni red odjeljka tablice

Trenutačna linija je razdoblje u kojem korisnik ima ovaj trenutak kursor se nalazi. Da biste ga dobili, potrebno je pristupiti kontrolnom elementu na obrascu koji je povezan s tabelarnim dijelom.

Za obične obrasce kod će izgledati ovako:

Elementi obrasca. TableFieldName. CurrentData;

Za upravljane obrasce:

Elementi. TableFieldName. CurrentData;

Kako dodati novi red u odjeljak tablice

Dodavanje novog retka na kraj dijela tablice:

Novi red = Dio tablice. Dodati() ;

Dodavanje novog retka bilo gdje u odjeljku tablice (naredni redovi bit će pomaknuti):

Novi red = Dio tablice. Umetni (indeks)
//Indeks - broj dodane linije. Numeriranje redaka počinje od nule.

Nova linija. Props1 = "Vrijednost" ;

Kako programski ispuniti detalje retka tablice

Ako trebate programski ispuniti pojedinosti retka odjeljka tablice koji je dodao korisnik, morate koristiti rukovatelj događajima odjeljka tablice Prilikom pokretanja uređivanja.

Procedura koju kreira rukovatelj ima tri parametra:

  • Element- sadrži kontrolni element TabularField.
  • Nova linija- booleov. Sadrži vrijednost Pravi, ako je dodan novi red tablice, i Laž, ako je korisnik počeo uređivati ​​već postojeću liniju.
  • Kopirati- booleov. Sadrži vrijednost Pravi, ako korisnik kopira liniju, i Laž u drugim slučajevima.

Pogledajmo primjer. Recimo da trebamo popuniti detalje tabelarnog odjeljka Račun Račun, u slučaju dodavanja novog reda. Prilikom uređivanja postojećeg retka ne morate mijenjati knjigovodstveni konto.

Procedura TabularPartAtStartEditing(Element, NewRow, Copy)

//Ako korisnik uredi postojeću liniju, tada ne radimo ništa
Ako NE NewRow Onda
Povratak;
Završi ako ;

//Ako je linija nova, postavite računovodstveni račun
TechString = Stavka. CurrentData; //Dohvati trenutni red tabelarnog dijela
TechString. Računovodstvo = Kontni planovi. Samonosivi. Potreban Račun;
Kraj postupka

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

U jednoj tablici navedena je roba za otpremu iz skladišta. Druga tablica prikazuje obveze plaćanja ove robe.

Stoga u 1C rad s tablicama zauzima istaknuto mjesto.

Tablice u 1C također se nazivaju "tabularnim dijelovima". Imenici, dokumenti i drugi 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, dobivanje redaka 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

//uzmi tablicu
Odaberite = Query.Run().Select();
// prolazimo redom kroz sve retke rezultata upita
Dok Select.Next() Petlja
Izvješće(Odabir.Naziv);
EndCycle;

//Opcija 2 – učitavanje u tablicu vrijednosti
Zahtjev = Novi zahtjev("SELECT Name FROM Directory.Nomenclature");
//uzmi tablicu
Tablica = Query.Run().Unload().
//dalje također možemo iterirati kroz sve retke
Za svaki redak iz ciklusa tablice
Izvješće(String.Name);
EndCycle;
//ili proizvoljno pristupiti nizovima
Redak = Table.Find("Lopata", "Ime");

Važna značajka je da će u tablici koja se dobije iz rezultata upita svi stupci biti striktno tipizirani. To znači da ćete zahtjevom za polje Naziv iz imenika Nomenklatura dobiti stupac tipa String s dopuštenom duljinom od najviše N znakova.

Tablica na obrascu (debeli klijent)

Korisnik radi s tablicom kada je postavljena na obrazac.

O osnovnim principima rada s oblicima razgovarali smo u lekciji na i u lekciji na

Dakle, postavimo tablicu na obrazac. Da biste to učinili, možete povući tablicu s upravljačke ploče. Slično, možete odabrati Form/Insert Control iz izbornika.

Podatke je moguće pohraniti u konfiguraciju - tada je potrebno označiti postojeći (prethodno dodani) tablični dio konfiguracijskog objekta čiju formu uređujete.

Kliknite gumb "..." u svojstvu podataka. Da biste vidjeli popis tabelarnih dijelova potrebno je proširiti granu Objekt.

Kada odaberete tabularni dio, 1C će sam dodati stupce u tablicu na obrascu. Reci koje korisnik unese u takvu tablicu automatski će se spremiti zajedno s referentnom knjigom/dokumentom.

U isto svojstvo podataka možete unijeti proizvoljan naziv i odabrati vrstu tablice vrijednosti.

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

Klikanje desni klik na tablici možete dodati stupac. U svojstvima stupca možete navesti njegovo ime (za referencu u 1C kodu), naslov stupca na obrascu, vezu s atributom tabelarnog dijela (potonji - ako nije odabrana proizvoljna tablica, ali tablični dio).

U svojstvima tablice na obrascu možete odrediti može li korisnik dodavati/brisati retke. Napredniji oblik je potvrdni okvir Samo prikaz. Ova su svojstva prikladna za korištenje za organiziranje tablica namijenjenih prikazu informacija, ali ne i uređivanju.

Za upravljanje tablicom morate prikazati naredbenu ploču na obrascu. Odaberite stavku izbornika Form/Insert Control/Command Bar.

U svojstvima naredbene trake odaberite potvrdni okvir Automatsko popunjavanje tako da se gumbi na ploči pojavljuju automatski.

Tablica na obrascu (tanki/upravljani klijent)

Na upravljanom obrascu te radnje izgledaju malo drugačije. Ako na obrazac trebate postaviti tabularni dio, proširite granu Objekt i povucite jedan od tabularnih dijelova ulijevo. To je sve!

Ako trebate postaviti tablicu vrijednosti, dodajte novi atribut obrasca iu njegovim svojstvima odredite tip – tablica vrijednosti.

Za dodavanje stupaca upotrijebite izbornik desnom tipkom miša na ovom atributu obrasca, odaberite Dodaj stupac atributa.

Zatim također povucite tablicu ulijevo.

Kako bi tablica imala naredbenu traku, u svojstvima tablice odaberite vrijednosti u odjeljku Upotreba – Položaj naredbene trake.

Prijenos tablice u Excel

Bilo koja 1C tablica koja se nalazi na obrascu može se ispisati ili učitati u Excel.

Da biste to učinili, desnom tipkom miša kliknite slobodan prostor u tablici i odaberite Popis.

U upravljanom (tankom) klijentu slične radnje mogu se izvršiti korištenjem stavke izbornika Sve akcije/Popis prikaza.