V_RIV_SP()

Objektas Rivile API v2 (leidžiant procedūras tiesiogiai duomenų bazėje) užklausoms formuoti

(nuo 121.0100 RIV_GAMA versijos)

Sintaksė

V_RIV_SP([vartotojas])

Grąžina

Loginę reikšmę – ar užklausa įvykdyta sėkmingai

Parametrai

vartotojas – galima nurodyti, kokio vartotojo teisėmis vykdoma užklausa. Nenurodžius, bus vykdoma prisijungusio vartotojo teisėmis.

Metodai

Galima vykdyti užklausas dviem būdais (metodais):

  • Send([cMethod], [cOper], [cBody], [cParams], [nPage]) – vykdoma užklausa suformuojant XML, kaip aprašyta Rivile Gide prie Rivile API metodų.
    • cMethod - nurodomas metodas, pvz.: "EDIT_I02"
    • cOper - nurodomas veiksmas, pvz.: "I"
    • cBody - nurodomas duomenų turinys ar filtravimo sąlygos, pvz.: "BENDRAS"
    • cParams - galima nurodyti pilną jau suformuotą užklausos tekstą, kuris bus siunčiamas į Rivile API
    • nPage - nurodomas, kuris rezultato puslapis reikalingas
  • Exec(cProcedure, cOper, cProcParams) – vykdomas stored procedūros kvietimas tiesiogiai
    • cProcedure - nurodomas metodas, pvz.: "RGI_I02_EDIT"
    • cOper - nurodomas veiksmas, pvz.: "I"
    • cProcParams – nurodomi papildomai perduodami parametrai, pvz.: "@I02_KODAS_ZS='BENDRAS', @i02_useris=?titi_pagr.useris"

Pastaba: Grąžinamas rezultatas (EDIT metodams) yra tik lentelės raktinės reikšmės (primary key).

Rezultatas grąžinamas

  • responseText – grąžinamas atsakymo tekstas (XML formatu)
  • responseObj() – grąžinamas iš XML duomenų suformuotas objektas
  • message – grąžina klaidos pranešimą
  • messageData – grąžina klaidos pranešimą, patikslintą užklausos duomenimis

Dirbant sąrašų languose

Dirbant sąrašų languose, galima automatiškai atnaujinti informaciją sąraše. Tam naudojamas metodas:

  • refresh_grid(thisform, [tKodas1], [tKodas2], [tKodas3]) – būtina perduoti sąrašinės formos objektą. Jei vykdomas įrašo išmetimas arba detalios informacijos koregavimas, būtina perduoti ir sąraše keičiamo įrašo rakto reikšmes (primary key)

Pavyzdžiai

  1. Pardavimo dokumento sukūrimas
m.loRivApi=v_riv_sp()
IF !loRivApi.Send("EDIT_I06_FULL","I",;
        "<I06>"+;
        "   <I06_OP_TIP>51</I06_OP_TIP>"+;
        "   <I06_KODAS_KS>6987452</I06_KODAS_KS>"+;
        "   <I07>"+;
        "       <I07_TIPAS>1</I07_TIPAS>"+;
        "       <I07_KODAS>001</I07_KODAS>"+;
        "       <I07_KODAS_US>VNT</I07_KODAS_US>"+;
        "       <I07_KAINA_BE>1000.0001</I07_KAINA_BE>"+;
        "       <kiekis_u>2</kiekis_u>"+;
        "   </I07>"+;
        "</I06>")
    MESSAGEBOX(m.loRivApi.message,16,"Klaida")
    RETURN .F.
ENDIF
m.loRivApi.refresh_grid(_thisform)
  1. Atnaujinama detali eilutė pardavimuose
m.loRivApi=v_riv_sp()
IF !loRivApi.Exec("RGI_I07_EDIT","U","@i07_kodas_po='010000000258', @i07_eil_nr=1, @kiekis_u=1")
    RETURN .F.
ENDIF
m.loRivApi.refresh_grid(_thisform,'010000000258')
  1. Pardavimo operacijų importas iš EIP failo.
_thisform=thisform
EXECSCRIPT(SUBSTR(komanda_v,ATC(CHR(13),komanda_v,ij_k+1)))
EXIT
ON ERROR

m.lcEipFile=GETFILE("EIP")
IF EMPTY(m.lcEipFile)
    RETURN .F.
ENDIF

* Importuojame *
m.loRivApi=v_riv_sp()
IF !m.loRivApi.Send("EDIT_I06_FULL","I",FILETOSTR(m.lcEipFile))
    =f_info("Klaida: "+m.loRivApi.Message,.T.)
    RETURN .F.
ENDIF

** Atnaujiname informaciją pardavimo operacijų sąraše (grid'e)
m.loRivApi.refresh_grid(_thisform)

Pastaba. Reikėtų atkreipti dėmesį, kad tam tikri importui skirto failo laukai, pvz., bar_kodas, kiekis_u, skiriasi nuo tų, kurie standartiškai naudojami EIP failuose.

Informaciją apie kiekvieno metodo naudojamus laukus ir specifines to metodo savybes galima rasti prie jų aprašymo Metodų sąrašas.

Pavyzdžiui, apie pirkimų/ pardavimų detalios eilutės laukus ir koregavimą aprašyta EDIT_I07.

  1. Padalinio keitimas pardavimo operacijoje
_thisform=thisform
EXECSCRIPT(SUBSTR(komanda_v,ATC(CHR(13),komanda_v,ij_k+1)))
EXIT
ON ERROR

LOCAL lcKodas_is
m.lcKodas_is=PS_KOD("IS","Naujas padalinys")
IF EMPTY(m.lcKodas_is)
    RETURN .F.
ENDIF

* Keičiame *
m.loRivApi=v_riv_sp()
IF !m.loRivApi.Send("EDIT_I06_KOP","",;
            "<I06>"+;
            "   <P_OPER>2</P_OPER>"+;
            "   <OLD_I06_KODAS_PO>"+Wi06r.i06_kodas_po+"</OLD_I06_KODAS_PO>"+;
            "   <NEW_I06_OP_TIP>"+TRANSFORM(Wi06r.i06_op_tip)+"</NEW_I06_OP_TIP>"+;
            "   <NEW_I06_DOK_NR>"+xml_encode(Wi06r.i06_dok_nr)+"</NEW_I06_DOK_NR>"+;
            "   <NEW_I07_KODAS_IS>"+xml_encode(m.lcKodas_is)+"</NEW_I07_KODAS_IS>"+;
            "</I06>")
    f_info("Klaida: "+m.loRivApi.Message,.T.)
    RETURN .F.
ENDIF

** Atnaujiname informaciją pardavimo operacijų sąraše (grid'e)
m.loRivApi.refresh_grid(_thisform)
  1. Pardavimo operacijos perkėlimas
_thisform=thisform
EXECSCRIPT(SUBSTR(komanda_v,ATC(CHR(13),komanda_v,ij_k+1)))
EXIT
ON ERROR

* Perkeliame *
m.loRivApi=v_riv_api()
IF !loRivApi.Exec("RGI_EDIT_I06","P","@I06_KODAS_PO=?Wi06r.i06_kodas_po")
    =f_info("Klaida: "+m.loRivApi.Message,.T.)
    RETURN .F.
ENDIF

** Atnaujiname informaciją pardavimo operacijų sąraše (grid'e)
m.loRivApi.refresh_grid(_thisform, Wi06r.i06_kodas_po)