Rychle. Podřízené adresáře. Rychle Jak vytvořit podřízený adresář 1c

Klyuev V.V.

http://prof1c.kklab.ru

Podřízené adresáře

Pravděpodobně jste si již v běžných typických konfiguracích opakovaně všimli, že jsou adresáře propojeny, kdy při výběru prvku adresáře (adresář 1) je touto hodnotou „filtrována“ hodnota jiného adresáře (adresář 2) - tedy hodnoty ​​které patří pouze do aktuálního prvku adresáře, jsou vybrány; například toto je adresář „Division“, jehož vlastníkem je adresář „Organizace“.

Abychom okamžitě pochopili podstatu toho, co se děje, podívejme se na to, co se děje v praxi. Chcete-li to provést, můžete vytvořit prázdnou konfiguraci od začátku nebo přejít na jakoukoli existující kopii informační databáze a vytvořit 2 adresáře v konfigurátoru.

Adresář1 a Adresář2. V adresáři2 přejděte na kartu „Vlastníci“ a vyberte vlastníka – „Adresář1“, viz obrázek.

Nyní při vytváření prvků v „Adresáři2“ vás systém požádá o zadání vlastníka adresáře1. Existuje možnost - Použití podřízenosti - když je podřízenost nastavena na Prvky, skupiny nebo skupiny a prvky.

Zdá se, že vše je jednoduché, ale uživatelům vznikají problémy. Při otevření „Directory 2“ uživatel vidí všechny prvky ve zcela nesrozumitelném pořadí a kromě toho, pokud jste pracovali se standardními konfiguracemi, mohli jste si všimnout, že přímo v adresáři „Divisions“ nikde neuvádíte vlastníka, ale při otevření adresáře můžete vybrat organizaci a v závislosti na tom přijímat prvky podřízené té či oné organizaci; Navíc při vytváření položky adresáře „Divize“ standardně obdržíte vlastníka, kterého jste si vybrali ve formě seznamu divizí.
Začněme tedy a vytvořte „Formulář seznamu“ pro náš „Adresář2“, prozatím jej poskytněte 1C, aniž byste provedli jakékoli změny, později formulář vytvořený návrhářem upravíme.
V „Directory2“ přejděte na kartu Formuláře a přidejte (+) nový formulář seznamu adresářů a klikněte na Dokončit.

Vytvoříme formulářový atribut s datovým typem "Adresář1.Link", s názvem "SelectionDirectory1" a tento atribut přetáhneme do formuláře, nastavíme nadpis "Adresář1".


Nyní, aby „tento zázrak“ fungoval, musíte napsat kód, který provede výběr při výběru prvku Directory Element1.

8.2, 8.3 Spravované formuláře

Abychom ve formě seznamu adresářů zobrazili pouze prvky, které potřebujeme pro vybraný prvek Directory1, musíme programově provést výběr - podle vybraného prvku, k tomu použijeme předdefinovaný postup ovládacího prvku SelectionDirectory1 a napsat kód, který provede zadaný úkol.
V horní části vyberte „Adresář výběru1“, klikněte pravým tlačítkem myši a vyberte „Vlastnosti“, v okně, které se zobrazí, najděte vlastnost „Při změně“ a klikněte na lupu, čímž přejdete do modulu formuláře; automaticky se vytvoří procedura “Selection Directory1OnChange(Element)”.

V postupu zadejte následující text:

& Na seznamu Client Procedure Selection Directory1OnChange(Element). Výběr. Elementy. Průhledná() ; // Element výběru = Seznam. Výběr. Elementy. Add(Type(" Výběr Rozvržení ElementData" ) ); Element výběru. LeftValue = Nové pole DataComposition (" Owner " ); Element výběru. Zobrazení porovnání = Zobrazení porovnání DataComposition. Rovná se; Element výběru. Použití = True ; Element výběru. RightValue = Adresář výběru1; Element výběru. Režim zobrazení = Element Display Mode constructionDataComposition.Unavailable;EndProcedure

8.2 Běžné formuláře


Při sestavování formulářů je vše při starém, pouze formuláře je potřeba vytvářet jako běžné, spravované formuláře v běžné aplikaci nefungují.
Rozdíl bude ve výběrovém řízení na prvek ve formuláři soupisky a vytvoření rekvizit.
Chcete-li přidat podrobnosti do běžného formuláře, klikněte na tlačítko

Postup Reference1OnChange(Element)ThisForm. Výběr. Majitel. Hodnota = Adresář1. Odkaz; Tato forma. Výběr. Majitel. Použití = Pravda ; Tato forma. Prvky formuláře. DirectoryList. Nastavení výběru. Majitel. Dostupnost = False ; //(?) EndProcedure

Předposlední řádek(?) - zakazujeme měnit výběr, když uživatel otevře parametry výběru - pouze přes ovládací prvek!

Video (bez zvuku - vše je čisté bez zvuku)

Co jsou adresáře 1C a jakou roli hrají v 1C - o tom a mnohem více v našem novém článku.

Adresáře v 1C jsou vytvořeny za účelem ukládání informací, které budou použity k práci v jiných dokumentech v 1C, například sestavách. Ukazuje se, že práce v systému 1C se provádí podle referenčních knih a všechny informace, které jsou v nich uloženy, se nazývají normativní a referenční.

K čemu jsou adresáře 1C určeny?

Jakýkoli produkt poslouží jako jasný příklad pro vysvětlení. Pro jeho pohyb v podniku (nákup, skladování ve skladu, instalace, prodej atd.) se vypracovávají speciální dokumenty, například formuláře, faktury atd. V normální situaci by se všechny tyto dokumenty vyplňovaly ručně, ale pokud je použit automatizovaný systém, ušetří to nejen čas, ale také zabrání vzniku mnoha chyb.

Automatizovaný systém umožňuje jednorázově vytvořit seznam, který pak obsahuje právě tento produkt. V případě potřeby můžete v popisu vždy uvést potřebné údaje, vlastnosti a další informace. Ukazuje se, že adresáře 1C jsou hotové seznamy s údaji o produktech, klientech, službách atd. V případě potřeby lze seznamy měnit a doplňovat.

Kde jsou umístěny adresáře 1C?

Rozhraní pro práci v 1C Enterprise je obvykle vyvinuto programátorem, což znamená, že různé adresáře mohou být umístěny ve zcela odlišných nabídkách.

V tlustém klientovi může uživatel s právy správce otevřít jakýkoli dokument 1C a má přístup do libovolného adresáře. Chcete-li to provést, musíte otevřít nabídku „operace“, kliknout na „adresáře“ a z poskytnutého seznamu vybrat ten, který potřebujete.


Pokud se podíváte do tenkého klienta, je tam také podobná nabídka. Říká se tomu „všechny funkce“. Obsluhou se podobá menu „operace“.

V režimu konfigurátoru je přístup ke všem adresářům dostupný prostřednictvím konfigurační větve. Odtud můžete pracovat s libovolným adresářem, upravovat jeho šablonu, měnit ji a tak dále. Chcete-li začít, dvakrát na něj klikněte myší.

Jaký typ adresářů 1C vypadají?

Když otevřete adresář 1C 8, otevře se před vámi formulář ve formě seznamu. Pro usnadnění mohou být seznamy seskupeny podle určitých charakteristik a charakteristik.


Když otevřete skupinu, objeví se před vámi seznam všech prvků. A po kliknutí na samotný prvek se zpřístupní adresářový formulář, jehož pole lze vyplňovat a měnit.

Nejčastěji v 1C Enterprise existují dvě povinná pole pro adresáře:

    Název adresáře.

