Net-Base Revistă

11.04.2026

Înlocuirea Borland BDE cu FireDAC: Ghid pentru o modernizare sigură a Delphi fără Big Bang

Multe aplicații Delphi existente încă utilizează Borland Database Engine (BDE) – adesea stabile, dar cu riscuri tot mai mari în ceea ce privește implementarea, 64‑Bit, securitatea și strategia modernă pentru baze de date. Acest articol arată cum companiile pot înlocui treptat și controlat BDE cu FireDAC...

11.04.2026

De la tema din revistă la practica în proiecte

Pagini relevante de servicii și pagini tehnice pentru articol

Video-Botschaft

Înlocuirea Borland BDE cu FireDAC: Ghid pentru o modernizare sigură a Delphi fără Big Bang

Kurz erklärt, warum die BDE im Betrieb zum Risiko wird und wie FireDAC schrittweise eingeführt werden kann, ohne einen Big-Bang-Relaunch zu erzwingen.

Video mit KI erstellt

Transkript anzeigen

Hallo, ich bin Mark. Die meisten BDE-Anwendungen scheitern nicht am Code, sondern am Betrieb.

Im Beitrag „Borland BDE durch FireDAC ersetzen: Leitfaden für eine sichere Delphi-Modernisierung ohne Big Bang“ geht es genau darum. Die BDE wirkt oft stabil.

Aber sie passt schlecht zu gehärteten Windows-Setups, standardisiertem Deployment und 64‑Bit. Genau dort entstehen Audit- und Support-Risiken.

FireDAC ist der moderne Datenzugriff in Delphi. Er bringt konsistente Treiber, sauberes Logging für Fehlersuche und funktioniert in 32 und 64 Bit.

Wichtig ist die Perspektive: Nicht „Komponenten tauschen“, sondern Schritt für Schritt vorgehen. Erst eine stabile Verbindungsschicht, dann ein Pilotmodul, dann die Fläche.

So bleibt die Fachlogik geschützt. Wenn Sie dazu Fragen aus Ihrem Betrieb haben, lassen Sie uns das in Ruhe einordnen.

Wenn du dazu Fragen hast oder tiefer einsteigen willst, melde dich gern bei uns.

În multe companii, Borland Database Engine (BDE) face încă parte din aplicații Delphi critice pentru business: logică de domeniu crescută în timp, acces la date apropiat de UI cu TTable/TQuery, parțial încă Paradox/dBase, parțial instalări timpurii Client/Server. Realitatea frecventă este: software-ul funcționează, utilizatorii cunosc procesele și în activitatea curentă nu există un motiv imediat să „atingi ceva”. În paralel se schimbă infrastructura tehnică: sistemele de operare sunt hardenate, deployment-ul este standardizat, 64‑Bit este așteptat, iar stocarea datelor trebuie mutată pe servere de baze de date cu un concept clar de drepturi și backup.

Exact aici, „înlocuirea Borland BDE cu BDE-Ablösung mit nativer Anbindung” devine o sarcină strategică de modernizare. BDE-Ablosung mit nativer Anbindung este în versiunile curente ale Delphi accesul la date consacrat pentru baze de date moderne. Oferă comportament consecvent, drivere robuste, suport Unicode, monitorizare/tracing și o arhitectură care poate deservi atât clienți desktop, cât și servicii și servere REST. Trecerea însă rar este doar un schimb 1:1 de componente – în special când aplicația existentă a „inclus” în comportamentul său specific BDE ipoteze pe termen lung (presupuneri de tranzacție, formate de date, filtrări/sortări, Cached Updates, rapoarte third‑party).

Acest articol se concentrează pe abordarea practică: cum înlocuiți BDE cu FireDAC fără a pune în pericol logica de domeniu și fără a impune un Big‑Bang‑Relaunch? Veți primi un model aplicabil, imagini țintă tehnice și indicații privind zonele problematice tipice în exploatarea companiei.

De ce înlocuirea BDE astăzi este mai mult decât întreținere tehnică

Atâta timp cât o aplicație BDE funcționează, o înlocuire pare un simplu „curățat de cod”. În practică, presiunea provine de obicei din probleme operaționale și de risc.

Deployment, security‑baselines și clienți „No‑Touch”

