Χρήση συνάρτησης από Advanced JS Editor

158 views
Skip to first unread message

Φώτης

unread,
Jan 13, 2026, 6:31:00 AMJan 13
to Softone Developers Network
Καλησπέρα,
Πώς μπορεί μία συνάρτηση (π.χ myFunc) που έχει οριστεί στο S.D.K.-> Customization Tools -> Advanced Javascript Editor -> packageName -> ModuleName -> myFunc()

να χρησιμοποιηθεί στο Script της παραμετροποίησης μίας προβολής;

Δοκίμασα το παρακάτω, χωρίς να ξέρω αν έχει κάποια σχέση βέβαια, αλλά δε φαίνεται να κάνει κάτι:
var myDesignerScript = X.EXEC('CODE:ModuleIntf.GetTextValue','myModuleName');
X.EXEC('CODE:SysRequest.ExecuteXScript', X.Module, 1, myDesignerScript,'myFunc');



Φώτης

unread,
Jan 13, 2026, 7:27:36 AMJan 13
to Softone Developers Network
Το βρήκα. Κάνεις include το module στο οποίο είναι ορισμένη η συνάρτηση
lib.include('myModule');

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

unread,
Jan 14, 2026, 5:13:29 AMJan 14
to Softone Developers Network
Αν φτιάχνεις κάτι για να το δώσεις σε πολλούς και όχι μόνο σε έναν πελάτη, καλό είναι να βάζεις τα modules σε ένα Package (δεξί κλικ New Package) και μέσα εκεί να φτιάχνεις τα modules, έτσι δεν θα μπλέξουν με modules άλλων συναδέλφων.
Μόλις φτιάξεις το module, στην πάνω πάνω γραμμή γράφει το όνομα με το οποίο πρέπει να το καλείς με την lib.include
έτσι συνήθως θα έχεις
lib.include("[PackageName].[moduleName]");

Το ωραίο είναι ότι μπορεί να έχεις και μέσα στα modules άλλα include, και έτσι να μπορείς να χωρίσεις τα κομμάτια του κώδικα σε πιο μικρά τμήματα που κάνουν συγκεκριμένες δουλειές.

Ιδιαίτερη προσοχή χρειάζεται επίσης μιας και είναι εκτεθημένα στα web services, αν δεν τα κλειδώσεις.

Φώτης

unread,
Jan 14, 2026, 6:32:14 AMJan 14
to Softone Developers Network
Ευχαριστώ για τις διευκρινίσεις. Η αλήθεια είναι ότι όντως ήθελα να ρωτήσω πως κάνω reference ένα package. Και μιας και άνοιξες την κουβέντα, έχω μία ακόμα απορία:

Έστω ότι φτιάχνω μία εφαρμογή (εκτός S1) όπου κάνει calls στα webservices του S1 για επικοινωνία με τη βάση (έστω κάποιες συναρτήσεις από το module "helperFunctions " στο package "MyAppPackage" ). Αν θέλω να χρησιμοποιήσω αυτή την εφαρμογή σε μία άλλη εγκατάσταση S1 όπου δεν υπάρχουν αυτά τα package/module/function. Πέρα από το να βάλω χειροκίνητα τα package/module/function στο advanced Javascript Editor, μπορώ να φτιάξω κάποιου είδους plugin/exe που να κάνει inject αυτόματα τα MyAppPackage.helperFunctions στην εγκατάσταση s1;


*Με το "....αν δεν τα κλειδώσεις" εννοείς να ελέγχω για clientID φαντάζομαι ή υπάρχει και κάποια άλλη διαδικασία;

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

unread,
Jan 14, 2026, 7:10:19 AMJan 14
to Softone Developers Network
Για το κλείδωμα, ναι πρέπει να ελέγχεις αν στο input arg υπάρχει clientID και είναι μεγαλύτερο από μερικούς χαρακτήρες (εμείς βάζουμε >10).
Δεν έχεις τρόπο να το ελέγξεις αν είναι σωστό εσύ, θα το κάνει το softone, αλλά για να κλειδώσεις τους αδέσπωτους πρέπει να το ελέγχεις για ύπαρξη/μέγεθος.

