webservices fetch data

176 views
Skip to first unread message

Μάνος

unread,
Jan 21, 2026, 4:42:53 AMJan 21
to Softone Developers Network
Καλημέρα,

Ξέρω ότι με το getData και άλλες μεθόδους των webservices, μπορώ να πάρω δεδομένα από τη βάση.
Αυτό που δεν ξέρω είναι αν μπορώ να κάνω πιο περίπλοκα requests μέσω αυτών των μεθόδων, χωρίς  δηλαδή τη χρήση custom μεθόδων από το Advanced JS Editor.

Ένα παράδειγμα θα ήταν, πως μπορώ να πάρω πληροφορίες για πολλά PRSN με ένα getData, αντι για μόνο ένα τη φορά.
Ή πως μπορώ να κάνω join: Στο getdata, για παράδειγμα, ενός εργαζόμενου μπορώ να φέρω κατευθείαν το όνομα της εταιρείας και όχι μόνο τον κωδικό της;



Μάνος

unread,
Jan 21, 2026, 4:56:03 AM (14 days ago) Jan 21
to Softone Developers Network
Ένα άλλο χρήσιμο παράδειγμα. Πώς θα μπορούσα να κάνω το αντίστοιχο select * from prsn where name like '%κωστας%' and name2 like '%ανδρεου%'. Ή, εν γένει, αν μπορώ να τρέξω sql μέσω webservices, χωρίς custom script.

Νίκος Μάλιακκας

unread,
Jan 21, 2026, 5:35:34 AM (14 days ago) Jan 21
to Softone Developers Network
Στιγμιότυπο οθόνης 2026-01-21 122631.png



{ "service": "SqlData", "clientID": "Wj8T3tvs... ...tlrT8", "appId": "2001", "SqlName": "getPrsnByName",
"company" : 1, "name" : "κωστας",
"name2" : "ανδρεου" , }


Αν δεν παίξει έτσι δοκίμασε το query χωρίς τα % και βάλτα στις παραμέτρους

Είναι post call στο https://[yourname].oncloud.gr/s1services

παραθέτω και το query στο κείμενο για αναφορά

SELECT *
FROM PRSN P
WHERE P.COMPANY={company}
AND ( P.NAME LIKE '%{name}%'
OR P.NAME2 LIKE '%{name2}%'
)
AND ISACTIVE=1

Μάνος

unread,
Jan 21, 2026, 5:58:16 AM (14 days ago) Jan 21
to Softone Developers Network
Χρήσιμη πληροφορία αυτή, δεν ήξερα ότι μπορούμε να καλέσουμε και τα S1 SQL Scripts. Όμως και αυτό προϋποθέτει custom scripts μέσα στο S1. Εγώ θέλω μόνο μέσω των μεθόδων των webservices χωρίς οτιδήποτε custom μέσα στο S1. 

π.χ.
{
    "service": "getData",
    "clientID": "...",   
    "appId": "1001",
    "object": "EMPLOYEE",
    "key": "11111", <---- Μπορεί εδώ να μπει ["11111","2222"} ή κάτι τέτοιο
    "locateinfo": "PRSNIN:NAME,COMPANY" <---- Μπορεί εδώ να μπει "PRSNIN:NAME,COMPANY[NAME]", για join, ή κάτι τέτοιο
}

Επίσης, πως μπορώ στο locateinfo να βάλω το αντίστοιχο του *. Δηλαδή αν θέλω να φέρω μόνο από το PRSNIN όλη την πληροφορία (αν βάλω "locateinfo": "PRSNIN" φαίρνει το PRSNIN αλλά ως λίστα με ένα άδειο object) 

ή

{
    "service": "sqlExecute",
    "clientID": "...",   
    "appId": "1001",
"command": "select * from prsn where....."
}

Νίκος Μάλιακκας

unread,
Jan 21, 2026, 8:17:51 AM (14 days ago) Jan 21
to Softone Developers Network
Αυτό που δείχνεις έχει πολύ security risk που και το ίδιο το softone δεν το επιτρέπει.
φαντάσου το command να έχει και delete εντολές που ένας κακόβουλος να μπορούσε να τις στείλει και να αρχίσουμε να χάνουμε τα data όλοι.

Επιπλέον δεν μπορείς να περάσεις στο sqlData service παράμετρο που να μοιάζει με sql injection, και ορθά κατά την γνώμη μου.
Τα S1 sql Scripts κλειδώνουν και έτσι μπορείς να τα έχεις σε ένα συγκεκριμένο custom που θα μπορείς να το κάνεις deploy στους πελάτες, χωρίς να τα βλέπει κανένας εκτός από εσάς.
Τους δίνεις όνομα με το όνομα της εταιρείας σας και το όνομα του project και μετά το τι κάνει και δεν θα υπάρχει εμπλοκή με ότι άλλο custom έχουν οι πελάτες

Αν έχεις πολλούς πίνακες που θες να πάρεις και μπορείς να τους καλύψεις με το παρακάτω: (απλοποιημένη εκδοχή)
SELECT * FROM {tablename}

θα έχεις αρχικά ένα καλό αποτέλεσμα

Ναι έχω προσπαθήσει και το 
... WHERE {whereclause}
και να περάσω το whereclause αλλά δεν το δέχεται για το sql injection που σου έλεγα παραπάνω

Γιατί δεν θες τα custom; Είναι ότι καλύτερο έχουμε!

Μάνος

unread,
Jan 21, 2026, 8:50:41 AM (14 days ago) Jan 21
to Softone Developers Network
Σίγουρα θα ήταν μεγάλο κενό ασφαλείας να μπορείς να γράφεις ότι sql command θες. Δεν εννοούσα να στέλνεις απλά sql commands μέσω webservices και να εκτελούνται. Απλά, ίσως αν υπήρχε κάτι λίγο πιο παραμετροποιήσιμο από πλευράς webservices για να μπορείς να κάνεις λίγο πιο σύνθετα requests (όπως π.χ να μπορείς να φέρεις πολλαπλά PRSN με ένα getData)
Ο λόγος που δε θέλω τα custom είναι γιατι προσπαθώ να βρω μία λύση που να λειτουργεί σε όλα τα S1 χωρίς καμία αλλαγή από μέρους της εγκατάστασης του χρήστη. Η διαδκασία του update ποτέ δεν είναι αναίμακτη, είτε από μεριάς developer είτε από μεριάς client. Παρόλα αυτά τι εννοείς "Τα S1 sql Scripts κλειδώνουν και έτσι μπορείς να τα έχεις σε ένα συγκεκριμένο custom που θα μπορείς να το κάνεις deploy στους πελάτες". Πως δηλαδή μπορώ να φτιάξω ένα sql script και να το "δώσω" σε κάποιον, χωρίς να μπορεί να το πειράξει και να μπορώ να το καλώ;

*Επίσης:  Πως μπορώ στο locateinfo να βάλω το αντίστοιχο του *. Δηλαδή αν θέλω να φέρω μόνο από το PRSNIN όλη την πληροφορία (αν βάλω "locateinfo": "PRSNIN" φέρνει μεν το PRSNIN αλλά ως λίστα με ένα άδειο object) 

Νίκος Μάλιακκας