BDE este, din perspectivă istorică, construită pentru configurare locală (BDE Administrator, definiții de alias, NetDir, fișiere comune de configurație). În medii moderne, pașii manuali și setările la nivel de mașină sunt greu compatibili cu distribuția software, hardening‑ul și auditabilitatea. FireDAC permite deployment‑uri mult mai controlabile, pentru că parametrii de conexiune și setările driverelor pot fi gestionați aproape de aplicație.

64‑Bit, modernizarea Windows și noi ținte de platformă

Când o aplicație trebuie să ruleze în 64‑Bit (necesar de memorie, ecosistem drivere/Office, hardware nou, strategii de Terminal Server), BDE devine efectiv un blocaj. FireDAC suportă consecvent 32/64‑Bit și astfel este o componentă de bază a oricărei modernizări Delphi care nu trebuie să eșueze din cauza accesului la date. În plus, teme precum Windows 11 ARM64 și arhitecturi hibride client/service devin planificabile.

Strategia de baze de date: de la bază de fișiere la servere

Multe aplicații BDE poartă încă resturi din epoca Paradox/dBase. Aceste baze de date file‑based sunt mai vulnerabile în operare multi‑utilizator, mai greu de administrat pentru backup și se potrivesc slab cu cerințele moderne (roluri/drepturi, criptare, monitorizare, high‑availability). FireDAC nu este „noul driver Paradox”, ci accesul modern la SQL Server, PostgreSQL, MariaDB și Firebird. În practică, înlocuirea BDE este adesea semnalul de start pentru profesionalizarea stocării și operării datelor.

Mentenență și diagnostice în producție

Un cost subestimat este căutarea erorilor: probleme sporadice de locking, comportament inconsistent al cursorului, conversii de parametri greu de urmărit sau probleme de rețea/căi. FireDAC oferă prin logging, monitoring și un comportament de tip mai clar puncte mai bune de plecare pentru analize reproducibile. Pentru companiile care doresc să exploateze o aplicație pe termen lung și să o extindă punctiform, acesta este un beneficiu imediat.

BDE vs. FireDAC: diferențe care contează în migrare

Pe hârtie componentele se pot corela. În realitate este vorba despre schimbări de comportament care pot genera efecte secundare funcționale. O scurtă orientare:

Mapare de componente (punct de plecare)

  • TDatabase (BDE) → TFDConnection (FireDAC)
  • TQuery (BDE) → TFDQuery
  • TTable (BDE) → TFDTable (în modernizări deseori mai bun: acces pe bază de Query/View)
  • TStoredProc (BDE) → TFDStoredProc

Diferențele de comportament cele mai frecvente

  • Parametri și tipuri de date: FireDAC operează mai precis. SQL‑ul „o să meargă” devine vizibil mai repede (ex. date ca stringuri, conversii implicite, nullability neclară).
  • Tranzacții: Cod legacy conține adesea presupuneri implicite de commit (închiderea dataset‑ului, modele asemănătoare AutoCommit, Cached Updates). Cu FireDAC merită o gestionare conștientă a tranzacțiilor, pentru că îmbunătățește consistența funcțională.
  • Cursor/Fetch: FireDAC are alte valori implicite și mai mulți parametri ajustabili. Modelele ineficiente (resultset‑uri mari pentru liste UI) devin vizibile, dar pot fi optimizate țintit.
  • Unicode: În versiunile moderne ale Delphi Unicode este standard. Lanțul FireDAC (client‑library, opțiuni de conexiune, collation DB, tipuri de câmp) trebuie să fie consistent, altfel apar probleme de caractere și comparații.
  • Deployment: În funcție de DB sunt necesare biblioteci client (ex. libpq pentru PostgreSQL). Acest lucru trebuie planificat din timp, altfel apar surprize în mediul de producție.

Imagine țintă pentru o arhitectură FireDAC: stabilă, testabilă, extensibilă

O înlocuire a BDE nu ar trebui să degenereze în „FireDAC peste tot, cumva”. O imagine țintă solidă este valoroasă mai ales dacă aplicația va fi dezvoltată în continuare sau integrată în servicii/portaluri.

Obiectiv minimal: un strat de Connection unitar

În loc de conexiuni dispersate în formulare se recomandă un strat central de Connection:

  • Crearea și configurarea TFDConnection într‑un singur loc
  • Timeouturi, Encoding/CharacterSet, tratare erori uniforme
  • Schimbare Dev/Test/Prod fără muncă manuală
  • Opțional: activare centralizată de Tracing/Monitoring pentru diagnostice

