PMS32 Online- Hilfereferenz
Hier finden Sie die
wichtigsten Neuerungen von PMS32
Inhalt:
Ø
Neue Menüstrukturen (C-Structure)
Ø
Einkaufsdaten und Bestellvorschlag
Ø
ECM (Enterprise Content
Management) System (Archivieren per PDF)
In Vorbereitung auf die SQL-Server Unterstützung von PMS32 wurden viele interne Änderungen vorgenommen, die dem Anwender verborgen bleiben. Dadurch sind wir dem Mehrschichtmodel, bei dem die Datenbank ausgetauscht werden kann, einen erheblichen Schritt näher gekommen.
Zudem liegt aber auch noch ein Stück Arbeit vor uns welche auch die Umstrukturierung der Masken beinhaltet.
Um Anwendern mit großen Bildschirmen und hohen Auflösungen entgegen zu kommen haben wir es ermöglicht, die Maskengröße auf den PMS Desktop anzupassen und somit die Anzeige von Listen vergrößern zu können.
Die Einstellung wird im Standard pro Maske und Benutzer gespeichert und beibehalten, auch nach einem Neustart von PMS32. Über eine globale Einstellung in der Datei Globals.Define kann diese Einstellung für das gesamte System vorgegeben werden. U. A. ist es auch möglich, generell alle Masken im Vollbildmodus öffnen zu lassen.
Um das System noch flexibler zu machen und es dem Systembetreuer zu ermöglichen, PMS an die eigenen Wünsche anpassen zu können, wurden umfangreiche Änderungen an den Eingriffsmöglichkeiten vorgenommen. Eine detaillierte Beschreibung finden sie in der Hilfe unter „Neue Menüstrukturen“.
Wegen den umfangreichen Umstrukturierungen können leider nicht alle Anpassungen der System- und Usermenüs vollständig übernommen werden. Beim ersten Start der neuen Version werden alle Menü- und Scriptdateien aus dem Verzeichnis .\PMS32\MENUS\ konvertiert und in der neuen Struktur im Verzeichnis .\PMS32\SYS\MYSYS\ gespeichert.
Menüdateien, die sich in vorhandene PMS-Menüs nahtlos einfügten können leider nicht konvertiert werden. Die Funktion selbst und der Aufruf werden konvertiert, aber der Einsprung muss ggf. neu definiert werden.
Häufig vorkommende Einsprünge wurden im Menüpunkt „Datenaustausch“ vorgenommen, daher hier ein Beispiel wie diese Struktur geändert werden muss:
Diese Datei
enthält Informationen, wenn Änderungen an Menüs der Version
1.0.03 vorgenommen wurden,
und diese jetzt nicht
mehr korrekt angezeigt werden, da man sich vorher auf ein POPUP aufgeschaltet
hatte.
Ein Beispiel für eine "alte" Menüdefinition:
[B01] */ In der Artikelstammumgebung
(DATENAUSTA) */ Definiton des PAD's
{DATENAUSTA} */ Definition des POPUP's
?1? */ BAR-1
def='PROMPT "\<Import" SKIP FOR .F.'
?4? */ BAR-4
def='PROMPT "\<Transfer" SKIP FOR .F.'
{IMPORT} */ POPUP
?200?
def='PROMPT "\-"'
?201?
def ='PROMPT "EPLAN electric P8"'
ON ="ACTIVATE POPUP SPEZPOPI"
{SPEZPOPI}
def ="MARGIN RELATIVE SHADOW SCROLL COLOR SCHEME 4"
?101?
def='PROMPT "EPLAN electric P8 Datenimport nur Neuanlage (Artikeldaten)"'
ON_SELECTION="=DOMENSC('SYSTEM26.INI','EPLANP8.IMPORT','',1,1)"
Nach der Umsetzung des obigen Codes (funktioniert so nicht mehr):
*/ Originalfile: .....
<+DATENAUSTA:§&poChild.AddItem(m.pcName)>
<+DATENAUSTA:§&poChild.AddItem(m.pcName)>
<+_NO_VALID_NAME_:§&poChild.AddItem(m.pcName)>
Skipfor=§=.F.
Caption=§\<Transfer
<>
<>
<+IMPORT:§&poChild.AddItem(m.pcName)>
<+_NO_VALID_NAME_:§&poChild.AddItem(m.pcName)>
Caption=§EPLAN electric P8
<>
<>
<+SPEZPOPI:§&poChild.AddItem(m.pcName)>
Colorclauses=§ COLOR SCHEME 4
<+_NO_VALID_NAME_:§&poChild.AddItem(m.pcName)>
Caption=§EPLAN electric P8 Datenimport nur Neuanlage (Artikeldaten)
Clickcommand=§=DOMENSC('SYSTEM26.INI','EPLANP8.IMPORT','',1,1)
<>
<>
<>
Das umgesetzte Menü würde so nicht unbedingt ausgeführt und angezeigt werden...
Durch die Umstellung der Menüstrukturen sind alle Menüs in viele "kleine" Dateien zerlegt worden.
Gehen wir zunächst vom Menü für fast alle B01xx Masken aus...
Menüdatei: menu.b01.mpc
*/ Komplettes Menü für B01 Masken
<_precord:§&poChild.AddItem(m.pcName)>
</#§popup._precord.mpc>
<_pedit:§&poChild.AddItem(m.pcName)>
</#§popup._pedit.mpc>
<_pnews:§&poChild.AddItem(m.pcName)>
</#§popup._pnews.mpc>
*/ Um diesen Eintrag geht es...
<_pexchange:§&poChild.AddItem(m.pcName)>
</#§popup._pexchange.mpc>
<_pfile:§&poChild.AddItem(m.pcName)>
</#§popup.file.b01.mpc>
<_pblock:§&poChild.AddItem(m.pcName)>
</#§popup._pblock.mpc>
<_pextras:§&poChild.AddItem(m.pcName)>
</#§popup.extras.b01.mpc>
<_phelp:§&poChild.AddItem(m.pcName)>
</#§popup._phelp.mpc>
Das Popup _pexchange...
*/ POPUP Datenaustausch via EXCEL und andere
|§&poOTS.CopyItems("_pexchange")
*/ Weitere Definition...
<_pexchange_import:§&poChild.AddItem(m.pcName)>
</#§popup._pexchange_import.mpc>
<_pexchange_export:§&poChild.AddItem(m.pcName)>
</#§popup._pexchange_export.mpc>
<Bar?:§&poChild.AddItem("_PMS_SP")>>
<_pexchange_grid:§&poChild.AddItem(m.pcName)>
</#§popup._pexchange_grid.mpc>
<Bar?:§&poChild.AddItem("_PMS_SP")>>
<_ptransfer:§&poChild.AddItem(m.pcName)>
</#§popup._ptransfer.mpc>
<Bar?:§&poChild.AddItem("_PMS_SP")>>
<_pbarcode:§&poChild.AddItem(m.pcName)>
</#§popup._pbarcode.mpc>
Von der Root aus gesehen müssen unsere Änderungen unter: root._pexchange._pexchange_import vorgenommen werden...
Die Datei sollte dann unter MySys\ mit dem Namen popup._pexchange_import.mpc gespeichert wreden...
*/ Mein spezielles Popup für den Import
<_EplanElP8:§&poChild.AddItem(m.pcName)>
Caption = "EPLAN electric P8"
ClickCommand = §=DOMENSC('SYSTEM26.INI','EPLANP8.IMPORT','',1,1)
<>
Wenn man das ganze unter dem Menüpunkt B01 speichern möchte...
<+_pexchange>
<+_pexchange_import>
<_EplanElP8:§&poChild.AddItem(m.pcName)>
Caption = "EPLAN electric P8"
ClickCommand = §=DOMENSC('SYSTEM26.INI','EPLANP8.IMPORT','',1,1)
<>
<>
<>
Dann muss obige C-Structure unter dem Namen menu.b01.mpc im Ordner SYS\MySys\ gespeichert werden!
Die neuen Menüstrukturen können relativ einfach abgefragt werden...
In jedem Menü kann unter Hilfe-Informationen zum Menü die "neue" Struktur abgefragt werden.
Öffnen Sie nach dem Menüaufruf einen Editor und kopieren Sie die Daten aus der Zwischenablage in den Editor
Zudem wurden zahlreiche PMS-Funktionen bereits in eine sog. Namespace-Struktur umgesetzt um so eine bessere Übersicht und Dokumentation der Funktionen zu erhalten. Die komplette Struktur ist offen gelegt so dass Entwickler von Funktionserweiterungen oder Benutzer die sich mit Reporterstellung oder Scriptanpassungen beschäftigen eine detaillierte Hilfe erhalten. Damit können Anpassungen zeitnah und effizient umgesetzt werden.
Eine Strukturierte Anzeige der Funktionen erhalten Sie durch Aufruf des Programms PMS32M.EXE
Um das Nachladen und Umwandeln der C-Structur-Textdateien zu optimieren, werden diese nach dem ersten Aufruf in der O-Structure-Objekten gespeichert. Dies hat zur Folge, dass Änderungen in den Textdateien sich erst nach dem Neustart von PMS32 auswirken. Um jedoch die Änderungen vernünftig testen zu können wäre es sehr umständlich immer wieder neustarten zu müssen, deshalb wurde eine Funktion implementiert um die gespeicherten Objekt-Informationen zurücksetzen zu können. Diese Funktion kann über das Hauptmenü unter dem Punkt „Nützliches – Tools – Alle C-Strukturen zurücksetzen“ aufgerufen werden.
Über
das TAPI-Interface können Telefonnummern von PMS an ein angeschlossenes
Telefon übergeben werden. Voraussetzung dafür ist ein installierter
TAPI-Treiber im Betriebssystem und die Einstellung welche Station an welches
Telefon angeschlossen ist. Diese Information wird in der Datei TAPI.DEFINE
vorgenommen.
Wird die
TAPI-Schnittstelle aus PMS heraus aktiviert, wird automatisch ein Beispiel im
LOG-Verzeichnis der Station abgelegt. Aus dieser Datei können die nötigen
Informationen zur Einstellung in der Datei TAPI.DEFINE entnommen werden.
Bitte denken Sie daran nie direkt
Änderungen an Dateien im Verzeichnis .\SYS\ vorzunehmen. Kopieren Sie
Datei zuvor in das Verzeichnis .\SYS\MYSYS\ und fügen Sie dann die
Änderungen ein! (Alle Dateien im Verzeichnis .\SYS\ werden bei einem
Update überschrieben)
Derzeit
wird das TAPI-Interface über den Navigator im Bereich Adressen aktiviert.
Wird ein solcher Bereich im Navigator angewählt und eine Telefonnummer
eines Adresseintrags mit doppelklick aktiviert, versucht PMS diese Rufnummer an
das TAPI-Interface zu übergeben. Dabei wird die Beispieldatei im
LOG-Verzeichnis erstellt. Wurden alle Einstellungen korrekt vorgenommen, wird
durch doppelklick auf die Telefonnummer die Rufnummer am angegebenen
Telefonapparat gewählt.
Weitere
Informationen über die TAPI-Schnittstelle finden sie in der
MyInfo-Struktur (PMS32M.EXE) unter My.System.TAPI…
Aufbau der
Datei TAPI.DEFINE:
*/
Definitionen der TAPI Steuerung
cPreCall="0"
cPreCallUse=">3"
*/ Dieses
Script wird benötigt, wenn diese Datei über Vererbung in MYSYS
kopiert wird
*/ Damit wird das Array aus der
Datei aus dem Verzeichnis SYS dieser Datei gelöscht und hier neu aufgebaut
*/ Diese Vorgehensweise ist bei
vererbten Arrays immer notwendig
*/ Wichtig!
Damit dieses Script aktiv wird, muss der Eintrag (Prozentzeichen) durch %
ersetzt werden
Clear__Array=>
%LOCAL lni
FOR m.lni =
oThis.Count TO 1 STEP -1
IF
oThis.GetKey(m.lni)="atapistations"
oThis.Remove(m.lni)
ENDIF
NEXT m.lni
<
*/
Definition der TAPI Zuordnung
aTAPIStations[2,2]=.F.
aTAPIStations[1,1]="STATION-1"
aTAPIStations[1,2]="TAPI-INTERFACE-NAME-1"
aTAPIStations[2,1]="STATION-2"
aTAPIStations[2,2]="TAPI-INTERFACE-NAME-1"
Über
die Eigenschaft „cPreCall“ kann eingestellt werden, welche Vorwahl
vor jeden Wahlvorgang vorgewählt werden soll. Hiermit kann die
Amts-Kennziffer vorbelegt werden. Um auch Interne Nummern wählen zu
können wird in der Eigenschaft „cPreCallUse“ eingestellt, ab
welcher Rufnummernlänge die Vorwahlnummer angewendet wird. Wenn Sie
Zweistellige Internrufnummern haben geben Sie „>2“ ein um zu
erreichen, dass ab einer Rufnummernlänge von drei Zeichen die
Amts-Kennziffer vorangestellt wird.
Bei den
Nachfolgenden Zeilen der Datei bitte den Begriff (Prozentzeichen) durch das
Zeichen „%“ zu ersetzen, wie im obigen Beispiel gezeigt.
Die
Eigentliche Definition und Zuordnung der Telefon-Rufnummern zu den Stationen
erfolgt über deren Stations-Namen und den Namen aus dem TAPI-Interface.
Ist das
TAPI-Interface auf dem PC installiert, können Sie den Namen auch aus den
„Telefon und Modem“ der Windows Systemsteuerung ersehen. Jedoch
werden hier meist nicht die benötigten Namen ersichtlich, daher finden Sie
diese Werte in der Datei TAPI.DEFINE.LOG im Verzeichnis .\LOG\ der Station bzw.
nach dem Beenden von PMS32 in dem Serververzeichnis .\LOG\<Station #
User>\TAPI.DEFINE.LOG.
Die
TAPI-Funktion kann ebenso in den Adressmasken aktiviert werden. Lesen Sie dazu
den Punkt „Konfiguration der
WEB-Buttons“
Die
Schaltflächen in den Adressmasken lassen sich nun ebenfalls über die
C-Structure Definitionen steuern, hierzu ein Beispiel um mit dem Telefon-Button
eine Rufnummer über TAPI zu wählen.
Es gibt
verschiedene Arten von sog. WEB-Buttons:
Symbol |
Bedeutung |
Funktion |
Definitionsdatei |
|
PeopleButton |
Startet
die Internetseite www.123people.de |
Web.PeopleButton.usr |
|
MapButton |
Startet
Google Maps |
Web.MapButton.usr |
|
PhoneButton |
Startet
die Internetseite www.123people.de |
Web.PhoneButton.usr |
|
MailButton |
Startet
den E-Mail Client |
Web.MailButton.usr |
|
WebButton |
Startet
den Browser |
Web.WebButton.usr |
Hier ein
Beispiel, wie man den PhoneButton so ändert, dass er über die
TAPI-Schnittstelle die Rufnummer wählt. Zur Konfiguration siehe auch TAPI-Interface.
Das
Originalscript wird nur an den rot markierten Stellen geändert:
*/
Definition für den PHONE Button
*/ Wann
wird der Button gedimmt?
ValueDim =
§EMPTY(EVALUATE(IIF(EMPTY(This.cControlInfo),"m.telefon",This.cControlInfo)))
*/ Welches
ICON soll dargestellt werden?
Icon =
§default_favicon.png
*/ Dieses
Script wird ausgeführt im Click-Event des Button's
*/ Bekannt
zu dieser Zeit sind:
*/ poActiveForm - Aktive Form [O]
*/ poActiveFormset - Aktives Formset [O]
*/ poThis -
Der Button [O]
*/ Der
Button enthält eine Methode, die Strings WEB Komform umwandelt und
umgekehrt...
*/ cWebString =
StringToWeb(cString)
*/ cString =
WebToString(cWebString)
>cUrlCode
*/ Dies ist
der Code, der für den URL Aufruf benötigt wird.
*/ Die
Rückgabe muss vom Typ STRING sein!
LOCAL
lcCode,lcVorwahl,lcFon,llHeim
llHeim =
EVALUATE(IIF("C52"$poThis.cControlInfo,"m.C52heimat","C09.heimat"))
lcVorwahl =
EVALUATE(IIF("C52"$poThis.cControlInfo,"m.C52vorwahl","C09.vorwahl"))
** Vorwahl
bereinigen
lcVorwahl =
STRTRAN(STRTRAN(STRTRAN(m.lcVorwahl,"
"),"++","+"),"+","00")
lcVorwahl =
IIF(EMPTY(m.lcVorwahl),"+??",m.lcVorwahl)
**
Telefonnummer bereinigen
lcFon =
STRTRAN(STRTRAN(STRTRAN(STRTRAN(STRTRAN(EVALUATE(IIF(EMPTY(poThis.cControlInfo),"m.telefon",poThis.cControlInfo)),"-"),"/"),"
"),"("),")")
lcFon =
IIF(LEFT(m.lcFon,2)="++",SUBSTR(m.lcFon,3),m.lcFon)
lcFon =
IIF(LEFT(m.lcFon,2)="00",SUBSTR(m.lcFon,3),m.lcFon)
lcFon =
IIF(LEFT(m.lcFon,1)="+",SUBSTR(m.lcFon,2),m.lcFon)
lcFon =
IIF(LEFT(m.lcFon,1)="0",SUBSTR(m.lcFon,2),m.lcFon)
lcFon =
IIF(m.llHeim,"0"+m.lcFon,m.lcVorwahl + m.lcFon)
wait window nowait lcFon
=My.SYSTEMS.TAPI.DIAL(lcFon)
*REM*
RETURN [http://www.123people.de/phone/] + m.lcFon
RETURN .null.
<
Siehe
auch : Hauptmenü /
Hauptindex / Such Index / Cursor Index / Programm Module / Tabellen Index / Tabellenmodule / Masken Index / Programmcode Index / Servicepacks /
Sonstiges Index
Lokale
Benutzerhilfe : Meine eigene
Hilfe / Zurück zur PMS32 - Hilfe
Dateiversion:1.0.04#0000
- H.U.DD#SSFF 14.12.2010 Senden Sie Ihren Kommentar zu diesem Thema an das
Entwicklungsteam von PMS32 Weitere Informationen
finden Sie unter der aktuellen PMS32 WEB-Hilfe
Die Informationen dieser Mitteilung sind vertraulich und nur für Sie
bestimmt. Unbefugtes Weiterleiten, Veröffentlichen, Kopieren usw.
sind untersagt und werden gerichtlich verfolgt. © PMS Compelec GmbH
2010 ® el-Projekt