Interogări asupra obiectelor de tipuri complexe (sau cum să întrerupeți configurarea prin adăugarea unui director)

Interogări asupra obiectelor de tipuri complexe (sau cum să întrerupeți configurarea prin adăugarea unui director)

Ieri, un director (subordonat Nomenclaturii) a fost adăugat la configurația pe care operează rețeaua de supermarketuri. Asta e tot. Nu există referințe la aceasta, nici o utilizare în cod. (În rolurile de bază, accesul la acesta nu a fost deschis)

Ar părea cât de sigur posibil.

Dar astăzi un mecanism a scăzut cu eroarea "Nu există acces la acest director".

Cum poate fi aceasta? o_O

Și iată cum.
Analiza a arătat că eroarea este reprodusă când interogarea este executată pe valorile proprietăților (cu selecția conform directorului de contracte)

În același timp, o interogare pe aceeași sursă, dar fără condiții, este efectuată fără probleme.
Încălcarea accesului în stare de către "Proprietarul de obiecte".
Deoarece câmpul Obiect are un tip compus, inclusiv Nomenclatura de referință, această condiție înseamnă verificarea egalității cu toate directoarele subordonate. Inclusiv cu acest nou, care nu este accesibil. Apoi există o excepție.

1. O optiune rapida, care a fost folosita inainte de parsare - in rolul potrivit de a da dreptul de a citi acest director (in cazul nostru nu contravine cerintelor de securitate)

2. Varianta este chiar mai rapidă dacă este cunoscută o problemă de întrebare - pentru a adăuga designul PERMIS

3. Opțiunea este optimă. Limitați tipul compozit folosind constructul EXPRESS, deoarece în acest caz suntem interesați de valorile proprietăților contractelor numai

Ce pot face pentru a preveni astfel de probleme?
Întotdeauna când se folosesc interogări pentru tipurile compuse și când nu toate sunt necesare, restricționați în mod explicit tipurile (varianta 3) înainte de acțiuni suplimentare (dacă există selecție și orice altceva "prin punctul" din câmpul tip compus) în tabelul temporar provizoriu.

Această abordare va crește productivitatea și productivitatea. (din cauza scăderii numărului de conexiuni de stânga)