1s 8 trenutni red tabelarnog dijela. Kako programski ispuniti detalje retka tablice

19.11.2019 Savjet

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 dodano nova linija tablični dio, 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

Kako instalirati liniju u 8.2 ( Upravljani obrasci) čitati .

Za početak bih vas podsjetio da su podaci u tabelarnom dijelu dokumenta (ili tablici vrijednosti) i tabelarnom polju različiti objekti. Kako bismo izvršili neke vizualne radnje, radimo s poljem tablice. U ovom slučaju koristit ćemo svojstvo “CurrentRow” koje je odgovorno za to koji je red aktivan.

Za odabir reda koji nam je potreban u polju tablice potrebna su nam dva koraka:

1. Pronađite redak koji nam je potreban u podatkovnom objektu koji prikazuje polje tablice
Želio bih naglasiti da je ovdje potreban objekt podataka. Na primjer, imamo dokument Prodaja roba i usluga koji ima tabelarični dio “Roba” i odlučili smo da na obrascu dokumenta bude aktivan 2. redak. Tada ćemo u modul obrasca dokumenta napisati:


// drugi redak ima indeks jedan
RequiredString = Proizvodi;

Ili znamo da je u drugom retku u stupcu Nomenklatura element koda "001", tada koristimo konstrukciju:


// prvo pronađite Nomenklaturu elementa imenika po kodu
// i zatim ga potražite u tabelarnom dijelu “Proizvodi”.
RequiredLine = Products.Find(Directories.Nomenclature.FindByCode("001"));

2. Postavite vrijednost trenutnog retka na pronađeni redak
Sada trebamo dodijeliti vrijednost varijable RequiredRow svojstvu polja tablice CurrentRow:


// ako se naše polje tablice također zove Proizvodi
Form Elements.Products.CurrentRow = RequiredRow;

// ako se polje tablice zove TableField1

Kao rezultat toga, linije koda mogu izgledati ovako:

RequiredLine = Products.Find(Directories.Nomenclature.FindByCode("001"));
Elementi obrasca.TableField1.CurrentRow = RequiredRow;

Prvo morate shvatiti da postoji objekt koji sadrži podatke, na primjer Form DataCollection, i postoji objekt koji vizualno prikazuje podatke - tablica.

U tablici postoji samo trenutni redak, iz njega se ne može saznati sve postojeće vrijednosti FormDataZbirka s kojom je povezana. Zauzvrat, FormDataCollection nema trenutni redak. Za povezivanje ovih objekata u 1C koristi se identifikator, jer se redoslijed redaka može promijeniti iu vizualnom dijelu iu podacima, ali veza se ne smije prekinuti.

Pogledajmo ovo na primjeru:

Obrazac ima specifikaciju tipa (Tablica vrijednosti) - u zagradama jer je stvarni tip FormDataCollection

Detalji su prikazani na obrascu u obliku tablice.

Definiranje retka tablice vrijednosti prema trenutnom retku tablice

Da biste utvrdili koji je redak TK trenutno aktualan, prvo morate dobiti identifikator reda u Tablici, a zatim ga koristiti za pronalaženje reda u TK

RowIdentifier = Elements.TZ.CurrentRow; // Dobivanje identifikatora u tablici LineTZ = TZ.FindByIdentifier(StringIdentifier);

Postavljanje trenutnog retka u tablici

Da biste postavili trenutni red tablice morate učiniti suprotno. Prvo uzmite TK identifikator, a zatim na njega postavite trenutni red tablice.

LineTZ = FormDataCollection; // na primjer, uzmite liniju 1String Identifier = LineTZ.GetIdentifier(); Elements.TK.CurrentRow = RowIdentifier;

Za lakše razumijevanje, možete preuzeti