Brzo. Podređeni imenici. Brzo Kako stvoriti podređeni imenik 1c

Klyuev V.V.

http://prof1c.kklab.ru

Podređeni imenici

Najvjerojatnije ste već više puta primijetili u običnim tipičnim konfiguracijama da su direktoriji međusobno povezani, kada kada odaberete element direktorija (direktorij 1), vrijednost drugog direktorija (direktorij 2) se "filtrira" ovom vrijednošću - to jest, vrijednosti odabrani su samo oni koji pripadaju trenutnom elementu imenika; na primjer, ovo je imenik “Odjel”, čiji je vlasnik imenik “Organizacija”.

Kako bismo odmah razumjeli bit onoga što se događa, pogledajmo što se događa u praksi. Da biste to učinili, možete stvoriti praznu konfiguraciju od nule ili otići na bilo koju postojeću kopiju infobaze i stvoriti 2 direktorija u konfiguratoru.

Imenik1 i Imenik2. U imeniku2 idite na karticu "Vlasnici" i odaberite vlasnika - "Imenik1", pogledajte kako je prikazano na slici.

Sada, kada kreirate elemente u “Directory2”, sustav će od vas tražiti da unesete vlasnika directory1. Postoji opcija - Korištenje subordinacije - kada je subordinacija postavljena na Elemente, grupe ili grupe i elemente.

Čini se da je sve jednostavno, ali za korisnike nastaju problemi. Prilikom otvaranja "Imenika 2" korisnik vidi sve elemente u potpuno nerazumljivom redoslijedu, a osim toga, ako ste radili sa standardnim konfiguracijama, mogli ste primijetiti da izravno u direktoriju "Divizije" nigdje ne navodite vlasnika, već prilikom otvaranja imenika možete odabrati organizaciju i, ovisno o tome, primiti elemente koji su podređeni jednoj ili drugoj organizaciji; Štoviše, kada kreirate stavku imenika “Odjeli”, prema zadanim postavkama dobit ćete vlasnika kojeg ste odabrali u obliku popisa odjeljaka.
Dakle, počnimo i stvorimo "Obrazac popisa" za naš "Imenik2", za sada ga dostavite 1C bez ikakvih promjena, kasnije ćemo prilagoditi obrazac koji je stvorio dizajner.
U “Directory2” idite na karticu Forms i dodajte (+) novi obrazac Directory List Form i kliknite Finish.

Kreirajmo atribut obrasca s tipom podataka "Directory1.Link", s nazivom "SelectionDirectory1", i povucite ovaj atribut na obrazac, postavite naslov "Directory1".


Sada, da bi "ovo čudo" radilo, morate napisati kod koji će izvršiti odabir prilikom odabira Elementa imenika1.

8.2, 8.3 Upravljani obrasci

Da bismo u obliku imeničkog popisa prikazali samo elemente koji su nam potrebni za odabrani element Imenika1, potrebno je programski izvršiti selekciju - po odabranom elementu, za što ćemo se koristiti unaprijed definiranom procedurom kontrole SelectionDirectory1. i napisati kod koji obavlja navedeni zadatak.
Na vrhu odaberite "Selection Directory1", desnom tipkom miša kliknite i odaberite "Properties", u prozoru koji se pojavi pronađite svojstvo "OnChange" i kliknite na povećalo, čime idete na modul obrasca; automatski se kreira procedura “Selection Directory1OnChange(Element)”.

U postupku unesite sljedeći tekst:

& Na listi Client Procedure Selection Directory1OnChange(Element). Izbor. Elementi. Čisto() ; // Element odabira = Popis. Izbor. Elementi. Dodaj(Upišite(" Izbor ElementData Layout" ) ); Element odabira. LeftValue = Novo polje sastava podataka (" Vlasnik "); Element odabira. Prikaz usporedbe = Prikaz usporedbe sastava podataka. Jednako; Element odabira. Upotreba = True ; Element odabira. Desna vrijednost = Direktorij odabira1; Element odabira. DisplayMode = DisplayModeElement aDataCompositionSettings.Unavailable;EndProcedure

8.2 Redoviti obrasci


Kod izgradnje obrazaca sve je isto, samo obrasci moraju biti kreirani kao obični, upravljani obrasci ne rade u običnoj aplikaciji.
Razlika će biti u postupku odabira elementa u obrascu liste i izradi rekvizita.
Da biste dodali pojedinosti u uobičajeni obrazac, kliknite gumb

Referenca procedure1OnChange(Element)ThisForm. Izbor. Vlasnik. Vrijednost = Imenik1. Veza; Ova forma. Izbor. Vlasnik. Upotreba = Istina ; Ova forma. Elementi obrasca. Popis imenika. Postavke odabira. Vlasnik. Dostupnost = False; //(?) Kraj postupka

Pretposljednji red(?) - zabranjujemo promjenu odabira kada korisnik otvori parametre odabira - samo preko kontrolnog elementa!

Video (bez zvuka - sve je jasno bez zvuka)

Što su 1C imenici i kakvu ulogu imaju u 1C - o tome i još mnogo toga u našem novom članku.

Imenici u 1C stvoreni su za pohranu informacija koje će se koristiti za rad u drugim dokumentima u 1C, na primjer, izvješća. Ispada da se rad u sustavu 1C provodi prema referentnim knjigama, a sve informacije koje su pohranjene u njima nazivaju se normativnim i referentnim.

Čemu su namijenjeni 1C imenici?

Bilo koji proizvod poslužit će kao jasan primjer za objašnjenje. Za njegovo kretanje u poduzeću (kupnja, skladištenje u skladištu, montaža, prodaja itd.) Sastavljaju se posebni dokumenti, na primjer obrasci, računi itd. U normalnoj situaciji svi bi se ti dokumenti ispunjavali ručno, no ako se koristi automatizirani sustav, to ne samo da će uštedjeti vrijeme, već će spriječiti pojavu mnogih pogrešaka.

Automatizirani sustav vam omogućuje da jednom napravite popis koji zatim uključuje upravo ovaj proizvod. Po potrebi u opisu uvijek možete navesti potrebne podatke, karakteristike i druge informacije. Ispada da su 1C imenici gotove liste s podacima o proizvodima, klijentima, uslugama itd. Po potrebi se popisi mogu mijenjati i dopunjavati.

Gdje se nalaze 1C imenici?

Obično sučelje za rad u 1C Enterpriseu razvija programer, što znači da se različiti direktoriji mogu nalaziti u potpuno različitim izbornicima.

U debelom klijentu, korisnik s administratorskim pravima može otvoriti bilo koji 1C dokument i ima pristup bilo kojem imeniku. Da biste to učinili, morate otvoriti izbornik "operacije", kliknuti na "direktorije" i odabrati onaj koji vam je potreban s ponuđenog popisa.


Ako pogledate u tanki klijent, tamo također postoji sličan izbornik. Zove se "sve funkcije". Što se tiče rada, sličan je izborniku "operacije".

U modu konfiguratora, pristup svim imenicima je dostupan kroz konfiguracijsku granu. Odatle možete raditi s bilo kojim imenikom, prilagoditi njegov predložak, promijeniti ga i tako dalje. Za početak dvaput kliknite mišem na njega.

Kako izgledaju 1C imenici?

Kada otvorite imenik 1C 8, pred vama se otvara obrazac u obliku liste. Radi praktičnosti, popisi se mogu grupirati prema određenim karakteristikama i karakteristikama.


Kada otvorite grupu, ispred vas se pojavljuje popis svih elemenata. A nakon klika na sam element, postat će dostupan obrazac imenika, polja u kojima se mogu ispuniti i mijenjati.

Najčešće u 1C Enterpriseu postoje dva obavezna polja za imenike:

    Naziv imenika.

