1s 8.3 tablični dio.

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.

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 odjeljka 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

U ovom ćemo članku napisati obradu za popunjavanje tabličnog 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 danom dokumentu. Primjer iz članka možete preuzeti s ili drugu sličnu obradu s.

Ova uputa dizajniran za upravljane obrasce (8.2 i 8.3). Za obične obrasce (8.1, 8.2) možete koristiti .

Stvorite i spremite novu obradu na svoje računalo. Prvo morate napraviti neke korake registracije.

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

U okviru ovog članka nećemo se detaljno baviti registracijom vanjske obrade i tiskani obrasci u 1C. Sve ove informacije nalaze se u našim drugim člancima.

Popunjavanje tabelarnog dijela dokumenta

Kreirajmo novi obrazac za obradu.

Sada moramo dodati novu naredbu u kreirani obrazac. Pretpostavlja se da će automatski mijenjati podatke u tabelarnom dijelu jednog i više dokumenata (njihovih popisnih obrazaca) istovremeno, bilježeći ih naknadno.

U našem primjeru će se obrađivati ​​već postojeći tablični dio “Proizvodi”. Ručno će se odrediti popust od 5% za svaku liniju. Također, izračunat ćemo sam iznos ovog popusta, jednak količini robe u liniji pomnoženoj s 0,05.

&Na poslužiteljskoj proceduri Izvrši naredbu (naredba, Objekti dodjele) Za svaku narudžbu korisnika iz Objekta dodjele Ciklus Customer OrderObject = Narudžba kupca. GetObject() ; Za svaku TK liniju iz Customer OrderObject-a. Ciklus proizvoda LineTZ. ManualDiscountPercent = 5; LineTZ. Iznos ručnog popusta = TK linija. Iznos * 0 . 05 ; Kraj ciklusa ; CustomerOrderObject. Write() ; Kraj ciklusa ; Kraj postupka

Registracija vanjske obrade

Pokrenite 1C u načinu rada "Enterprise" i otvorite direktorij "Dodatna izvješća i obrada". Pronađimo ga kroz izbornik "Sve funkcije".

Stvoriti novi element u direktoriju koji se otvori i kliknite istoimeni gumb, učitajte svoju obradu iz datoteke. Postavimo ga istovremeno i na obrazac popisa i na obrazac same kartice dokumenta.

Sada će se u obrascu popisa dokumenata “Narudžba kupca” pojaviti gumb “Popunjavanje...” koji će vam omogućiti promjenu ručnih popusta na proizvode za nekoliko dokumenata odjednom.

Ovaj će gumb također biti dostupan na samoj kartici dokumenta.