Recomandat: margini clare de tranzacție în logica de domeniu

Numeroase aplicații vechi dispersează modificările de date în eventuri UI. Asta crește riscul de update‑uri parțiale și îngreunează testarea. O abordare stabilă cu FireDAC înseamnă: Use Case‑ul (Service/Logica de domeniu) pornește și încheie tranzacția, nu UI‑ul. Chiar într‑o aplicație VCL desktop pură se creează astfel un nucleu robust, ulterior reutilizabil mai ușor ca serviciu sau API.

Extensibil spre servicii și REST

Cine ulterior adaugă un REST‑Server, operează servicii Windows sau Linux sau vrea să conecteze un portal clienți, beneficiază de un data‑layer curat. FireDAC este potrivit dacă managementul conexiunilor, tratarea erorilor și – în funcție de încărcarea serverului – pooling‑ul sunt gândite cel puțin ca imagine țintă. Nu trebuie implementat din prima etapă, dar arhitectura nu trebuie să îl blocheze.

Strategia de migrare: introduceți FireDAC treptat, demontați BDE controlat

În contexte B2B Big Bang‑ul rar este realist: prea multe procese de business, prea multă responsabilitate operațională, prea puțină acceptare pentru downtime‑uri îndelungate. O înlocuire treptată a BDE este, în general, calea sigură.

Faza 1: inventariere și hartă de risc

O inventariere utilă nu numără doar componente, ci evaluează comportamente și cuplaje:

  • Ce baze de date sunt folosite: Paradox/dBase, Firebird/InterBase, SQL Server, PostgreSQL, MariaDB?
  • Unde există acces TTable, unde se folosește SQL prin TQuery, unde sunt Stored Procedures?
  • Cum sunt gestionate tranzacțiile azi (explicit, implicit, Cached Updates, modele mixte)?
  • Ce rapoarte/exporturi așteaptă proprietăți specifice ale dataset‑urilor (sortare, filtre, Calculated Fields)?
  • Ce componente terțe sau framework‑uri proprii sunt specifice BDE?

Din această hartă rezultă dacă înlocuirea afectează „doar” stratul de acces sau dacă este necesară și o restructurare a bazei de date (ex. Paradox → SQL Server/PostgreSQL/MariaDB).

Faza 2: fundație FireDAC (fără refactor UI)

Înainte de a migra ecranele, FireDAC trebuie pus corect din punct de vedere tehnic:

  • DataModule central sau clasă Service cu TFDConnection
  • Model de configurare pentru Connection Strings (ex. INI/JSON) și gestionare curată a secretelor
  • Tratare de erori standardizată (DB‑Exceptions convertite în mesaje logabile și înțelese)
  • Opțiuni de Tracing/Monitoring pentru pilot (activabile țintit, nu permanent „zgomotoase”)

Important este ca din acestea să rezulte standarde obligatorii: convenții de denumire, reguli pentru parametri, schema de logging, setări implicite per DB.

Faza 3: modul pilot cu relevanță reală pentru domeniu

Un pilot bun este delimitat funcțional, dar utilizat efectiv. Scopul: a defini și verifica pattern‑uri.

  • TQueryTFDQuery (incl. parametrizare și tipizare)
  • Definirea cadrului de tranzacție și vizibilizarea acestuia în cod
  • Demonstrarea egalității de rezultat (compararea resultset‑urilor relevante din punct de vedere funcțional)
  • Măsurarea performanței (timp de răspuns, sarcina DB, trafic de rețea)

La finalul pilotului ar trebui să existe o listă de verificare internă pe baza căreia se migrează fiecare modul. Asta reduce riscul și face efortul mai predictibil.

Faza 4: migrare la scară și curățare deployment

După pilot, trecerea pe module se face iterativ. Paralel se reduce dependența operațională de BDE:

  • Eliminarea scripturilor installer și a documentației pentru setup‑uri BDE
  • Scoaterea definițiilor de alias, configurărilor NetDir și a celor mai speciale căi
  • Alinierea pipeline‑ului de build/release la noile dependențe (client‑libs, drivere)

Acest demontaj este esențial: atâta timp cât părți BDE supraviețuiesc în deployment, riscul operațional rămâne.

Capcane: cauze frecvente ale efectelor secundare funcționale

Multe migrări nu eșuează din cauza FireDAC, ci din cauza ipotezelor implicite din codul vechi. Aceste arii trebuie prioritizate devreme.