Osmišljeni su kako bi pomogli razlikovati jedan element od drugog. Ponekad programeri onemoguće ove opcije, ali to se događa izuzetno rijetko.


Polje "kod" najčešće je zatvoreno za uređivanje od strane korisnika (potrebna su posebna prava pristupa) i njegova se vrijednost automatski generira.

Nomenklatura u 1C 8.3 označava materijale, poluproizvode, opremu, usluge, povratnu ambalažu, radnu odjeću itd. Svi ovi podaci pohranjeni su u imeniku Nomenklatura. Do njega možete doći iz odjeljka "Imenici", pododjeljka "Robe i usluge", stavke "Nomenklatura"

Vidjet ćete popis pozicija direktorija koji ima hijerarhijsku strukturu na više razina.

U ovom članku ćemo korak po korak pogledati sve upute za početno ispunjavanje stavki u 1C 8.3 koristeći primjer

Radi lakšeg korištenja ovog priručnika, 1C računovodstvo koristi grupe (mape). Oni kombiniraju nomenklaturu koja ima zajedničke karakteristike. U svakoj grupi je pak moguće kreirati podgrupe (slično datotečnom sustavu na računalu). Broj razina hijerarhije postavlja programer, ali u početku nema ograničenja.

Kreirajmo novu grupu. U obliku popisa imenika "Nomenklatura" kliknite na gumb "Stvori grupu".

Navedite naziv grupe koju želite stvoriti. Možete ispuniti i njegovu vrstu, ali nije nužno.

Kao što možete vidjeti na donjoj slici, grupa koju smo stvorili bila je smještena u “Materijali”. Ako ga trebate premjestiti u drugu grupu ili u root, otvorite kontekstni izbornik i odaberite "Premjesti u grupu". Otvorit će se prozor u kojem ćete morati odrediti novu lokaciju.

Stvaranje nove stavke

Prijeđimo na dodavanje same nomenklature. Da biste to učinili, u obrascu s popisom imenika kliknite gumb "Stvori". Ispred vas će se otvoriti kartica novog artikla.

Ispunite polje "Naziv". Vrijednost u polju "Puno ime" bit će unesena automatski. Imajte na umu da se puni naziv prikazuje u izvješćima, tiskanim obrascima dokumenata, cjenicima itd. Polje "Naziv" koristi se za prikladno pretraživanje stavki u programu.

Ako je potrebno, ispunite preostale podatke:

  • Polja “Vrsta artikla” i “Uključeno u grupu” popunjavaju se automatski iz podataka grupe u kojoj se kreira novi artikl artikla. Mogu se mijenjati ako je potrebno.
  • Vrijednost u polju “Jedinica” je jedinica skladištenja stanja ove stavke.
  • Porezna stopa navedena u detalju “% PDV” može se po potrebi promijeniti tijekom izrade dokumenata.
  • "Prodajna cijena" je standardno naznačena na prodajnim dokumentima. Ova se postavka može promijeniti klikom na hipervezu “?” pored ovog polja.
  • U odjeljku “Proizvodnja” možete navesti troškovnu stavku za određenu stavku i njenu specifikaciju (za gotove proizvode), odnosno sastav.
  • Ovisno o specifičnostima nomenklature, popunjavaju se preostali odjeljci, kao što su “Alkoholni proizvodi” i “Uvozna roba”.

Nakon što ste ispunili karticu za predmet koji izrađujete, potrebno ga je zapisati.

Koja je vrsta stavke u 1C 8.3 i kako ih konfigurirati

Kako biste konfigurirali vrste nomenklature, kliknite na odgovarajuću hipervezu u obliku popisa direktorija "Nomenklatura".

Vrste nomenklature potrebne su za odvajanje stavki. Svakoj vrsti se može dodijeliti vlastita. Vrlo je važno izbjeći prisutnost duplikata u ovom imeniku, što može dovesti do neispravnog rada konta računovodstva stavki.

Prilikom instaliranja standardne konfiguracije od dobavljača, ovaj imenik će već biti ispunjen glavnim tipovima stavki. Ako je vrsta artikla usluga, ne zaboravite staviti odgovarajuću zastavicu kada ga kreirate.

Računi računovodstva stavki u 1C 8.3

Za generiranje računovodstvenih unosa morate postaviti računovodstvene račune. To se može učiniti iz obrasca popisa direktorija “Nomenklatura” klikom na hipervezu “Knjigovodstvena računa stavki”.

U standardnoj konfiguraciji 1C Računovodstva 3.0 ovaj registar je već popunjen. Ali ako je potrebno, može se podesiti ručno.

Računovodstveni računi mogu se konfigurirati:

  • prema određenoj nomenklaturnoj stavci;
  • po nomenklaturnoj skupini;
  • prema vrsti nomenklature;
  • po skladištu;
  • prema vrsti skladišta;
  • po organizaciji;
  • u cijeloj nomenklaturi, navodeći praznu vezu kao vrijednost.

Ako su za određenu stavku i za nju konfigurirani različiti računovodstveni konti, tada će se konto preuzeti sa stavke. U takvim slučajevima konsolidirani računi imaju manji prioritet.

Određivanje cijena artikala

Jedan artikl može imati više cijena. Razlikuju se po vrstama, kao što su veleprodajna cijena, maloprodajna cijena itd.

Idite na karticu elementa imenika "Nomenklatura" i slijedite hipervezu "Cijene".

Ispred vas će se otvoriti lista u kojoj možete za određenu vrstu na određeni datum. Jednostavno označite cijenu u odgovarajućem stupcu, a zatim kliknite na gumb "Zabilježi cijene". Automatski će se izraditi dokument za određivanje cijene artikla, a na ovom popisu vidjet ćete poveznicu na njega.

Pogledajte i video o nomenklaturi:

Psihijatrijska bolnica. Jedan idiot drugom:
-Je li ti se svidjela moja priča koju sam ti jučer dao na čitanje?
-Da, ali nekako je sve mutno i ima mnogo likova.
Doktor ulazi:
-Pa, idioti, tko mi je ukrao imenik?...

Namjena imenika
Imenik je popis mogućih vrijednosti određenog atributa. Imenici se koriste u slučajevima kada je potrebno eliminirati dvosmislen unos informacija.Na primjer, da bi kupac, prodavač, skladištar, direktor razumjeli o kojem proizvodu je riječ, svi ga moraju nazvati isto. I u ovom slučaju potrebna je referentna knjiga. Obično u trgovačkom poduzeću ima oblik cjenika, a ako je takav imenik pohranjen na računalu, tada se u njega unosi sav mogući asortiman robe s kojom trgovačko poduzeće radi.

Sustav 1C:Enterprise omogućuje vam održavanje gotovo neograničenog broja potrebnih imenika. Svaki imenik je popis homogenih objekata: zaposlenici, organizacije, roba itd. Svaki takav objekt se poziva element imenika.

Sa stajališta korisnika treba imati na umu da se u konfiguratoru ne kreira sam imenik kao popis vrijednosti, već se razvija predložak za imenik, njegov predložak. Tijekom procesa konfiguracije opisuje se struktura informacija koje će biti pohranjene u imeniku, razvija se zaslonski i, po potrebi, ispisani prikaz imenika, te specificiraju različite značajke njegovog “ponašanja”.

Atributi imenika

Kao obvezne detalje, svaki imenik ima Kodirati I Ime. Kod elementa imenika može biti numerički ili tekstualni. Sustav 1C:Enterprise pruža široke mogućnosti za rad s kodovima elemenata imenika: automatsko dodjeljivanje kodova, automatska kontrola jedinstvenosti koda i drugo.

