Komunikácia majiteľa programovo. Ako programovo prepojiť vlastníkom vo formulári

Predpokladajme, že vo forme evidenčného zoznamu je potrebné používateľovi poskytnúť možnosť interaktívne špecifikovať úložnú jednotku položky. "Nomenklatúra" je referenčná kniha. „Úložná jednotka“ je adresár podriadený nomenklatúre. Adresár Nomenclature zvyčajne obsahuje veľa prvkov. Ak sme vo forme zoznamu registrov, jednoducho pridáme dva stĺpce - „Položka“ a „Úložná jednotka“, potom pri pokuse o interaktívny výber „úložnej jednotky“ to zamrzne.

Pozrime sa na problém z trochu inej perspektívy.

Aby sa predišlo zamrznutiu, zvyčajne sa priradí „Komunikácia vlastníka“. Viď obrázok. Vľavo na obrázku je formulár zoznamu registrov, vpravo na obrázku sú vlastnosti vstupného poľa „IST“ (to isté, ktoré je označené vľavo vo formulári zoznamu registrov červenými písmenami „IST“). . Pre jednoznačné určenie vlastníka (nie programovo) pre vstupné pole „IST“ vyplňte pole označené na obrázku číslom „1“ - „Vzťah podľa vlastníka“, kde je uvedené spojenie s poľom „Nomenklatúra“. .

Ako programovo vytvoriť pripojenie vlastníka na formulári?

Niekedy sa stane, že vlastníka treba nainštalovať programovo, v závislosti od nejakej podmienky.

Napríklad pole „IST“ zoznamu registra musí byť spojené s poľom vlastníka „Dopravná jednotka“ (ktoré je tiež prvkom adresára „Nomenklatúra“), ak je vyplnená prepravná jednotka, a ak nie vyplnené, potom hodnotu v poli „Nomenklatúra“ treba považovať za vlastníka - pozri index č. 3 na obrázku.
Ako sa to realizuje?
V tomto prípade pole 1 „Vzťah podľa vlastníka“ nie je potrebné vypĺňať. Zároveň je však potrebné v poli 2 „Začiatok výberu“ uviesť postup, pri ktorom sa programovo určí pripojenie podľa vlastníka pomocou smernice „Vybrať vlastníkom“.
Príklad postupu:

Informácie o postupe Zoznam registrov Výber začiatku jednotky (prvok, štandardné spracovanie)

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
koniec Ak;
koniec Ak;

Item.SelectByOwner = Vlastník;

Koniec procedúry

Ako programovo pridať nový prvok adresára, ak má vlastníka

Musíme programovo vytvoriť nový prvok adresára „Storage Units“, ktorého vlastníkom je adresár „Nomenklatúra“

Robí sa to takto:
// vytvorte nový prvok adresára "Storage Units":
IST = Directories.Storage Units.CreateItem();
// zapíšte si vlastníka - odkaz na nomenklatúru, kde "Nomenklatúra" je prvok adresára "Nomenklatúra" definovaného vyššie
HIST.Owner = Nomenklatúra.Odkaz;
// definujte názov a ďalšie podrobnosti:
IST.Name = "jednotka ABS";
HIST.koeficient = 1;
//... vyplňte zvyšné údaje
// vlastne zapíšte vytvorenú úložnú jednotku do databázy:
IST.Write();

Ako programovo nadviazať spojenie podľa vlastníka vo formulári. Ako programovo pridať nový prvok adresára, ak má vlastníka (1C: Pre programátora)

Otázka Ako prepojiť vlastníkom vo formulári?
Odpoveď
Predpokladajme, že niekde, napríklad vo formulári zoznamu registrov, chcete používateľovi poskytnúť možnosť interaktívne špecifikovať úložnú jednotku položky. "Nomenklatúra" je referenčná kniha. „Úložná jednotka“ je adresár podriadený nomenklatúre. Adresár „Nomenklatúra“ zvyčajne obsahuje veľa prvkov. Ak sme vo forme zoznamu registrov, jednoducho pridáme dva stĺpce - „Položka“ a „Úložná jednotka“, potom pri pokuse o interaktívny výber „úložnej jednotky“ to zamrzne. O tom sme už písali v článku “Ako nastaviť výber podriadeného prvku adresára.” A tu sa pozrieme na problém z trochu iného pohľadu.
Aby sa zabránilo zamrznutiu, zvyčajne sa priradí „Komunikácia vlastníka“. Viď obrázok. Vľavo na obrázku je formulár zoznamu registrov, vpravo na obrázku sú vlastnosti vstupného poľa „ex“ (to isté, ktoré je označené vľavo vo formulári zoznamu registrov červenými písmenami „ex“). . Pre jednoznačné určenie vlastníka (nie programovo) pre vstupné pole „ex“ vyplňte pole označené na obrázku číslom „1“ - „Vzťah podľa vlastníka“, kde je uvedené spojenie s poľom „Nomenklatúra“. .

Otázka Ako programovo vytvoriť prepojenie podľa vlastníka vo formulári?
Odpoveď
Stáva sa však, že vlastníka treba nainštalovať programovo, v závislosti od nejakej podmienky.

Povedzme, že pole „EX“ zoznamu registra musí byť spojené s poľom vlastníka „Prepravná jednotka“ (ktoré je tiež prvkom adresára „Nomenklatúra“), ak je vyplnená prepravná jednotka a ak nie je vyplnená v, potom by sa za vlastníka mala považovať hodnota v poli „Nomenklatúra“ - pozri index číslo 3 na obrázku.

Ako to implementovať?

Faktom je, že v tomto prípade pole 1 „Vzťah podľa vlastníka“ nie je potrebné vypĺňať. Ale v poli 2 „Začiatok výberu“ musíte uviesť postup, v ktorom bude pripojenie podľa vlastníka programovo určené pomocou smernice "ChoiceByOwner".
Príklad postupu:

Informácie o postupe Zoznam registrov Výber začiatku jednotky (prvok, štandardné spracovanie) // určenie vlastníka aktuálneho EX Vlastník = FormElements. Informácie RegisterList. Aktuálne údaje. nomenklatúra; If ValueFilled(FormElements.InformationRegisterList.CurrentData.TransportUnit) Then IfFormElements. Informácie RegisterList. Aktuálne údaje. TransportJednotka. Typ položky = Prevody. USTYPESNomenklatúra. Načítať potom vlastník = FormElements. Informácie RegisterList. Aktuálne údaje. TransportUnit EndIf ; Koniec Ak ;// nastavenie výberu podľa vlastníka

Otázka Element. SelectByOwner = Vlastník; Koniec procedúry
Odpoveď
Ako programovo pridať nový prvok adresára, ak má vlastníka.
Povedzme, že chcete programovo vytvoriť nový prvok adresára „Storage Units“, ktorého vlastníkom je adresár „Nomenklatúra“

Robí sa to takto:// vytvorte nový prvok adresára "Storage Units": EX = Adresáre. Úložné jednotky. CreateItem() ;// zapíšte si vlastníka - odkaz na nomenklatúru, kde "Nomenklatúra" je prvok adresára "Nomenklatúra" definovaného vyššie EX. Vlastník = Tovar. Link;// definujte názov a ďalšie podrobnosti: EX. Meno ="Naše meno" ; EX. Koeficient = 1; // ... - tu je to rovnaké, vyplníme všetky potrebné podrobnosti// vlastne zapíšte vytvorenú úložnú jednotku do databázy:

EX. Napíšte() ;