Όσο για το άλλο, δεν ξέρω αν είμαστε οι μόνοι που έχουμε και δικό μας implementation για να προσομοιάζουμε την διαδικασία των web services χωρίς την χρήση της open και του connector. Βολεύει όταν η εγκατάσταση είναι μικρή και ο πελάτης δεν είναι διατεθιμένος να πληρώσει 250+150 ή όσο είναι τώρα per year, και εμείς δεν μπορούμε να το φτιάχνουμε αλλιώς για τους μεγάλους και αλλιώς για τους μικρούς.

Το inject δεν το κατάλαβα, αν εννοείς πως θα τα βάλεις στον πελάτη, αν τα βγάλεις με το custom administration, μπορείς να τα βάλεις σε όποιον πελάτη θες, με cst ή auv αρχεία.

Φώτης

unread,
Jan 14, 2026, 7:43:23 AMJan 14
to Softone Developers Network
Εννοώ ότι από την ώρα που έχω το .CST που περιέχει το package/module (ή εν γένει τον κώδικα που θέλω), μπορώ να το κάνω import χωρίς να χρειαστεί να έχω πρόσβαση στην εγκατάση του πελάτη; Μπορεί να αυτοματοποιηθεί το import κάπως;

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

unread,
Jan 14, 2026, 10:24:46 AMJan 14
to Softone Developers Network
Εμείς έχουμε ένα site, το οποίο το ανοίγουμε μέσα από το softone και από εκεί κάνουμε τις εγκαταστάσεις/αναβαθμίσεις των custom μας, περίπου όπως κάνει η softone με τα add-ons.
Μέσα σε αυτά, αν χρειαστούν in-process dll's έχουμε και κουμπάκια για να τροποποιηθούν τα xco αρχεία.
Έτσι η διαδικασία μπορεί να γίνει και όχι μόνο από τον developer...

Το μόνο δύσκολο είναι το να κατεβάσεις αρχεία στον φάκελο του softone, επειδή ο browser δεν το επιτρέπει και πλέον τα ActiveX Objects δεν λειτουργούν στο webview2.
Αλλά ευτυχώς το softone είναι μεγάλο και δυνατό και έχει και άλλους τρόπους να τα χρησιμοποιήσεις (τα ActiveX Objects), όλα μέσα από το site, μόνο πατώντας κουμπάκια που εκτελούν διαδικασίες

Φώτης

unread,
Jan 15, 2026, 2:15:57 AMJan 15
to Softone Developers Network
Τι ακριβώς εννοείς site που ανοίγει μέσα από το softone (τοπικό site ή online; ); Πώς γίνεται αυτό;

Nikos Konstantakopoulos

unread,
Jan 15, 2026, 2:40:14 AMJan 15
to so...@googlegroups.com
Καλημέρα σε όλους,

Μπορεί αυτή η μέθοδος να χρησιμοποιηθεί και για τα .auv αρχεία που έλεγες σε προηγούμενη συζήτηση και αν ναι με ποιον τρόπο;

Ουσιαστικά θα πρέπει να ανεβαίνει κάπου το .auv αρχείο με όλες τις αλλαγές και μετά μέσω gadget οι πελάτες να το αντλούν;

Η άντληση τι περιλαμβάνει; Κάποια αποθήκευση του αρχείου σε κάποιο τοπικό τους folder path και εφόσον κάνουν re-login έστω και σαν client θα πέσουν οι αλλαγές στην υποδομή τους;

--
Softone Developers Network group.
To post to this group, send email to so...@googlegroups.com
---
Λάβατε αυτό το μήνυμα επειδή έχετε εγγραφεί στην ομάδα "Softone Developers Network" των Ομάδων Google.
Για να απεγγραφείτε απ' αυτή την ομάδα και να σταματήσετε να λαμβάνετε μηνύματα ηλεκτρονικού ταχυδρομείου απ' αυτή, στείλτε ένα μήνυμα ηλεκτρονικού ταχυδρομείου στη διεύθυνση soft1+un...@googlegroups.com.
Για να δείτε αυτή τη συζήτηση, επισκεφτείτε το https://groups.google.com/d/msgid/soft1/161f6e9e-f324-4655-a109-b057e66a512dn%40googlegroups.com.

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

unread,
Jan 15, 2026, 5:18:15 AMJan 15
to Softone Developers Network
Προς Φώτη:
Το Site θα είναι ένα δικό σου web site σε δικούς σας servers οπουδήπωτε, διαθέσιμοι από το internet.
Από το softone του πελάτη, νέα εργασία, web σελίδα, και το url του web site σας.
Ο javascript κώδικας που θα έχει η σελίδα, μπορεί να έχει πρόσβαση στο softone με χρήση της
var X=external;