Jsou navrženy tak, aby pomohly odlišit jeden prvek od druhého. Někdy programátoři tyto možnosti deaktivují, ale to se stává velmi zřídka.


Pole „kód“ je nejčastěji uzavřeno z editace uživateli (vyžadují se speciální přístupová práva) a jeho hodnota je generována automaticky.

Nomenklaturou se v 1C 8.3 rozumí materiály, polotovary, zařízení, služby, vratné obaly, pracovní oděvy atd. Všechna tato data jsou uložena v adresáři Nomenklatury. Dostanete se do něj ze sekce „Adresáře“, podsekce „Zboží a služby“, položka „Nomenklatura“

Zobrazí se seznam pozic v adresáři, který má víceúrovňovou hierarchickou strukturu.

V tomto článku se krok za krokem podíváme na všechny pokyny pro počáteční vyplnění položek v 1C 8.3 pomocí příkladu

Pro snadné použití této referenční knihy používá 1C Accounting skupiny (složky). Kombinují nomenklaturu, která má společné vlastnosti. V každé skupině je zase možné vytvářet podskupiny (podobně jako souborový systém na počítači). Počet úrovní hierarchie nastavuje programátor, ale zpočátku neexistují žádná omezení.

Vytvořme novou skupinu. Ve formuláři seznamu v adresáři „Nomenklatura“ klikněte na tlačítko „Vytvořit skupinu“.

Zadejte název skupiny, která má být vytvořena. Můžete také vyplnit jeho typ, ale není to nutné.

Jak můžete vidět na obrázku níže, skupina, kterou jsme vytvořili, byla umístěna do „Materiálů“. Pokud jej potřebujete přesunout do jiné skupiny nebo do kořenového adresáře, otevřete kontextovou nabídku a vyberte „Přesunout do skupiny“. Otevře se okno, kde budete muset zadat nové umístění.

Vytvoření nové položky

Přejděme k přidání samotného názvosloví. Chcete-li to provést, ve formuláři seznamu adresářů klikněte na tlačítko „Vytvořit“. Otevře se před vámi karta nového předmětu.

Vyplňte pole „Jméno“. Hodnota do pole „Celé jméno“ bude vložena automaticky. Upozorňujeme, že v sestavách, tištěných formulářích dokladů, cenovkách apod. se zobrazuje celé jméno. Pole „Název“ slouží pro pohodlné vyhledávání položek v programu.

V případě potřeby vyplňte zbývající údaje:

  • Pole „Typ položky“ a „Zařazeno do skupiny“ se vyplňují automaticky z údajů skupiny, ve které je nová položka položky vytvořena. V případě potřeby je lze změnit.
  • Hodnota v poli „Jednotka“ je skladová jednotka pro zůstatky této položky.
  • Sazbu daně uvedenou v detailu „% DPH“ lze v případě potřeby změnit při generování dokladů.
  • Na prodejních dokladech je standardně uvedena „Prodejní cena“. Toto nastavení lze změnit kliknutím na hypertextový odkaz „?“ vedle tohoto pole.
  • V sekci „Výroba“ můžete uvést nákladovou položku pro danou položku a její specifikaci (u hotových výrobků), jinými slovy složení.
  • V závislosti na specifikách nomenklatury se vyplňují zbývající oddíly, jako jsou „Alkoholové výrobky“ a „Dovážené zboží“.

Poté, co vyplníte kartu k předmětu, který vytváříte, je třeba si ji zapsat.

Jaký je typ položky v 1C 8.3 a jak je nakonfigurovat

Chcete-li nakonfigurovat typy nomenklatury, klikněte na odpovídající hypertextový odkaz ve formuláři seznamu v adresáři „Nomenklatura“.

Typy nomenklatury jsou nezbytné k oddělení položek položek. Každému typu lze přiřadit vlastní. Je velmi důležité vyhnout se přítomnosti duplicit v tomto adresáři, které mohou vést k nesprávnému fungování účetních účtů položek.

Při instalaci standardní konfigurace od dodavatele bude tento adresář již naplněn hlavními typy položek. Pokud je typem položky služba, nezapomeňte při jejím vytváření uvést příslušný příznak.

Položkové účetní účty v 1C 8.3

Pro generování účetních zápisů je třeba nastavit účetní účty. To lze provést z formuláře seznamu v adresáři „Nomenklatura“ kliknutím na hypertextový odkaz „Účty účtování položek“.

Ve standardní konfiguraci 1C Accounting 3.0 je tento registr již naplněn. V případě potřeby je ale možné jej upravit ručně.

Účetní účty lze konfigurovat:

  • podle konkrétní položky nomenklatury;
  • podle nomenklaturní skupiny;
  • podle typu nomenklatury;
  • skladem;
  • podle typu skladu;
  • podle organizace;
  • v celé nomenklatuře, přičemž jako hodnotu uveďte prázdný odkaz.

Pokud byly pro konkrétní položku a pro ni nakonfigurovány různé účetní účty, bude účet převzat z položky. V takových případech mají konsolidované účetní závěrky nižší prioritu.

Nastavení cen položek

Jedna položka může mít několik cen. Liší se typy, jako je velkoobchodní cena, maloobchodní cena atd.

Přejděte na kartu prvku adresáře „Nomenklatura“ a přejděte na hypertextový odkaz „Ceny“.

Otevře se před vámi seznam, ve kterém můžete pro konkrétní typ v konkrétní datum. Jednoduše uveďte cenu v příslušném sloupci a poté klikněte na tlačítko „Zaznamenat ceny“. Automaticky se vytvoří doklad o nastavení ceny položky a v tomto seznamu na něj uvidíte odkaz.

Podívejte se také na video o nomenklatuře:

Psychiatrická léčebna. Jeden idiot druhému:
-Líbil se ti můj příběh, který jsem ti včera dal přečíst?
-Ano, ale nějak je všechno rozmazané a je tam mnoho postav.
Doktor vstoupí:
-Takže, idioti, kdo ukradl můj telefonní seznam?...

Účel adresářů
Adresář je seznam možných hodnot konkrétního atributu. Adresáře se používají v případech, kdy je potřeba eliminovat nejednoznačné zadávání informací.Aby například kupující, prodávající, skladník, ředitel pochopil, o jakém produktu mluvíme, musí to všichni nazývat stejně. A v tomto případě je potřeba referenční kniha. Obvykle má v obchodní společnosti podobu ceníku a pokud je takový adresář uložen v počítači, tak se do něj zapisuje celý možný sortiment zboží, se kterým obchodní společnost pracuje.

Systém 1C:Enterprise umožňuje udržovat téměř neomezený počet potřebných adresářů. Každý adresář je seznamem homogenních objektů: zaměstnanců, organizací, zboží atd. Každý takový objekt se nazývá adresářový prvek.

Z pohledu uživatele je třeba mít na paměti, že v Konfigurátoru se nevytváří samotný adresář jako seznam hodnot, ale je vyvinuta šablona adresáře, jeho šablona. Během procesu konfigurace je popsána struktura informací, které budou v adresáři uloženy, je vytvořena obrazovka a případně tištěná reprezentace adresáře a specifikovány různé vlastnosti jeho „chování“.

Atributy adresáře

Jako povinné údaje má každý adresář Kód A název. Kód prvku adresáře může být číselný nebo textový. Systém 1C:Enterprise poskytuje dostatek příležitostí pro práci s kódy prvků adresáře: automatické přidělování kódů, automatické řízení jedinečnosti kódu a další.