Dialecte SQL și SQL crescut istoric

Aplicațiile BDE conțin adesea SQL care „a funcționat din întâmplare” cu un anume driver: join‑uri implicite, utilizare neunitară a aliasurilor, funcții specifice DB, sortări neclare. În migrare se aplică:

  • Explicitați SQL‑ul (sintaxa JOIN în loc de corelări implicite în WHERE)
  • Verificați cuvintele rezervate și identificatorii (ex. DATE, USER, ORDER ca nume de câmp)
  • Unificați sau încapsulați funcțiile de dată/timp și stringuri

FireDAC oferă posibilități de adaptare, dar soluția durabilă este SQL conform DB‑ului, lizibil și bine structurat.

Maparea tipurilor: Boolean, Data/Timp, Memo/Blob, NULL

În practică, BDE a făcut multe interpretări. FireDAC este mai precis – ceea ce e bine, dar impune reguli. Probleme tipice:

  • Boolean: BIT/SMALLINT/CHAR(1) – definiți clar din punct de vedere funcțional, fără conversii implicite
  • Data/Timp: DATETIME vs. DATETIME2, milisecunde, logică de sortare/comparare; întrebări de timezone în sisteme distribuite
  • Memo/Blob: comportament de fetch (OnDemand), encoding, consum de memorie în client
  • NULLability: Codul vechi care amestecă stringuri goale și NULL generează erori logic greu detectabile

Este recomandat un catalog compact de tipuri: pentru fiecare tabel/coloană critică definiți tipurile țintă (DB și Delphi) plus reguli pentru NULL, valori implicite și formatări.

Tranzacții: de la implicit la orchestrare conștientă

În proiectele legacy Delphi eroarea frecventă este încrederea în commit‑uri implicite („dacă închid dataset‑ul, este salvat”). FireDAC oferă API‑uri clare (StartTransaction, Commit, Rollback). Avantajul modernizării apare când tranzacțiile sunt înțelese ca cadru funcțional:

  • Use Case‑ul pornește tranzacția
  • Mai multe update‑uri rulează pe aceeași Connection
  • Commit/Rollback se face central, cu tratare a erorilor transparență

Aceasta reduce inconsistențele și este esențial când aplicația va fi extinsă cu servicii sau interfețe.

Cached Updates și tratarea conflictelor (concurrency)

Numeroase aplicații BDE folosesc Cached Updates ca mecanică de editare offline. FireDAC poate oferi funcționalități similare, dar regulile trebuie explicite:

  • Care câmpuri sunt chei, care sunt folosite pentru verificarea concurenței?
  • Cum se rezolvă conflictele (RowVersion/Timestamp, „last write wins”, decizie a utilizatorului)?
  • Ce se întâmplă la erori parțiale într‑o operațiune batch?

În modernizări este adesea util să mutați logica de rezolvare a conflictelor mai aproape de logica de domeniu sau într‑un strat de servicii, în loc să o ascundeți exclusiv în comportamentul dataset‑ului din UI.

Aplicații puternic dependente de TTable/Paradox: FireDAC nu este singura provocare

Dacă aplicația se bazează intens pe acces file‑based (TTable către Paradox), „înlocuirea BDE cu FireDAC” este doar o parte din soluție. FireDAC este proiectat în primul rând pentru baze SQL. Atunci decizia centrală este: se modernizează stocarea datelor către o DB server?

  • Migrare către SQL Server, PostgreSQL sau MariaDB
  • Introduceți un concept de roluri/drepturi și procese de backup/restore curate
  • Operare multi‑utilizator stabilă fără probleme de file‑locking

Dacă o schimbare imediată a bazei de date nu este posibilă din punct de vedere organizațional, o abordare în două etape este pragmatică: mai întâi stabilizați stratul de acces și reduceți cuplarea UI, apoi planificați migrarea datelor cu strategii clare de testare și cutover.

Rapoarte, exporturi și componente terțe

Rapoartele depind frecvent de detalii: sortări, ordine de aplicare a filtrelor, câmpuri calculate, comportament master/detail. Pentru o tranziție controlată:

  • Identificați rapoartele critice și tratați‑le ca suită de testare pentru regresie
  • Generați în mod determinist seturi de date pentru rapoarte (Views/Stored Procedures sau interogări clar definite)
  • Reduceți lanțurile de filtre la nivel UI care depind de comportamentul dataset‑ului