Η softone στα παραδείγματά της χρησιμοποιεί την μεταβλητή XSupport αντί για το Χ, αλλά σε εμάς βόλεψε αυτό γιατί μοιάζει με το X στο κανονικό javascript μέσα στα objects (αν και όχι ίδιο).

Προς Νίκο
Η διαφορά του αρχείου auv, από το cst που βγάζεις από το custom administration είναι ότι 
1. Αν το softone την στιγμή που ανοίγει το βρει στο φάκελο του, το φορτώνει και το βάζει στα custom
2. Αν βρει custom με το ίδιο όνομα, το καπακώνει - αντικαθιστά με αυτό από το αρχείο, και δεν το βάζει με νέο όνομα ...(2) , όπως κάνει με την εισαγωγή των .cst αρχείων.

Άρα αν θες να φτιάξεις μια διαδικασία εγκατάστασης- αναβάθμισης custom σου σε πελάτες, αρκεί να φτιάξεις μια σελίδα στο ιντερνετ, με κώδικα που θα τρέξει μέσα στο softone, θα κατεβάσει το .auv αρχείο στον πελάτη και μετά θα του ζητήσεις να βγει από το πρόγραμμα και να ξαναμπει. Αν έχει αναβάθμιση ή αρχική εγκατάσταση, θα πρέπει να γίνει restart 2 φορές. Την πρώτη βάζει το custom και την δεύτερη κάνει την αναβάθμιση.

Έχουμε παρατηρήσει μερικές επιπλοκές όπως για παράδειγμα όταν έχεις 2 auv αρχεία ταυτόχρονα, Το softone βγάζει μερικά μηνύματα αλλά τελικά αν βγεις και ξαναμπεις συνεχίζει και τα εγκαθιστά σωστά.
Ορισμένες φορές θέλεις 2 auv γιατί έχεις το βασικό custom κλειδωμένο αλλά έχεις και ενα user menu που το θες ξεκλείδωτο για να μπορείς να το αντιγράφεις στα άλλα user menus, η απάντηση στο γιατί να έχεις 2 auv

Γενικά πλέον εγώ έχω αντικαταστήσει όλα τα import script από άλλες εφαρμογές με javascript κώδικα που τρέχει σε web σελίδες και εκεί είναι η δύναμη για τον επόμενο καιρό.

Nikos Konstantakopoulos

unread,
Jan 15, 2026, 6:35:49 AMJan 15
to so...@googlegroups.com
Καλησπέρα Νίκο,

Ευχαριστώ για την απάντηση σου.

Γενικά, έχουμε ένα σύνθετο solution με πολλά JS, screens, browsers, Reports και Designers, τα οποία έχουμε προσθέσει σε ένα πακέτο στο Custom Admin.

Στους Designers γενικά για λόγούς προβλημάτων συγχρονισμών στις υποδομές (ειδικά σε on premise που πρεπεί να κλείσει ο Cloud Agent), αποφεύγουμε το ανέβασμα version. Τρέχουμε raw sql commands στις υποδομές μας, όταν προστεθεί κάποιο πεδίο ή πίνακας στο solution μας (άρα μάλλον δεν χρειαζόμαστε διπλό re-login, ούτε διπλό αρχείο .auv).

Επομένως αυτό που μας λείπει είναι ένα gadget, το οποίο θα έχει την άντληση της νέας version, η οποίά όταν εκτελείτε θα κατεβάζει το τελευταίο .auv αρχείο που έχουμε κάνει export από τη βάση ανάπτυξής μας και θα το κατεβάζει τοπικά στο path του Softone, του σταθμού εργασίας που θα το εκτλέσει. Κάνοντας re-login θα φορτώσει τα νέα αρχεία (με
overwrite) και θα ολοκληρωθεί η ενημέρωση, σωστά;


Για να δείτε αυτή τη συζήτηση, επισκεφτείτε το https://groups.google.com/d/msgid/soft1/d80232f5-3c90-41c2-a624-2c596c97c257n%40googlegroups.com.

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

