Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Fier
  • Comunicare de către proprietar 1c. Cum să legăm programatic de către proprietar într-un formular

Comunicare de către proprietar 1c. Cum să legăm programatic de către proprietar într-un formular

Cum să comunicați programatic de către proprietar într-un formular. Cum să adăugați programatic un nou element al directorului dacă are un proprietar (1C: către programator)

Întrebare Cum pot conecta proprietarul pe un formular?
Răspuns
Să presupunem că undeva, de exemplu, sub forma unei liste de registre, doriți să permiteți utilizatorului să specifice în mod interactiv unitatea de stocare a unui articol. Nomenclatura este o referință. „Unitate de stocare” - un director subordonat nomenclaturii. Referința „Nomenclatură” conține de obicei o mulțime de elemente. Dacă suntem sub forma unei liste de registre, pur și simplu adăugăm două coloane - „Nomenclatură” și „Unitate de stocare”, apoi atunci când încercăm să selectăm interactiv o „unitate de stocare”, va apărea o blocare. Am scris deja despre acest lucru în articolul „Cum să setați selecția unui element subordonat al directorului” Și aici vom analiza problema dintr-un unghi ușor diferit.
Pentru a evita înghețarea, de obicei atribuiți „Link de către proprietar”. Vezi poza. În stânga în figură - forma listei de registre, în dreapta în figură - proprietățile câmpului de introducere „ex” (același care este marcat în stânga sub forma listei de registre cu litere roșii „ex”). Pentru a determina fără ambiguitate proprietarul (nu programatic), pentru câmpul de intrare „ex” se completează câmpul marcat în figură cu numărul „1” - „Relație după proprietar”, unde este indicată relația cu câmpul „Nomenclatură”. .

Întrebare Cum stabilesc în mod programatic un link după proprietar într-un formular?
Răspuns
Cu toate acestea, se întâmplă ca proprietarul să fie setat programatic, în funcție de anumite condiții.

De exemplu, câmpul „EX” al listei de registre trebuie să fie asociat cu câmpul proprietar „Unitate de transport” (care este, de asemenea, un element al cărții de referință „Nomenclatură”), dacă unitatea de transport este completată și dacă aceasta nu este completat, atunci proprietarul trebuie să citească valoarea în câmpul „Nomenclatură” - vezi indexul # 3 din figură.

Cum să implementez acest lucru?

Adevărul este că în acest caz, nu este necesar să completați câmpul 1 „Relație de proprietar”... Dar trebuie să specificați în câmpul 2 „Începutul selecției” procedura în care legătura de proprietar va fi determinată programatic folosind directiva „Alegere de către proprietar”.
Exemplu de procedură:

ProcedureInformationRegisterListStorageUnitStartSelection (articol, procesare standard) // definește proprietarul EX-ului curent Proprietar = Elemente de formular. Informații RegisterList. Data curenta. Nomenclatură; IfValueFilled (FormElements .DataRegisterList. CurrentData. TransportUnit) Apoi IfFormElements. Informații RegisterList. Data curenta. Unitatea de transport. NomenclatureType = Enumerări. tipuri de nomenclatură. Load Then Owner = Elemente de formular. Informații RegisterList. Data curenta. Unitatea de transport EndIf; EndIf; // setați selecția după proprietar Element. SelectByOwner = Proprietar; Sfârșitul procedurii

Întrebare Cum să adăugați în mod programatic un nou articol de catalog dacă are un proprietar.
Răspuns
Să presupunem că trebuie să creați în mod programatic un articol nou al cărții de referință „Unități de stocare”, care are referința „Nomenclatură” în proprietari.
Acest lucru se face astfel:

// creează un nou articol din catalogul „Unități de stocare”: EX = Directoare. Unități de depozitare. CreateElement (); // scrieți proprietarul pentru acesta - o căutare a articolului, unde „Nomenclatură” este un element al cărții de referință „Nomenclatură” definită mai devreme EX. Proprietar = Nomenclatură. Legătură; // definiți numele și alte detalii: EX. Nume = "Numele nostru"; EX. Coeficient = 1; // ... - aici este asemanator, completati toate detaliile necesare // de fapt, scriem unitatea de stocare creată în baza de date: EX. Scrie ();

Informatii preluate de pe site

Să presupunem că, sub forma unei liste de registre, este necesar să se ofere utilizatorului posibilitatea de a specifica în mod interactiv unitatea de stocare a articolului. Nomenclatura este o referință. „Unitate de stocare” - un director subordonat nomenclaturii. Referința Nomenclatorului conține de obicei multe articole. Dacă suntem sub forma unei liste de registre, pur și simplu adăugăm două coloane - „Nomenclatură” și „Unitate de stocare”, apoi atunci când încercăm să selectăm interactiv o „unitate de stocare”, va apărea o blocare.

Să luăm în considerare problema dintr-un unghi ușor diferit.

Pentru a evita înghețarea, de obicei atribuiți „Link de către proprietar”. Vezi poza. În stânga în figură - forma listei de registre, în dreapta în figură - proprietățile câmpului de introducere „IST” (același care este marcat în stânga sub forma listei de registre cu litere roșii „IST”). Pentru a determina fără ambiguitate proprietarul (nu în mod programatic), pentru câmpul de intrare „IST”, completați câmpul marcat în figură cu numărul „1” - „Link by owner”, unde este indicată legătura cu câmpul „Nomenclatură”. .

Cum se stabilește în mod programatic un link de către proprietar pe un formular?

Uneori se întâmplă ca proprietarul să fie instalat programatic, în funcție de anumite condiții.

De exemplu, câmpul „TIC” al listei de registru trebuie să fie asociat cu câmpul proprietar „Unitate de transport” (care este și un element al cărții de referință „Nomenclator”), dacă unitatea de transport este completată și dacă este nu este completat, atunci proprietarul trebuie să citească valoarea în câmpul „Nomenclatură” - vezi indexul nr. 3 din figură.
Cum se implementează acest lucru.
În acest caz, nu este necesar să completați câmpul 1 „Relație de proprietar”. Dar în același timp este necesar în câmpul 2 „Început selecție” să se indice procedura în care relația după proprietar va fi determinată programatic folosind directiva „Selectare după proprietar”.
Exemplu de procedură:

ProcedureInformationRegisterListStorageUnitStartSelection (articol, procesare standard)

Proprietar = FormElements.InformationRegisterList.CurrentData.Nomenclature;
Dacă ValueFilled (FormElements.InformationRegisterList.CurrentData.Transport Unit) atunci
IfFormElements.DataRegisterList.CurrentData.TransportUnit.NomenclatureType = Enumerations.usNomenclatureTypes.Cargo Then
Proprietar = FormElements.DefaultRegisterList.CurrentData.Transport Unit
EndIf;
EndIf;

Item.SelectByOwner = Proprietar;

Sfârșitul procedurii

Cum să adăugați în mod programatic un nou articol de catalog dacă are un proprietar

Trebuie să creăm în mod programatic un nou element al cărții de referință „Unități de stocare”, care este deținută de cartea de referință „Nomenclatură”.

Acest lucru se face astfel:
// creează un nou articol din catalogul „Unități de stocare”:
IST = Directories.StorageUnits.CreateElement ();
// scrieți proprietarul pentru acesta - o căutare a articolului, unde „Nomenclatură” este un element al cărții de referință „Nomenclatură” definită mai devreme
SOUR.Owner = Nomenclatură.Ref;
// definiți numele și alte detalii:
SOUR.Name = "unitate ABS";
IST.Factor = 1;
// ... completați restul detaliilor
// de fapt, scriem unitatea de stocare creată în baza de date:
SOURCE.Write ();

Top articole similare