1s 8 oblik tabelarnog dijela dokumenta. Kako programski popuniti detalje reda tabele

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 rada sa tabelarnim dijelovima.

Kako zaobići tabelarni dio

Za prelazak preko dijela 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:

Za ponavljanje kroz odabrane linije koristite petlju 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

Za programski poništavanje izbora redova polje 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

Trenutni red je period u kojem korisnik ima trenutno kursor se nalazi. Da biste ga dobili, potrebno je pristupiti kontrolnom elementu na obrascu koji je pridružen tabelarnom dijelu.

Za pravilnih oblika 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 (naknadni redovi će biti pomjereni):

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 nova linija tabelarni dio, 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;
EndProcedure

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, dobivanje 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 stupca možete odrediti njegovo ime (za referencu u 1C kodu), naslov stupca na obrascu, vezu s atributom tabelarnog dijela (potonji - ako nije proizvoljna tabela, već tabelarni dio je odabran).

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, morate prikazati komandni panel na obrascu. 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 rekviziti obrazac i u njegovim svojstvima specificirati tip - tabelu 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 1C tabela 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.

U ovom članku ćemo napisati obradu za popunjavanje tabelarnog odjeljka u 1C 8.3 za tipičnu konfiguraciju 1C:ERP 2.1. Pretpostavimo da je cilj zadatka postaviti ručni popust od 5% za sve artikle u datom dokumentu. Primjer iz članka može se preuzeti sa ili sa druge slične obrade.

Ovo uputstvo dizajniran za upravljane forme (8.2 i 8.3). Za obične forme (8.1, 8.2) možete koristiti .

Kreirajte i sačuvajte novu obradu na svom računaru. Prvo morate izvršiti neke korake registracije.

Otvorite objektni modul i napišite kod ispod (može se uzeti i iz gore navedene obrade). Generalno, struktura se neće mijenjati ovisno o situaciji. Uređuju se samo neki parametri podešavanja, kao i nazivi varijabli, ako je potrebno.

U ovom članku nećemo se detaljno baviti registracijom eksterni tretmani I štampane forme u 1C. Sve ove informacije nalaze se u našim drugim člancima.

Popunjavanje tabelarnog dela dokumenta

Kreirajmo novi obrazac za obradu.

Sada trebamo dodati kreirani obrazac novi tim. Pretpostavlja se da će automatski mijenjati podatke u tabelarnom dijelu i jednog i više dokumenata (njihove liste) istovremeno, s tim da će ih naknadno evidentirati.

U našem primjeru će se obraditi već postojeći tabelarni dio „Proizvodi“. Ručni popust od 5% će biti postavljen za svaku liniju. Takođe, izračunaćemo i sam iznos ovog popusta, jednak količini robe u redu pomnoženoj sa 0,05.

&Na serverskoj proceduri Izvrši naredbu (naredba, objekti dodjele) Za svaki nalog klijenta iz objekata dodjeljivanja ciklusa Objekat narudžbe kupca = Narudžba kupca. GetObject() ;

Za svaku TK liniju iz Customer OrderObject. Proizvodi Cycle LineTZ. ManualDiscountPercent = 5 ;

LineTZ. Ručni iznos popusta = TK linija. Iznos * 0 . 05 ;

EndCycle ; CustomerOrderObject. Write() ; EndCycle ;

EndProcedure

Registracija eksterne obrade

Izbor