unread,
Jan 15, 2026, 12:34:44 PMJan 15
to Softone Developers Network
Πριν από λίγο δοκίμαζα σε ένα custom που δεν είχα νέα πεδία να φτιάξω auv χωρίς να ανεβάσω τον αριθμό της έκδοσης.
Το έβγαλα σε auv και το έβαλα καρφωτά στον σέρβερ του πελάτη.
Όταν όμως άνοιξα το softone, αυτό ζήτησε συγχρονισμό, συνεπώς αυτό που λες μάλλον δεν θα γίνει χωρίς μήνυμα για συγχρονισμό.

όπως είπα και παραπάνω, η διαδικασία που περιγράφω δεν είναι η τέλεια, αλλά είναι πιο εύκολο να την κάνει και κάποιος που δεν είναι ο developer.
Είναι πιο εύκολο να πεις στα παιδιά στο support σου, ότι "μπες στο portal μας και κάνε αναβάθμιση το custom στον πελάτη" από το να τον βάλεις να κάνει queries για αναβαθμίσεις.
Εννοείτε δηλαδή ότι εκτός από τις σελίδες στο portal που "κατεβάζεις" το custom, έχεις και δικές σου σελίδες που ανεβάζεις τα απαραίτητα για να κάνεις την διαδικασία πιο εύκολη και για σένα.

Πάντα αν το custom το φτιάχνεις για πολλούς.

Nikos Konstantakopoulos

unread,
Jan 16, 2026, 3:48:29 AMJan 16
to so...@googlegroups.com
Καλημέρα,

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

Αυτό είναι το θέμα ότι έχουμε ένα μεγάλο custom, που απευθύνεται σε
πολλούς και θέλουμε να το ενημερώνουμε τακτικά, όμως το update αρχίζει
και γίνεται δύσκολη και χρονοβόρα διαδικασία.

Η αλήθεια είναι ότι ακόμα δεν έχουν δώσει ένα ευέλικτο εργαλείο για να
μπορείς να ρίξεις μαζίκά ενημερώση του πακέτου σου με ασφάλεια.

Για να δείτε αυτή τη συζήτηση, επισκεφτείτε το https://groups.google.com/d/msgid/soft1/23b41070-2f76-4717-ad91-1a5ee2641b55n%40googlegroups.com.

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

unread,
Jan 17, 2026, 5:24:08 AMJan 17
to Softone Developers Network
Μια άλλη λύση που σκέφτομαι για τελείως αυτοματοποιημένο upgrade είναι να τρέξεις τα queries για να φτιάξεις τους πίνακες, να αντικαταστήσεις το CSTINFO.SODATA πεδίο που έχει τον κώδικα του  custom, και να ζητήσεις από τον χρήστη να βγει και να ξαναμπεί. Θα χρειαζόσουν μια επιπλέον σελίδα που να παίρνει σε base64 το  CSTINFO.SODATA από την dev βάση και μια συνάρτηση που να το καταχωρεί αφού το μετατρέψει σε binary ο sql server.
Με ιδιαίτερη προσοχή στο ότι κάθε επόμενη ενημέρωση δεν πρέπει να χαλάει την διαδικασία ενημέρωσης της και ότι θα μπορεί να αναβαθμιστεί ότι λάθος και αν έχει γίνει (από την μεριά μας ως devs)

Nikos Konstantakopoulos

unread,
Jan 17, 2026, 6:52:47 AMJan 17
to so...@googlegroups.com
Πάνω κατω έτσι το έχω προσεγγίσει μέχρι στιγμής,  απλα αντί να τα τραβάει ο client έχω φτιάξει custom διαδικασια στη βαση αναπτυξης ή οποια κανει push στις υποδομές που επιλέγω να πάρουν τις αλλαγές (που επισης επιλέγω). 

Απλα γενικά δεν ειναι καθόλου by the book διαδικασία,  τρέχουν πολλαπλά queries για να ενημερώσουν αρχεία και αν κατι στραβώσει δεν έχεις ξεκάθαρο trace.

Θα προτιμούσα αν υπάρχει κάτι από softone να ακολουθήσω μια πιο ορθολογική διαδικασία, αλλα μάλλον δεν υπάρχει κάτι που να με καλύπτει απόλυτα. 

Για να δείτε αυτή τη συζήτηση, επισκεφτείτε το https://groups.google.com/d/msgid/soft1/69cf210b-743a-41c5-a9e7-5e964d5305afn%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages