---
title: "V_RIV_SP()"
url: "https://gidas.rivile.lt/sistemos_programavimas/funkcijos/integraciju_funkcijos/04_v_riv_sp"
updated: "2026-10-01"
parent: "https://gidas.rivile.lt/sistemos_programavimas/funkcijos/integraciju_funkcijos.md"
---

# 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**

user – galima nurodyti, kokio vartotojo teisėmis vykdoma užklausa. Nenurodžius, bus vykdoma prisijungusio vartotojo teisėmis. (Ar galima pakeisti vartotoją nurodoma parametre RGI_USR_EDIT).

**Savybės**

Galima nurodyti papildomas savybes:

- user – galima nurodyti, kokio vartotojo teisėmis vykdoma užklausa. Nenurodžius, bus vykdoma prisijungusio vartotojo teisėmis. (Ar galima pakeisti vartotoją nurodoma parametre RGI_USR_EDIT).
- apikey – kokio API rakto vardu bus vykdomos užklausos
- db_name - galima nurodyti kitą duomenų bazę tame pačiame serveryje, kurioje turės būti vykdoma užklausa

**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ų](https://gidas.rivile.lt/internetiniai_moduliai/api_rest.md).
  - cMethod - nurodomas metodas, pvz.: "EDIT_I02"
  - cOper - nurodomas veiksmas, pvz.: "I"
  - cBody - nurodomas duomenų turinys ar filtravimo sąlygos, pvz.: "<I02><I02_KODAS_ZS>BENDRAS</I02_KODAS_ZS></I02>"
  - 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)
```



2. 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')
```



3. Pardavimo operacijų importas iš EIP failo.

```
_thisform=thisform
EXECSCRIPT(SUBSTR(komanda_v,ATC(CHR(13),komanda_v,ij_k+1)))
ij_k=999999 && 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",F_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)
```

> **Dėmesio:** **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](https://gidas.rivile.lt/internetiniai_moduliai/api_rest.md#metodu-sarasas).

Pavyzdžiui, apie pirkimų/ pardavimų detalios eilutės laukus ir koregavimą aprašyta [EDIT_I07](https://gidas.rivile.lt/internetiniai_moduliai/api_rest/edit_i07.md).

4. Padalinio keitimas pardavimo operacijoje

```
_thisform=thisform
EXECSCRIPT(SUBSTR(komanda_v,ATC(CHR(13),komanda_v,ij_k+1)))
ij_k=999999 && 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)
```



5. Pardavimo operacijos perkėlimas

```
_thisform=thisform
EXECSCRIPT(SUBSTR(komanda_v,ATC(CHR(13),komanda_v,ij_k+1)))
ij_k=999999 && EXIT
ON ERROR

* Perkeliame *
m.loRivApi=v_riv_sp()
m.loRivApi.user="MASTER"
m.loRivApi.apikey="QRNPNGG" && užklausa šio registruoto API rakto vardu
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)
```



6. Galima paleisti API metodus kitoje duomenų bazėje (tik MS SQL). 

```
m.loRivApi=v_riv_sp()
m.loRivApi.db_name="KT_DB"
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)

```