unread,
Jan 22, 2026, 5:54:48 AM (13 days ago) Jan 22
to Softone Developers Network
Αν διαβάσει κανείς τις διαθέσιμες εντολές των web services, θα καταλάβει ότι είναι φτιαγμένες για να λειτουργήσει το soft1 360 και κάπως όπως λειτουργεί και το ίδιο το softone.
Δηλαδή όταν μπαίνεις σε ένα αντικείμενο (ενότητα ή οντότητα) έχεις ένα ευρετήριο που ψάχνεις, μια λίστα που βλέπεις για να επιλέξεις και να μπεις σε μία εγγραφή.
Επιπλέον όταν είσαι σε ένα αντικείμενο, και έχει σελέκτορες, να μπορείς να το γεμίσεις με επιλογές για να επιλέξει ο χρήστης.
Με βάση αυτά έχουμε τις getBrowserInfo & getBrowserData για τα ευρετήρια, τις getData,setData,delData για την εγγραφή και τις getSelectorData & selectorFields για τους σελέκτορες.
Στον online κόσμο αυτά θα ήταν αρκετά, αλλά σε εμάς που ζούμε και στον σκοτεινό offline κόσμο και δεν θέλουμε η εφαρμογή μας να δουλεύει μόνο όταν έχει επικοινωνία με τα webservices, θέλουμε να μπορούμε να ρουφάμε τα data και να τα κρατάμε και να τα δείχνουμε όπως θέλουμε εμείς.
Πριν την SqlData (όπως βλέπεις είναι τελευταία στην λίστα γιατί μπήκε αργότερα) αν ήθελες να κάνεις κάτι για να ρουφήξεις τα data, έπρεπε να χρησιμοποιήσεις τα παραπάνω.
Αν δεν θες να γράφεις τα δικά σου queries, θα μπορούσες να φτιάξεις τα δικά σου ευρετήρια και με τις getBrowserInfo & getBrowserData να πάρεις αυτά που θες.
Αλλά και εκείνα, αν δεν τα κλειδώσεις μέσα σε ένα custom, θα μπορεί να στα πειράξει κάποιος , να σβήσει στήλες που θες αλλά εκείνος όχι και μετά να μην έχεις όλα τα data στην διάθεσή σου.
Για offline χρήση , η SqlData είναι ο ορθή επιλογή.

Αυτά μέχρι να φτάσουμε στις φωτογραφίες. Εκεί δεν έχεις άλλη επιλογή από το ένα - ένα για να πάρεις την φώτο.

Για να κλειδώσεις και να στείλεις στον πελάτη κλειδωμένα, χρησιμοποιείς το SDK->Customization tools ->custom administration 
Διάβασε λίγο πως λειτουργεί και πως τα κλειδώνεις εξάγωντας τα.

Μάνος

unread,
Jan 23, 2026, 4:32:14 AM (12 days ago) Jan 23
to Softone Developers Network

Δυστυχώς το blackbook δεν αναλύει πολύ το κάθε θέμα. Ξέρω πως να κάνω export με κωδικό ένα cst, αλλά το πρόβλημα μου είναι στο τι πρακτικά σημαίνουν όλα αυτά. Όπως καταλαβαίνεις δεν είμαι expert στο S1 και η αλήθεια είναι ότι σαν πρόγραμμα, παρότι πολύ ικανό, δε σε βοηθάει καθόλου είτε με το UI του είτε με το documentation του. Για παράδειγμα:
- Προσπάθησα να κάνω export ένα S1 SQL Script με κωδικό και  όταν πήγα να το κάνω import, αφού το επέλεγα δεν έκανε τίποτα , δεν το έκανε import, δε ζήτησε ποτέ κάποιο κωδικό.
- Παρομοίως, έκανα export ένα sql script αλλά τίκαρα το "σε όλους τους πελάτες" και δεν έβαλα κωδικό, αλλά πάλι όταν πήγα να το κάνω import πάλι δε φαίνεται να έκανε τίποτα.
- Όταν όμως έκανα export με serial number το δικό μου τότε όντως το import λειτούργησε, ενώ αν έβαζα serial άσχετο δεν το έκανε import (ορθώς).

Ευχαριστώ για τη βοήθεια

Νίκος Μάλιακκας

unread,
Jan 23, 2026, 4:44:33 AM (12 days ago) Jan 23
to Softone Developers Network
Εμείς τα κάνουμε export με password και expiration date, χωρίς να βάζουμε serial number.
Θα πρέπει και η εγκατάσταση που τα βάζεις να έχει κλειδιά για να τρέξουν. Για το τι είδους άδεια και κλειδιά θα χρειαστείς θα πρέπει να μιλήσεις με τις πωλήσεις.
Επιπλέον η εγκατάσταση του πελάτη θα πρέπει να έχει έκδοση softone ίδια ή μεταγενέστερη από αυτή που έφτιαξες το custom.
Γενικά δεν έχουμε θέματα με την εξαγωγή και την ενσωμάτωσή τους στους πελάτες μας. Ειδικά τώρα με την προσθήκη γραμμών των custom σε πακέτο και την εξαγωγή όλου του πακέτου βολεύει αφάνταστα.

Μάνος

unread,
Jan 23, 2026, 5:58:30 AM (12 days ago) Jan 23
to Softone Developers Network
Αυτή θα ήταν η επόμενη ερώτησή μου. Πως κάνεις εξαγωγή πακέτου; Βλέπω ότι μπορείς να επιλέξεις πολλές γραμμές στο Custom Administration και να τα κάνει όλα εξαγωγή σε ένα αρχείο CST όμως δε βρίσκω πως να κάνεις εξαγωγή πακέτου (αφού δηλαδή έχεις κάνει δεξί κλικ σε πολλές γραμμές και τα έχεις βάλε σε ένα πακέτο).
Επίσης, πιο πάνω ανέφερες: "Τα S1 sql Scripts κλειδώνουν και έτσι μπορείς να τα έχεις σε ένα συγκεκριμένο custom που θα μπορείς να το κάνεις deploy στους πελάτες, χωρίς να τα βλέπει κανένας εκτός από εσάς.". Τι ακριβώς σημαίνει αυτό; Πώς γίνεται να μην τα βλέπει κανένας. Και αν ο χρήστης θέλει να τα διαγράψει, δε θα μπορεί;

Νίκος Μάλιακκας

unread,
Jan 23, 2026, 6:40:33 AM (12 days ago) Jan 23
to Softone Developers Network
SDK=>Custom administration=> βαζεις τις γραμμές σε ένα πακέτο, ή τις συνδέεις με ένα υπάρχων
export1.png

τραβάς το κουμπί Τύπος, πάνω από το grid μέσα στο grid, και φέρνεις πάνω το πακέτο.
Ανοίγεις το πακέτο και επιλέγεις όλες τις γραμμές.
Πατάς εξαγωγή
Ξετσεκάρεις το "H συγκεκριμένη λύση δεν έχει σήμανση".
Ονοματίζεις, βάζεις την έκδοση που έχει το custom γράφεις το όνομα της εταιρείας, βάζεις έναν κωδικό που δεν θα ξεχάσεις
Εμείς βάζουμε και το Δοκιμαστικά και μια ημερομηνία "έως στις". 
Η ημερομηνία αφορά την εγκατάσταση του custom και όχι ημερομηνία λήξης που θα εκτελείται στον πελάτη. Δεν μπορείς να το εγκαταστήσεις μετά από αυτή την ημερομηνία.
Μπορεί μετά να βγάλει ένα μήνυμα για την σήμανση που θα κρατήσουν. Πατάς να συνεχίσει.
Αποθηκεύεις το αρχείο με κατάληξη cst ή auv (διάβασε σε αντίστοιχα post μέσα στο φόρουμ για την διαφορά)

Στην εγκατάσταση του πελάτη κάνεις εισαγωγή , επιλέγεις το cst αρχείο και κλείνεις-ανοίγεις το softone.
export2.png

O κωδικός κλειδώνει το edit και το view και το save των γραμμών στο custom, δεν κλειδώνει το use. Μπορείς να τα χρησιμοποιείς αλλά δεν μπορείς να τα "κλέψεις" σε επίπεδο πνευματικών δικαιωμάτων, ούτε να τα πειράξεις χωρίς λόγο.

Μάνος

unread,
Jan 23, 2026, 8:44:07 AM (12 days ago) Jan 23
to Softone Developers Network
Άρα το "Πακέτο" είναι απλά άλλο ένα φίλτρο ή κάποια προγραμματιστική δομή/bundle; Θα μπορούσα δηλαδή να πετύχω το ίδιο χωρίς να τα βάλω σε πακέτο και απλά επιλέγοντάς τα; Ή όντως το πακέτο είναι κάποια προγραμματιστική δομή όπου όταν θα τα καλέσω θα πρέπει να βάλω στο "sqlDATA": "topaketo.tosqlscript".
και τι γίνεται με conflict στα ονόματα;