Osim šifre i naziva, sve dodatne informacije o elementu imenika mogu se pohraniti u imenike sustava 1C:Enterprise. Za pohranjivanje takvih informacija u imeniku može se izraditi popis pojedinosti. Pomoću mehanizma pojedinosti imenika lako je organizirati, na primjer, datoteku zaposlenika.Na primjer, imenik Zaposleniciće gotovo sigurno imati atribute Naziv radnog mjesta, Plaća i drugi.Tvrtka 1C predvidjela je programere i predstavila ih sve referentne knjige dva već definirana atributa: Kodirati I Ime. Doista, gotovo svaki predmet iz stvarnog života sadrži te atribute. Na primjer, za zaposlenike šifra je osobni broj, a ime je prezime, ime, patronim (puno ime).

Vrste podataka

Za svaki atribut imenika morate navesti njegovu vrstu podataka, na primjer, " broj", "crta", "datum"(u verziji 8.0 postoji i Booleov tip - True ili False). Ovo su osnovni tipovi, ali možete navesti i složene tipove podataka. Na primjer, atribut Naziv radnog mjesta ima tip podataka Pozicije. U ovom slučaju, vrijednosti ovog atributa bit će odabrane iz imenika Pozicije. Ovako se ostvaruje najjednostavnija veza između direktorija, kada se vrijednosti atributa jednog direktorija biraju iz drugog direktorija.

Hijerarhijski imenici

Popis elemenata imenika u sustavu 1C:Enterprise može biti više razina. U ovom slučaju, sve linije imenika bit će podijeljene u 2 vrste: "samo" elementi imenika i skupine priručnik. Grupe vam omogućuju pomicanje na niže razine direktorija s više razina. Korištenje imenika na više razina omogućuje vam organiziranje unosa informacija u imenik s potrebnom razinom detalja. Elementi i skupine elemenata u direktoriju s više razina mogu se prenositi iz jedne skupine u drugu.

Podređeni imenici

Odnos se može uspostaviti između imenika podređenosti. U terminima relacijske baze podataka, između tablica se uspostavlja odnos jedan prema više. U tom slučaju svaki element podređenog imenika bit će povezan s jednim od elemenata vlasničkog imenika. Ponekad možemo reći da elementi jednog imenika pripadati elementi drugoga. Na primjer, sustav može imati imenik poreznih olakšica. Onda se može podređeni Imenik Zaposlenici. To znači da "Zaposlenik ima porezne olakšice".

Imenik Zaposlenici

Imenik Porezne olakšice

  • Ivanov Ivanov Ivanov
  • Petrov Petr Petrovič
  • Svetlov Mihail Petrovič
  • Cvetkov Anton Vasiljevič

( vlasnik Petrov Petar Petrovič)

  • Povlastice za branitelje
  • Dobrobit za djecu
  • Ivanov Ivanov Ivanov
  • Petrov Petr Petrovič
  • Svetlov Mihail Petrovič
  • Cvetkov Anton Vasiljevič

( vlasnik Svetlov Mihail Petrovič)

  • Dobrobit za Afganistance

Dijelovi tablice (samo verzija 8.0)

U verziji 8.0 postalo je moguće da element imenika ima nekoliko tabličnih dijelova. Preporuča se koristiti ovu značajku za odražavanje informacija koje se odnose na dati element, ali koji nemaju vlastiti objektni entitet (za koji se preporučuje stvoriti podređeni direktorij). Na primjer, za referencu Za proizvode se može kreirati tablični odjeljak Mjerne jedinice; za imenik Zaposlenici mogu se kreirati tablični odjeljci Obrazovanje i Sastav obitelji. Rad s tabelarnim dijelovima sličan je radu s podređenim imenicima, osim što tabularni dijelovi ne mogu biti tipovi, što znači da više neće biti moguće kreirati atribut tipa Obrazovanje.

Usporedba imenika s drugim objektima

Objekt

Sličnosti

Razlike

Konstante pohranjuje vrijednost, spremljenu u bazi podataka Imenik ne pohranjuje samo jednu vrijednost, već cijeli popis homogenih objekata.
Dokumentacija spremljeno u bazi podataka, ima pojedinosti, dokumenti mogu biti podređeni jedni drugima Imenik pohranjuje normativne i referentne informacije, a dokumenti odražavaju događaje iz stvarnog svijeta. Obično se vrijednosti detalja dokumenta odabiru iz direktorija. Dokument se obično knjiži, dokument mora imati datum i vrijeme, dokument može sadržavati tabularni dio, kojeg nema u imenicima (u verziji 8.0 imenici i dokumenti mogu imati više tabelarnih dijelova). Imenici mogu biti višerazinski, imenik može sadržavati periodične detalje kojih nema u dokumentima (u verziji 8.0 nema periodičnih detalja, ali postoje periodični registri informacija).
Transferi pohranjen u bazi podataka, pohranjuje popis vrijednosti Korisnik unosi skup vrijednosti u imenik u načinu rada Enterprise, a za popise popis vrijednosti navodi programer u načinu rada konfiguratora. Nabrajanja se obično koriste u naredbama If.
Tablica vrijednosti ima retke i stupce (nisu pohranjeni u bazi podataka) Tablica vrijednosti dizajnirana je za pohranjivanje posrednih podataka u memoriju računala koji se javljaju tijekom rada programa. Tablica vrijednosti može pohraniti heterogene objekte, dok direktorij može pohraniti sve elemente iste vrste. Tablice vrijednosti ne mogu biti višerazinske niti jedna drugoj podređene.
ListValues pohranjuje popis vrijednosti (nije spremljeno u bazi podataka) Popis vrijednosti može pohraniti heterogene objekte, au direktoriju sve elemente iste vrste

Osnove programiranja

Izrada i snimanje novog elementa

Pronalaženje stavke imenika


//npr. u nalogu o otkazu
Ref. FindElement(Zaposlenik);

Ref. FindByCode(123);
Ref. FindByName("Ivanov Ivan Ivanovič");
Ref. FindByDetails("Plaća", 5000);

//ako je element pronađen, on postaje trenutni i može se čitati ovako:

If Spr.FindByName("Ivanov Ivan Ivanovich") = 1 Onda
........FoundCotr = RefCotr. CurrentItem();
završi ako;


//u verziji 8.0, ako je element pronađen, vraća se, inače se vraća Nedefinirano

FoundCotr = RefCotr. FindByCode(123);
FoundCotr = RefCotr. FindByName("Ivanov Ivan Ivanovič");
FoundCotr RefCotr. FindByDetails("Plaća", 5000);

FoundSotr = SprSotr.FindByName("Ivanov Ivan Ivanovich");
If FoundSotr = Undefined Then
.....//element nije pronađen
završi ako;

Brisanje elementa imenika

Ref. Izbrisati(1); //trenutno brisanje

Ref. Izbrisati(0); //označi za brisanje
Ref. Poništite opciju Izbriši();


Oznaka = Ref. Brisanje zastavice(); //napomena: ovo je metoda


Ref. Izbrisati(); //trenutno brisanje

Ref. PostaviDeleteMark (istina); // označiti za brisanje
Ref. Postavi oznaku brisanja (netočno); //polijetanje označiti za brisanje

//možete provjeriti je li element označen za brisanje
//postoji svojstvo MarkDelete, tipa je Boolean - True ili False

Oznaka = Ref. Brisanje zastavice; //napomena: ovo je svojstvo
If Mark = True Then
.....//element označen za brisanje
završi ako;

Nabrajanje elemenata imenika


Ref. Odaberite Stavke();
Dok je SprSotr. GetElement() = 1 ciklus
...
...Obavijesti("Zaposlenik" + Spr.Name);
EndCycle;


odabir = Imenici.Zaposlenici. Odaberite();
Za sada samo izbor. Sljedeći() = 1 ciklus
... //akcije sa sljedećim elementom
EndCycle;


Roditelj
Iteracija po elementima unutar grupe. Grupa u smislu 1C je "roditelj".


Ref.FindByName("Radi");
Radi = Ref.CurrentItem();
Ref. UseParent(radni);
//dalje, na primjer, ciklus za zaposlenike (vidi gore)
...



GroupWorking = SprSotr.FindByName("Radi");
odabir = Ref. Odaberite(Grupni rad);
Za sada samo izbor. Sljedeći() = 1 ciklus
... //akcije sa sljedećim elementom
...Obavijesti("Zaposlenik" + odabir.Ime);
EndCycle;

Vlasnik
Nabrajanje elemenata imenika koji pripadaju elementu drugog imenika.
Jedna referentna knjiga podređeni drugu referentnu knjigu, na primjer referentnu knjigu. Porezne olakšice podliježu Ref. Zaposlenici.

Periodični detalji
Čitanje i pisanje periodičnih detalja.
Postavljanje datuma za uzorkovanje periodičnih detalja za cijeli imenik.


//ovako saznajemo što je zaposlenik imao
//kategorija za određeni datum

Kategorija = SprSotr.Kategorija. Dobiti(Neki datum);

//ovako ćemo postaviti kategoriju za zaposlenika
//za određeni datum
RefSort.Category. Instalirati(Neki datum, nova kategorija);

//možete postaviti datum uzorkovanja za periodično
//detalji za cijeli imenik
Ref. UseDate(Neki datum);

//tada više ne možete koristiti Install and Get ispod
//pristup periodičnim detaljima postaje
//isto kao i za obične detalje
Kategorija = SprSotr.Kategorija;
Spr.Plaća = 6000;

U verziji 8.0 nema periodičnih detalja. Umjesto toga potrebno je koristiti vremenski proširene informacijske registre.

Ekranski oblici priručnika

Obrazac popisa imenika

Kako biste korisnicima olakšali rad s imenikom u fazi konfiguracije, možete stvoriti nekoliko vrsta ekranske forme za prikaz imenika. Ovisno o kontekstu pozivanja imenika, možete odrediti upotrebu određenog dijaloškog okvira za rad s njim.

Bolje je vidjeti jednom nego čuti sto puta, stoga je u nastavku primjer obrasca popisa za imenik zaposlenika:




Modul obrasca popisa sadrži procedure i funkcije koje djeluju u kontekstu ovog obrasca (u kontekstu objekta imenika).

Unaprijed definirani postupci pozivaju sustav 1C pri pojavi određenih događanja. Predefinirane procedure poziva sustav 1C kada se dogode određeni događaji, pa su one rukovatelji događajima. U verziji 8.0 naziv procedure može biti bilo koji, ne mora nužno biti isti kao naziv događaja. Osim toga, u verziji 8.0 popis događaja za sve objekte značajno je proširen.

Događaj

Opis

Prilikom otvaranja Poziva se kada se otvori obrazac popisa imenika. Možete postaviti početne vrijednosti za varijable, provjeriti korisnička prava za otvaranje ovog direktorija itd.
Na zatvaranju Poziva se kada se zatvori obrazac popisa imenika.
Prilikom snimanja

Poziva se prilikom pisanja elementa imenika, ako se elementi unesu izravno u obrazac popisa, a ne u obrazac elementa. Ovo se koristi za imenike s jednostavnom strukturom, na primjer imenik poslova. Ovaj vam postupak omogućuje provjeru pogrešaka u vašim ulaznim podacima.

Primjer, položaji imenika

WhenSelectingParent(NewParent) Poziva se kada je odabran roditelj (grupa). Upotrijebite ovu proceduru za provjeru prava korisnika za pregled članova određene grupe.
Prilikom odabira vlasnika (novi vlasnik) Poziva se kada je odabran vlasnik host imenika. Ima smisla ako je ovaj imenik podređen drugom.
WhenSettingSelection(atributi,vrijednost) Predefinirana procedura za interaktivno postavljanje odabira na bilo koji način (odabir, brzi odabir, odabir po vrijednosti, povijest odabira) i prilikom onemogućavanja odabira.
OnRowSelect() Omogućen je način obrade odabira linija (dupli klik ili tipka Enter) u obliku liste imenika, dnevnika dokumenata, konta, dnevnika transakcija, dnevnika transakcija metodom Form.RowSelectionProcessing(1). Zatim, kada se odabere red, poziva se ova unaprijed definirana procedura.


Sortiranje

U obliku imeničkog popisa, elemente je moguće sortirati različitim redoslijedom: po kodu, po nazivu ili po bilo kojem atributu za koji je u konfiguratoru označen okvir Sortiranje.Vrstu sortiranja možete postaviti programski pomoću metode sortiranja (metoda, zastavica ChangePermission)


Procedura OnOpen()
...... Sortiranje("Kod",0); //razvrstavanje po kodu, korisnik ne može mijenjati
Kraj postupka

Procedura OnOpen()
......DirectoryList.Order.Set("Ime Asc, Card Asc");
......//pitanje čitateljima: kako spriječiti korisnika da promijeni redoslijed sortiranja?
Kraj postupka

Izbor

U obrascu popisa imenika stavke se mogu filtrirati, tj. Korisniku će biti prikazani samo potrebni elementi. Odabir možete programski postaviti pomoću metode SetSelection (Attributes, Value). Da biste to učinili, atribut mora imati označen okvir "Odabir po atributu" u konfiguratoru .

Statički filter (samo verzija 7.7)

U 1C 7.7 ne možete postaviti odabir po periodičnim detaljima ili po nekoliko detalja istovremeno (složeni filter). U ovom slučaju, metoda UseList of Elements može biti izlaz. Ovoj metodi treba proslijediti popis elemenata koji se trebaju prikazati. Ovaj popis treba prvo izraditi.

Postupak ShowWorkingCarpenters()

ElementList = createObject("ValueList");

Ref.SelectItems();

.....If (Adv.Parent = groupWorking) I (Adv.Position = posao Stolar) Onda
..........Popis elemenata.AddValue(Ref.CurrentElement());
.....Završi ako;
EndCycle;

UseListElements(Stavke popisa);

Kraj postupka

Oblik elementa i oblik skupine

Ako imenik ima složenu strukturu, tada je prikladnije uređivati ​​njegove elemente u zasebnom prozoru, a ne na popisu. Ispod je obrazac elementa Imenik zaposlenika.


Obrazac elementa imenika također ima unaprijed definirane procedure (događaje):

Događaji

Opis

OnOpen() Poziva se kada se otvori obrazac stavke imenika. Možete postaviti početne vrijednosti za varijable, provjeriti korisnička prava za otvaranje određenog elementa imenika itd.
OnClose() Poziva se kada se zatvori obrazac za rječničku stavku.
OnWrite()

Poziva se kada je element direktorija napisan. Ovaj vam postupak omogućuje provjeru pogrešaka u vašim ulaznim podacima.

Primjer, imenik zaposlenika

Postupak snimanja
....If Category.Selected()=0 Onda
.........Upozorenje("Kategorija zaposlenika nije navedena!");
.........Vrati Status(0);
.....Završi ako;
Kraj postupka

UnesiteNovo() Poziva se kada se interaktivno unese novi element imenika. U ovom postupku možete provjeriti prava korisnika za stvaranje novih elemenata imenika, kao i postaviti početne vrijednosti pojedinosti.

Treba napomenuti da je u verziji 8.0 popis događaja za sve objekte značajno proširen.

Izrada i snimanje elementa

Programska izrada elementa imenika

Dolje u imeniku Zaposlenici, novi zaposlenik se programski dodaje u Radnu grupu. U imeniku se popunjavaju polja Naziv, Datum prijema i par periodičnih podataka.



Ref. Novi();


Ref. Zapiši();
//postavljanje periodičnih detalja moguće je tek nakon snimanja elementa
Ref.Category.Set (Ref.ReceptionDate, ktgPartners);
Ref.Position.Set (Ref.ReceptionDate, forCarpenter);

