DATABASE VIEW

65 views
Skip to first unread message

Mixalis Foulos

unread,
Nov 4, 2025, 10:16:56 AMNov 4
to Softone Developers Network
Καλησπέρα σας,

Προσπαθώ να κάνω το εξής  σε ενα παραστατικό αποθήκης έχω κάνει το εξής στο πεδιο int01 εζω βάλει στον editor το MTRL( το παραστατικό αυτό δεν κάνει τίποτα απο κινήσεις απλά καταγράφει κάποια νταλλακτικά που μπαινουν σε κάποιες μηχανές εξού και έχω βάλιε στο ιντ01 το mtrl. Μέχρι εδώ όλα καλα.

Τώρα εχω φτιαξει ένα database view όπου θέλω να το χρησιμοποιησω ώστε να φέρνω μέσα στη προβολή του είδους τα παραστατικά που έχουν αυτό το ε΄ίδος.

SELECT
  f.FINDOC,
  f.SERIES,
  f.FINCODE AS PARASTATIKO,
  f.TRNDATE AS DATEIN,
  a.MTRL,
  a.CODE,
  a.NAME
FROM FINDOC f
INNER JOIN MTRL a
  ON a.MTRL = f.INT01
WHERE f.SOSOURCE = 1151

Σαν primary key εινια το mtrl και στο locate stament έχω βάλιε mtrl. αλλά φέρνει όλα τα παραστατικά που ουσιαστικά έχουν mtrl. Πως μπορώ να φέρνω μόνο τα παραστατικά του είδους που μπαινω?

Βαγγέλης Κοτσιφάκης

unread,
Nov 5, 2025, 2:52:34 AMNov 5
to Softone Developers Network

Καλημέρα σας,

Παρακαλούμε ακολουθήστε τα παρακάτω βήματα:

  1. Δημιουργήστε ένα Virtual Table (π.χ. ονομάστε το CCCFOROUMTEST).
    Προσθέστε σε αυτό τρία πεδία:

    • MTRL (Αλφαριθμητικό)

    • FINDOC (Ακέραιος)

    • FINCODE (Αλφαριθμητικό)

  2. Αποσυνδεθείτε από το SoftOne και επανεισέλθετε, ώστε να πραγματοποιηθεί ο συγχρονισμός του Virtual Table.
    (Δεν απαιτείται δημιουργία νέας έκδοσης μέσω S1 Designer.)

  3. Μεταβείτε στην προβολή της ενότητας όπου επιθυμείτε να το χρησιμοποιήσετε (π.χ. στα παραστατικά αποθήκης) και προσθέστε τον πίνακα στην προβολή.
    Ενδεικτικά, μπορείτε να δημιουργήσετε νέα σελίδα που να περιλαμβάνει περιοχή με τα ITEDOC.INT01 και GRID, ώστε να εμφανίζονται τα επιθυμητά αποτελέσματα.

  4. Ορίστε τον editor του πεδίου ITEDOC.INT01 ως MTRL.
    Δεν είναι απαραίτητη η δημιουργία view — μπορείτε να προσθέσετε απευθείας τον παρακάτω κώδικα στις παραμέτρους SQL (script), αντικαθιστώντας την τιμή 408119 με το ITEDOC.INT01.


function myFuncTest(){
try{
ds = X.GETSQLDATASET(
"SELECT DISTINCT TOP 30 MTRLINES.MTRL,FINDOC.FINDOC,FINDOC.FINCODE FROM MTRLINES JOIN FINDOC ON FINDOC.FINDOC = MTRLINES.FINDOC AND FINDOC.SOSOURCE = 1151 WHERE MTRLINES.MTRL = :1",
408119
);

while (!ds.EOF()) {
CCCFOROUMTEST.APPEND();
CCCFOROUMTEST.MTRL = ds.MTRL;
CCCFOROUMTEST.FINDOC = ds.FINDOC;
CCCFOROUMTEST.FINCODE = ds.FINCODE;
CCCFOROUMTEST.POST();
ds.NEXT();
}
}
finally {}
}

function ON_ITEDOC_INT01(){
myFuncTest()
}


function ON_LOCATE(){
myFuncTest()
}


Οι συναρτήσεις:

  • ON_ITEDOC_INT01() εκτελείται όταν πραγματοποιείται μεταβολή στο πεδίο ITEDOC.INT01.

  • ON_LOCATE() εκτελείται κάθε φορά που ανοίγετε το παραστατικό.


Ελπίζω να σας βοήθησα και να μην ξεχνάω κατι.

Βαγγέλης Κοτσιφάκης

unread,
Nov 5, 2025, 2:58:52 AMNov 5
to Softone Developers Network
Διόρθωση: το πεδίο  MTRL είναι  Ακέραιος.
Reply all
Reply to author
Forward
0 new messages