Kromě kódu a názvu lze v adresářích systému 1C:Enterprise uložit jakékoli další informace o prvku adresáře. Pro uložení takových informací do adresáře lze vytvořit seznam podrobnosti. Pomocí mechanismu detailů adresáře je snadné uspořádat například soubor zaměstnance.Například adresář Zaměstnanci téměř jistě bude mít atributy Pracovní pozice, Plat a další.Společnost 1C předvídala programátory a představila všechny referenční knihy dva již definované atributy: Kód A název. Tyto atributy skutečně obsahuje téměř každý reálný objekt. Například pro zaměstnance je kód osobní číslo a jméno je příjmení, jméno, patronymie (celé jméno).

Typy dat

Pro každý atribut adresáře musíte zadat jeho datový typ, například " číslo", "čára", "datum"(ve verzi 8.0 existuje i typ Boolean - True nebo False). Jedná se o základní typy, ale můžete zadat i komplexní datové typy. Například atribut Pracovní pozice má datový typ Pozice. V tomto případě budou hodnoty tohoto atributu vybrány z adresáře Pozice. Takto je realizováno nejjednodušší spojení mezi adresáři, kdy jsou hodnoty atributů jednoho adresáře vybrány z jiného adresáře.

Hierarchické adresáře

Seznam prvků adresáře v systému 1C:Enterprise může být víceúrovňový. V tomto případě budou všechny adresářové řádky rozděleny do 2 typů: „jen“ prvky adresáře a skupiny příručka. Skupiny umožňují přejít na nižší úrovně víceúrovňového adresáře. Použití víceúrovňových adresářů umožňuje organizovat zadávání informací do adresáře s požadovanou úrovní podrobnosti. Prvky a skupiny prvků ve víceúrovňovém adresáři lze přenášet z jedné skupiny do druhé.

Podřízené adresáře

Mezi adresáři lze vytvořit vztah podřízení. Z hlediska relačních databází je mezi tabulkami vytvořen vztah jedna k mnoha. V tomto případě bude každý prvek podřízeného adresáře spojen s jedním z prvků adresáře vlastníka. Někdy můžeme říci, že prvky jednoho adresáře patřit prvky jiného. Systém může mít například adresář daňových výhod. Pak se to dá udělat podřízených Adresář Zaměstnanci. Znamená to, že "Zaměstnanec vlastní daňové výhody".

Adresář Zaměstnanci

Adresář Daňové výhody

  • Ivanov Ivanov Ivanov
  • Petrov Petr Petrovič
  • Světlov Michail Petrovič
  • Cvetkov Anton Vasilievič

( majitel Petrov Petr Petrovič)

  • Výhody pro veterány
  • Přínos pro děti
  • Ivanov Ivanov Ivanov
  • Petrov Petr Petrovič
  • Světlov Michail Petrovič
  • Cvetkov Anton Vasilievič

( majitel Svetlov Michail Petrovič)

  • Přínos pro Afghánce

Části tabulky (pouze verze 8.0)

Ve verzi 8.0 bylo možné, aby prvek adresáře měl několik tabulkových částí. Doporučuje se používat tuto funkci pro zobrazení informací vztahujících se k danému prvku, který však nemá vlastní objektovou entitu (pro kterou se doporučuje vytvořit podřízený adresář). Například pro referenci Pro Produkty lze vytvořit tabulkovou sekci Měrné jednotky, pro adresář Zaměstnanci lze vytvořit tabulkové sekce Vzdělání a Složení rodiny. Práce s tabulkovými částmi je podobná práci s podřízenými adresáři s tím rozdílem, že tabulkové části nemohou být typy, což znamená, že již nebude možné vytvořit atribut typu Vzdělávání.

Porovnání adresářů s jinými objekty

Objekt

Podobnosti

Rozdíly

Konstanty ukládá hodnotu, uloženou v databázi V adresáři není uložena pouze jedna hodnota, ale celý seznam homogenních objektů.
Dokumentace uložený v databázi, má detaily, dokumenty si lze podřídit Adresář uchovává normativní a referenční informace a dokumenty odrážejí skutečné události ve světě. Hodnoty podrobností dokumentu se obvykle vybírají z adresářů. Dokument je obvykle zaúčtován, doklad musí mít datum a čas, doklad může obsahovat tabulkovou část, která není v adresářích (ve verzi 8.0 mohou mít adresáře a dokumenty více tabulkových částí). Adresáře mohou být víceúrovňové, adresář může obsahovat periodické detaily, které v dokumentech nejsou (ve verzi 8.0 nejsou periodické detaily, ale existují periodické registry informací).
Převody uložený v databázi, ukládá seznam hodnot Uživatel zadá sadu hodnot do adresáře v režimu Enterprise a pro výčty je seznam hodnot specifikován vývojářem v režimu Konfigurátor. Výčty se běžně používají v příkazech If.
Tabulka hodnot má řádky a sloupce (neuložené v databázi) Tabulka hodnot je navržena tak, aby ukládala mezilehlá data v paměti počítače, ke kterým dochází během činnosti programu. Tabulka hodnot může ukládat heterogenní objekty, zatímco adresář může ukládat všechny prvky stejného typu. Tabulky hodnot nemohou být víceúrovňové ani vzájemně podřízené.
ListValues ukládá seznam hodnot (neukládá se do databáze) Seznam hodnot může ukládat heterogenní objekty a v adresáři všechny prvky stejného typu

Základy programování

Vytvoření a nahrávání nového prvku

Hledání položky adresáře


//například v propouštěcím příkazu
Ref. FindElement(Zaměstnanec);

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

//pokud je prvek nalezen, stane se aktuálním a lze jej číst takto:

Pokud Spr.FindByName("Ivanov Ivan Ivanovič") = 1 Pak
........FoundCotr = RefCotr. CurrentItem();
endIf;


//ve verzi 8.0, pokud je prvek nalezen, pak je vrácen, jinak je vrácen Nedefinováno

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

FoundSotr = SprSotr.FindByName("Ivanov Ivan Ivanovič");
If FoundSotr = Undefined Then
.....//prvek nenalezen
endIf;

Odstranění prvku adresáře

Ref. Vymazat(1); //okamžité smazání

Ref. Vymazat(0); //označit pro smazání
Ref. Zrušte zaškrtnutí políčka Smazat();


Značka = Ref. FlagDelete(); //poznámka: toto je metoda


Ref. Vymazat(); //okamžité smazání

Ref. SetDeleteMark (True); // označit pro smazání
Ref. SetDeletionMark (False); //vzlétnout označit pro smazání

//můžete zkontrolovat, zda je prvek označen pro smazání
//existuje vlastnost MarkDelete, je typu Boolean - True nebo False

Značka = Ref. FlagDelete; //poznámka: toto je vlastnost
Pokud Mark = Pravda, Pak
.....//prvek označený ke smazání
endIf;

Výčet prvků adresáře


Ref. Vyberte položky();
Zatímco SprSotr. GetElement() = 1 cyklus
...
...Notify("Zaměstnanec" + Jméno);
EndCycle;


výběr = Adresáře.Zaměstnanci. Vybrat();
Zatím jen výběr. další() = 1 cyklus
... //akce s dalším prvkem
EndCycle;


Rodič
Iterujte prvky ve skupině. Skupina v termínech 1C je „rodič“.


Ref.FindByName("Working");
Working = Ref.CurrentItem();
Ref. UseParent(Pracovní);
//dále např. cyklus pro zaměstnance (viz výše)
...



