Team Building ASiS 2026 · Sesiunile tehnice

Dezvoltări pe platforma ASiS

DocNativ · Vizor · iFrame · webConfigLinkuri Ovidiu Chiș Theodora Golf Club · 2–4 octombrie 2026

Despre ce vorbim

Dezvoltări, trei demo-uri scurte.

1DocNativFormulare Docx și colecția standard
2VizorRapoarte instant, pe structura exporturilor în Excel
3iFrameInterfețe moderne, cu date din ASiS
4webConfigLinkuriSecurizare și API-uri moderne
01 · Formulare Docx

DocNativ

Construim doar pe DocNativ: înlocuiește html2pdf și rapoartele .RDL

O singură tehnologie

Toate formularele noi se construiesc pe DocNativ. html2pdf și .RDL ies din uz.

Colecția standard

Împingem o colecție de formulare gata făcute, care servește și ca referință estetică.

Auto-update și versionare

Colecția se actualizează singură la client; fiecare formular are versiuni.

De aici înainte, un formular nou înseamnă un șablon Microsoft Word.

01 · Formulare Docx

Cum arată un șablon DocNativ

Tehnologie Microsoft Word standard: câmpuri, grupuri, imagini. Nimic proprietar în fișier.

Câmpuri (MERGEFIELD)

Fiecare «câmp» din Word e o coloană din procedura SQL. Ex: «DOC», «DATA», «UNITATE». Se inserează din Word: Insert → Quick Parts → Field → MergeField.

Grupuri (BeginGroup / EndGroup)

Un grup repetă o zonă pentru fiecare rând de date. «BeginGroup:row» … «EndGroup:row» = documentul; «BeginGroup:pozitii» … «EndGroup:pozitii» pe un rând de tabel = câte un rând pentru fiecare poziție. Grupurile se pot imbrica.

Imagini și formatare

«Image:siglafirma» pune logo-ul firmei. Switch-urile Word controlează formatul: \* Upper (majuscule), \# "#,##0.00" (numere), \@ "dd.MM.yyyy" (date). PAGE / NUMPAGES pentru „Pagina X din Y”.

Șablon Word
Bon de consum «DOC»
«BeginGroup:pozitii»
«nr» «DENUMIRE» «UM» «cant» «pret» «valoare»
«EndGroup:pozitii»
Document generat
Bon de consum BC-1024
1  Ciment   sac   10   25,00   250,00
2  Nisip    mc     2   80,00   160,00

Dacă știi Word, știi să faci un formular.

Demo scurt

DocNativ pe viu

Ovidiu Chiș

Andras

Un formular din colecția standard: șablon Word → date din ASiS → document generat.

02 · Rapoarte instant

Vizor

“

Unealta mea preferată din ASiS.— un coleg

Pe structura exporturilor în Excel

  • Configurare: avem ghidul uneltei, docu.asiserp.ro/vizor.
  • Un export nou: o linie de cod într-o procedură existentă.

Personalizări pentru utilizator

  • Zona de header: filtrări dinamice.
  • Coloane: ascundere și afișare, după nevoie.

Rapoarte instant, fără efort de proiectare.

02 · Tehnic

Un export Excel existent devine Vizor cu o linie

Același XML (antet, coloane, date), același apel. Diferența: atributul actiune.

declare @px xml
set @px = (
    select 'Cautare ' + @f_serie  numeFisier,
           @actiune          actiune,           (select * from #coloane for xml raw, type) coloane,
           (select * from #date    for xml raw, type) date,
           (select 'Sheet1' numeSheet, 14 _font_dim, 'bold' _font_atribut,
                   '#ffffff' _culoare, '#1e2161' _culoare_fundal
            for xml raw, type) info,
           (select * from #antet   for xml raw, type) antet
    for xml raw ('row'))

exec GenExcelsauVizualizare @sesiune = @sesiune, @parXML = @px
E

Excel, ca până acumImplicit când lipsește actiune. Fișierul .xlsx se generează prin AsisService și se descarcă.

V

VizorXML-ul se salvează în md.fistemp și se deschide ./vizor?uid=…: filtrare în header, coloane la alegere, export.

?

De unde vine acțiuneaDin parametrii apelului: @parXML.value('(//@actiune)[1]'), deci același buton poate oferi ambele.

Demo scurt

Vizor pe viu

Ovidiu Chiș

Vlad

Deschid un Vizor → filtrez din header → ascund coloane → export.

03 · Interfețe moderne în ASiS

iFrame

Integrăm interfețe moderne, care deservesc mai bine scopul clientului

HTML, CSS, JavaScript

Pagini web obișnuite, infuzate cu date din ASiS.

Componente moderne

Hărți, grafice și orice componentă JavaScript de pe piață.

Interfața potrivită scopului

Clientul primește ecranul de care are nevoie, în aplicația pe care o are deja.

Datele din ASiS în orice interfață vrei.

03 · Tehnic

Două feluri de a deschide un iFrame

Două utilizări distincte: deschidere modală, din operație, sau tab propriu, din meniu.

1 · deschideIframe · modal, din operație

-- în procedura operației (wOP…)
set @xml = (
  select @parXml.value('/*[1]/@uidTab','varchar(50)') uidTab,
         'https://…/specifice/tb-26/tb-cazare.html' url,         90 procent                      -- % din înălțime
  for xml raw('deschideIframe'))
select @xml for xml raw('Mesaje')
select 1 inchideFereastra for xml raw, root('Mesaje')
  • URL-ul se decide în SQL, la fiecare apel: sesiune, uid, parametri.
  • Se deschide modal, peste macheta curentă, pe cât la sută din înălțime vrei.

2 · deschideTab · în tab propriu, din meniu

-- configurare, o singură dată
webConfigMeniu  Meniu = 'ASIS_WEB', TipMacheta = 'IFRAME'
webConfigTipuri Descriere = 'https://…/tb-26/tb-harta.html'                ProcDate  = 'wIaHartaOvidiu'   -- opțional

-- din orice operație (sau direct din meniu, fără cod)
select 'ASIS_WEB' meniu, '' tip, '' subtip
for xml raw('deschideTab'), root('Mesaje')
  • Pagina are tab-ul ei, cu nume și icoană, ca orice machetă ASiS.
  • ProcDate îi dă datele din ASiS. Apare în meniu și fără operație.
Demo scurt

iFrame pe viu

Ovidiu Chiș

TudorDorian

O interfață modernă (harți, grafice, componente noi) cu date din ASiS, deschisă din ASiS.

04 · Dezvoltări

webConfigLinkuri

Securizare și API-uri moderne

Alex

Securizare

  • Validare token de acces la fiecare apel.
  • Ce nu are token valid nu primește conținut.

API-uri moderne

  • HTTP response code corect pentru fiecare situație.
  • Conținut structurat, validat, ușor de consumat.
IntrareiFrame, interfețe externe
→
API ASiSsingura cale de comunicare
→
Ieșiredate, documente, acțiuni

ASiS vorbește cu orice sistem prin „linkuri”.

04 · Tehnic

webConfigLinkuri în producție: CRM și STRR

Un rând în tabelă = un endpoint HTTP. Procedura SQL decide status code, content type și conținut.

Contractul: ce primește și ce întoarce procedura

-- înregistrare: o linie  →  /asisservice/linkuri/ext/invoice_strr/{bd}
insert into webConfigLinkuri(proceduraSql, codLink)
values ('wScriuApelAPIeTarifare', 'invoice_strr')
-- intrare: totul vine în @parXML
@parXML.value('(/row/headers/row/@x-asis-auth)[1]', …)  -- header
@parXML.value('(/row/cale/row/@valoare)[1]', …)         -- segment URL
@parXML.value('xs:base64Binary(row[1]/@continut)', …)   -- body POST
-- ieșire: codul HTTP și conținutul, din SQL
select (select 409 statusCode, 'application/json' contentType        for xml raw, root('RaspunsLink')),
       (select 'ERROR' status, 'DUPLICATE_TRANSACTION' code, 'Tranzactie duplicata!' message
        for json path, without_array_wrapper) raspString
ELIS

CRM ↔ ERP · 2023/asisservice?codlink=terti, comenzi, nom, sold… GET/POST/PUT, hash de securitate în URL, răspuns for json path cu paginare și lastUpdate.

CNAIR

STRR → ASiS · 2025 (eTarifare)refresh_strr: cheie în header → token valabil 30 de zile. invoice_strr: 400 body lipsă sau JSON invalid, 401 token, 409 duplicat, 200 → coada STRR_Facturi. Swagger publicat.

=

Același mecanism, altă maturitateTabela și procedura n-au schimbat forma. S-a schimbat cât controlează SQL: de la un select brut la cod HTTP, validări și mesaje de eroare clare.

Mulțumesc!

Bonus

Tot despre AI

Manuale în Markdown, scrise cu AI

AI-ul scrie documentația în fișiere Markdown (.md). Din ele iese un manual web, ușor de actualizat și de publicat. Două exemple:

Skill-uri SQL de la Microsoft

Pe Azure SQL Dev Hub, Microsoft publică skill-uri gata făcute pentru asistenții AI: le arată cum să lucreze corect cu SQL Server și Azure SQL.

microsoft.github.io/azure-sql-dev-hub
← Toate prezentările →următor · ←anterior · Fecran complet · Escînapoi 1 / 1