Nejlepší obuvnické společnosti: kterou si vybrat
Nové kolekce italských bot jsou dnes spojeny s jasným designem, nejvyšší kvalitou zpracování, pohodlím a...
Klyuev V.V.
http://prof1c.kklab.ru
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.
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
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
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í.
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.
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ší.
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.
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í.
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:
Poté, co vyplníte kartu k předmětu, který vytváříte, je třeba si ji zapsat.
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.
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:
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.
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:
Úč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
|
|
( majitel Petrov Petr Petrovič)
|
|
( majitel Svetlov Michail Petrovič)
|
Čá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
Ref. FindByCode(123); //pokud je prvek nalezen, stane se aktuálním a lze jej číst takto: Pokud Spr.FindByName("Ivanov Ivan Ivanovič") = 1 Pak |
|
FoundCotr = RefCotr. FindByCode(123); FoundSotr = SprSotr.FindByName("Ivanov Ivan Ivanovič"); |
Odstranění prvku adresáře
Ref. Vymazat(1); //okamžité smazání Ref. Vymazat(0);
//označit pro smazání |
|
Ref. SetDeleteMark (True);
//
označit pro smazání |
Výčet prvků adresáře
|
|
|
Rodič
Iterujte prvky ve skupině. Skupina v termínech 1C je „rodič“.
|
|
|
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ář.
//takto nastavíme kategorii pro zaměstnance //můžete nastavit datum vzorkování na periodické //pak již nemůžete níže používat Install and Get |
|
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() |
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()
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í |
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ů.
Ale můžete to udělat krásnější: RefCotr = CreateObject("Adresář.Zaměstnanci"); |
|
New = Directories.Employees.CreateItem(); //ve verzi 8.0 nejsou žádné pravidelné podrobnosti |
Programové vytváření skupin
RefCotr = CreateObject("Adresář.Zaměstnanci"); Ref. Nová skupina(); Ref.NewGroup(); |
|
Novinka = Adresáře.Zaměstnanci .Pro vytvoření skupiny(); Novinka = Adresáře["Zaměstnanci"] .Pro vytvoření skupiny(); |
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"); Pro Nom = 1 až 100 Cyklus CommitTransaction(); |
|
Pro Nom = 1 až 100 Cyklus 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");
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");
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.:
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");
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"); |
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");
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čkaBindString(Řá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áložka „Základní“ uvádí název, synonymum, reprezentaci objektu a popis účelu.
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í.
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: , .
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:
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“.
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 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:
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.