Komunikace majitele programově. Jak programově propojit vlastníkem ve formuláři

Předpokládejme, že formou evidenčního seznamu je nutné uživateli poskytnout možnost interaktivně specifikovat úložnou jednotku položky. "Nomenklatura" je referenční kniha. „Úložná jednotka“ je adresář podřízený nomenklatuře. Adresář Nomenclature obvykle obsahuje mnoho prvků. Pokud jsme ve formě seznamu registrů, jednoduše přidáme dva sloupce - „Položka“ a „Úložná jednotka“, pak když se pokusíme interaktivně vybrat „úložnou jednotku“, zamrzne.

Podívejme se na problém z trochu jiné perspektivy.

Aby nedošlo k zamrznutí, je obvykle přiřazena „Komunikace vlastníkem“. Viz obrázek. Vlevo na obrázku je formulář seznamu registrů, vpravo na obrázku jsou vlastnosti vstupního pole „IST“ (totéž, které je označeno vlevo ve formuláři seznamu registrů červenými písmeny „IST“). . Pro jednoznačné určení vlastníka (nikoli programově) pro vstupní pole „IST“ vyplňte pole označené na obrázku číslem „1“ - „Vztah podle vlastníka“, kde je vyznačena souvislost s polem „Nomenklatura“. .

Jak programově navázat připojení vlastníkem na formuláři?

Někdy se stane, že vlastníka je potřeba nainstalovat programově, v závislosti na nějaké podmínce.

Například pole „IST“ v seznamu rejstříků musí být spojeno s polem vlastníka „Dopravní jednotka“ (což je také prvek adresáře „Nomenklatura“), pokud je vyplněna přepravní jednotka, a pokud není vyplněna, pak hodnota v poli „Nomenklatura“ by měla být považována za vlastníka - viz index č. 3 na obrázku.
Jak je to implementováno?
V tomto případě není nutné pole 1 „Vztah vlastníka“ vyplňovat. Zároveň je ale nutné v poli 2 „Začátek výběru“ uvést postup, při kterém bude připojení podle vlastníka programově určeno pomocí direktivy „Vybrat vlastníkem“.
Příklad postupu:

Informace o postupu Seznam registrů Výběr Start jednotky (prvek, standardní zpracování)

Vlastník = Form Elements.Information RegisterList.CurrentData.Nomenclature;
If ValueFilled(FormElements.InformationRegisterList.CurrentData.TransportUnit) Then
If Form Elements.Information RegisterList.CurrentData.TransportUnit.ItemType = Transfers.usItemTypes.Cargo Then
Vlastník = Form Elements.Information RegisterList.CurrentData.TransportUnit
endIf;
endIf;

Item.SelectByOwner = Vlastník;

Konec procedury

Jak programově přidat nový prvek adresáře, pokud má vlastníka

Musíme programově vytvořit nový adresářový prvek „Storage Units“, jehož vlastníkem je adresář „Nomenklatura“

Dělá se to takto:
// vytvořte nový prvek adresáře "Storage Units":
IST = Directories.Storage Units.CreateItem();
// zapište si pro něj vlastníka - odkaz na nomenklaturu, kde "Nomenklatura" je prvek dříve definovaného adresáře "Nomenklatura"
HIST.Owner = Nomenclature.Link;
// definujte jméno a další podrobnosti:
IST.Name = "jednotka ABS";
HIST.Koeficient = 1;
//... doplňte zbývající údaje
// ve skutečnosti zapište vytvořenou úložnou jednotku do databáze:
IST.Write();

Jak programově navázat připojení vlastníkem ve formuláři. Jak programově přidat nový prvek adresáře, pokud má vlastníka (1C: Pro programátora)

Otázka Jak odkazovat vlastníkem ve formuláři?
Odpovědět
Předpokládejme, že někde, například ve formuláři seznamu registrů, chcete dát uživateli možnost interaktivně specifikovat úložnou jednotku položky. "Nomenklatura" je referenční kniha. „Úložná jednotka“ je adresář podřízený nomenklatuře. Adresář „Nomenclature“ obvykle obsahuje mnoho prvků. Pokud jsme ve formě seznamu registrů, jednoduše přidáme dva sloupce - „Položka“ a „Úložná jednotka“, pak když se pokusíme interaktivně vybrat „úložnou jednotku“, zamrzne. O tom jsme již psali v článku „Jak nastavit výběr podřízeného prvku adresáře“ A zde se na problém podíváme z trochu jiného pohledu.
Aby se zabránilo zamrznutí, je obvykle přiřazena „Komunikace vlastníkem“. Viz obrázek. Vlevo na obrázku je formulář rejstříkového seznamu, vpravo na obrázku jsou vlastnosti vstupního pole „ex“ (totéž, které je ve formuláři seznamu rejstříků označeno vlevo červenými písmeny „ex“). . Pro jednoznačné určení vlastníka (nikoli programově) pro vstupní pole „ex“ vyplňte pole označené na obrázku číslem „1“ - „Vztah podle vlastníka“, kde je vyznačena souvislost s polem „Nomenklatura“. .

Otázka Jak programově vytvořit odkaz vlastníka ve formuláři?
Odpovědět
Stává se však, že vlastník je třeba nainstalovat programově, v závislosti na nějaké podmínce.

Řekněme, že pole „EX“ seznamu rejstříku musí být spojeno s polem vlastníka „Přepravní jednotka“ (což je také prvkem adresáře „Nomenklatura“), pokud je přepravní jednotka vyplněna, a pokud není vyplněna v, pak by měl být vlastník považován za hodnotu v poli „Nomenklatura“ - viz index číslo 3 na obrázku.

Jak to implementovat?

Faktem je, že v tomto případě není nutné pole 1 „Vztah vlastníka“ vyplňovat. Ale v poli 2 „Začátek výběru“ musíte uvést postup, ve kterém bude připojení podle vlastníka programově určeno pomocí direktivy "ChoiceByOwner".
Příklad postupu:

Informace o postupu Seznam registrů Výběr Start jednotky (prvek, standardní zpracování) // určení vlastníka aktuálního EX Vlastník = FormElements. Informace Seznam registrů. Aktuální data. Nomenklatura; If ValueFilled(FormElements.InformationRegisterList.CurrentData.TransportUnit) Then IfFormElements. Informace Seznam registrů. Aktuální data. Transportní jednotka. Typ položky = Převody. USTYPESNomenklatura. Load Then Owner = FormElements. Informace Seznam registrů. Aktuální data. TransportUnit EndIf ; EndIf; // nastavení výběru podle vlastníkaŽivel. SelectByOwner = Vlastník; Konec procedury

Otázka Jak programově přidat nový prvek adresáře, pokud má vlastníka.
Odpovědět
Řekněme, že chcete programově vytvořit nový prvek adresáře „Storage Units“, jehož vlastníkem je adresář „Nomenklatura“
Dělá se to takto:

// vytvořte nový prvek adresáře "Storage Units": EX = Adresáře. Úložné jednotky. CreateItem() ; // zapište si pro něj vlastníka - odkaz na nomenklaturu, kde "Nomenklatura" je prvek dříve definovaného adresáře "Nomenklatura" EX. Majitel = Předmět. Odkaz; // definujte název a další podrobnosti: EX. Jméno = "Naše jméno"; EX. Koeficient = 1; // ... - tady je to stejné, vyplníme všechny potřebné údaje // ve skutečnosti zapište vytvořenou úložnou jednotku do databáze: EX. Napsat() ;

Informace převzaty z webu