FAQ
Hier finden Sie Antworten auf die am häufigst gestellten Fragen
Welche Directories sind wichtig und wofür?
- MANDANTPATH ${NEXT_ROOT}/Local/Library/IntarS/_K_000230; enthält das gesamte Repository
- Source des Frameworks ${NEXT_ROOT}/Local/Projects/IntarS7; enthält Source des Frameworks
- ${NEXT_ROOT}/Local/Library/IntarS/_K_000230/Scripts enthält alle Skripte der Geschäftslogik.
Wie finde ich diese schnell?
Speichern Sie sie als Favoriten.
Wie und wann mache ich ein SVN-Update?
In der Anwendung unter Home/Service durch Klick auf den entsprechenden Button.
Oder im Filesystem: Drücken Sie die rechte Maustaste auf dem Directory, welches upgedated werden soll und wählen Sie "SVN-Update" aus. Wenn Sie sich nicht sicher sind, machen Sie auf den gesamten MANDANTPATH ein "SVN-Update". Außerdem machen Sie dies auf den GLOBALCONFIGPATH und den Source des Frameworks.
Sie sollten ein Update ausführen, bevor Sie selbst das Programmieren beginnen. Schließen Sie bitte vorher den Editor, um zu vermeiden, dass Sie anschließend veraltete Versionen speichern.
Was kann dabei fehlschlagen und was ist dann jeweils zu tun?
Beim Update kann es zu Konflikten kommen, wenn ein File an derselben Stelle lokal und von einen anderem verändert wurde. In diesem Fall müssen die Konflikte aufgelöst werden:
- In der Liste vom SVN doppelklicken Sie auf die Zeile mit dem Konflikt.
- Es öffnet sich eine Merge-Anwendung.
- Navigieren Sie zum ersten Konflikt und wählen eine der vier Möglichkeiten aus.
- Positionieren Sie zum nächsten Konflikt. Machen Sie dies so lange, bis alle aufgelöst wurden.
- Speichern Sie.
- Klicken Sie auf das Icon "resolved".
- Schließen Sie die Merge-Anwendung. Speichern Sie nochmal, falls nötig.
- Bearbeiten Sie die weiteren Files mit Konflikt wie eben beschrieben.
Beachten Sie bitte, dass beim Kopieren von Directories, ein .svn-Directory anschließend gelöscht wird. Es gehen sonst beide Directories auf dasselbe SVN-Directory und beeinträchtigen sich gegenseitig.
Sie benötigen eine Verbindung zu einem externen SVN-Server (Firewall, Netzwerk) und eine gültige Anmeldeinformation, sodass SVN etwas tun kann. Unter TortoiseSVN/Settings/Saved Data/Authentication Data/clear können evtl. gespeicherte und nicht mehr gültige Anmeldeinformationen gelöscht werden.
Probleme gibt es außerdem, wenn Sie .svn-Directories manuell gelöscht haben. In diesem Fall müssen Sie das entries-File im übergeordneten Directory mit dem Editor korrigieren.
Wie und wann mache ich SVN-Commit?
In der Anwendung unter Home/Service durch Klick auf den entsprechenden Button.
Oder im Filesystem: Klicken Sie mit der rechten Maustaste auf das gewünschte Directory und wählen Sie "SVN-Commit" aus.
Nach jeder abgeschlossenen und getesteten Bearbeitung sollten Sie ein "SVN-Commit" durchgeführen, sodass Ihre Arbeit auf dem Server landet.
Was kann dabei missglücken und was ist dann jeweils zu tun?
- Sie haben keine Verbindung zum Server.
- Sie besitzen keine ausreichende Berechtigung.
- Auf den Server wurde zwischenzeitlich von jemand anderem committed. Es muss erst ein "SVN-Update" gemacht werden.
- Sie haben vergessen, im Kommentarfeld etwas einzutragen. Der Server verweigert dann den Commit.
- Wenn Sie manuell .svn-Directories gelöscht haben, müssen Sie das entries-File im übergeordneten Directory mit dem Editor korrigieren.
- Rekursive Deletes verursachen Probleme. Am besten Sie arbeiten sich von unten nach oben durch.
- Sind von einem Commit noch Locks gesetzt, müssen Sie zuerst ein "SVN clean" machen. Dies wird Ihnen aber mitgeteilt.
Wie kann ich weitere Informationen aus dem System entlocken?
- Aktivieren des Debug Modus durch Klick auf den "D" Button oben im Modul.
- Klick auf den "L" Button oben im Modul, um das Log anzuzeigen.
- "Config"-Modul: hier gibt es einige Flags, um den Log-Ouptput zu erhöhen.
- "debug"-Befehl in Scripting: von debug bis enddebug werden alle Statements mit ihren Parametern gelogged.
- "log"-Befehl in Scripting: es können gezielt Informationen ausgegeben werden; sie landen dann im Log.
- "logi"-Befehl: ähnlich wie "log"-Befehl, wird aber auch interaktiv am Bildschirm ausgegeben.
- Im Temp-Script eines jeden Moduls können Sie Script-Befehle eingeben, um den Zustand des Systems zu untersuchen und Informationen auszugeben.
Wo finde ich Hilfe?
- Online-Hilfe mit dem "Hilfe"-Button; dort ist auch dieses FAQ enthalten
- Modul-Hilfe: Klicken Sie hierzu das Modul ein zweites Mal an
- Handbuch (PDF)
- Kommentare der Skripte
- Kommentare in den Sourcen des Frameworks
- Zu den GNUstep Klassen und in der Apple (tm) Foundation Classes Dokumentation.
Wie finde ich heraus, wie ein/e Feld/Modul/Tabelle heißt?
- Im "System"-Register wird interne "Modul Name" und der "Tabellenname" angezeigt.
- Durch einen Klick auf den "C"-Button bzw. die Tastenkombination "Alt-o" gelangen Sie in den "Config"-Modus. Dort sehen Sie die internen Namen aller Bildschirmelemente. In der Vorratsliste rechts kann die Sortierung zwischen GUI/dbName umgeschaltet werden.
- Klick auf den "A" Button oben im Modul, um die Workbench mit den Feldern der Tabelle des Moduls aufzurufen.
Wie finde ich heraus, welches File ich editieren muss?
Klick auf den "E" Button oben im Modul öffnet eine Ansicht, in der alle implementierten Events des Moduls angeboten werden. Ausserdem werden die letzten 20 ausgeführten Scripts angezeigt. Die Namen nicht implementierter Events erscheinen farbliche abgesetzt. Klickt man darauf, wird das Eventscript nach Bestätigung angelegt.
Klick auf den "S" Button oben im Modul zeigt die Scripts an, die zum Modul gehören.
Verwendung der Script-List und Scripts Module, um nach Scripts zu suchen und diese im Editor zu öffnen bzw. online zu editieren.
Handelt es sich um das Script eines Buttons, muss zunächst der Button in der Workbench gefunden werden (s. vorherigen Punkt). Steht in seinem Expression-Feld nichts, heißt das Script so wie der Button und liegt in dem Scriptdirectory, welches wie die Tabelle heißt. Sonst steht der Name des Skripts in dem Expression-Feld. Bei sehr kleinen Skripten steht das Skript auch komplett im Expression-Feld und wird dann auch dort editiert. Neben dem Expressionfeld liegt ein "Open"-Button, der das zu editierende Scriptfile öffnet.
Skripte eines Plugins befinden sich alle als subScripts in einem Skript-File. Dieses heißt wie das Plugin.
Was ist ein EnterpriseObject (EO)?
Ein EO enthält die Daten eines Datensatzes aus einer Datenbanktabelle. Man kann auf die Daten über die Namen der Attribute zugreifen. Man kann Relationen verfolgen und die Bezeichnungen von Dropdown-Feldern abrufen. Verändert man die Daten, kann das EO feststellen, was verändert wurde und die Änderungen auch wieder rückgängig machen. EOs liefern außerdem die Informationen über Tabelle und Attribute wie sie im Modell definiert wurden. EOs entstehen, indem man sie aus der Datenbank beschafft. Sie werden dabei durch den Object-Relational-Mapper erzeugt. Man kann ein EO auch selbst erzeugen, mit Daten versehen und in die Datenbank schreiben. EOs sind die Datenobjekte, welche im PBWOEditor in der Trefferliste liegen und als selObj bearbeitet werden.
Was kann ich alles mit einem EO machen?
Sie können ein EO lesen, verändern, erzeugen, insert, updaten und entfernen.
Beispiel:
$a,getEOsQSoa,vid_lager,$q,$soa
beschafft ein Array von EnterpriseObjects aus der Datenbanktabelle "vid_lager" unter Anwendung des Qualifiers $q und des Sortorderarrays $soa (serverside sort).
$eo,=,$a.firstObject
$eo.preis1,=,10.5
updat $eo
dem ersten EO aus dem Array wird als preis1 10,50 gesetzt und dann wird das EO in die Datenbank zurückgeschrieben.
delete $eo
das EO wird gelöscht.
Was ist ein Qualifier und wozu braucht man ihn?
Ein Qualifier ist die objektorientierte Beschreibung einer Treffermenge analog der where-Clause eines SQL-Statements. Qualifier dienen dazu, der Datenbank zu beschreiben, welche Eigenschaften EOs haben sollen, die man aus der Datenbank holen will.
Effizienter Umgang mit dem Editor Notepad++
Verwenden Sie Tastenkombinationen, um schneller arbeiten zu können.
F2: Markierung setzen und hinspringen
F3: Schnellsuche, verwendet letzten Suchstring
Ctrl-F: Sucht in Datei
Ctrl-H Sucht in Dateien und ersetzt durch gewünschten Ausdruck
Ctrl-M: Markiert identische Strings
Doppel-Klick: Markiert nur das Wort
3-fach-Klick: Markiert die ganze Zeile
Was mache ich, wenn die Anwendung ein völlig unerklärliches Verhalten zeigt?
Cleanen Sie das Framework und builden Sie es neu.
Welche Bedeutung hat mutable (z. b. MutableString , MutableArray)?
Mutable vor einem Datentyp bedeutet, dass dieser Datentyp änderbar ist. In ein MutableArray und MutableDictionary können weitere Objekte eingefügt werden und bestehende entfernt werden. Ein MutableString kann mit appendString: verlängert werden.
Was ist ein rufendes Modul?
Das ist das Modul, aus welchem Sie zu dem gekommen sind, in dem Sie sich gerade befinden. Z. B.: Sie befinden sich gerade im Modul "Kunde". Sie möchten für diesen Kunden ein neues Angebot erstellen. Klicken Sie dazu auf den Button "neues Angebot". Jetzt können Sie sehen, dass Sie aus dem Modul "Kunde" in das Modul "Angebot" gelangt sind. Das Modul "Kunde" ist nun das rufende Modul.
Wie lege ich ein neues Stichwort an?
Rufen Sie das Modul "Stichworte" auf. Klicken Sie auf "Neu", füllen Sie die Felder aus und klicken Sie auf "Sichern".
Wie kann ich Stichworte einem Kunden zuordnen?
Rufen Sie das Modul "Kunde" auf. Im Register "Start" lokalisieren Sie das Stichwort-Plugin. Bei diesem gibt es einen Button "Hinzufügen". Klicken Sie darauf. Wählen Sie die Stichworte aus, die Sie hinzufügen möchten. Klicken Sie dann auf den "Zurück"-Button.
Kann ich Spezialpreise definieren, die nur für einen bestimmten Zeitraum gelten sollen?
Ja, dies funktioniert über das Modul "Spezialpreise". Sowohl im Kunde als auch im Artikelstamm gibt es einen Button "neuer Kundenpreis", der einen neuen Spezialpreis anlegt und dabei Kunde bzw. Artikel vorbelegt. Als dritte Möglichkeit gibt es den Button "Kundenpreise" im Kundenmodul, der alle bestehenden Spezialpreise des Kunden aufruft. Dort kann man sie dann verwalten.
Kann ich Staffelmengen für Einkaufspreise eingeben?
Ja. Klicken Sie im Modul "Artikelstamm" auf das Register ">EK". Hier können Sie entsprechende Staffelpreise hinterlegen.
Warum wird bei einem Kunden Umsatzsteuer ausgewiesen?
Es gibt zwei Möglichkeiten.
- Das Lieferland ist Deutschland.
- Das Lieferland ist in der EG und der Kunde hat keine gültige UStID für dieses Lieferland.