Obiectivul este egalitatea reproducibilă a rezultatelor, în special pentru rapoarte cu relevanță de audit.

Upgrade arhitectural în cadrul migrației FireDAC: decuplare pragmatică

Înlocuirea BDE este un moment potrivit pentru a extrage accesul la date din formulare și eventhandler‑e. Aceasta nu implică un proiect masiv de re‑architecture. Măsuri moderate aduc deseori efect mare.

Structură‑țintă pragmatică (compatibilă cu arhitectura Layer-3)

  • Connection/Unit‑of‑Work: gestionează Connection și tranzacția, furnizează obiecte Query
  • Repository/DAO: încapsulează SQL și accesul la date per domeniu funcțional
  • Service/Use Case: orchestrează logica de domeniu, validările și cadrul tranzacțional

Această structură este compatibilă cu o eventuală arhitectură Layer-3 și ușurează proiectele următoare: interfețe REST, servicii background, clienți multiplatformă sau integrarea cu portaluri.

Efect important: mai puține efecte secundare globale

Multe proiecte BDE lucrează cu module de date globale și stări implicite. FireDAC poate funcționa și așa, dar modernizarea devine mai stabilă dacă stările sunt localizate: ciclu de viață clar pentru Connection/Tranzacție, căi de eroare reproducibile, mai puține „efecte colaterale” cauzate de starea globală.

Performanță și stabilitate: configurați FireDAC țintit

FireDAC este performant, dar performanța este o combinație de SQL, indexare, strategie de fetch și managementul conexiunilor. În migrații apare frecvent că BDE a mascat modele ineficiente, deoarece volumele de date erau mai mici sau pentru că sistemul rula local.

Strategii de fetch și liste UI

  • Listele încarcă doar coloanele necesare (fără SELECT *)
  • Sortare pe server și filtre țintite în locul lanțurilor client
  • La volume mari: paging sau încărcare incrementală
  • Câmpurile LOB (Memo/Blob) se încarcă doar când sunt necesare

FireDAC oferă opțiuni adecvate; esențială este decizia funcțională care date are nevoie un utilizator într‑un context dat.

Prepared Statements și parametrizare

Interogările parametrizate nu sunt doar o cerință de securitate (prevenirea SQL‑Injection), ci și favorizează reutilizarea planurilor în multe DB‑uri. În plus, evidențiază nepotriviri de tip în codul vechi și permit corecții țintite. În sisteme mature este un câștig de calitate care se traduce în mai puține situații excepționale și diagnostic mai bun.

Managementul conexiunilor: Desktop vs. Service/REST

În clienții desktop clasici o conexiune de durată per client este adesea practică. În servicii sau servere REST sunt uzuale alte modele: cereri scurte, acces paralel, connection‑pooling. Cine vede înlocuirea BDE ca parte a unei modernizări mai largi trebuie să ia în considerare aceste diferențe în imaginea țintă, astfel încât etapele ulterioare să nu reînceapă analiza accesului la date.

Strategie de testare și acceptanță: demonstrarea egalității rezultatelor

În înlocuirea BDE riscul principal nu este de obicei „aplicația nu pornește”, ci deviațiile subtile funcționale: sortări, rotunjiri, tratarea NULL, limite de tranzacție, efecte colaterale ale triggerelor/constraint‑urilor în DB‑urile moderne. O strategie de testare solidă include:

  • Regresie SQL: rulați interogările critice pe date de test definite și comparați seturile de rezultate
  • Teste Use Case: verificați procesele cheie (ex. înregistrare, validare, anulare, import/export) cu valori așteptate
  • Teste multi‑utilizator/stabilitate: comportament de lock, deadlock‑uri, timeouts, durată tranzacții
  • Logging/Observability: capturați erorile DB structural (coduri de eroare, context, query afectat), nu doar „dialog de eroare”

Companiile câștigă dublu: testele securizează migrarea și creează o bază pentru a rula ulterior modificări ale modelului de date sau interfețelor într‑un mod controlat.

Baze de date țintă în proiecte FireDAC: opțiuni tipice

FireDAC este intenționat larg, dar fiecare DB are reguli proprii. În modernizări următoarele ținte apar frecvent:

SQL Server

Tipic în peisaje IT dominate de Windows. Puncte importante: tipuri Unicode consistente (NVARCHAR), tipuri moderne de timp (DATETIME2), strategie clară Identity/Sequence, nivele de izolare definite și abordare atentă a blocărilor.