Επίσης, τα ίδια ακριβώς μπορείς να κάνεις και με modules στο advnaced JS Editor; Να κάνω εξαγωγή και εισαγωγή τα οποία δε θα μπορεί να "πειράξει" ο χρήστης;

Συγνώμη για τον καταιγισμό ερωτήσεων αλλά δεν έχω άλλη πηγή πληροφόρησης.

Νίκος Μάλιακκας

unread,
Jan 24, 2026, 4:47:43 AM (11 days ago) Jan 24
to Softone Developers Network
Είναι μόνο για το bundling όπως λες στην developer βάση σου. Οπως βλέπεις στην δεύτερη φώτο, έχω στο πακέτο διάφορους τύπους από γραμμές custom.
Αν είναι να μεταφέρεις μόνο κάποιο τύπο ή λίγες γραμμές, επέλεξέ τες (κάθε φορά...) και συνέχισε την διαδικασία
Το όνομα του πακέτου δεν χρησιμοποιείται μετά, ούτε το χρειάζεσαι για τα ws calls.
Conflicts στα ονόματα : Κάποιοι τύποι (π.χ. Designs, JavaScript) καπακόνονται αν είναι το ίδιο όνομα. Προβολές ευρετήρια και εκτυπώσεις μπαίνουν με ένα (2) μετά το όνομα.
Για να μην δημιουργούνται θέματα μεταξύ των custom λύσεων των συνεργατών, ειδικά σε πεδία, πίνακες και views η softone έδωσε οδηγία μετά το CCC στην ονοματολογία, να βάζουμε και 2-3 γράμματα με το όνομα της εταιρείας και το όνομα του custom.

Αν η λύση που φτιάχνεις είναι για πολλούς πελάτες, είναι καλό να τα φτιάχνεις όλα εσύ σε δική σου εγκατάσταση (έστω και αν είναι ένα backup από τον πελάτη με την μεγαλύτερη πολυπλοκότητα για να κάνεις εύκολα δοκιμές) και κάθε φορά που κάνεις αλλαγές να τις έχεις σε εσένα και να συντηρείς τις αναβαθμίσεις σε εσένα και να φτιάξεις έναν τρόπο να την εγκαθιστάς στους πελάτες.

Μάνος

unread,
Jan 26, 2026, 5:37:18 AM (9 days ago) Jan 26
to Softone Developers Network
Βλέπω σε αυτό το θέμα: https://groups.google.com/u/1/g/soft1/c/h_So67U3pmo προτείνεις τη δημιουργία site που τρέχει μέσα από το softone για να γίνεται εγκατάσταση στα s1 των πελατών. Αυτό πώς γίνεται; Δεν μπορώ να βρω κάτι στο blackbook, το μόνο σχετικό που βλέπω είναι στο μενού εργαλείων την ενότητα Web Sites που όμως δεν καταλαβαίνω τι ακριβώς διαχειρίζεσαι εκεί. Πώς θα μπορούσα για παράδειγμα αφού έχω ένα δικό μου site στο www.mysite.gr να το κάνω να ανοίγει μέσω s1 στον πελάτη και να πατάς ένα κουμπί και να κάνει import/install το script που θέλω (έστω js advanced editor ->TestModule.TestPackage, το οποίο φαντάζομαι θα το έχω σε μορφή cst)
Και πάλι, ευχαριστώ πολύ για την βοήθεια και την υπομονή σου. Αλλά πέρα από το να σε "πρίζω" για κάθε μικρή λεπτομέρεια, όλα αυτά υπάρχουν κάπου; Γιατι ακόμα και να μου πεις ένα ένα τα βήματα, το θέμα είναι να μπορεί να γενικευτεί αυτή η γνώση, αλλά δεν μπορώ να βρω πουθενά υλικό για το softone.

Νίκος Μάλιακκας

unread,
Jan 28, 2026, 2:06:48 PM (7 days ago) Jan 28
to Softone Developers Network
Διάβασε αυτή την απάντηση

https://groups.google.com/g/soft1/c/ekWB6i2QD24/m/qL30prQiAQAJ
Reply all
Reply to author
Forward
0 new messages