|
<< Click to Display Table of Contents >> Navigation: WinArhi > Fereastra principala > Oferte si Comenzi deschise > Meniu > Optiuni > Editare Feronerie > Opționale feronerie |
Opționalele de feronerie (începând cu versiunea 2026.0.79) permit definirea, pe fiecare serie de profile, a unor grupe de opțiuni ale setului de feronerie – de exemplu numărul de balamale ale ușii, tipul mânerului, o închidere suplimentară pentru copii – cu valori dintre care se alege pe fiecare cercevea. Fiecare valoare poate purta rânduri de articole de feronerie, care intră în setul cercevelei împreună cu rândurile setului de bază. Catalogul se păstrează separat pe fiecare serie, în două fișiere: <CodSerie>OptionaleFer.cds (definițiile: grupele și valorile lor) și <CodSerie>OptionaleFerArt.cds (conținutul: rândurile de articole ale fiecărei valori). Ambele se editează în Editare Feronerie, fila Opționale (vezi Fila Opționale).
Opționalele de feronerie sunt un sistem diferit de Opțiuni fereastră selectabile: acelea se bifează pe fereastră sau pe ofertă și adaugă accesorii, consum sau preț prin funcții; opționalele de feronerie se aleg pe cercevea și schimbă conținutul setului de feronerie al cercevelei.
Cum funcționează și regula de bază
Setul de feronerie al unei cercevele se reconstruiește de la zero la fiecare introducere sau reintroducere (creare, redimensionare, schimbare de set, de culoare, de opțional). Opționalele intră în această reconstrucție: programul citește catalogul seriei, stabilește grupele valabile pentru setul cercevelei (vezi Reguli), ia alegerea explicită salvată pe cercevea, completează cu valoarea implicită (ImplicitBifat) fiecare grupă valabilă care nu are o alegere, aplică regulile dintre grupe și valori și obține lista efectivă de valori. Rândurile de conținut ale valorilor efective se adaugă la rândurile setului de bază, apoi totul se tratează la fel: benzile de dimensiuni (MinX, MaxX, MinY, MaxY), StDr, CanatInactiv, Functii, culoarea, diagrama de greutate, prelungirile, ParentID / ChildParentsIDs, desenul. În setul cercevelei, rândurile venite din opționale sunt marcate în coloanele CodGrupaOpt și CodOpt.
Implicitele se aplică de program chiar dacă nimeni nu a deschis panoul de opționale: o ofertă veche redeschisă și modificată, o fereastră creată prin WinArhiServer, prin asistentul AI sau din aplicațiile mobile primesc aceeași configurație standard a seriei. Programul nu inventează niciodată o alegere; el materializează configurația standard, exact cum o făcea până acum setul de bază.
Nimic nu se anulează. Alegerea altei valori schimbă ce rânduri intră în set; rândurile valorii vechi nu sunt scoase, pur și simplu nu mai sunt adăugate la reconstrucție. Dacă setul cercevelei avea modificări manuale, la schimbarea unui opțional setul se reconstruiește și se păstrează doar mânerele și schimburile manuale de balamale, broaște și butuci; programul cere confirmare înainte.
Conținutul unei grupe de opționale trăiește într-un singur loc. Dacă balamalele ușii se adaugă dintr-un opțional, ele nu mai au voie să existe și în setul de bază (la o grupă cu VizibilLaCanat: în seturile folosite numai de cercevelele cărora li se oferă grupa). La fel pentru mânere sau pentru orice alt tip de articol pe care îl preia o grupă: setul de bază nu mai conține acel fel de rând pentru seturile în care grupa este valabilă. Altfel ușa primește de două ori același articol, fără niciun mesaj de eroare – nimic din program nu numără balamalele unei uși.
Consecințele, în ordinea în care le întâlnește administratorul:
– un set de ușă migrat arată fără balamale în tabelul setului din editor; este starea corectă, nu o pierdere de date;
– balamalele se văd în fila Opționale, ca rânduri de conținut ale valorii implicite, iar programul le adaugă automat în fiecare set;
– Verifică opționalele trebuie să raporteze 0 seturi la verificarea „Rânduri rămase”; acesta este certificatul că seria este migrată complet – în afară de grupele cu VizibilLaCanat, pe care verificarea nu le vede (vezi Grupe cu VizibilLaCanat, la migrare);
– mutarea bifei ImplicitBifat de pe o valoare pe alta schimbă configurația standard pentru orice ofertă redeschisă și modificată, la fel cum o face azi editarea setului de bază;
– reversibilitatea migrării este numai la nivel de fișier, din copia de siguranță făcută automat înainte de mutare (vezi Migrarea).
În fereastra de creare a cercevelei (Cercevea): după apăsarea butonului Detalii, în dreapta detaliilor apare a treia coloană, cu opționalele setului de feronerie ales. Coloana există numai dacă setul are cel puțin o grupă valabilă și se reconstruiește la fiecare schimbare de serie, subserie, deschidere, destinație (FU), marcă sau set, păstrând alegerile care mai sunt valabile.
În Proprietăți, fila Ochi, grupul Feronerie – Detaliat, butonul Opționale: deschide dialogul Opționale feronerie cu același panou, pentru cerceveaua selectată, cu toate grupele ei valabile – inclusiv cele marcate pentru un buton de schimbare a feroneriei (vezi mai jos). Când cerceveaua are valori alese explicit, butonul arată numărul lor, de exemplu Opționale (2). Butonul apare numai dacă setul cercevelei are grupe valabile; este dezactivat la ofertele deschise doar pentru citire și când editarea feroneriei este blocată pe serie. OK cu alegerea neschimbată nu modifică nimic.
La nivel de fereastră și de ofertă: în Proprietăți, fila Fereastră și Ușă (grupul Feronerie) și fila Ofertă (același grup) există câte un buton Opționale care deschide același panou o singură dată pentru toate cercevelele ferestrei, respectiv pentru toate cercevelele ofertei de pe o serie (catalogul de opționale este pe serie, deci la o ofertă cu mai multe serii panoul se deschide o dată pentru fiecare serie, în ordinea pozițiilor). Panoul nu arată grupele marcate pentru butoanele Mânere, Balamale ușă, Broaște sau Cilindri (coloana ButonSchimbare): acestea se aleg de la butonul lor (vezi Butoanele de schimbare a feroneriei), iar, când cercevelele au astfel de grupe, linia de informare din panou o amintește. O grupă marcată apare totuși în panou când o alegere făcută acolo o schimbă, când o cere (grupă obligatorie sau necesară) sau când exclude ceva dintr-o grupă afișată; filele de categorii se fac numai din grupele afișate, iar o grupă apărută astfel își aduce și fila, dacă este nevoie. Butonul apare numai dacă există cercevele cu grupe valabile nemarcate – dacă toate grupele valabile ale cercevelelor sunt marcate, butonul lipsește – și este dezactivat când editarea feroneriei este blocată pe serie.
Panoul pornește de la alegerea comună: o grupă în care toate cercevelele au exact aceleași valori pornește cu ele. O grupă în care cercevelele au alegeri diferite apare nedecisă: fără niciun buton radio ales, cu bifele gri și cu „- diferă între cercevele” în titlu. La OK se schimbă numai grupele în care operatorul a ales ceva, la toate cercevelele, așa cum le arată panoul; grupele neatinse, nedecise sau nu, nu se schimbă la nicio cercevea, deci fiecare își păstrează alegerea proprie. Un clic într-o grupă nedecisă o decide, chiar dacă este pe valoarea marcată Standard: grupa se aplică atunci tuturor cercevelelor așa cum apare după clic – de exemplu, un clic pe Standard readuce toate cercevelele la Standard. O cercevea căreia catalogul nu îi oferă grupa sau valoarea este sărită. Canatul pasiv al unui știulete primește numai grupele cu AplicaLaCanatInactiv (ca la creare) și nu este luat în calcul la celelalte grupe, deci nu le face să apară nedecise. Dacă unele cercevele au modificări manuale în set, programul cere confirmarea înainte de a le reconstrui. Anularea (sau OK fără nicio schimbare) nu modifică nimic. La butonul ferestrei, Undo readuce fereastra într-un singur pas; butonul ofertei, ca și celelalte comenzi de feronerie pe ofertă, nu are Undo.
Butoanele de schimbare a feroneriei: butoanele Mânere, Balamale ușă, Broaște și Cilindri din aceleași grupuri Feronerie ale filelor Fereastră și Ușă și Ofertă schimbă fiecare un articol din setul de feronerie cu altul, dintr-o listă proprie (vezi Fereastră și ușă). O grupă marcată pentru unul dintre ele în coloana ButonSchimbare (vezi Cele două tabele) face ca butonul să deschidă opționalele acelei grupe în locul listei. La fiecare apăsare, cercevelele vizate – ale ferestrei (când este selectat un panou, ale ferestrei selectate în el), respectiv toate cercevelele ofertei, inclusiv cele din panouri – se împart în trei:
– cercevelele al căror set are o grupă valabilă marcată pentru buton primesc opționalele, dacă grupa are cel puțin o valoare oferită cercevelei (o grupă ale cărei valori sunt toate scoase pentru ea prin ZoneOf sau SubSerie nu contează); canatul pasiv al unui știulete, numai printr-o grupă marcată care are și AplicaLaCanatInactiv;
– cercevelele care ar primi opționalele, dar a căror serie are editarea feroneriei blocată, rămân neschimbate, ca la butonul Opționale;
– toate celelalte cercevele păstrează lista proprie a butonului.
Dacă nicio cercevea nu are o grupă marcată, butonul se comportă exact ca înainte. Altfel se deschide întâi panoul de opționale – unul pentru fereastră, respectiv câte unul pentru fiecare serie a ofertei – cu titlul „<buton> - opționale feronerie” (la ofertă, urmat de serie). Panoul arată numai grupele marcate pentru buton, fără file, dar evaluează tot catalogul: o grupă ascunsă apare de la sine când alegerea o schimbă, când o cere (grupă obligatorie sau necesară) sau când exclude ceva dintr-o grupă afișată. Linia de informare spune la câte cercevele se aplică alegerea. Alegerea se aplică la fel ca la butonul Opționale al ferestrei sau al ofertei, descris mai sus: o grupă în care cercevelele au alegeri diferite apare nedecisă, iar la OK se schimbă numai grupele în care s-a ales ceva, la toate cercevelele trimise la opționale. În stânga butoanelor OK și Anulare, butonul Alt articol... închide panoul fără să aplice nimic din ce s-a ales în el și trimite cercevelele lui la lista proprie a butonului (vezi mai jos). Apoi, pentru celelalte cercevele – și pentru cele trimise acolo prin Alt articol... –, apare lista proprie a butonului, numai dacă seturile lor conțin un articol de acel tip – la Broaște, numai cu Permite schimbarea broaștelor bifat în Setări Diverse, setare care nu privește opționalele; OK fără ca lista să ofere un articol de înlocuire nu schimbă nimic. Nu se aplică nimic până nu sunt confirmate toate ferestrele deschise de apăsare; Anulare în oricare dintre ele nu schimbă nimic. La butonul ferestrei, Undo readuce fereastra într-un singur pas pentru toată apăsarea; butonul ofertei nu are Undo. Dacă singurele cercevele cu grupă marcată sunt blocate și nu s-a deschis nicio fereastră, apare mesajul „Opționalele de feronerie ale seriei X sunt blocate la editare: nu s-a schimbat nimic.”
Apăsarea alege din nou articolul de tipul butonului. Reconstruirea setului unei cercevele păstrează de obicei mânerele și schimburile de balamale, broaște și butuci făcute de mână; pe cercevelele trimise la opționale, cele de tipul butonului apăsat, făcute pe rânduri pe care nu le-a adus niciun opțional – un schimb mai vechi din lista proprie a butonului, un mâner adăugat sau scos de mână –, se abandonează însă, ca să nu revină peste noua alegere. Numai cercevelele a căror alegere de opționale se schimbă sunt reconstruite; celelalte rămân neatinse.
Alt articol...: cercevelele trimise astfel ajung la lista proprie a butonului împreună cu cele fără grupă marcată, iar acolo se poate schimba orice articol de acel tip, inclusiv unul adus de opțional. Opționalul își păstrează valoarea, deci textul ofertei (sub Opționale:), funcțiile +ifOptFer și variabila [OptionaleFeronerie.Cod?Are:NuAre] din etichetele centrului de prelucrare urmează în continuare opționalul, nu articolul luat din listă. Schimbul ține cât timp valoarea opționalului rămâne aleasă: prima dată când în opționale se alege altă valoare, schimbul dispare. La ofertă, butonul din panoul unei serii trimite la listă numai cercevelele acelei serii; panourile celorlalte serii se deschid în continuare. La Broaște, butonul este dezactivat dacă Permite schimbarea broaștelor nu este bifat. Dacă niciuna dintre cercevelele care ajung la listă nu are un articol de tipul butonului, apare mesajul „Cercevelele nu au niciun articol de tip X de schimbat.” și nu se schimbă nimic din toată apăsarea.
Butonul Broaște este activ când Permite schimbarea broaștelor este bifat sau când o cercevea are o grupă marcată pentru el. Grupele marcate lipsesc numai de la butoanele Opționale ale ferestrei și ofertei (afară de cazul în care le aduce acolo o regulă); în rest rămân grupe obișnuite – la butonul Opționale al cercevelei, în fereastra de creare a cercevelei, în aplicația web și prin API. Pe o cercevea trimisă la opționale, lista proprie a butonului se deschide numai prin Alt articol..., deci se pot marca și grupe care nu aleg chiar articolul pe care îl schimbă butonul – de exemplu, o grupă cu numărul de balamale marcată pentru Balamale ușă: numărul se alege din panou, iar modelul sau culoarea balamalelor se schimbă în continuare articol cu articol, prin Alt articol... (alegeți întâi numărul: o valoare nouă anulează schimbul). Verificarea 22 din Verifică opționalele semnalează marcajele care nu pot funcționa.
Panoul: câte o casetă pentru fiecare grupă valabilă, cu denumirea grupei; în ea, butoane radio (grupă cu o singură valoare la un moment dat) sau bife (grupă cu mai multe valori). Valoarea implicită a seriei apare marcată (Standard) cât timp în grupă nu s-a ales nimic explicit; ținând mouse-ul pe ea: „Standard (cel din serie): valoarea implicită a seriei, aplicată automat când nu se alege nimic”. La o grupă radio fără implicit și neobligatorie există și opțiunea - Fără -. O grupă cu o singură valoare de tip bifă, cu aceeași denumire ca grupa, apare ca o simplă bifă, fără casetă. Dacă valorile unei grupe au imagini (DbImage), fiecare valoare are imaginea ei, mică, în dreapta rândului: un clic pe imagine alege valoarea, iar ținând mouse-ul pe ea apar denumirea întreagă și descrierea valorii; o valoare fără imagine are locul gol. Altfel, imaginea grupei (la bifa simplă, a valorii) apare în dreapta casetei. Imaginile apar numai dacă panoul este suficient de lat. Descrierea unei valori (Descriere) apare ca sugestie la ținerea mouse-ului pe ea. Dacă grupele au categorii (coloana Categorie), panoul are câte o filă pentru fiecare categorie, în ordinea primei grupe din categorie, iar grupele fără categorie sunt pe ultima filă, Altele; fără categorii, sau cu una singură, panoul nu are file. O filă care conține o grupă cu o problemă blocantă are (!) în titlu, iar panoul se deschide pe prima astfel de filă.
O grupă exclusă de o valoare aleasă în altă grupă este golită și dezactivată, iar în titlul ei apare exclusă de „…”. Valorile declarate neselectabile de o valoare aleasă (CoduriOptiuniNesel) sunt dezactivate. Sub casete, o linie de stare listează problemele blocante: grupă obligatorie fără valoare, grupă sau valoare necesară nealeasă. Cât timp există o problemă blocantă, OK este dezactivat; în fereastra de creare, detaliile se deschid automat ca să se vadă cauza, iar la apăsarea lui OK apare „Opționalele de feronerie au probleme blocante. Corectați alegerea sau anulați.”
Ce se salvează: pe cercevea, în fișierul ofertei, se rețin numai codurile valorilor alese explicit. Lista efectivă (alegeri + implicite) se recalculează din catalogul curent la fiecare introducere a setului, deci o modificare a catalogului se vede la următoarea reintroducere. La deschiderea unei oferte salvate, setul nu se reintroduce: lista efectivă se recalculează atunci numai pentru afișare (coloana de pe ofertă, API-ul, eticheta CNC), din alegerea salvată și din catalogul curent, iar rândurile setului rămân cele salvate. Un cod pe care catalogul nu-l mai oferă pentru setul respectiv este ignorat, cu avertismentul „Opționalul de feronerie "X" nu există sau nu este valabil pentru setul "Y" și a fost ignorat”. Tot cu avertisment se raportează a doua valoare aleasă într-o grupă radio (se păstrează prima după Ordine) și o valoare scoasă pentru că este exclusă de alta. Dacă o valoare efectivă avea rânduri de conținut pentru setul cercevelei, dar niciunul nu a intrat în set (benzi de dimensiuni, Functii, greutate, culoare), apare avertismentul „Opționalul de feronerie "X" (grupa "Y") nu a adus niciun articol în setul de feronerie”; valorile cu FaraArticol sunt exceptate. Grupa obligatorie fără valoare și cerința nesatisfăcută blochează salvarea ofertei, ca orice mesaj de blocare de la introducerea setului de feronerie. Toate mesajele apar în fereastra de Mesaje.
Cercevele cu ștulp: la crearea canatului opus, alegerea de pe canatul principal se copiază pe el numai pentru grupele cu AplicaLaCanatInactiv bifat; pentru celelalte grupe canatul opus rămâne pe implicit. O grupă se poate limita la canatele de lângă un ștulp – ori numai la canatul activ sau inactiv, ori numai la cercevelele simple – cu VizibilLaCanat.
Pe ofertă și pe fișele de producție: coloana OptionaleFeronerie din tabelele Ofertare, ListaFerUsi și FisaMontaj conține denumirile opționalelor alese explicit pe cercevelele ferestrei (la un panou, pe cercevelele tuturor ferestrelor lui) – numai denumirea fiecărei valori alese, câte una pe linie, fără codul valorii și fără denumirea grupei, în ordinea grupelor și a valorilor din catalog. Se listează numai alegerile pe care programul le-a și aplicat la introducerea setului: valorile implicite ale seriei nu apar niciodată, un cod ignorat (nevalabil pentru set sau exclus de altă valoare) nu apare, iar cu opționalele dezactivate de urgență coloana este goală. Denumirile sunt cele traduse din baza de date, iar o linie identică de pe mai multe cercevele apare o singură dată. Machetele livrate Oferta și Tablou tâmplărie detaliat o afișează sub eticheta Opționale: numai când nu este goală; într-o machetă proprie se adaugă ca orice alt câmp (vezi Câmpuri Ofertare).
Denumirile grupelor și ale valorilor, precum și categoriile, se traduc prin traducerea bazei de date, categoria „optionale feronerie”. Codurile nu se traduc.
<CodSerie>OptionaleFer.cds – definițiile. Un rând cu Cod gol este antetul unei grupe; orice alt rând este o valoare a grupei din CodGrupa. O grupă are un singur antet (al doilea este ignorat); o valoare a cărei grupă nu are antet nu este luată în calcul de program (editorul o arată totuși, sub un nod fără denumire). Câmpurile marcate „(grupă)” se completează pe antet, cele marcate „(valoare)” pe valori:
CodGrupa – codul grupei (până la 20 de caractere), pe antet și pe fiecare valoare a grupei. Se folosește în reguli, în Grupe de opționale excluse din Lista seturi și în +ifGrupaOptFer;
Cod – (valoare) codul valorii (până la 30 de caractere). Codurile se compară fără diferență între literele mari și mici. Un cod trebuie să fie unic în tot catalogul, nu doar în grupa lui: CoduriOptiuniNesel, CoduriNecesare și +ifOptFer îl caută după cod, fără grupă;
Denumire – denumirea afișată a grupei, respectiv a valorii; se traduce prin traducerea bazei de date;
Ordine – text după care se sortează grupele (Ordine, apoi CodGrupa) și valorile din grupă (Ordine, apoi Cod). Compararea se face ca text, deci folosiți numere cu același număr de cifre (0100, 0200, …); editorul le completează automat la adăugare. Ordinea grupelor contează și la excluderi: la două grupe care se exclud reciproc și sunt amândouă alese, câștigă grupa cu Ordine mai mică;
TipSelectie – (grupă) R = o singură valoare la un moment dat (butoane radio); orice altceva, de regulă C (valoarea propusă la o grupă nouă) = se pot bifa mai multe valori;
Obligatoriu – (grupă) X = grupa trebuie să aibă o valoare, aleasă sau implicită; altfel oferta nu se poate salva. O grupă cu implicit nu poate rămâne fără valoare, deci bifa are rost numai la grupele fără implicit, ca obligație de a alege conștient;
ImplicitBifat – (valoare) X = valoarea implicită a grupei, aplicată de program când în grupă nu s-a ales nimic; cel mult una pe grupă (verificarea 08). Aici trăiește configurația standard a seriei – de exemplu balamalele standard ale ușii;
ExVizualizare – X pe antet = grupa nu se mai oferă nicăieri; X pe valoare = valoarea este retrasă și nu se mai oferă, conținutul ei rămânând în tabel (verificarea 15). O valoare retrasă rămasă pe o cercevea este ignorată, cu avertisment;
DbImage – numele unui fișier imagine din subfolderul Images al bazei de date, afișat în panou: pe o valoare, imaginea mică din dreapta rândului ei; pe antetul grupei, imaginea casetei, afișată numai când nicio valoare a grupei nu are imagine. Un fișier care nu există este semnalat de verificarea 21;
Descriere – text liber; la o valoare apare ca sugestie (hint) în panou;
GrupeExcluse – (grupă) câte un cod de grupă pe rând: când grupa are o valoare (aleasă sau implicită), grupele listate nu contribuie nimic la set – nici măcar implicitul lor; în panou apar golite și dezactivate;
GrupeNecesare – (grupă) câte un cod de grupă pe rând: când grupa are o valoare, grupele listate trebuie să aibă și ele o valoare; altfel este o problemă blocantă. Nu se completează nimic automat;
CoduriOptiuniNesel – (valoare) câte un cod de valoare pe rând: cât timp valoarea este efectivă, valorile listate nu pot fi alese; dacă erau alese, sunt scoase, cu avertisment;
CoduriNecesare – (valoare) câte un cod de valoare pe rând: valoarea cere ca valorile listate să fie și ele efective; altfel este o problemă blocantă. Un cod cerut care nu este oferit pe cerceveaua respectivă dă numai avertisment, pentru că operatorul nu l-ar putea alege;
FaraArticol – (valoare) X = valoarea nu aduce articole; este un simplu marcaj, folosit prin +ifOptFer / +ifGrupaOptFer sau din script. Nu se raportează „nu a adus niciun articol” și nu apare la verificarea 10;
FU, Deschidere, Marca – (grupă) filtrele de valabilitate ale grupei după cheia setului: FU (Fereastra sau Usa, ca în set), Deschidere = listă de coduri de deschidere separate prin virgulă, în forma fără stânga / dreapta (OBX, OX, CBX, …), Marca = marca feroneriei. Gol = oricare;
SeturiValabile / SeturiExcluse – (grupă) câte o denumire de set (SetF) pe rând; se acceptă * la sfârșit (Roto* = toate seturile a căror denumire începe cu Roto). SeturiValabile gol = toate seturile; SeturiExcluse se aplică după;
VizibilLaFereastra, VizibilLaUsa, VizibilLaUsaBalcon – (grupă) ca la Lista seturi: X = grupa se oferă la ferestre, respectiv uși, respectiv uși de balcon; la o grupă nouă toate trei sunt bifate;
SubSerie – câte o subserie pe rând; gol = toate. Pe antet limitează grupa, pe valoare limitează valoarea;
ZoneOf – zona de ofertare, cu aceleași reguli ca ZoneOf din Lista seturi. Pe antet limitează grupa, pe valoare limitează valoarea;
AplicaLaCanatInactiv – (grupă) X (propus la o grupă nouă) = la cercevelele cu ștulp, alegerea din această grupă se copiază și pe canatul opus la crearea lui; gol = canatul opus rămâne pe implicit;
VizibilLaCanat – (grupă) cercevelele cărora li se oferă grupa, după poziția față de ștulp: Cercevea simplă (Simplu) – fără ștulp la stânga sau la dreapta; Ștulp activ (StulpActiv) – canatul activ de lângă un ștulp; Ștulp inactiv (StulpInactiv) – canatul inactiv de lângă un ștulp. Se alege din lista celulei, de exemplu Ștulp activ, Ștulp inactiv = numai canatele unei perechi cu ștulp, sau se scrie, cu virgulă între valori; gol = toate cercevelele. Deosebirea este aceeași ca la tipurile de feronerie Standard, Stulp Activ și Stulp Inactiv din Setări implicite la creare, fila Feronerie: o cercevea despărțită de alta printr-un montant fix este simplă. O grupă care nu se oferă unei cercevele nu îi aduce nimic, nici valoarea implicită. La o grupă numai pentru canatul inactiv lăsați bifat AplicaLaCanatInactiv: copierea la crearea canatului opus și butoanele Opționale ale ferestrei și ofertei ajung la canatul inactiv numai prin grupele cu AplicaLaCanatInactiv; o grupă numai pentru canatul activ nu se copiază pe canatul inactiv, oricum ar fi AplicaLaCanatInactiv. Când schimbarea Deschidere Activă din Proprietăți schimbă grupele oferite canatului (VizibilLaCanat), setul canatului se reintroduce (ca la alegerea opționalelor: se poate anula cu Undo, iar dacă setul are modificări manuale, programul întreabă întâi);
Categorie – (grupă) text liber, de cel mult 50 de caractere: fila panoului pe care apare grupa. Grupele cu aceeași categorie – fără diferență între literele mari și mici – sunt pe aceeași filă, numită ca în prima dintre ele; grupele fără categorie sunt pe ultima filă, Altele. În tabelul de definiții, celula oferă categoriile folosite deja în serie;
ButonSchimbare – (grupă) butonul din Proprietăți care deschide opționalele grupei în locul listei lui de articole: Maner (butonul Mânere), BalamaUsa (Balamale ușă), Broasca (Broaște) sau Butuc (Cilindri); gol = niciunul. O grupă are cel mult un buton; mai multe grupe pot avea același buton. În tabelul de definiții, celula este o listă cu tipul de articol tradus, urmat de cod când diferă – Mâner (Maner), Balama Ușă (BalamaUsa), Broască (Broasca), Butuc – și păstrează codul; se poate scrie codul, denumirea tipului sau intrarea din listă; pe un rând de valoare este refuzată. Un WinArhi mai vechi decât 2026.0.82 ignoră coloana. Vezi Butoanele de schimbare a feroneriei.
<CodSerie>OptionaleFerArt.cds – conținutul. Are exact structura tabelului de seturi <CodSerie>Feronerie.cds (aceleași coloane, cu aceleași semnificații – vezi Seturi) plus două coloane: CodGrupaOpt și CodOpt – grupa și valoarea căreia îi aparține rândul. Un rând intră în setul unei cercevele dacă valoarea lui este efectivă și cheia lui se potrivește cu a setului: Deschidere, FU, Marca, SetF și StDr sunt fie goale (= oricare), fie egale cu ale setului – aceeași regulă ca la setul de bază. Dacă pentru aceeași valoare există un rând general și unul mai specific (SetF completat bate Marca, care bate FU, care bate Deschidere) cu același articol, latură, referință, cantitate, benzi și CanatInactiv, intră numai cel mai specific. Rândurile mutate prin migrare păstrează cheia completă a setului din care vin (mutare 1:1).
Rândurile cu Cod_Mag = XY din conținut lărgesc domeniul de dimensiuni al setului la fel ca cele din setul de bază. Regula pentru piesele prelucrate la centrul de feronerie rămâne: o piesă fizică = un rând cu Cant = 1 (verificarea 04).
Grupe valabile, implicite, reguli între valori
Grupele valabile pentru o cercevea se stabilesc după cheia setului ei (deschidere, FU, marcă, set), tipul obiectului (fereastră, ușă sau ușă de balcon), poziția cercevelei față de ștulp (VizibilLaCanat), subseria și zona de ofertare, prin filtrele din antetul grupei (ExVizualizare, ZoneOf, FU, Deschidere, Marca, VizibilLa…, SubSerie, SeturiValabile, SeturiExcluse) și, cu prioritate peste toate, prin lista Grupe de opționale excluse a setului din Lista seturi (coloana GrupeOptionaleExcluse, vezi Seturi): o grupă bifată acolo nu contribuie nimic la acel set, nici măcar implicitul ei. Așa se scot, de exemplu, balamalele standard dintr-un set de ușă pliantă care nu are balamale. Valorile se filtrează la rândul lor după ExVizualizare, ZoneOf și SubSerie.
Ordinea în care se aplică regulile, la fiecare introducere a setului și în panou:
1. codurile alese pe cercevea se curăță: codurile necunoscute sau ale unor grupe nevalabile aici sunt ignorate, cu avertisment;
2. într-o grupă radio cu mai multe coduri alese se păstrează primul după Ordine, cu avertisment;
3. fiecare grupă valabilă fără alegere primește valoarea cu ImplicitBifat;
4. excluderile, în ordinea grupelor: o grupă care are o valoare golește grupele din GrupeExcluse – alegere sau implicit, deopotrivă; apoi fiecare valoare efectivă scoate valorile din CoduriOptiuniNesel;
5. cerințele: GrupeNecesare și CoduriNecesare nesatisfăcute sunt probleme blocante; nu se completează nimic automat;
6. o grupă cu Obligatoriu rămasă fără valoare (și neexclusă) este problemă blocantă.
Rezultatul este lista efectivă, în ordinea grupelor și a valorilor. Panoul și programul folosesc aceeași evaluare, deci ceea ce vede operatorul este ceea ce intră în set.
Fila Opționale din Editare Feronerie
În Editare Feronerie, fila Opționale editează catalogul seriei alese în Seria. În stânga este arborele grupelor și valorilor; valoarea implicită este marcată (implicit). În dreapta sus este tabelul de definiții – rândul curent urmează selecția din arbore – cu câmpurile de tip listă editabile sub el (Grupe excluse, Grupe necesare, Coduri opțiuni neselectabile, Coduri necesare, Seturi valabile, Seturi excluse, Subserie, Descriere; câte un cod pe rând) și imaginea. Dublu-clic pe una dintre primele șapte casete deschide o listă de bifare cu ce poate conține câmpul: celelalte grupe ale seriei (Grupe excluse, Grupe necesare), celelalte valori ale catalogului, grupă cu grupă (Coduri opțiuni neselectabile, Coduri necesare), seturile din Lista seturi (Seturi valabile, Seturi excluse) sau subseriile seriei (Subserie). Ce era scris în casetă și nu apare în listă – de exemplu un model Roto* – rămâne bifat la sfârșitul listei, deci OK nu pierde nimic. În dreapta jos, Conținut: grupă / valoare – rândurile de articole ale valorii selectate, cu aceleași coloane ca tabelul setului. La un rând nou de conținut se completează automat grupa și valoarea selectate, cheia setului din listele Deschidere / FU / Marcă / Set ale filei Seturi, Cant = 1 și următorul NrCrt dintre rândurile aceleiași valori și aceluiași set; rândurile de conținut nu se renumerotează niciodată.
+ Grupă – cere codul grupei noi și adaugă antetul ei (TipSelectie C, următoarea Ordine, vizibilă la fereastră, ușă și ușă de balcon, AplicaLaCanatInactiv bifat);
+ Valoare – cere codul valorii noi, în grupa selectată;
Șterge – șterge rândul de definiție curent. Un antet care mai are valori nu se poate șterge (ștergeți întâi valorile); la o valoare cu conținut se cere confirmare și se șterg și rândurile ei de conținut;
Copiază valoarea – duplică valoarea selectată sub alt cod, împreună cu rândurile ei de conținut (cheile de set rămân aceleași); copia nu este niciodată implicit;
Verifică opționalele – rulează verificările descrise la Verifică opționalele;
Copiază în altă serie – înlocuiește catalogul (definiții și conținut) al seriei alese cu cel al seriei curente. Rândurile de conținut păstrează cheile de set ale seriei sursă, deci se potrivesc numai dacă seturile au aceleași denumiri;
Salvează – salvează ambele tabele (și Ctrl+S);
Tabelul de articole (stânga, cu filtru pe fiecare coloană, ca în fila Seturi) și butonul cu săgeată dintre cele două tabele – adaugă articolul de sub cursor în conținutul valorii selectate, la sfârșit (rândurile de conținut nu se renumerotează); tabelul de articole rămâne pe articolul ales, iar la redeschiderea editorului se repoziționează pe ultimul articol folosit;
Șterge rândul – șterge rândul de conținut curent.
Comenzile de mutare în masă se găsesc în meniul contextual al tabelului setului, fila Seturi (vezi Migrarea). Copiază Set copiază și rândurile de conținut ale setului (cele cu cheia lui) în setul destinație, în aceeași serie sau în alta. Caută și Schimbă are bifa și în opționale (conținutul opționalelor), cu care Schimbă, Șterge și Adaugă se aplică și rândurilor din conținutul opționalelor.
Migrarea: mutarea rândurilor din set în opționale
Trecerea unei serii existente la opționale nu se face de mână: rândurile standard (de exemplu balamalele de ușă din fiecare set) se mută din setul de bază în conținutul valorii implicite a grupei, cu două comenzi din meniul contextual (clic dreapta) al tabelului setului, fila Seturi:
Mută rândurile selectate în opționalul... – copiază rândurile în conținutul valorii alese și le șterge din setul de bază; aceasta este migrarea propriu-zisă;
Copiază rândurile selectate în opționalul... – doar le copiază; setul de bază rămâne neschimbat. Se folosește pentru a crea o variantă din rândurile standard, cât timp acestea mai sunt în setul de bază.
Înainte de deschiderea dialogului, editorul salvează tabelele seriei; comanda refuză să pornească dacă rămân modificări nesalvate. Dialogul Migrare opționale:
Grupă și Valoare – valoarea țintă. Dacă nu este cea implicită, previzualizarea avertizează: seturile pierd aceste rânduri când nu se alege valoarea respectivă;
Domeniu – Toată seria (seturile pentru care grupa este valabilă) sau Doar setul curent. Toată seria lasă deoparte seturile furnizorilor care nu sunt vizibili (Vizibil nebifat în fila Furnizori; seturile fără furnizor rămân) și seturile pe care Lista seturi nu le arată nici la fereastră, nici la ușă, nici la ușă de balcon: rândul setului nu are bifată niciuna dintre coloanele VizibilLaFereastra, VizibilLaUsa și VizibilLaUsaBalcon (o coloană contează ca bifată exact ca în lista de seturi a cercevelei: orice valoare nevidă). Pe acestea operatorul nu le poate alege din listele cercevelei. Excepție: un set pe care feroneria implicită a unei grupe de feronerie îl pune pe cercevele (Setări – Setări Implicite la Creare, fila Feronerie, la orice sub-serie a seriei) rămâne în domeniu chiar dacă Lista seturi nu îl arată sau furnizorul lui nu este vizibil – de exemplu setul ales la Ușă Stulp Inactiv (canatul pasiv al unei uși duble): ascuns în listă, dar pus automat pe acel canat. La fel rămâne în domeniu un set care diferă doar prin Deschidere (aceleași FU, Marcă și Set, fără deosebire între litere mari și mici) de un set pe care regulile de mai sus nu îl lasă deoparte: la schimbarea deschiderii unei cercevele în Proprietăți numele setului se păstrează, așa că cerceveaua ajunge pe acest set fără listele cercevelei și fără feroneria implicită – de exemplu setul OX cu același nume ca setul OBX pe care feroneria implicită îl pune pe cercevelele cu boltă. Doar setul curent lucrează pe setul ales în listele Deschidere / FU / Marcă / Set; aici nu se aplică niciunul dintre aceste filtre, iar comanda refuză dacă grupa nu este valabilă pentru acel set. Dialogul afișează setul curent și rândurile selectate în tabelul setului: „Rânduri selectate: n (cod1, cod2, …)”;
Ce se mută – cum se aleg rândurile din domeniu; variantele care nu se potrivesc cu domeniul ales sunt dezactivate:
– Rândurile selectate (n) – numai cu Doar setul curent: exact rândurile selectate în tabelul setului (n = numărul lor; un rând este identificat prin NrCrt, articol, culoare, StDr și CanatInactiv, nu numai prin NrCrt), inclusiv articolele fără TipArticol; celelalte rânduri ale setului rămân pe loc. Fără nicio selecție nu este nimic de mutat;
– Aceleași articole în toate seturile (după codul rândurilor selectate) – numai cu Toată seria: în fiecare set pentru care grupa este valabilă, rândurile al căror cod de articol (Cod_Mag) este printre codurile rândurilor selectate; funcționează și pentru articolele fără TipArticol. Este alegerea implicită la deschidere, când selecția conține cel puțin un cod diferit de XY; dezactivată când selecția nu conține niciun cod diferit de XY;
– Toate articolele de tipurile bifate – numai cu Toată seria: toate rândurile seturilor valabile al căror articol are unul dintre tipurile bifate în lista de mai jos (comportarea de până acum);
Tipuri de articole de mutat – lista tipurilor de articol (TipArticol din Articole feronerie), vizibilă numai la varianta după tip; sunt prebifate tipurile rândurilor selectate în tabelul setului;
Previzualizează – rulare uscată, fără nicio modificare: pentru fiecare set din care se mută rânduri arată „Set …: n rânduri, m excluse (XY / NrCrt>=1000), k rămân în set”, totalul, avertismentele și rândurile care blochează. Un set fără niciun rând de mutat (cel mult cu rânduri excluse) nu apare, decât dacă are un avertisment sau un blocaj propriu. La Toată seria, când filtrele domeniului au lăsat deoparte seturi pentru care grupa este valabilă și din care s-ar fi mutat rânduri, după total apare și: „Neluate în calcul: n seturi cu rânduri de mutat, dar cu furnizorul ascuns sau nebifate la nicio fereastră în Lista seturi (și nefolosite ca implicite de grupele de feronerie)”;
Execută – activ numai după o previzualizare fără blocaje și cu cel puțin un rând; orice modificare în dialog îl dezactivează din nou.
În toate cele trei variante se mută numai rândurile cu Cod_Mag diferit de XY și NrCrt sub 1000. Rândurile XY și cele cu NrCrt de la 1000 în sus (adăugate de script sau copii renumerotate) nu se mută niciodată, nici dacă sunt selectate; sunt numărate ca „excluse”. Rândul mutat păstrează totul: cheia setului (Deschidere, FU, Marca, SetF, StDr), NrCrt, Functii, Culoare, CanatInactiv, benzile MinX…MaxY, ParentID, ChildParentsIDs, blocatorii; primește doar marcajele CodGrupaOpt / CodOpt. Nimic nu se renumerotează.
Totul sau nimic. Dacă un singur rând din domeniu nu poate fi mutat – rândul există deja în conținutul valorii (același NrCrt, articol, culoare, StDr, CanatInactiv), rândul selectat are în set o dublură identică (aceleași cinci câmpuri) care nu a fost selectată, ParentID-ul lui este folosit deja în conținut de alt articol, valoarea țintă nu există în catalog, grupa nu este valabilă pentru setul curent sau, la mutare, setul ar rămâne fără niciun rând (vezi mai jos) – comanda nu modifică nimic și raportează rândurile: „Comanda nu a fost executată: există rânduri care nu pot fi mutate. Nimic nu a fost modificat.” O mutare „aproape completă” este exact starea interzisă de regula de bază. Avertismentele nu blochează: setul rămâne fără rânduri de bază, dar îl păstrează rândurile XY sau cele cu NrCrt de la 1000 în sus (rândul lui din Lista seturi este păstrat cât timp opționalul are conținut); rânduri copil (ChildParentsIDs) rămân în set cu părintele mutat.
Niciun set fără rânduri. Programul caută setul unei cercevele după rândurile lui din tabelul de seturi – inclusiv cele XY –, cu cheia scrisă exact la fel (litere mari și mici) și cu StDr gol sau al părții cercevelei, și adaugă rândurile din opționale numai unui set găsit. De aceea mutarea blochează un set din care ar pleca toate rândurile („setul ar rămâne fără niciun rând în tabelul de seturi…”) sau, la deschiderile cu stânga și dreapta (OX, OBX, …), toate rândurile pe care le primește o parte („…pentru cercevelele cu StDr = S”, respectiv D); dacă aceeași cheie apare în tabel scrisă și cu alte litere mari sau mici, mesajul arată și cheia scrisă exact pe care programul n-ar mai găsi-o. Rândurile XY, cele cu NrCrt de la 1000 în sus și cele pe care cheia nu le cuprinde rămân în set și îl păstrează. Mesajul spune ce rând XY trebuie adăugat întâi (butonul XY--->), cu domeniul pe toate dimensiunile (MinX și MinY 0, MaxX și MaxY de exemplu 9999): fără StDr când setul se golește pentru toate cercevelele, cu StDr = partea numită când se golește numai pentru o parte. Domeniile XY ale unei părți se cumulează – o cercevea care încape în oricare dintre ele este acceptată –, deci un rând XY fără limite care ar ajunge și la o parte cu domenii proprii i-ar anula limitele. Dacă partea golită nu are rost (un set numai pentru dreapta, cu câteva rânduri comune fără StDr), dați acelor rânduri StDr-ul celeilalte părți în loc să adăugați rândul XY. Copierea nu blochează niciodată astfel: rândurile de bază rămân.
Grupe cu VizibilLaCanat. Previzualizarea vede seturi, nu cercevele, iar un set poate fi folosit și de cercevelele cărora grupa nu li se oferă. De aceea mutarea pe Toată seria spre o valoare a unei grupe cu VizibilLaCanat este refuzată – mutarea le-ar lua rândurile și acelor cercevele: mutați set cu set, cu Doar setul curent, numai seturile folosite de cercevelele grupei; și atunci previzualizarea avertizează. Copierea nu este afectată, iar verificarea 20 nu ține seama de aceste grupe.
La Execută, după confirmare („Se mută n rânduri din m seturi în opționalul "X". Se face automat o copie de siguranță a fișierelor Feronerie și Lista seturi. Continuați?”), comanda:
1. face copia de siguranță a fișierelor <CodSerie>Feronerie.cds și <CodSerie>ListaSeturi.cds, sub numele <fișier>.bak-aaaallzz-hhnnss (data și ora), în subfolderul Backup al containerului (la un container .wa17b: folderul Backup de lângă fișierul arhivă); se păstrează numai cele mai noi 3 copii ale fiecărui tabel, cele mai vechi fiind șterse după o mutare reușită; folderul Backup nu este inclus de comanda Arhivează din meniul Bază de date, deci nu călătorește niciodată cu baza de date; dacă nu poate scrie copia, nu execută;
2. mută rândurile într-o singură trecere; la orice eroare înainte de salvare pune tabelele înapoi în starea salvată;
3. ridică Versiune minimă WinArhi din Setări – Administrator la 2026.0.79, prima versiune care citește opționalele, dacă era mai mică (o valoare mai mare rămâne neschimbată): de acum, un WinArhi mai vechi decât 2026.0.79 refuză să deschidă baza de date, în loc să oferteze uși fără balamale;
4. actualizează Lista seturi și salvează cele trei tabele (conținutul primul, apoi setul de bază, apoi lista); dacă salvarea eșuează la jumătate, mesajul spune ce copii de siguranță trebuie restaurate manual;
5. rulează verificarea „rânduri rămase” și o afișează: „Verificarea "rânduri rămase" după mutare: n seturi” – trebuie adusă la 0 pe toată seria, prin mutări succesive; după Doar setul curent, verificarea numără și setul lucrat, chiar dacă Lista seturi sau furnizorul lui ascuns l-ar lăsa deoparte;
6. afișează „Au fost mutate n rânduri din m seturi. Copie de siguranță: … Versiunea minimă WinArhi a bazei de date: …”.
Copiază rândurile selectate în opționalul... (copierea) nu face copie de siguranță și nu modifică versiunea minimă: setul de bază nu se schimbă.
Reversibilitatea este numai la nivel de fișier: se restaurează cele două copii de siguranță din folderul Backup (la un container .wa17b, fișierele trebuie puse înapoi în arhivă – arhiva nu este rescrisă automat) și se șterg din <CodSerie>OptionaleFerArt.cds rândurile mutate (cele cu CodGrupaOpt / CodOpt ale valorii țintă), apoi, dacă este cazul, se coboară versiunea minimă. Nu există anulare pe rând: tabelul de seturi nu are o cheie unică de rând, deci comanda nu poate promite un „undo” per rând.
Migrați o serie numai după ce WinArhi, WinArhiServer și aplicațiile web sau mobile care creează ferestre pe acea instalare sunt actualizate la 2026.0.79 sau mai nou. Pentru bazele de date distribuite showroom-urilor și dealerilor ca arhivă, setați în plus Versiune minimă pe grupa de baze de date din Arhive pe server înainte de a distribui baza migrată (vezi Versiuni).
Exemplu, balamalele de ușă: creați grupa (de exemplu BALAMALE, TipSelectie R, FU Usa), valoarea implicită (BAL3, ImplicitBifat X) și, dacă este cazul, varianta (BAL4). Varianta se poate crea cu Copiază rândurile selectate în opționalul... înainte de mutare (rândurile mai sunt în setul de bază) sau cu Copiază valoarea după mutare; apoi se ajustează cotele și se adaugă rândul suplimentar. În fila Seturi selectați un rând de balama, clic dreapta – Mută rândurile selectate în opționalul..., alegeți BALAMALE / BAL3, domeniul Toată seria și, la Ce se mută, Toate articolele de tipurile bifate cu tipul BalamaUsa (așa se prind toate modelele de balama din serie, nu doar codul selectat), Previzualizează, Execută. Seturile de ușă care nu au balamale (pliante, culisante) nu primesc nimic dacă nu au avut rânduri de mutat; alternativ, bifați grupa la Grupe de opționale excluse ale acelor seturi. La sfârșit, Verifică opționalele trebuie să dea 0 seturi la „Rânduri rămase”.
Butonul Verifică opționalele din fila Opționale (sau meniul Seturi – Verifică opționalele) salvează tabelele și rulează verificările de mai jos pe seria curentă. Rezultatul apare în fereastra de mesaje, sub titlul „Verifică opționalele - <serie>”, câte un nod pe verificare, cu problemele găsite sub el; fără probleme: „Verificarea opționalelor nu a găsit nicio problemă.” Dacă nu este ales un folder CNC Centru (Format CNC), verificările 03, 04 și 19 sunt sărite și se spune acest lucru. Numerotarea nu este continuă: numerele lipsă sunt verificări din proiectare care nu au mai fost necesare. Cele marcate BLOCANT trebuie rezolvate înainte de a folosi seria.
01. Coduri de opțional din conținut care nu există în catalog (sau grupa nu corespunde) – rânduri de conținut ale căror CodGrupaOpt / CodOpt nu sunt o valoare din catalog (de exemplu după redenumirea unui cod: conținutul nu se rescrie); tot aici, rândurile duble din catalog (aceeași grupă și același cod);
02. Articole din conținut care nu există în Articole feronerie;
03. Balamale din conținut absente din BalamaleUsa.cds / ArticoleFeronerieCentru.cds (CNC) – balamalele de ușă aduse de opționale trebuie cunoscute de centrul de prelucrare (vezi CNC);
04. Piese prelucrate (CNC) cu Cant <> 1 – un articol prelucrat la centru are un rând pe piesă;
06. ParentID folosit și în setul de bază pentru alt articol – același ParentID pentru articole diferite, în conținut și în setul de bază al aceluiași set;
07. Reguli care nu se rezolvă, cicluri, exclude-și-necesită, articol comun fără excludere reciprocă – coduri necunoscute în GrupeExcluse, GrupeNecesare, CoduriOptiuniNesel, CoduriNecesare; o grupă care exclude și cere aceeași grupă; cicluri în GrupeNecesare; același articol adus în același set de două grupe care nu se exclud reciproc;
08. Grupă obligatorie fără exact un implicit; implicit cu cerințe (BLOCANT) – o grupă cu mai mult de un ImplicitBifat, o grupă obligatorie fără exact un implicit, o valoare implicită cu CoduriNecesare sau într-o grupă cu GrupeNecesare (implicitul ar bloca oferta fără ca operatorul să fi ales ceva);
09. Parametri +ifOptFer / +ifGrupaOptFer care nu există în catalog – parametrii acestor funcții din Functii ale rândurilor setului de bază și ale rândurilor de conținut. Un cod scris greșit face funcția mereu falsă (respectiv +ifNot… mereu adevărată), fără alt mesaj – aceasta este singura verificare care îl prinde;
10. Valori pe care nu le referă niciun rând de conținut și nicio celulă Functii – valori fără conținut și nefolosite în +ifOptFer; cele cu FaraArticol sunt exceptate;
12. SeturiValabile / SeturiExcluse fără niciun set – intrări care nu se potrivesc cu niciun set al seriei;
14. Mânere din opționale absente din ManereComp al cremonului/broaștei – un mâner adus de un opțional trebuie să fie în Mânere compatibile ale cremonului sau broaștei cu care se combină (din același opțional sau din setul de bază);
15. Valori retrase (ExVizualizare) care mai au conținut – informativ;
17. Coduri de mâner cu IntExt gol (de clasificat în Articole feronerie) – necesar dacă mânerele interioare și cele exterioare sunt grupe separate;
19. Tabele de configurare CNC cu NumarBalamale fixat – la un centru la care numărul de balamale este fixat în tabelul de configurare, o opțiune care schimbă numărul de balamale nu schimbă prelucrarea; rândurile sunt listate pentru verificare manuală;
20. Rânduri rămase în seturile de bază (BLOCANT) – regula de bază: seturile seriei care mai conțin rânduri de bază (fără XY, NrCrt sub 1000) de felul celor din opționale. Un rând „rămâne” după două criterii, verificate pentru fiecare grupă valabilă pentru setul lui: (a) tipul lui de articol apare printre tipurile aduse de conținutul grupei – raportat „set S: n rânduri de tip T (grupa "G")”; (b) altfel, codul lui de articol (Cod_Mag) apare printre codurile rândurilor de conținut ale grupei – raportat „set S: n rânduri cu articolul C (grupa "G")”; așa sunt prinse și articolele fără TipArticol. Un rând se numără o singură dată pe grupă (după tip, când se potrivesc și tipul, și codul), dar poate fi raportat la mai multe grupe. Se numără pe toată seria, nu doar pe filtrul grupei, ca o serie migrată pe jumătate să nu se certifice singură; seturile furnizorilor care nu sunt vizibili și seturile pe care Lista seturi nu le arată nici la fereastră, nici la ușă, nici la ușă de balcon (VizibilLaFereastra, VizibilLaUsa și VizibilLaUsaBalcon nebifate) nu se numără, ca la mutare, cu aceleași excepții: se numără seturile pe care feroneria implicită a grupelor de feronerie le pune pe cercevele și seturile care diferă doar prin Deschidere de un set luat în calcul; nu intră în verificare grupele cu VizibilLaCanat, pentru că un set poate păstra pe drept rândurile pentru celelalte cercevele; rezultatul trebuie să fie 0 seturi;
21. Imagini (DbImage) care lipsesc din subfolderul Images al bazei de date – grupele și valorile (în afară de cele retrase) al căror fișier din DbImage nu există în subfolderul Images al bazei de date; în panou, locul imaginii rămâne gol, fără alt mesaj;
22. Grupe cu ButonSchimbare care nu schimbă tot ce promite butonul – grupele (în afară de cele retrase) a căror celulă ButonSchimbare: nu este unul dintre cele patru coduri (Maner, BalamaUsa, Broasca, Butuc); cere un buton al cărui tip de articol nu îl are niciun articol din conținutul grupei (TipArticol din Articole feronerie; un articol fără tip nu contează) – verificați tipul articolelor sau butonul ales; este BalamaUsa fără AplicaLaCanatInactiv – canatul pasiv al unui știulete rămâne atunci la lista proprie a butonului Balamale ușă;
23. Seturi pe care programul nu le găsește: rândurile lor sunt numai în opționale – seturile care au rânduri în conținutul opționalelor, cu cheia completă (Deschidere, FU, Marca, SetF), dar niciun rând în tabelul de seturi cu aceeași cheie, scrisă exact la fel; la deschiderile cu stânga și dreapta, separat pentru partea S și pentru partea D (StDr = S / D, în paranteză), iar când lipsesc ambele, o singură constatare pentru tot setul. La un set numai pentru o parte (rânduri de bază doar pe cealaltă), partea lipsă se raportează numai dacă un rând din opționale o numește (StDr = acea parte): rândurile fără StDr sunt pentru partea existentă. Nicio cercevea nu primește un astfel de set, deci rândurile lui din opționale nu se aplică niciodată. Starea rămâne după o mutare făcută înainte de 2026.0.83, când golirea completă a unui set nu era încă oprită, ori după Șterge Set sau Modifică denumire folosite înainte de 2026.0.83, care nu atingeau rândurile din opționale (acum le șterg, respectiv le redenumesc odată cu setul), ori după copierea opționalelor într-o serie care nu are setul. Fiecare constatare este BLOCANT; sub ele apare remediul: un set folosit primește un rând XY cu domeniul pe toate dimensiunile (cu StDr-ul din paranteză, dacă este – vezi Niciun set fără rânduri, mai sus), iar rândurile din opționale ale unui set șters sau redenumit se șterg sau se redenumesc;
24. VizibilLaCanat cu valori pe care programul nu le cunoaște – celulele VizibilLaCanat pe care programul nu le poate folosi: pe rândul grupei, un cuvânt care nu este Simplu, StulpActiv sau StulpInactiv – este ignorat, deci grupa nu mai ajunge la cercevelele pe care le numea cuvântul greșit, iar dacă niciun cuvânt al celulei nu este cunoscut, ajunge la toate cercevelele; pe rândul unei valori, orice text – coloana se citește numai pe rândul grupei. Tabelul de definiții nu acceptă astfel de valori la completarea celulei; ele pot veni din fișiere modificate în afara programului, din versiuni mai vechi de 2026.0.90 sau de pe un rând de grupă al cărui Cod a fost completat ulterior.
Pe rândurile de feronerie – în setul de bază sau în conținutul unui opțional – coloana Functii acceptă patru funcții noi: +ifOptFer(cod1, cod2, …), +ifNotOptFer(…), +ifGrupaOptFer(grupa1, …) și +ifNotGrupaOptFer(…). Ele condiționează rândul de lista efectivă de opționale a cercevelei (alegeri + implicite) și sunt singurul mod de a condiționa un rând XY sau un rând al setului de bază de un opțional. Sunt descrise la Funcții pentru feronerie. Din funcțiile script, aceeași listă efectivă se citește din Val.HardwareOptions (câte o linie CodGrupa=Cod).
Obligații pentru centrele de prelucrare
După introducerea setului, o balama (sau orice piesă) adusă de un opțional nu se mai deosebește cu nimic de una din setul de bază; exportul către utilaje o vede la fel. De aceea, la centrul de prelucrare a feroneriei, o balama de ușă din conținutul unui opțional trebuie înregistrată exact ca una din set: în BalamaleUsa.cds și în ArticoleFeronerieCentru.cds ale formatului CNC (verificările 03 și 04), câte un rând cu Cant = 1 pe piesă prelucrată. Dacă în tabelul de configurare al centrului numărul de balamale este fixat (NumarBalamale), o opțiune care schimbă numărul de balamale nu schimbă prelucrarea bandoului; verificarea 19 listează aceste tabele, iar confirmarea pe mașină rămâne manuală. O bază de date migrată nu schimbă exportul unei oferte care nu este redeschisă și modificată: serviciile ERP și exportatoarele CNC citesc setul salvat în ofertă și nu îl reintroduc.
Etichetele centrului de prelucrare au variabila [OptionaleFeronerie.Cod?Are:NuAre], cu aceeași sintaxă ca [OptiuniSelFerUsa.CodOptiune?Are:NuAre]: textul este înlocuit cu Are dacă profilul are opționalul, altfel cu NuAre (care poate lipsi, împreună cu cele două puncte). În locul lui Cod se scrie codul unei valori, codul unei grupe (adevărat când grupa are orice valoare efectivă) sau linia completă CodGrupa=Cod; comparația nu ține cont de majuscule. Se verifică lista efectivă a cercevelei (alegeri + implicite), la fel ca la funcțiile +ifOptFer, deci și o valoare implicită dă Are. Profilele unei cercevele poartă lista acelei cercevele; tocul, pragul, montanții, ștulpul, baghetele și profilele suplimentare ale ferestrei poartă listele tuturor cercevelelor ferestrei la un loc; profilele de cuplare, ale panourilor și ale accesoriilor nu poartă nimic, deci dau întotdeauna NuAre. Vezi Etichete centru (variabile).
Două bife de urgență opresc opționalele fără a modifica baza de date sau ofertele: Dezactivează opționalele de feronerie pe toate seriile (urgență) în Setări Diverse și, pe serie, Dezactivează opționalele de feronerie (urgență) în Consum și Ofertare – Producție. Cu una din ele bifată: ofertele se deschid și se salvează normal; coloana din fereastra de creare și butonul Opționale din Proprietăți sunt ascunse; butoanele Mânere, Balamale ușă, Broaște și Cilindri deschid lista lor proprie, ca și cum nicio grupă nu ar fi marcată în ButonSchimbare; alegerile salvate pe cercevele sunt ignorate (nu șterse) și se aplică numai implicitele – adică configurația standard a seriei, nu setul de bază gol. După migrare, „numai setul de bază” ar însemna uși fără balamale; de aceea comutatorul nu ocolește aplicarea implicitelor.
Fișierul ofertei: ofertele salvate de 2026.0.79 au versiunea de fișier 17.1.79 (alegerea de opționale se salvează pe cercevea). Un WinArhi mai vechi le deschide doar pentru citire.
Baza de date: comanda de migrare ridică Versiune minimă WinArhi (Setări – Administrator) la 2026.0.79, prima versiune care citește opționalele – nu la versiunea cu care rulați migrarea, deci WinArhi 2026.0.79 sau mai nou deschide în continuare baza; un WinArhi sau un WinArhiServer mai vechi refuză baza de date cu mesajul corespunzător, în loc să citească seturi fără balamale. Celelalte programe care deschid baza prin motorul WinArhi – serviciile ERP, aplicațiile web și mobile – nu verifică versiunea minimă: actualizați-le înainte de migrare, altfel citesc seturile fără balamale. O valoare deja mai mare (de exemplu, scrisă de o migrare făcută cu 2026.0.80, 2026.0.81 sau 2026.0.82, care ridicau versiunea minimă la versiunea curentă) rămâne neschimbată. Nu o coborâți la 2026.0.79 decât dacă baza nu folosește funcții mai noi pe care versiunile mai vechi le ignoră – de exemplu Fără șprosuri interioare la termopane sau Tip calcul la șprosuri, ambele din 2026.0.82: versiunea minimă este pentru toată baza de date, nu doar pentru opționale. Setarea se păstrează în SetariDate.cds, care intră în arhiva .wa17b numai împreună cu grupul Setări implicite la creare, iar cele două cataloage intră cu grupul Feronerie: arhivați și dezarhivați o bază migrată total sau cu aceste grupe bifate. O dezarhivare parțială care aduce Feroneria fără setări ar reproduce exact starea de evitat: seturi migrate fără versiune minimă.
VizibilLaCanat: versiunile mai vechi de 2026.0.90 nu cunosc coloana și oferă grupa tuturor cercevelelor, cu tot cu valoarea ei implicită. Când salvați definițiile, dacă o grupă cu VizibilLaCanat are o valoare implicită sau este obligatorie, programul propune ridicarea Versiunii minime WinArhi la 2026.0.90 (o singură dată pe sesiunea de editare; o valoare mai mare rămâne neschimbată).
Showroom-uri și dealeri: bazele livrate ca arhivă prin serverul de showroom-uri au propria poartă – coloana Versiune minimă a grupei de baze de date din Arhive pe server; administratorul o setează la 2026.0.79 (sau mai nou) înainte de a distribui o bază migrată, altfel un showroom cu WinArhi vechi ar primi-o.