GroupWorking = SprSotr.FindByName("Working");
výběr = Ref. Vybrat(GroupWorking);
Zatím jen výběr. další() = 1 cyklus
... //akce s dalším prvkem
...Notify("Zaměstnanec" + výběr.Jméno);
EndCycle;

Majitel
Výčet prvků adresáře patřících prvku jiného adresáře.
Jedna referenční kniha podřízený jiná referenční kniha, například referenční kniha. Daňové výhody podléhají Ref. Zaměstnanci.

Pravidelné podrobnosti
Čtení a psaní pravidelných podrobností.
Nastavení data pro vzorkování periodických podrobností pro celý adresář.


//tak zjistíme, co měl zaměstnanec
//kategorie pro konkrétní datum

Kategorie = SprSotr.Category. Dostat(SomeDate);

//takto nastavíme kategorii pro zaměstnance
//pro konkrétní datum
SprSotr.Category. Nainstalujte(SomeDate, NewCategory);

//můžete nastavit datum vzorkování na periodické
//podrobnosti pro celý adresář
Ref. UseDate(SomeDate);

//pak již nemůžete níže používat Install and Get
//bude přístup k pravidelným podrobnostem
//stejné jako u běžných detailů
Kategorie = SprSotr.Category;
Spr.plat = 6000;

Ve verzi 8.0 nejsou žádné pravidelné podrobnosti. Místo toho je nutné využívat v čase rozšířené informační registry.

Obrazovkové formuláře referenčních knih

Formulář seznamu adresářů

Chcete-li uživatelům usnadnit práci s adresářem ve fázi konfigurace, můžete vytvořit několik typů obrazovkové formuláře pro zobrazení adresáře. V závislosti na kontextu volání adresáře můžete určit použití konkrétního dialogu pro práci s adresářem.

Je lepší jednou vidět než stokrát slyšet, takže níže je příklad formuláře seznamu pro adresář zaměstnanců:




Modul formuláře seznamu obsahuje procedury a funkce, které fungují v kontextu tohoto formuláře (v kontextu objektu Directory).

Předdefinované procedury jsou volány systémem 1C při výskytu určitých Události. Předdefinované procedury jsou volány systémem 1C, když nastanou určité události, jedná se tedy o obsluhu událostí. Ve verzi 8.0 může být název procedury jakýkoli, nemusí být nutně stejný jako název události. Ve verzi 8.0 byl navíc výrazně rozšířen seznam událostí pro všechny objekty.

událost

Popis

PřiOtevření Volá se při otevření formuláře seznamu adresářů. Můžete nastavit počáteční hodnoty proměnných, zkontrolovat uživatelská práva pro otevření tohoto adresáře atd.
Při zavření Volá se při zavření formuláře seznamu adresářů.
Při nahrávání

Volá se při zápisu prvku adresáře, pokud jsou prvky zadány přímo ve formuláři seznamu, a nikoli ve formuláři prvku. To se používá pro adresáře s jednoduchou strukturou, například adresář Jobs. Tento postup vám umožňuje zkontrolovat chyby ve vstupních datech.

Příklad, adresář Pozice

WhenSelectingParent(NewParent) Volá se, když je vybrán rodič (skupina). Tento postup použijte k ověření práv uživatele k zobrazení členů dané skupiny.
WhenSelectingOwner(NewOwner) Volá se, když je vybrán vlastník hostitelského adresáře. Má smysl, pokud je tento adresář podřízen jinému.
WhenSettingSelection(Atributes,Value) Předdefinovaný postup pro interaktivní nastavení výběru jakýmkoli způsobem (výběr, rychlý výběr, výběr podle hodnoty, historie výběru) a při zakázání výběru.
OnRowSelect() Režim zpracování výběru řádku (dvojité kliknutí nebo klávesa Enter) je povolen ve formě seznamu adresářů, deníku dokladů, účtů, deníku transakcí, deníku transakcí pomocí metody Form.RowSelectionProcessing(1). Poté, když je vybrán řádek, bude volána tato předdefinovaná procedura.


Řazení

Ve formě seznamu adresářů lze prvky třídit v různém pořadí: podle kódu, podle názvu nebo podle jakéhokoli atributu, který má v konfigurátoru zaškrtnuté políčko Třídění.Typ řazení můžete nastavit programově pomocí metody řazení (Method, ChangePermission Flag)


Postup OnOpen()
...... Řazení("Kód",0); //třídění podle kódu, uživatel nemůže změnit
Konec procedury

Postup OnOpen()
......DirectoryList.Order.Set("Name Asc, Card Asc");
......//otázka čtenářům: jak zabránit uživateli ve změně pořadí řazení?
Konec procedury

Výběr

Ve formuláři adresářového seznamu lze položky filtrovat, tzn. Uživateli se zobrazí pouze nezbytné prvky. Výběr můžete nastavit programově pomocí metody SetSelection (Atributy, Value). K tomu musí mít atribut v konfigurátoru zaškrtnuté políčko „Výběr podle atributu“. .

Statický filtr (pouze verze 7.7)

V 1C 7.7 nelze nastavit výběr podle periodických detailů nebo podle několika detailů současně (složitý filtr). V tomto případě může být východiskem metoda UseList of Elements. Této metodě je třeba předat seznam prvků, které by se měly zobrazit. Tento seznam je třeba nejprve vytvořit.

Postup ShowWorkingCarpenters()

ElementList = createObject("ValueList");

Ref.SelectItems();

.....If (Adv.Parent = groupWorking) AND (Adv.Position = job Carpenter) Then
..........Seznam prvků.AddValue(Ref.CurrentElement());
.....EndIf;
EndCycle;

UseListElements(Položky seznamu);

Konec procedury

Forma prvku a forma skupiny

Pokud má adresář složitou strukturu, je výhodnější upravovat jeho prvky v samostatném okně než v seznamu. Níže je formulář prvku Adresář zaměstnanců.


Formulář prvku adresáře má také předdefinované procedury (události):

Události

Popis

OnOpen() Volá se při otevření formuláře položky adresáře. Můžete nastavit počáteční hodnoty proměnných, zkontrolovat uživatelská práva k otevření daného prvku adresáře atd.
OnClose() Volá se při zavření formuláře položky slovníku.
OnWrite()

Volá se, když je zapsán prvek adresáře. Tento postup vám umožňuje zkontrolovat chyby ve vstupních datech.

Příklad, adresář Zaměstnanci

Postup nahrávání
....If Category.Selected()=0 Then
.........Upozornění("Kategorie zaměstnanců není specifikována!");
.........ReturnStatus(0);
.....EndIf;
Konec procedury

EnterNew() Volá se, když je interaktivně zadán nový prvek adresáře. V tomto postupu můžete zkontrolovat práva uživatele k vytváření nových prvků adresáře a také nastavit počáteční hodnoty podrobností.

Nutno podotknout, že ve verzi 8.0 byl výrazně rozšířen seznam událostí pro všechny objekty.

Vytváření a nahrávání prvku

Programové vytvoření adresářového prvku

Níže v adresáři Zaměstnanci je do pracovní skupiny programově přidán nový zaměstnanec. V adresáři jsou vyplněna pole Jméno, Datum příjmu a několik pravidelných údajů.



Ref. Nový();


Ref. Zapsat();
//nastavení periodických detailů je možné až po nahrání prvku
Ref.Category.Set (Ref.ReceptionDate, ktgPartners);
Ref.Position.Set (Ref.ReceptionDate, forCarpenter);

Ale můžete to udělat krásnější:

RefCotr = CreateObject("Adresář.Zaměstnanci");
SprSotr.UseParent(grpWorking);
Ref.UseDate(Datum přijetí); //Pozornost!
Ref.New();
SprSotr.Name = "Ivanov Ivan Ivanovič";
Ref.ReceptionDate = "01/01/2002";
//přístup k pravidelným detailům bude stejný jako k běžným
SprSotr.Category = ktgPartners;
Spr.Position = dljTesař;
SprCotr.Write();

New = Directories.Employees.CreateItem();
New.Parent = groupWorking;
Nové. Jméno = "Ivanov Ivan Ivanovič";
New.ReceptionDate = "01/01/2002";
New.Write();

//ve verzi 8.0 nejsou žádné pravidelné podrobnosti

Programové vytváření skupin

RefCotr = CreateObject("Adresář.Zaměstnanci");

Ref. Nová skupina();

Ref. Zapsat();

Ref.NewGroup();

SprCotr.Write();

Novinka = Adresáře.Zaměstnanci .Pro vytvoření skupiny();

Nový Zapsat();

Novinka = Adresáře["Zaměstnanci"] .Pro vytvoření skupiny();
New.Name = "Pracovní";
Nový Zapsat();

Pozornost!

Transakce

Při vytváření mnoha prvků adresáře můžete do transakce uzavřít cyklus, abyste práci urychlili. V tomto případě dojde ke skutečnému vytvoření všech prvků pouze pomocí příkazu CommitTransaction(). Během transakce je adresář zablokován.

RefCotr = CreateObject("Adresář.Zaměstnanci");
Zahájit transakci();

Pro Nom = 1 až 100 Cyklus
.....Ref.Novy();
.....SprSotr.Name = "New" + String(Nom);
.....RepCort.Write();
EndCycle;

CommitTransaction();


SprSotr = Directories.Employees;
Zahájit transakci();

Pro Nom = 1 až 100 Cyklus
.....New = SprSotr.CreateElement();
.....Nové.Jméno = "Nové" + String(Nom);
.....New.Write();
EndCycle;

CommitTransaction();

Iterování přes prvky

Jednoduché vyhledávání

RefCotr = CreateObject("Adresář.Zaměstnanci");
režim = 0; //vyberte bez zohlednění hierarchie, 1 - zohlednění (ve výchozím nastavení)
Ref. Vyberte položky(režim);
Zatímco SprSotr. GetElement()=1 cyklus
.....<действия с очередным элементом/группой>
EndCycle;

Filtrace (výběr)

RefCotr = CreateObject("Adresář.Zaměstnanci");
HierarchyMode = 1; //1 - vyberte s ohledem na hierarchii, 0 - bez zohlednění
GroupMode = 0; //0 - nezahrnout skupiny do výběru, 1 - zahrnout
AttributeName = "Rok"; //v Konfigurátoru musí mít atribut zaškrtnuté políčko Výběr
hodnota = 1980;
Ref. Vyberte položku ElementsBy Details(název atributu, hodnota, režim hierarchie, režim skupiny);
Zatímco SprCont.GetElement()=1 smyčka
.....<действия с очередным элементом>
EndCycle;

Filtrování ve smyčce

RefCotr = CreateObject("Adresář.Zaměstnanci");
SprSotr.UseParent(grpWorking);
Ref.UseDate(WorkingDate());
Ref. Vyberte položky();
Zatímco SprSotr. GetElement()=1 cyklus

Pokud Administrativní pozice<>dlzhCarpenter Pak
....Pokračovat; //tohoto zaměstnance přeskočíme, přejdeme na začátek cyklu
endIf;

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

EndCycle;

Pořadí řazení

Před vzorkováním můžete nastavit pořadí řazení pomocí následujících metod:

CodeOrder()
NameOrder()
Pořadí atributu (ReqName) //atribut musí mít v konfigurátoru zaškrtnuté políčko Sorting
Obrácené pořadí()

Například níže otevře výběr zaměstnanců seřazený podle čísla v sestupném pořadí:

RefCotr = CreateObject("Adresář.Zaměstnanci");
Ref.CodesOrder();
Ref.ReverseOrder();
Ref.SelectItems();

Žádost do adresáře

Vyhledávání prvků adresáře lze organizovat pomocí požadavku. To je často výhodnější, pokud se použije složitá podmínka výběru nebo seskupení prvků. Zobrazit další podrobnosti. Žádosti

Vyhledejte prvek

Vyhledejte prvek

RefCotr = CreateObject("Adresář.Zaměstnanci");
Pokud SprSotr. FindElement(SelectSotr)=1 Potom
....//prvek se stane aktuálním
....SprSotr.Parent = grpWorking;
....RepCort.Write();
endIf;

Vyhledávání podle kódu

Pokud SprSotr. FindByCode(1) = 1 Pak
....ElementOrGroup = Ref.CurrentElement();
endIf;

Hledejte podle jména

Pokud SprSotr. FindByName("Pracovní")=1 Pak
....grpWorking = Ref.CurrentItem();
endIf;

režim = 1; // 1 - hledání v rámci zavedené podřízenosti (rodič) (výchozí); 0 - vyhledávání v celém adresáři
SearchFlag = 0; //1 - najít přesnou shodu; 0 - najít jméno podle prvních znaků (výchozí)
SprSotr.UseParent(grpWorking);
If Ref.FindByName("Iv",Mode,SearchFlag)=1 Then
....FirstWorkingIv = Ref.CurrentItem();
endIf;

Vyhledávejte podle podrobností

ReqName = "Rok"; //atribut musí mít v konfigurátoru zaškrtnuté políčko Sorting
SearchGlobeFlag = 1; // 1 - hledání v celém adresáři, 0 - hledání v podřízenosti
Pokud SprSotr. FindByDetails(ReqName,1980,SearchGlobeFlag)=1 Potom
.....FoundElement = Ref.CurrentElement();
endIf;

Hledání prvku ve smyčce

RefCotr = CreateObject("Adresář.Zaměstnanci");
SprSotr.UseParent(grpWorking);
Ref.UseDate(WorkingDate());
Ref. Vyberte položky();
Zatímco SprSotr. GetElement()=1 cyklus

If Admin.Position = dlzhCarpenter Then
....Přerušit; //našel jsem pracujícího truhláře! dostat se ze smyčky
endIf;

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

Žádost do adresáře

Hledání prvku adresáře lze organizovat pomocí požadavku. To je často výhodnější, pokud je aplikována složitá podmínka výběru. Zobrazit další podrobnosti. Žádosti

Odebírání položek

Přímé odstranění

RefCotr = CreateObject("Adresář.Zaměstnanci");
SprEmployee.FindElement(SelectEmployee);
Ref.Delete(); //okamžité smazání

Pozornost! Pokud přímo odstraníte prvek, ujistěte se, že na něj nejsou žádné odkazy v jiných objektech. Odebraného zaměstnance lze například použít v dokumentu Dovolená. Pokud je odstraněn, referenční integrita databáze bude narušena. V tomto případě se doporučuje použít označeno ke smazání.

Pomocí metody FindLinks(object) můžete programově získat seznam objektů obsahujících odkaz na objekt, který má být odstraněn.

Označit ke smazání

Pro kontrolu referenční integrity databáze jsou odstraněné prvky jednoduše označeny pro odstranění. Poté pomocí speciálního příkazu nabídky Operace => „Smazání označených objektů“ v exkluzivním režimu systém 1C zkontroluje referenční integritu a fyzicky odstraní prvky z databáze, pokud na ně nejsou žádné odkazy v jiných objektech.

SprSotr = CreateObject("Adresář.Zaměstnanci");
Ref.FindElement(SelectEmployee);
Ref.Delete(0); //označit pro smazání