Ali možete ga učiniti ljepšim:

RefCotr = CreateObject("Directory.Employees");
SprSotr.UseParent(grpWorking);
Ref.UseDate(ReceptionDate); //pažnja!
Ref.Novo();
SprSotr.Name = "Ivanov Ivan Ivanovič";
Ref.ReceptionDate = "01/01/2002";
//pristup periodičnim detaljima postaje isti kao i redovnim
SprSotr.Kategorija = ktgPartneri;
Spr.Pozicija = dljCarpenter;
SprCotr.Write();

New = Directories.Employees.CreateItem();
New.Parent = groupWorking;
New.Name = "Ivanov Ivan Ivanovich";
New.ReceptionDate = "01/01/2002";
New.Write();

//u verziji 8.0 nema periodičnih detalja

Programsko stvaranje grupa

RefCotr = CreateObject("Directory.Employees");

Ref. Nova grupa();

Ref. Zapiši();

Ref.NovaGrupa();

SprCotr.Write();

Novo = Imenici.Zaposlenici .Za stvaranje grupe();

Novi Zapiši();

Novo = Imenici["Zaposlenici"] .Za stvaranje grupe();
New.Name = "Radi";
Novi Zapiši();

Pažnja!

Transakcije

Kada stvarate mnogo elemenata imenika, možete priložiti ciklus u transakciju kako biste ubrzali rad. U ovom slučaju, stvarno stvaranje svih elemenata dogodit će se samo s naredbom CommitTransaction(). Imenik je blokiran dok se transakcija izvodi.

RefCotr = CreateObject("Directory.Employees");
StartTransaction();

Za Nom = 1 do 100 ciklusa
.....Ref.Novo();
.....SprSotr.Name = "Novo" + String(Nom);
.....RepCort.Write();
EndCycle;

CommitTransaction();


SprSotr = Imenici.Zaposlenici;
StartTransaction();

Za Nom = 1 do 100 ciklusa
.....Novo = SprSotr.CreateElement();
.....New.Name = "Novo" + String(Nom);
.....New.Write();
EndCycle;

CommitTransaction();

Ponavljanje preko elemenata

Jednostavna pretraga

RefCotr = CreateObject("Directory.Employees");
mod = 0; //odaberi bez uzimanja u obzir hijerarhije, 1 - uzimajući u obzir (prema zadanim postavkama)
Ref. Odaberite Stavke(Način rada);
Dok je SprSotr. GetElement()=1 ciklus
.....<действия с очередным элементом/группой>
EndCycle;

Filtriranje (odabir)

RefCotr = CreateObject("Directory.Employees");
HierarchyMode = 1; //1 - odabir uzimajući u obzir hijerarhiju, 0 - bez uzimanja u obzir
Grupni način = 0; //0 - ne uključi grupe u odabir, 1 - uključi
AttributeName = "Godina"; //u Konfiguratoru, atribut mora imati označen okvir Odabir
vrijednost = 1980;
Ref. Odaberite ElementsBy Details(AtributeName,Value,HierarchyMode,GroupMode);
Dok je SprCont.GetElement()=1 petlja
.....<действия с очередным элементом>
EndCycle;

Filtriranje u petlji

RefCotr = CreateObject("Directory.Employees");
SprSotr.UseParent(grpWorking);
Ref.UseDate(WorkingDate());
Ref. Odaberite Stavke();
Dok je SprSotr. GetElement()=1 ciklus

Ako je administrativni položaj<>dlzhCarpenter Zatim
....Nastaviti; //preskačemo ovog zaposlenika, idemo na početak ciklusa
završi ako;

<действия с очередным элементом>

EndCycle;

Redoslijed sortiranja

Prije uzorkovanja možete postaviti redoslijed sortiranja pomoću sljedećih metoda:

CodeOrder()
NameOrder()
Redoslijed atributa(ReqName) //atribut mora imati označen okvir Sortiranje u konfiguratoru
Obrnuti redoslijed()

Na primjer, ispod se otvara izbor zaposlenika, poredanih prema broju u silaznom redoslijedu:

RefCotr = CreateObject("Directory.Employees");
Ref.CodesOrder();
Ref.Obrnuti redoslijed();
Ref.SelectItems();

Zahtjev za imenik

Pretraživanje elemenata imenika može se organizirati putem Zahtjeva. To je često prikladnije ako se koristi složen uvjet odabira ili grupiranje elemenata. Pogledajte više detalja. Zahtjevi

Potražite element

Potražite element

RefCotr = CreateObject("Directory.Employees");
Ako je SprSotr. FindElement(SelectSotr)=1 Zatim
....//element postaje aktualan
....SprSotr.Parent = grpWorking;
....RepCort.Write();
završi ako;

Traži po šifri

Ako je SprSotr. FindByCode(1) = 1 Tada
....ElementOrGroup = Ref.CurrentElement();
završi ako;

Traži po imenu

Ako je SprSotr. FindByName("Radi")=1 Zatim
....grpWorking = Ref.CurrentItem();
završi ako;

način = 1; // 1 - pretraživanje unutar utvrđene podređenosti (roditelj) (zadano); 0 - traži u cijelom imeniku
SearchFlag = 0; //1 - pronaći točno podudaranje; 0 - pronađite ime prema prvim znakovima (zadano)
SprSotr.UseParent(grpWorking);
If Ref.FindByName("Iv",Mode,SearchFlag)=1 Onda
....FirstWorkingIv = Ref.CurrentItem();
završi ako;

Pretraživanje po detaljima

ReqName = "Godina"; //atribut mora imati označen okvir Sortiranje u konfiguratoru
SearchGlobeFlag = 1; // 1 - traži u cijelom imeniku, 0 - traži unutar podređenosti
Ako je SprSotr. FindByDetails(ReqName,1980,SearchGlobeFlag)=1 Zatim
.....PronađenoElement = Ref.TrenutniElement();
završi ako;

Pronalaženje elementa u petlji

RefCotr = CreateObject("Directory.Employees");
SprSotr.UseParent(grpWorking);
Ref.UseDate(WorkingDate());
Ref. Odaberite Stavke();
Dok je SprSotr. GetElement()=1 ciklus

Ako je Admin.Position = dlzhCarpenter Onda
....Prekid; //našao radnog stolara! izaći iz petlje
završi ako;

EndCycle;
<действия с найденным элементом>

Zahtjev za imenik

Traženje elementa imenika može se organizirati putem Zahtjeva. Ovo je često prikladnije ako se primijeni složeni uvjet odabira. Pogledajte više detalja. Zahtjevi

Uklanjanje stavki

Izravno uklanjanje

RefCotr = CreateObject("Directory.Employees");
SprEmployee.FindElement(SelectEmployee);
Ref.Delete(); //trenutno brisanje

Pažnja! Ako izravno izbrišete element, provjerite da nema referenci na njega u drugim objektima. Na primjer, zaposlenik kojeg se uklanja može se koristiti u dokumentu o odmoru. Ako se izbriše, narušit će se referentni integritet baze podataka. U ovom slučaju preporuča se koristiti označeno za brisanje.

Pomoću metode FindLinks(object) možete programski dobiti popis objekata koji sadrže poveznicu na objekt koji treba izbrisati.

Označi za brisanje

Kako bi se kontrolirao referentni integritet baze podataka, izbrisani elementi se jednostavno označavaju za brisanje. Zatim, pomoću posebne naredbe izbornika Operacije => "Brisanje označenih objekata" u ekskluzivnom načinu rada, 1C sustav će provjeriti referentni integritet i fizički izbrisati elemente iz baze podataka ako nema referenci na njih u drugim objektima.

SprSotr = CreateObject("Directory.Employees");
Ref.FindElement(SelectEmployee);
Ref.Delete(0); //označi za brisanje

