Veidojot savienojuma risinājumus, kuros ārējā sistēmā nepieciešami visi dati, pēc iespējas tuvāki aktuālajiem ir jāizvairās no visu datu ielasīšanas. Tā vietā ir vērts izmantot pieprasījumu, kurš nolasa tikai izmainītos datus kopš iepriekšējā pieprasījuma.
Moneo sistēmā tām tabulām, kurām ir jau iebūvēts lauks LastUpdateTime, ir iespēja šo lauku izmatot šāda veida atlasei. Lai pārliecinātos vai tabulai ir pieejams šāds lauks var izmantot atskaiti Administrācijas modulī Tabulas datu struktūra. Zemāk ir piemērs tādam pieprasījumam par rēķiniem, kuri ir izmainījušies kopš 13.06.2023 00:00:00.
https://api.moneo.lv/[KOMPĀNIJAS ID LIELAJIEM BURTIEM]/api/v2/sales.invoices
{
"filter":{"lastupdatetime__gt":"2023-06-13T00:00:00.000"},
"fieldlist":["custcode","sernr", "custname", "items.itemcode", "items.quant"],
"request":{
"compuid":{{company_id}}
}
}
Jāņem vērā, ka šis pieprasījums iedos izmainītos vai izveidotos ierakstus. Ierakstu dzēšanas fakts šajā pieprasījumā neparādīsies. Lai iegūtu dzēstos ierakstus ir jālasa dzēšanas fakts no tabulas _journal.journal. Tādējādi augstāk minētais pieprasījums parasti papildināsies ar otru pieprasījumu par šīs tabulas dzēstajiem ierakstiem:
https://api.moneo.lv/[KOMPĀNIJAS ID LIELAJIEM BURTIEM]/api/v2/_journal.journal
{
"filter":{"transdate__gt":"2023-06-13T00:00:00.000", "recname":"sales.invoices", "action": "delete" },
"fieldlist":["recrecid"],
"request":{
"compuid": {{company_id}}
}
}
Šāds pieprasījums atgriezīs sarakstu ar tiem žurnāla ierakstiem, kuros ir dzēsts kāds rēķins. Atgriezto datu sarakstā būs divi lauki - žurnāla ieraksta numurs (var ignorēt) un lauks recrecid - tas saturēs rēķina numuru, kurš ir dzēsts.
Jāpatur prātā: Izmainīto datu pieprasījums tiks izpildīts balstoties uz Moneo servera datuma un laika uzstādījumiem. Lai nodrošinātu datu integritāti un netiktu pazaudēti dati, ir vērts šāda veida sinhronizācijai ievērot šādus paņēmienus datu pieprasījumos:
- Pieprasot datus pirmo reizi sistēma ielasīs visus datus. Visjaunākā ieraksta izmaiņu laiks (LastUpdateTime) jāsaglabā ārējās sistēmas datu bāzē.
- Veidojot nākamo pieprasījumu, sākuma atskaites laiku likt tieši šo saglabāto laiku ar pazīmi __gt (greater than).
- Šo pēdējo izmaiņu laiku ir jāsaglabā pa katru tabulu, kurai tiek veidoti pieprasījumi, jo katrs nākamais pieprasījums var veidoties ar sekunžu simtdaļu nobīdi un kāds no ierakstiem šādi var netikt nolasīts.
Šāds piegājiens nodrošina to, ka pieprasītāja un atbildētāja serveru sistēmas laikiem nav jāsakrīt līdz simtdaļām, tie var atšķirties kaut vai par vairākām stundām.
Komentāri
0 comments
Lūdzu ieejiet lai varētu pievienot komentāru.