Internet Windows Android

1s 8.3 exemplu de proiectare condiționată. De ce este posibil ca stilul condiționat să nu funcționeze într-un formular gestionat

Stilul condiționat al formularelor gestionate.

Majoritatea celor care au lucrat cu ACS și au creat rapoarte despre ACS știu direct despre formatarea condiționată. Modificarea fontului unui câmp, a culorii celulei sau a prezentării pe baza valorii dintr-un alt câmp este un lucru obișnuit de făcut.

Dar cu designul condiționat al formularelor gestionate, ne întâlnim mai rar. Deși nu este un mecanism mai puțin puternic, funcțional și necesar.
Ce reprezintă el. Și totul este la fel. În orice condiție, putem configura vederi sau proprietăți ale câmpurilor elementelor de formular tabelar și acestea se vor schimba din mers.

Vorbesc despre câmpurile de listă dinamice și câmpurile de tabel. Aici, din cod, ne putem referi la o coloană separată și putem seta proprietățile pentru întreaga coloană odată, dar nu putem seta proprietățile unui câmp separat.

Citat

Important!!! Mulți oameni experimentează asta și își pierd timpul. Stilul condiționat nu funcționează pentru câmpurile de formular obișnuite (non-tabel).

Unde poate fi folosit pe lângă câmpuri de colorat. Ei bine, un exemplu clasic este reprezentarea vederilor în secțiunea tabelară. Pentru contabilitate, pot fi trei dintre ele ca standard. Și de obicei se aliniază pe un câmp, unul sub celălalt. Deoarece fiecare linie poate avea un cont propriu, compoziția analistului poate diferi. Și, în general, dacă afișați 3 analiști pe fiecare linie, atunci ocupă mult spațiu. Și de ce să facem asta dacă presupunem că undeva un subconto este suficient, undeva două.

Setarea proprietăților formularului

Luați în considerare exemplul părții tabelare pe care am creat-o în procesare.

Să creăm o procesare în care adăugăm parte tabulară cu trei atribute Subconto și, de asemenea, adăugați atributul Subconto Quantity, care va indica numărul de subcontos din linie.

Puteți seta aspectul condiționat al formularului în proprietățile formularului din fila Aspect.

Acum sarcina noastră este să spunem programului că, dacă valoarea din linia câmpului este Subconto Cantitate 1, ar trebui să fie afișată numai Subconto1, dacă valoarea este 2: Subconto1 și Subconto2, dacă valoarea este 3: Subconto1, Subconto2, Subconto3.

Pentru a face acest lucru, utilizați formularul pentru setarea formatării condiționate.

În coloana Câmpuri completate, specificați câmpurile Subconto1, Subconto2, Subconto3. Deoarece va exista un design diferit pentru fiecare domeniu, vom începe 3 linii.

Indicăm că vom proiecta proprietatea de vizibilitate.

Și, de asemenea, setați condiția în care vizibilitatea se va opri.

Să vedem ce s-a întâmplat în întreprindere. În același timp, adăugăm rânduri la partea tabelară și aranjam valorile pentru numărul de subnumărări.

După cum puteți vedea, rândurile diferite afișează un număr diferit de câmpuri.

Setare prin cod

Pe lângă personalizarea prin proprietăți această setare se poate face cu codul programului.
Dacă utilizați o configurație construită pe , va arăta astfel (acest lucru se aplică tuturor tipice):

ElementUO = ConditionalDesign.Elements.Add();
Data CompositionClientServer.AddFieldField(ElementUO.Fields, „TablePartSubconto2”);

General PurposeClientServer.AddLayoutItem(ElementUO.Selection,
„TableSectionSubconto Quantity”, DataCompositionComparisonType.Less, 2);

ElementUO.Design.SetParameterValue(„Vizibilitate”, False);


În cazul în care BSP nu este utilizat, codul va fi puțin mai lung. Voi da pur și simplu proceduri tipice din același BSP.

Funcția AddScheduledField(ClosedFieldsCollection,FieldName) Export

ItemField = CollectionFields de decorat.Items.Add();
ElementField.Field = New DataCompositionField(FieldName);

ReturnFieldItem;

EndFunctions