//možete provjeriti je li element označen za brisanje
//funkcija vraća 1 - ako je označeno, 0 - ako nije
Oznaka = Ref. Brisanje zastavice();

//možete poništiti oznaku za brisanje
Ref.FindElement(SelectEmployee);
Ref. Poništite opciju Izbriši();

Transakcije

Kada brišete mnoge elemente imenika, možete priložiti petlju u transakciju da biste ubrzali rad. U ovom slučaju, stvarno brisanje (oznaka za brisanje) svih elemenata dogodit će se samo s naredbom CommitTransaction(). Imenik je blokiran za vrijeme trajanja transakcije.

RefCotr = CreateObject("Directory.Employees");
StartTransaction();

Ref.SelectItems();
Dok je SprCont.GetElement()=1 petlja
......Ref.Delete(0); //označi za brisanje
EndCycle;

CommitTransaction();

Hijerarhijski imenici

Popis elemenata imenika u sustavu 1C:Enterprise može biti na više razina. U ovom slučaju, sve linije imenika bit će podijeljene u 2 tipa: "jednostavni" elementi imenika i grupe imenika. Grupe vam omogućuju pomicanje na niže razine direktorija s više razina. Mogući broj razina ugniježđivanja imenika postavlja se u konfiguratoru.

Korištenje imenika na više razina omogućuje vam organiziranje unosa informacija u imenik s potrebnom razinom detalja. Elementi i skupine elemenata u direktoriju s više razina mogu se prenositi iz jedne skupine u drugu.

Pažnja! Hijerarhijski referentna knjiga je također više razina imenik, odnosno imenik sa skupine.
Grupa imenika u 1C često se naziva " roditelj".

Programsko stvaranje grupe

RefCotr = CreateObject("Directory.Employees");

Ref. Nova grupa();
SprSotr.Name = "Radi";
Ref. Zapiši();

Ref.NovaGrupa();
Ref.Name = "Odbačeno";
SprCotr.Write();

Pažnja! U konfiguratoru možete postaviti da atribut vrijedi samo za element, samo za grupu ili za oboje. Na primjer, polje Datum prijema nema smisla za radnu grupu. Stoga ne biste trebali pristupati detaljima elementa ako radite s grupom i obrnuto.

Postavljanje trenutne grupe


Ref. UseParent(grpRadi); //sada smo unutar Radne grupe
Ref.SelectItems(); //otvorite izbor elemenata Radne grupe

RefCotr = CreateObject("Directory.Employees");
Ref. UseParent(grpRadi);
Ref.Novo(); //stvaranje novog elementa u Radnoj grupi

Ako je imenik na više razina, tada će biti korisno koristiti sljedeće metode i atribute koji vam omogućuju dobivanje informacija o trenutnom elementu imenika:

Metoda/atribut

Opis

Razina()

Ova metoda vraća razinu trenutnog elementa. Na primjer, za zaposlenika koji je u Radnoj skupini dobit ćemo broj 2.

Primjer, izlaz hijerarhijskog imenika u obliku stabla:

RefCotr = CreateObject("Directory.Employees");
Ref.SelectItems();

//prikaz uvlake prema dubini ugniježđivanja elementa
Za Nom=1 ciklusom Const.Level().
.....Prijaviti(".....");
EndCycle;

EndCycle;

Ova grupa () Ova metoda vraća 1 ako je trenutni element imenika grupa ili 0 ako nije grupa.

Primjer, output zaposlenika (grupe nisu output):

RefCotr = CreateObject("Directory.Employees");
Ref.SelectItems();
Dok je Ref.GetItems()=1 petlja

If Ref.ThisGroup()=1 Onda
......Nastaviti; //preskoči grupe, idi na početak petlje
završi ako;
Izvješće (Ref.Name);

EndCycle;

Pripada grupi (...) Metoda provjerava pripada li trenutni element imenika navedenoj grupi (bez obzira na temeljnu razinu na kojoj se nalazi).
Vraća: 1 - ako element pripada navedenoj grupi, 0 - ako ne.

Primjer, prikazivanje proizvoda koji pripadaju grupi Alkohol, bez obzira da li su uključeni u podskupine Šampanjac, Pivo, Vodka, Vino itd.:




.....Obavijesti(SprProducts.Name);
završi ako;

EndCycle;

atribut Roditelj

Ovaj atribut sadrži nadređeni element trenutnog direktorija, tj. grupa u kojoj se nalazi trenutni element. Čitljiv i pisan.

Primjer, prijenos svih proizvoda iz grupe Alkohol u grupu Prodaja:

ImenikProizvodi = CreateObject("Imenik.Proizvodi");
SprProducts.SelectItems();
Dok je SprProducts.GetItems()=1 Petlja

If Products.Belongs to Group(groupAlcohol)=1 Onda
.....SprSotr.Parent = grpSale;
.....RepCort.Write();
završi ako;

EndCycle;

Ili ga možete uljepšati i cijelu grupu Alkohol preseliti u grupu Prodaja, tada će sve podgrupe i elementi također biti prebačeni u grupu Prodaja.

ImenikProizvodi = CreateObject("Imenik.Proizvodi");
SprProducts.FindItem(grpAlcohol);
SprProducts.Parent = grpSale;
SprProizvodi.Write();

Puni kod()

Vraća niz koji sadrži puni kod odabranog elementa imenika sa svim višim razinama odvojenim znakom "/".

Na primjer, "2/7/123"

Puno ime()

Vraća niz koji sadrži puni naziv odabranog elementa direktorija sa svim višim razinama odvojenim znakom "/".

Na primjer, "Alkohol/šampanjac/sovjetski"

Mogućnost odabira grupe u dijaloškim rekvizitima

Često je zgodno za pojedinosti na obrascu koji imaju vrstu Imenik onemogućiti mogućnost odabira grupe. Tada se u ovom polju može odabrati samo element, a grupa se ne može odabrati. Općenito, lakše je pokušati jednom nego objašnjavati nekoliko puta.

Form.SelectEmployee. Odabir grupe(0); //onemogući mogućnost odabira grupe

Podređeni imenici

Imenik- vlasnik, ovo je također referentna knjiga - ovladati; majstorski.
Vlasnički imenik i podređeni imenik također se pozivaju srodni referentne knjige.
U terminima relacijske baze podataka, vlasnički direktorij je nadređena tablica, podređeni direktorij je podređena tablica.

Dodjela podređenih imenika

Bilo koji imenik može se koristiti ili samostalno ili biti podređen nekom drugom imeniku. Na primjer, imenik ugovora može se koristiti zasebno ili se može povezati s imenikom organizacija.

Za podređivanje imenika nekom od imenika koji već postoje u sustavu, u polju “Podređeni” odaberite naziv tog imenika. Takav imenik u sustavu 1C:Enterprise naziva se vlasnik.

Za razliku od imenika na više razina, u kojem svi elementi imaju istu strukturu, korištenje mehanizma podređenih direktorija omogućuje vam povezivanje elemenata različitih struktura. U tom će slučaju svaki element podređenog imenika biti povezan s jednim od elemenata vlasničkog imenika.

Izvana, rad s podređenim imenikom u sustavu 1C:Enterprise izgledat će ovako.

Ako je za podređeni imenik postavljen način prikaza u obliku hijerarhijskog popisa, tada je prije korištenja imenika potrebno odabrati element vlasničkog imenika. Kada se prikaže na ekranu, podređeni imenik će u naslovu sadržavati naziv vlasničkog elementa, a popis elemenata podređenog imenika sadržavat će samo elemente koji se odnose na vlasnički element. Kada se element vlasnika promijeni, informacije u prozoru podređenog imenika ažurirat će se u skladu s tim.

Ako otvorite podređeni imenik bez odabira vlasničkog elementa, u prozoru podređenog imenika neće biti prikazan niti jedan element, au naslovu prozora bit će prikazana poruka „Vlasnički element nije naveden”.

Kada radite sa sustavom 1C:Enterprise, prikaz u obliku hijerarhijske liste može se onemogućiti za podređeni imenik. U tom će slučaju svi elementi ovog imenika biti prikazani u prozoru podređenog imenika, odnosno elementi dodijeljeni različitim vlasnicima bit će prikazani izmiješani. Međutim, bilo koji element podređenog imenika "zna" svog vlasnika: ako je za imenik omogućen način rada "Uređivanje u dijaloškom okviru" (pogledajte dolje u "Stvaranje obrazaca imenika"), naziv elementa vlasnika bit će prikazan u naslovu prozora za uređivanje elementa imenika.

Postavljanje trenutnog vlasnika


SprAgreements.UseOwner(SelectContractor);
SprAgreements.SelectItems(); //otvorite izbor ugovora odabrane druge ugovorne strane
<...>

Informacije o trenutnom elementu

Ako je imenik podređen, tada će biti korisno koristiti sljedeće metode i atribute koji vam omogućuju dobivanje informacija o trenutnom elementu imenika:

Atribut

Opis

atribut Vlasnik

Ovaj atribut sadrži vlasnika trenutnog elementa podređenog imenika, tj. element direktorija glavnog računala kojem ovaj element pripada. Atribut je čitljiv i pisan.

Primjer, prijenos svih ugovora s jedne ugovorne strane na drugu (imenik Ugovori podređen je direktoriju Ugovornih strana):

DirectoryAgreements = CreateObject("Directory.Agreements");
SprAgreements.UseOwner(Counterparty1);
SprAgreements.SelectItems();
Dok SprAgreements.GetElements()=1 Petlja

SprAgreements.Owner = Suprotna strana2;
SprAgreements.Write();

EndCycle;


Periodični detalji

Omogućavanje opcije "Periodic" omogućuje vam da odredite atribut direktorija za pohranjivanje povijesti promjena njegove vrijednosti. Takav detalj u sustavu 1C:Enterprise naziva se periodičkim i ima sljedeće svojstvo: za razliku od "običnih" (neperiodičnih) detalja, sustav 1C:Enterprise pohranjuje vrijednosti takvog detalja prema datumima njihove promjene . Kada se pristupa vrijednosti takvog atributa za određeni datum, vraća se njegova vrijednost za taj datum ili, ako nedostaje, za najbliži prethodni datum na koji je vrijednost atributa postavljena.

Ovo svojstvo detalja imenika omogućuje, na primjer, jednostavno organiziranje pohranjivanja povijesti tečajeva u imeniku valuta.

Periodičnim detaljima može se pristupiti pomoću ugrađenog jezika sustava 1C:Enterprise - primiti i zabilježiti vrijednost detalja za određeni datum. Međutim, treba imati na umu da se prilikom primanja vrijednosti varijable za određeni datum dohvaća njezina vrijednost za navedeni ili (ako nema vrijednosti za navedeni datum) za najbliži prethodni datum, a vrijednost periodična varijabla uvijek se bilježi za navedeni datum.

U načinu korištenja konfiguracije za periodične detalje, možete otvoriti prozor "Povijest". Ovaj prozor je tablica koja se sastoji od dva stupca: datum kada je vrijednost atributa imenika promijenjena i vrijednost od tog datuma. Prozor "Povijest" omogućuje vam izravno uređivanje povijesti promjena vrijednosti atributa: unos novih redaka, uređivanje ili brisanje postojećih.

Metode periodičnih detalja
//ovako saznajemo koju je kategoriju zaposlenik imao na određeni datum
Kategorija = SprSort.Category.Get(SomeDate);

//ovako ćemo postaviti kategoriju zaposlenika za određeni datum
Ref.Category.Set(SomeDate, NewCategory);

Pažnja! Ove se metode mogu koristiti ako prethodno niste koristili metodu UseDate

Postavljanje datuma za uzorkovanje periodičnih detalja

//možete postaviti datum za uzorkovanje periodičnih detalja za cijeli direktorij
Ref. UseDate(Neki datum);

//onda je već niže Zabranjeno je koristite metode Set i Get
//pristup periodičnim detaljima postaje isti kao i redovnim detaljima
Kategorija = SprSotr.Kategorija;
Spr.Plaća = 6000;

Objekt "Periodičko"

Za rad s poviješću periodičnih detalja vrlo je prikladno koristiti objekt "Periodic".

Primjer, prikaz povijesti karijere zaposlenika za tekuću godinu:

HistoryCareers = CreateObject("Periodic");
CareerHistory.UseObject("Pozicija", SelectEmployee);
Povijest karijere.SelectValues(Start of Year(WorkingDate(),End of Year(WorkingDate()));
Dok HistoryCareers.GetValue()=1 Petlja
....Izvješće(String(CareerHistory.DateValue) + " " + String(CareerHistory.Value));
EndCycle;

Također možete uređivati ​​i brisati vrijednosti pomoću objekta Periodic. Potpuni popis metoda potražite u Pomoćniku sintakse.

Izvođenje dokumenata

Prilikom knjiženja dokumenta često je potrebno postaviti novu vrijednost za periodični atribut za određeni datum. To se zove kretanje dokumenta. U ovom slučaju trebali biste koristiti metodu Postavi atribute imenika:

Postavite pojedinosti imenika(Zaposlenik, "Pozicija", NovaPozicija, Datum Premještanja);

Kraj postupka

Ako dokument ima tabularni dio i želite da se pomaci dokumenta vežu uz broj retka dokumenta, tada trebate koristiti metodu BindRow.

Procedura ProcessingConduct()

OdaberiteRedove();
Dok je GetString()=1 petlja

BindString(Broj reda);
Postavite pojedinosti imenika (zaposlenik, "Pozicija", Nova pozicija, Datum preseljenja);

EndCycle;

Kraj postupka

Odabir iz imenika

Funkcija odabira omogućuje odabir višestrukih vrijednosti iz pretraživanja ili drugog objekta bez zatvaranja.Na primjer, postoji dokument Račun u kojem korisnik može navesti nekoliko proizvoda.

Organizacija selekcije

Sintaksa: OpenSelect(<Объект>,<ИмяФормы>,<КонтекстФормы>,<ФлагМножВыбора>,<ТекЗнач>)

OpenSelection("Directory.Nomenclature","FormForSelection",Cont,1);


...Nova linija();
...Proizvod = Stavka;
Kraj postupka

Možete koristiti kontekst obrasca i odmah otići na željenu grupu, na primjer:

OpenSelection("Directory.Nomenclature","FormForSelection",Cont,1);
Cont.UseParent(grpAlcohol);

Procedura ProcessingFit(Element,FormContent)
...Nova linija();
...Proizvod = Stavka;
Kraj postupka

Postavljanje i dobivanje vrijednosti iz odabira

ContFormSelection. SetValueInSelection(<ИмяРеквизита>,<Значение>)

<ИмяРеквизита>- linija s nazivom atributa obrasca za odabir vrijednosti;
<Значение>- vrijednost atributa.

ContFormSelection. GetValueFromSelection(<Выражение>)

<Выражение>- izraz niza čija se vrijednost izračunava u kontekstu obrasca za odabir i vraća kao rezultat.

Druge korisne metode

metoda

Opis

Pogled() Postavite ili pročitajte trenutni naziv vrste imenika. Vraća trenutni naziv vrste imenika, kako je navedeno u konfiguratoru, na primjer, “Zaposlenici”. Postavljanje tipa imenika moguće je za detalje tipa "Imenik", tj. imenik neodređene vrste.
ViewView() Dobijte prilagođeni prikaz prikaza imenika kako je navedeno u konfiguratoru.
Vraća vrijednost niza koja sadrži prilagođeni prikaz prikaza direktorija (sinonim).
SetAttribute(AttributeName, Value) Postavite vrijednost atributa prema njegovom imenu.
<ИмяРеквизита>- string izraz koji sadrži naziv atributa, kako je navedeno u konfiguratoru.<Значение>- izraz koji sadrži vrijednost atributa koji treba postaviti.
GetAttribute(AttributeName) Dohvatite vrijednost atributa prema njegovom imenu. Vraća vrijednost atributa.
Odabran()

Vraća 1 - ako je element imenika odabran, 0 - ako nije odabran. Često se koristi za provjeru pogrešaka kako bi se osiguralo da su navedeni svi potrebni podaci.

Odaberite (...) Pozivanje dijaloškog okvira za odabir elementa imenika.
Vraća: 1 - ako je element odabran; 0 - ako nije odabrano. Odabrani element postaje trenutni.

Čitanje strukture imenika

Ciklus prema referentnim knjigama

Broj imenika u konfiguraciji = metapodaci.imenik();
Za Nom=1 do Broj direktorija u konfiguracijskom ciklusu

cfgSpr = Metadata.Directory(Nom);
Identifikator = cfgSpr.Identifikator();
PuniIdentifier = cfgSpr.PuniIdentifier();
Sinonim = cfgSpr.Sinonim();

1C imenici su specijalizirani objekt stabla metapodataka koji služi za pohranu statičkih referentnih informacija. Na primjer, u tipičnim konfiguracijama možete vidjeti sljedeće prikaze: , Nomenklatura, Zaposlenici, Osnovna sredstva itd. Podaci u imenicima se u pravilu ne mijenjaju često. Imenici se kasnije koriste u gotovo svim računovodstvenim objektima kao računovodstveni dio ili referentni podaci.

U nastavku ćemo pogledati postavljanje i dizajn imenika iz konfiguratora koristeći imenik "Nomenklatura" kao primjer.

Osnovna kartica

Kartica “Osnovno” navodi naziv, sinonim, prikaz objekta i opis namjene.

Kartica "Hijerarhija imenika".

Ovdje se uspostavlja hijerarhija imenika.

Hijerarhija u 1C 8.3 ima dvije vrste - “ grupe i elementi"I" elementi". Razlikuje se po tome što u prvom slučaju roditelj (mapa) može biti samo mapa (grupa), a u drugom slučaju roditelj može biti i element.

“Postavi grupe na vrh” - zastavica je odgovorna za prikaz grupa u obliku popisa.

Također u postavkama možete ograničiti broj grupa u hijerarhiji imenika pomoću odgovarajuće postavke.

Kartica vlasnici

Imenik može biti podređen drugom imeniku. Sa stajališta konfiguracije 1C 8.3, to znači da atribut "Vlasnik" postaje obavezan za podređeni element. Primjer takve veze između imenika u standardnim konfiguracijama “Nomenklatura - mjerne jedinice”, “Druge strane - Ugovori izvođača”.

Vlasnik imenika također mogu biti sljedeći objekti metapodataka: , .

Kartica podataka

Besplatno nabavite 267 video lekcija o 1C:

Najvažnija kartica sa stanovišta programera. Sadrži pojedinosti imenika.

Imenik ima skup standardnih detalja koje ne uređuje programer 1C 8.2; njihov popis možete vidjeti klikom na gumb "Standardni detalji":

Zadržat ću se na svakom detaljnije:

  • Ova grupa— atribut s Booleovim tipom, koji pokazuje radi li se o grupi ili elementu. Dostupno samo u hijerarhijskom imeniku. Bilješka, vrijednost ovog atributa ne može se promijeniti u načinu rada 1C: Enterprise.
  • Kodirati— rekviziti, upišite broj ili niz (obično niz). Broj koji sustav automatski dodjeljuje. Obično se izračunava kao (prethodni kod + 1). Preporučujem korištenje vrste niza jer sortiranje numeričkih vrijednosti ne radi kako se očekuje. Može se koristiti kao prezentacija imenika na popisu iu poljima za unos. Obično se koristi za traženje elementa prilikom unosa niza. Ako trebate ukloniti polje Šifra, unesite nulu u duljinu retka.
  • Ime— obvezni detalji, vrsta niza. Maksimalna duljina retka je 150 znakova. Može se koristiti kao prezentacija imenika na popisu iu poljima za unos. Obično se koristi za traženje elementa prilikom unosa niza. Ako trebate ukloniti polje Naziv, unesite nulu u duljinu retka.
  • Roditelj— atribut tipa DirectoryLink.<ИмяТекущегоСправочника>. Dostupno samo u hijerarhijskom imeniku. Pokazuje na nadređenog roditelja u hijerarhiji. Ako je Element ili Grupa u korijenu direktorija, navedena je vrijednost Imenik.<ИмяТекущегоСправочника>.EmptyLink.
  • Vlasnik— poveznica na element vlasnika trenutnog elementa imenika (grupe). Dostupno samo u podređenom imeniku 1C.
  • Brisanje zastavice— rekviziti tipa Boolean. Odgovoran za prikaz "oznake brisanja" u sustavu. Element označen za brisanje smatra se neupotrebljivim, ali na njemu mogu ostati stari dokumenti.
  • Veza— polje string tipa. Ovaj atribut pohranjuje jedinstveni identifikator objekta - GUID. Ono što vidimo u sustavu u vizualnom prikazu zvanom "link" samo je prikaz objekta. Ne može se promijeniti.
  • Unaprijed definirano— Boolean tip, prikazuje je li element unaprijed definiran, više o tome kasnije. Ne može se promijeniti.

Kartica "Podaci" također označava prikaz direktorija u sustavu; prije verzije 8.2.16, prikaz je mogao biti samo kod ili naziv. U novijim verzijama platforme (počevši od 8.3), pogled se može opisati neovisno u modulu upravitelja pomoću rukovatelja "ViewReceivingProcessing".

Tablica numeriranja

Ovdje možete odrediti postavke imenika vezane uz numeriranje. Preporuča se korištenje automatskog numeriranja. Kontrola jedinstvenosti je oznaka koja pomaže, ako je potrebno, da kod bude jedinstven. Ako s postavljenom zastavicom pokušate napisati element imenika s nejedinstvenim kodom, u 1C ćete dobiti poruku "Kod imenika je postao nejedinstven."

Serija šifri - određuje način numeriranja imenika, možete unijeti numeraciju imenika po vlasniku. Na primjer, druga ugovorna strana "Rogovi i kopita" imat će svoje numeriranje ugovora - "1, 2, 3", itd.

Kartica Obrasci

Ovdje su opisani obrasci za imenik. Ako se konfiguracija pokrene u normalnom i upravljanom načinu rada, tada će prema zadanim postavkama postojati dvije kartice s obrascima: "glavni" i "napredni" - različite za normalne i upravljane aplikacije.

Ova stranica ima važnu značajku imenika - ““. Ovo je vrlo zgodna funkcija 1C 8, koja vam omogućuje da prilikom popunjavanja podataka u polje za unos ne idete u imenik, već da upišete njegovo ime, šifru itd. i odaberite željeni element iz padajuće liste. Ovako izgleda:

Ostalo Tab

Na kartici možete brzo pristupiti glavnim modulima imenika - objektnom modulu i upraviteljskom modulu.

Također možete definirati popis unaprijed definiranih elemenata imenika na stranici. Ovo su stavke koje se ne mogu izbrisati u načinu rada Enterprise. Predefiniranim elementima može se pristupiti izravno u konfiguratoru po nazivu, na primjer: Imenici.Nomenklatura.Usluga.

Ova kartica također određuje način blokiranja - automatski ili kontrolirani. Korištenje pretraživanja cijelog teksta, kao i referentnih informacija o imeniku, dostupnih u načinu rada 1C: Enterprise.



Slučajni članci

Gore