//můžete zkontrolovat, zda je prvek označen pro smazání
//funkce vrátí 1 - pokud je označena, 0 - pokud ne
Značka = Ref. FlagDelete();

//můžete zrušit zaškrtnutí značky odstranění
Ref.FindElement(SelectEmployee);
Ref. Zrušte zaškrtnutí políčka Smazat();

Transakce

Při odstraňování mnoha prvků adresáře můžete do transakce uzavřít smyčku, abyste práci urychlili. V tomto případě dojde ke skutečnému odstranění (označení pro smazání) všech prvků pouze příkazem CommitTransaction(). Adresář je po dobu transakce zablokován.

RefCotr = CreateObject("Adresář.Zaměstnanci");
Zahájit transakci();

Ref.SelectItems();
Zatímco SprCont.GetElement()=1 smyčka
......Ref.Delete(0); //označit pro smazání
EndCycle;

CommitTransaction();

Hierarchické adresáře

Seznam prvků adresáře v systému 1C:Enterprise může být víceúrovňový. V tomto případě budou všechny adresářové řádky rozděleny do 2 typů: „prostě“ adresářové prvky a adresářové skupiny. Skupiny umožňují přejít na nižší úrovně víceúrovňového adresáře. Možný počet úrovní vnoření adresářů se nastavuje v Konfigurátoru.

Použití víceúrovňových adresářů umožňuje organizovat zadávání informací do adresáře s požadovanou úrovní podrobnosti. Prvky a skupiny prvků ve víceúrovňovém adresáři lze přenášet z jedné skupiny do druhé.

Pozornost! Hierarchický referenční kniha je také víceúrovňový adresář nebo adresář s skupiny.
Skupina adresářů v 1C se často nazývá " rodič".

Programové vytvoření skupiny

RefCotr = CreateObject("Adresář.Zaměstnanci");

Ref. Nová skupina();
SprSotr.Name = "Pracuje";
Ref. Zapsat();

Ref.NewGroup();
Ref.Name = "Zamítnuto";
SprCotr.Write();

Pozornost! V Konfigurátoru můžete nastavit, aby byl atribut platný pouze pro prvek, pouze pro skupinu nebo pro oba. Například pole Datum přijetí nedává smysl pro pracovní skupinu. Proto byste neměli přistupovat k detailům prvku, pokud pracujete se skupinou a naopak.

Nastavení aktuální skupiny


Ref. UseParent(grpWorking); //nyní jsme uvnitř pracovní skupiny
Ref.SelectItems(); //otevřete výběr prvků pracovní skupiny

RefCotr = CreateObject("Adresář.Zaměstnanci");
Ref. UseParent(grpWorking);
Ref.New(); //vytvoření nového prvku v pracovní skupině

Pokud je adresář víceúrovňový, bude užitečné použít následující metody a atributy, které vám umožní získat informace o aktuálním prvku adresáře:

Metoda/atribut

Popis

Úroveň()

Tato metoda vrací úroveň aktuálního prvku. Například pro zaměstnance, který je v pracovní skupině, dostaneme číslo 2.

Příklad, výstup hierarchického adresáře ve formě stromu:

RefCotr = CreateObject("Adresář.Zaměstnanci");
Ref.SelectItems();

//zobrazení odsazení podle hloubky vnoření prvku
Pro Nom=1 Cyklus Const.Level().
.....Ohlásit(".....");
EndCycle;

EndCycle;

Tato skupina() Tato metoda vrátí 1, pokud je aktuálním prvkem adresáře skupina, nebo 0, pokud se nejedná o skupinu.

Příklad, výstup zaměstnanců (skupiny nejsou výstupem):

RefCotr = CreateObject("Adresář.Zaměstnanci");
Ref.SelectItems();
Zatímco Ref.GetItems()=1 smyčka

If Ref.ThisGroup()=1 Then
......Pokračovat; //přeskočit skupiny, přejít na začátek smyčky
endIf;
Report(Ref.Name);

EndCycle;

Patří do skupiny (...) Metoda kontroluje, zda aktuální prvek adresáře patří do zadané skupiny (bez ohledu na základní úroveň, na které se nachází).
Vrací: 1 – pokud prvek patří do zadané skupiny, 0 – pokud ne.

Příklad zobrazení produktů patřících do skupiny Alkohol, bez ohledu na to, zda jsou zařazeny do podskupin Šampaňské, Pivo, Vodka, Víno atd.:




.....Notify(SprProducts.Name);
endIf;

EndCycle;

atribut Parent

Tento atribut obsahuje rodiče aktuálního prvku adresáře, tj. skupina, ve které se aktuální prvek nachází. Čitelné a zapisovatelné.

Příklad převedení všech produktů ze skupiny Alkohol do skupiny Prodej:

DirectoryProducts = CreateObject("Directory.Products");
SprProducts.SelectItems();
Zatímco SprProducts.GetItems()=1 smyčka

If Products.Belongs to Group(groupAlcohol)=1 Then
.....SprSotr.Parent = grpProdej;
.....RepCort.Write();
endIf;

EndCycle;

Nebo to můžete zkrášlit a přesunout celou skupinu Alkohol do skupiny Prodej, pak se do skupiny Prodej přenesou i všechny podskupiny a prvky.

DirectoryProducts = CreateObject("Directory.Products");
SprProducts.FindItem(grpAlcohol);
SprProducts.Parent = grpSale;
SprProducts.Write();

FullCode()

Vrátí řetězec obsahující úplný kód vybraného prvku adresáře se všemi vyššími úrovněmi oddělenými znakem "/".

Například „2/7/123“

Celé jméno()

Vrátí řetězec obsahující celé jméno vybraného prvku adresáře se všemi vyššími úrovněmi oddělenými znakem "/".

Například „Alkohol/Šampaňské/Sovětský“

Schopnost vybrat skupinu v dialogových rekvizitách

Pro podrobnosti o formuláři, který má typ Adresář, je často vhodné zakázat možnost výběru skupiny. Pak lze v tomto poli vybrat pouze prvek a nelze vybrat skupinu. Obecně je snazší jednou zkusit, než několikrát vysvětlovat.

Form.SelectEmployee. Výběr skupiny(0); //zakáže možnost výběru skupiny

Podřízené adresáře

Adresář- majitel, toto je také referenční kniha - mistr.
Adresář vlastníka a adresář slave jsou také volány příbuzný referenční knihy.
V podmínkách relační databáze je adresář vlastníka nadřazená tabulka, podřízený adresář je podřízená tabulka.

Přiřazení podřízených adresářů

Libovolný adresář lze použít buď samostatně, nebo být podřízený nějakému jinému adresáři. Například adresář smluv lze používat samostatně nebo jej lze propojit s adresářem organizací.

Chcete-li adresář podřídit některému z adresářů, které již v systému existují, v poli „Podřízený“ vyberte název tohoto adresáře. Takový adresář v systému 1C:Enterprise se nazývá vlastník.

Na rozdíl od víceúrovňového adresáře, ve kterém mají všechny prvky stejnou strukturu, umožňuje použití mechanismu podřízených adresářů propojovat prvky různých struktur. V tomto případě bude každý prvek podřízeného adresáře spojen s jedním z prvků adresáře vlastníka.

Externě bude práce s podřízeným adresářem v systému 1C:Enterprise vypadat takto.