Funcția AddCompositionItem(AddArea,
ValueFieldName,
Comparație de tip de valoare,
Valoare RightValue = nedefinit,
Reprezentarea valorii = nedefinit,
Utilizare valori = nedefinit,
valueDisplayMode = Nedefinit,
valueCustomSettingId = Nedefinit) Export

Element = Add Area.Elements.Add(Type("DataCompositionSelectionItem"));
Element.LeftValue = Câmp New DataComposition (FieldName);
Element.ComparisonType = ComparisonType;

Dacă DisplayMode = Nedefinit, atunci
Element.DisplayMode = ElementDisplayModeDataCompositionSettings.Unavailable;
In caz contrar
Element.DisplayMode = DisplayMode;
EndIf;

Dacă RightValue<>Nedefinit Atunci
Element.RightValue = RightValue;
EndIf;

Dacă Reprezentarea<>Nedefinit Atunci
Element.View = Vizualizare;
EndIf;

Dacă Folosiți<>Nedefinit Atunci
Element.Usage = Utilizare;
EndIf;

// Important: setarea ID-ului trebuie făcută
// la sfârșitul setării elementului, altfel va fi copiat
// în setarile utilizatorului parțial umplut.
Dacă CustomSettingId<>Nedefinit Atunci
Element.CustomSettingId = CustomSettingId;
ElseIf Element.DisplayMode<>ElementDisplayModeDataCompositionSettings.Unavailable Atunci
Element.CustomSettingId = FieldName;
EndIf;

Returnare articol;

În această publicație, vom lua în considerare un exemplu de linii de colorare ale documentelor restante în jurnalul de documente (lista dinamică) de la data curentă și ora curentă.

Sarcina noastră este să colorăm linia în roz dacă Termenul limită este mai mic decât Data curentă, ținând cont de faptul că data curentă se schimbă constant. Adică, data curentă trebuie citită dinamic și nu determinată la prima deschidere.

Vom învăța cum formă gestionată:

Utilizați un operator de așteptare;

Configurați programatic proiectare condiționată lista dinamica

Să presupunem că avem un document „Comandă inteligentă” cu atributul „Data scadentă” și tipul „Data” (compoziția datei este „Data și Ora”):

Și jurnalul de documente „SmartOrder” cu coloana „Termen limită” corespunzătoare acestui atribut:

Sarcina noastră este să colorăm linia în roz dacă Termenul limită este mai mic decât Data curentă, ținând cont de faptul că data curentă se schimbă constant.

Să creăm un formular gestionat:

Acum, la crearea pe server, vom apela procedura de colorare a rândurilor „UpdatesDisplayDelayOnServer”. Și vom numi această procedură cu o frecvență dată.

Avem o formă de listă, de exemplu, elemente de plan de tipul caracteristic „Drepturi utilizator” în configurația „Managementul întreprinderii de producție” versiunea 1.3.

Forma, după cum puteți vedea, este gestionabilă. trebuie să formatăm lista în așa fel încât toate rândurile de grupuri de elemente să fie evidențiate în verde. Să începem!

Exemplu

Elementele de formular controlate sunt stilate folosind stilul de formular condiționat:

Pentru a ne rezolva problema, să adăugăm un element de design condiționat cu următoarele setări:


Data viitoare când deschideți formularul, liniile de grupuri ale planului de tipuri de caracteristici ar trebui să fie evidențiate cu verde. Dar... nu se întâmplă!


Cert este că lista de elemente și grupuri din planul de tipuri de caracteristici este afișată pe formular folosind un obiect formular cu tipul „Lista dinamică”. Liste dinamice utilizați capacitățile sistemului de compunere a datelor, inclusiv selecțiile și formatarea condiționată. Acesta din urmă determină doar designul final al listei, ignorând setările pentru designul condiționat al formularului în sine. Să adăugăm setări de design condiționate similare pentru lista dinamică.


Singura diferență este că în lista de câmpuri care urmează să fie stilate, trebuie să adăugați toate câmpurile vizibile ale listei, care ar trebui să fie supuse stilului condiționat.

Concluzie

Am auzit adesea că stilul condiționat pentru formularele gestionate nu funcționează întotdeauna. Ca rezultat, s-a dovedit că doar făceai setări pentru formular și nu pentru lista dinamică.

Sper că articolul va economisi cuiva timp atunci când rezolvă problemele cu formatarea condiționată.