PostgreSQL

Puternic pe integritate și funcționalități. În migrare relevante: case‑sensitivity la identificatori, tipuri de date (boolean/uuid/jsonb) și diferențe de dialect. FireDAC poate conecta PostgreSQL productiv, dacă client‑libraries și deployment‑ul sunt organizate curat.

MariaDB/MySQL

Des întâlnit când software desktop interacționează cu componente web sau portaluri. Important: utf8mb4 consecvent, InnoDB ca engine, strategie clară de tranzacții și indexare. FireDAC suportă MariaDB/MySQL fiabil, dacă parametrii și tipurile sunt definite clar.

Indiferent de țintă: o înlocuire BDE este mai stabilă atunci când, în paralel, apar standarde de bază pentru DB (versionare schemă, scripturi de migrare, roluri/drepturi, backup/restore, monitoring).

Recomandări practice pentru o migrare FireDAC planificabilă

Reduceți dependențele înainte de a înlocui componente în masă

Dacă SQL‑ul și logica dataset sunt împrăștiate în multe formulare, fiecare schimbare devine costisitoare. Un pas intermediar care concentrează SQL‑ul în câteva clase de acces reduce semnificativ aria de migrare. După aceasta, trecerea efectivă la FireDAC este adesea mai rapidă și cu risc mai mic.

Migrați devreme un proces tranzacțional

„Listele simple” sunt convenabile ca prim pas, dar reducerea riscului cere migrarea timpurie a unui proces cu update‑uri reale și dependențe. Dacă acolo tranzacțiile, tipurile și căile de eroare sunt curate, restul migrației devine mai predictibil.

Tratați deployment‑ul ca muncă de aceeași importanță

Schimbarea codului este doar jumătate din muncă. Clarificați din timp:

  • Ce biblioteci client/drivere sunt necesare per DB?
  • Cum vor fi versionate, semnate (dacă e relevant) și distribuite acestea?
  • Cum se gestionează parametrii de conexiune și cine are dreptul să îi modifice?
  • Cum arată procesul de suport când accesul DB eșuează?

Folosiți FireDAC ca ancoră de modernizare – fără a porni de la zero

Înlocuirea este o oportunitate pentru pârghii de calitate direcționate: parametrizare, limite de tranzacție, logging, mesaje de eroare uniforme. Acestea reduc costurile de operare și fac extinderile viitoare (interfețe, servicii) semnificativ mai puțin riscante, fără a reinvent

Fazit: înlocuirea BDE cu FireDAC este o modernizare controlabilă – dacă este tratată ca temă de arhitectură

BDE a susținut multe aplicații Delphi ani de zile. Astăzi însă reprezintă un risc structural: pentru 64‑Bit, pentru deployment standardizat, pentru cerințe moderne de securitate și pentru conectarea la baze de date contemporane. FireDAC este succesorul potrivit, dar nu printr‑un „schimb de componente peste noapte”. Calea sigură este o migrare treptată cu o fundație curată, modul pilot, reguli obligatorii pentru tipuri și tranzacții și teste care dovedesc egalitatea rezultatelor.

Dacă doriți să planificați structurat înlocuirea BDE – inclusiv analiza inventarului, calea de migrare și arhitectura țintă FireDAC – următorul pas logic este o verificare tehnică a condițiilor dvs. cadru: https://net-base-software-gmbh.de/kontakt/

Pasul următor

Dacă un subiect devine un proiect real, arhitectura, starea existentă și operarea ar trebui analizate împreună încă din faza incipientă.

Nu oferim sprijin doar pentru întrebări punctuale, ci și atunci când fragmente de cod sursă, probleme legacy sau idei de portal trebuie transformate într-un proiect robust la nivel de companie.

  • Situația curentă, starea țintă și riscurile tehnice sunt evaluate împreună.
  • REST, accesul la date, portalurile și implementarea nu sunt amânate pentru etape ulterioare.
  • Veți vedea din timp care opțiune este viabilă din punct de vedere economic și operațional.

Partajează postarea

Distribuiți această postare direct

LinkedIn, X, XING, Facebook, WhatsApp și E-Mail sunt disponibile imediat. Pentru Instagram pregătim direct linkul și textul scurt.

E-mail

Instagram se deschide într-o filă nouă. Linkul și textul scurt se copiază în prealabil în clipboard.