Pokud je u podřízeného adresáře nastaven režim zobrazení ve formě hierarchického seznamu, je třeba před použitím adresáře nejprve vybrat prvek adresáře vlastníka. Při zobrazení na obrazovce bude podřízený adresář obsahovat v názvu název prvku vlastníka a seznam prvků podřízeného adresáře bude obsahovat pouze prvky související s prvkem vlastník. Když se změní prvek vlastníka, budou odpovídajícím způsobem aktualizovány informace v okně podřízeného adresáře.

Pokud otevřete podřízený adresář bez výběru prvku vlastníka, pak se v okně podřízeného adresáře nezobrazí žádný prvek a v záhlaví okna se zobrazí zpráva „Prvek vlastníka není zadán“.

Při práci se systémem 1C:Enterprise lze pro podřízený adresář zakázat zobrazování ve formě hierarchického seznamu. V tomto případě se všechny prvky tohoto adresáře zobrazí v okně podřízeného adresáře, to znamená, že prvky přiřazené různým vlastníkům se zobrazí pomíchané. Jakýkoli prvek podřízeného adresáře však „zná“ svého vlastníka: pokud je pro adresář povolen režim „Upravit v dialogu“ (viz níže v části „Vytváření adresářových formulářů“), jméno prvku vlastníka se zobrazí v názvu. okna pro úpravu prvku adresáře.

Nastavení aktuálního vlastníka


SprAgreements.UseOwner(SelectContractor);
SprAgreements.SelectItems(); //otevřete výběr dohod vybrané protistrany
<...>

Informace o aktuálním prvku

Pokud je adresář podřízený, bude užitečné použít následující metody a atributy, které vám umožní získat informace o aktuálním prvku adresáře:

Atribut

Popis

vlastník atributu

Tento atribut obsahuje vlastníka aktuálního prvku podřízeného adresáře, tzn. prvek hostitelského adresáře, do kterého tento prvek patří. Atribut je čitelný a zapisovatelný.

Příklad převod všech smluv z jedné protistrany na druhou (adresář smluv je podřízen adresáři protistran):

DirectoryAgreements = CreateObject("Directory.Agreements");
SprAgreements.UseOwner(Protistrana1);
SprAgreements.SelectItems();
Zatímco SprAgreements.GetElements()=1 smyčka

SprAgreements.Owner = Protistrana2;
SprAgreements.Write();

EndCycle;


Pravidelné podrobnosti

Povolení možnosti „Periodicky“ vám umožní určit pro atribut adresáře ukládání historie změn jeho hodnoty. Takový detail v systému 1C:Enterprise se nazývá periodický a má následující vlastnost: na rozdíl od „běžných“ (neperiodických) detailů systém 1C:Enterprise ukládá hodnoty takového detailu podle dat jejich změny. . Při přístupu k hodnotě takového atributu pro určité datum je vrácena jeho hodnota pro toto datum, nebo pokud chybí, pro nejbližší předchozí datum, kdy byla hodnota atributu nastavena.

Tato vlastnost detailů adresáře umožňuje například snadno organizovat ukládání historie směnných kurzů v adresáři měn.

K pravidelným podrobnostem lze přistupovat pomocí vestavěného jazyka systému 1C:Enterprise – přijímat a zaznamenávat hodnotu podrobností k určenému datu. Je však třeba mít na paměti, že při příjmu hodnoty proměnné pro určité datum se načte její hodnota pro zadané nebo (pokud pro zadané datum žádná hodnota neexistuje) pro nejbližší předchozí datum a hodnota periodická proměnná se zaznamenává vždy k uvedenému datu.

V režimu používání konfigurace pro pravidelné podrobnosti můžete otevřít okno „Historie“. Toto okno je tabulka sestávající ze dvou sloupců: datum změny hodnoty atributu adresáře a hodnota k tomuto datu. Okno „Historie“ umožňuje přímo upravovat historii změn hodnoty atributu: zadávat nové řádky, upravovat nebo mazat stávající.

Metody periodických detailů
//takto zjistíme, jakou kategorii měl zaměstnanec k určitému datu
Kategorie = SprSort.Category.Get(SomeDate);

//takto nastavíme kategorii zaměstnance pro konkrétní datum
Ref.Category.Set(SomeDate, NewCategory);

Pozornost! Tyto metody lze použít, pokud jste dříve nepoužili metodu UseDate

Nastavení data pro periodické vzorkování

//můžete nastavit datum pro vzorkování periodických podrobností pro celý adresář
Ref. UseDate(SomeDate);

//tak už je to nižší je to zakázáno použijte metody Set a Get
//přístup k pravidelným podrobnostem bude stejný jako k běžným podrobnostem
Kategorie = SprSotr.Category;
Spr.plat = 6000;

Objekt "Periodicky"

Pro práci s historií periodických detailů je velmi vhodné použít objekt „Periodický“.

Příklad zobrazení historie kariéry zaměstnance za aktuální rok:

HistoryCareers = CreateObject("Periodicky");
CareerHistory.UseObject("Position", SelectEmployee);
Kariérní historie.SelectValues(Začátek roku(pracovní datum(),konec roku(pracovní datum()));
Zatímco HistoryCareers.GetValue()=1 smyčka
....Report(String(CareerHistory.DateValue) + " " + String(CareerHistory.Value));
EndCycle;

Hodnoty můžete také upravovat a mazat pomocí objektu Periodický. Úplný seznam metod naleznete v Pomocníkovi syntaxe.

Vyřizování dokumentů

Při účtování dokladu je často nutné nastavit novou hodnotu periodického atributu pro konkrétní datum. Tomu se říká pohyb dokumentů. V tomto případě byste měli použít metodu Set Directory Attributes:

Nastavte podrobnosti adresáře(Zaměstnanec, "Pozice", NewPosition, MoveDate);

Konec procedury

Pokud má doklad tabulkovou část a chcete, aby pohyby dokladu byly propojeny s číslem řádku dokladu, měli byste použít metodu BindRow.

Postup ProcessingConduct()

SelectRows();
Zatímco GetString()=1 smyčka

BindString(Řádkové číslo);
Nastavit podrobnosti adresáře (zaměstnanec, "Pozice", Nová pozice, Datum přesunu);

EndCycle;

Konec procedury

Výběr z adresáře

Funkce výběru vám umožňuje vybrat více hodnot z vyhledávání nebo jiného objektu, aniž byste jej zavírali.Existuje například dokument Faktura, ve kterém může uživatel specifikovat několik produktů.

Organizace výběru

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

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


...Nový řádek();
...Produkt = Položka;
Konec procedury

Můžete použít kontext formuláře a okamžitě přejít do požadované skupiny, například:

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

Procedure ProcessingFit(Element,FormContent)
...Nový řádek();
...Produkt = Položka;
Konec procedury

Nastavení a získání hodnot z výběru

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

<ИмяРеквизита>- řádek s názvem atributu formuláře pro výběr hodnoty;
<Значение>- hodnota atributu.

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

<Выражение>- řetězcový výraz, jehož hodnota se vypočítá v kontextu formuláře výběru a vrátí se jako výsledek.

Další užitečné metody

Metoda

Popis

Pohled() Nastavte nebo přečtěte aktuální název typu adresáře. Vrátí aktuální název typu adresáře, jak je zadáno v konfigurátoru, například „Zaměstnanci“. Nastavení typu adresáře je možné u detailů typu "Adresář", tzn. adresář neurčitého typu.
ViewView() Získejte vlastní pohled na zobrazení adresáře, jak je uvedeno v konfigurátoru.
Vrátí hodnotu řetězce obsahující vlastní reprezentaci zobrazení adresáře (synonymum).
SetAttribute(AttributeName, Value) Nastavte hodnotu atributu podle jeho názvu.
<ИмяРеквизита>- řetězcový výraz obsahující název atributu, jak je uvedeno v konfigurátoru.<Значение>- výraz obsahující hodnotu atributu, který má být nastaven.
GetAttribute(AttributeName) Získejte hodnotu atributu podle jeho názvu. Vrátí hodnotu atributu.
Vybraný()

Vrátí 1 – pokud je vybrán prvek adresáře, 0 – pokud není vybrán. Často se používá ke kontrole chyb, aby bylo zajištěno, že jsou poskytnuta všechna požadovaná data.

Vybrat(...) Vyvolání dialogu pro výběr prvku adresáře.
Vrací: 1 - pokud je prvek vybrán; 0 - pokud není vybráno. Vybraný prvek se stane aktuálním.

Čtení adresářové struktury

Cyklus podle referenčních knih

Number of DirectoriesInConfiguration = Metadata.Directory();
Pro Nom=1 až Počet adresářů v konfiguračním cyklu

cfgSpr = Metadata.Directory(Nom);
Identifikátor = cfgSpr.Identifier();
FullIdentifier = cfgSpr.FullIdentifier();
Synonymum = cfgSpr.Synonymum();

Adresáře 1C jsou specializovaný objekt stromu metadat, který slouží k ukládání statických referenčních informací. V typických konfiguracích můžete například vidět následující zobrazení: , Nomenklatura, Zaměstnanci, Dlouhodobý majetek atd. Informace v adresářích se zpravidla často nemění. Adresáře se následně používají téměř ve všech účetních objektech jako účetní oddíl nebo referenční informace.

Níže se podíváme na nastavení a návrh adresáře z konfigurátoru pomocí adresáře „Nomenklatura“ jako příklad.

Základní karta

Záložka „Základní“ uvádí název, synonymum, reprezentaci objektu a popis účelu.

Záložka „Hierarchie adresářů“.

Zde je stanovena hierarchie adresáře.

Hierarchie v 1C 8.3 je dvou typů - “ skupiny a prvky" A " Prvky". Liší se tím, že v prvním případě může být rodičem (složkou) pouze složka (skupina) a ve druhém případě může být rodičem i prvek.

„Umístit skupiny navrch“ - příznak je zodpovědný za zobrazení skupin ve formě seznamu.

Také v nastavení můžete omezit počet skupin v hierarchii adresářů pomocí příslušného nastavení.

Vlastníci Tab

Adresář může být podřízen jinému adresáři. Z hlediska konfigurace 1C 8.3 to znamená, že atribut „Owner“ se stává povinným pro podřízený prvek. Příklad takového spojení mezi adresáři ve standardních konfiguracích „Nomenklatura – Měrné jednotky“, „Protistrany – Smlouvy dodavatelů“.

Vlastníkem adresáře mohou být také následující objekty metadat: , .

Údaje Tab

Získejte 267 videolekcí na 1C zdarma:

Nejdůležitější záložka z pohledu programátora. Obsahuje podrobnosti o adresáři.

Adresář obsahuje sadu standardních podrobností, které programátor 1C 8.2 neupravuje; jejich seznam lze zobrazit kliknutím na tlačítko „Standardní podrobnosti“:

U každého se budu věnovat podrobněji:

  • Tato skupina— atribut typu Boolean označující, zda se jedná o skupinu nebo prvek. Dostupné pouze v hierarchickém adresáři. Poznámka, hodnotu tohoto atributu nelze změnit v režimu 1C: Enterprise.
  • Kód— rekvizity, typové číslo nebo řetězec (obvykle řetězec). Číslo přidělené automaticky systémem. Obvykle se počítá jako (předchozí kód + 1). Doporučuji použít typ řetězce, protože řazení číselných hodnot nefunguje podle očekávání. Lze použít jako prezentaci adresáře v seznamu a ve vstupních polích. Obvykle se používá k vyhledání prvku při zadávání řetězce. Pokud potřebujete odstranit pole Kód, zadejte do délky řádku nulu.
  • název— povinné údaje, typ řetězce. Maximální délka řádku je 150 znaků. Lze použít jako prezentaci adresáře v seznamu a ve vstupních polích. Obvykle se používá k vyhledání prvku při zadávání řetězce. Pokud potřebujete odstranit pole Název, zadejte do délky řádku nulu.
  • Rodič— atribut typu DirectoryLink.<ИмяТекущегоСправочника>. Dostupné pouze v hierarchickém adresáři. Ukazuje na nadřazeného rodiče v hierarchii. Pokud je prvek nebo skupina v kořenovém adresáři adresáře, je určena hodnota Adresář.<ИмяТекущегоСправочника>.EmptyLink.
  • Majitel— odkaz na prvek vlastníka aktuálního prvku adresáře (skupiny). Dostupný pouze v podřízeném adresáři 1C.
  • FlagDelete— rekvizity typu Boolean. Zodpovědný za zobrazení „značky smazání“ v systému. Prvek označený k odstranění je považován za nepoužitelný, ale mohou na něm zůstat staré pohyby dokumentů.
  • Odkaz— pole typu řetězec. Tento atribut ukládá jedinečný identifikátor objektu – GUID. To, co vidíme v systému na vizuálním zobrazení zvaném „link“, je pouze reprezentace objektu. Nelze změnit.
  • Předdefinováno— booleovský typ, zobrazuje, zda je prvek předdefinován, o tom později. Nelze změnit.

Záložka „Data“ také uvádí reprezentaci adresáře v systému, před verzí 8.2.16 mohla být reprezentace pouze Kód nebo Název. V posledních verzích platformy (od 8.3) lze pohled popsat nezávisle v modulu manažera pomocí obslužné rutiny „ViewReceivingProcessing“.

Karta číslování

Zde můžete určit nastavení adresáře ohledně číslování. Doporučuje se používat automatické číslování. Kontrola jedinečnosti je příznak, který v případě potřeby pomáhá učinit kód jedinečným. Pokud se s nastaveným příznakem pokusíte zapsat prvek adresáře s nejedinečným kódem, v 1C obdržíte zprávu „Kód adresáře se stal nejedinečným“.

Kódová řada - určuje způsob číslování adresáře, můžete zadat číslování adresáře podle vlastníka. Například protistrana „Rohy a kopyta“ bude mít své vlastní číslování smluv – „1, 2, 3“ atd.

Formuláře Tab

Formuláře pro adresář jsou popsány zde. Pokud je konfigurace spuštěna v normálním i spravovaném režimu, pak budou ve výchozím nastavení k dispozici dvě karty s formuláři: „hlavní“ a „rozšířené“ - různé pro normální a spravované aplikace.

Tato stránka má důležitou vlastnost adresáře - „“. Jedná se o velmi pohodlnou funkci 1C 8, která vám umožňuje při vyplňování údajů do vstupního pole nepřecházet do adresáře, ale zadat jeho název, kód atd. a vyberte požadovaný prvek z rozevíracího seznamu. Vypadá to takto:

Ostatní Tab

Na záložce získáte rychlý přístup k hlavním modulům adresáře – objektovému modulu a modulu manažera.

Můžete také definovat seznam předdefinovaných prvků adresáře na stránce. Toto jsou položky, které nelze odstranit v podnikovém režimu. Předdefinované prvky jsou přístupné přímo v konfigurátoru podle názvu, například: Directories.Nomenclature.Service.

Tato záložka také určuje režim blokování – automatický nebo řízený. Použití fulltextového vyhledávání a referenční informace o adresáři dostupné v režimu 1C: Enterprise.



Náhodné články

Nahoru