Denk aan de volgende tips wanneer u fouten opspoort in berekeningen en scripts.
Voorbeeldgegevens
Geef een bestand met voorbeeldgegevens op in het dialoogvenster Formuliereigenschappen. Door een bestand met voorbeeldgegevens op te geven, slaat u geen gegevens op in de definitieve PDF.
Basispagina's
Voor de foutopsporing van basispagina's plaatst u een ander object op elke basispagina om te achterhalen welke basispagina wordt aangegeven.
Eerste pagina in een formulier
Designer bepaalt op basis van het basissubformulier met welke pagina het formulier begint. Als in het basissubformulier de eerste pagina niet wordt aangegeven, wordt standaard de eerste basispagina gebruikt.
Incrementeel fouten opsporen
Begin bij de foutopsporing van een formulierontwerp met het verwijderen van onderdelen uit een formulier totdat u het probleem niet verder kunt reduceren. Probeer de bron van het probleem te isoleren nadat u elk script en elke objecteigenschap hebt bekeken. Voor de foutopsporing in subformulieren kunt u een dik gekleurde rand om het subformulier of een vulling opgeven. Kleuren of opvullingen geven duidelijk aan welk subformulier wordt gebruikt en hoeveel pagina's een subformulier beslaat. Deze techniek werkt vaak goed wanneer u de grenzen van een object wilt zien of wilt tonen waarom het op een bepaalde locatie is geplaatst.
Tabblad Hiërarchie
Bekijk uw formulierontwerp op het tabblad Hiërarchie voor een beter inzicht in de opbouw. De volgorde waarin de objecten worden weergegeven in de hiërarchie, is de volgorde waarin ze op de pagina worden geplaatst. Op sommige objecten kunt u niet klikken als ze onder elkaar zijn.
Scriptfoutberichten
In Designer worden scriptfoutberichten weergegeven op het tabblad Logboek van het palet Rapport wanneer u een voorbeeld bekijkt van het formulier. Als het formulierontwerp FormCalc-scripts bevat en de fout op de server optreedt, verschijnt er een waarschuwing op het tabblad Logboek. Als de fout in het FormCalc-script op de client optreedt, wordt het bericht in Adobe Reader of Acrobat weergegeven.
Bij een fout in een FormCalc-script wordt het hele script niet uitgevoerd.
Bij een fout in een JavaScript-script wordt het script uitgevoerd tot de fout.
Syntaxisfouten in FormCalc
Syntaxisfouten in FormCalc zijn soms moeilijk op te lossen. Als de melding "Syntaxisfout bij token '%1' op regel %2, kolom %3" verschijnt, bevat %1 meestal de token (het woord) die het dichtst bij de fout staat. Het is dus mogelijk dat de token correct is en dat de enige relatie met de fout de nabijheid tot de fout is. Het volgende script genereert bijvoorbeeld het foutbericht 7008: "Syntaxisfout bij token 'then' op regel x, kolom y."
var b = abc(1)
if (b ne 1) then
//comment
Het probleem is dat de token endif ontbreekt in het script. De laatste correcte token is then (opmerkingen worden niet beschouwd als tokens). Het probleem wordt opgelost door de instructie endif toe te voegen aan het einde van het script.
In een scriptobject gedefinieerde functies
U kunt alleen een functie aanroepen die met een JavaScript-script in een scriptobject is gedefinieerd. Zorg dat de scripttaal in de Scripteditor is ingesteld op JavaScript . Als dit niet zo is, ziet u mogelijk een melding dat Designer het scriptobject niet kan oplossen. Dezelfde fout kan optreden als er een syntaxisfout optreedt in het scriptobject.
Webservices aanroepen
Als u webservices aanroept, moet u de gebeurtenis postExecute gebruiken om te kijken wat er wordt geretourneerd of de webservice foutberichten geeft.
Lange SOM-expressies
U kunt bij het typen van een lange, gelaagde SOM-expressie op de Ctrl-toets drukken en op het object op het canvas klikken. Met deze opdracht voegt u de SOM-expressie van het object in het script in. De SOM-expressie is relatief ten opzichte van het object dat het script host. Druk op Ctrl+Shift en klik op het object om de absolute SOM in te voegen. Deze opdrachten werken wanneer u in de Ontwerpweergave op objecten klikt, niet op het tabblad Hiërarchie.
SOM-expressies testen
Wanneer een lange SOM-expressie mislukt, begint u helemaal aan het begin van de expressie en test u elke punt met className totdat u het probleem bereikt. U test bijvoorbeeld a.b.c.d door te beginnen bij de basis:
console.println(a.className)
console.println(a.b.className)
console.println(a.b.c.className)
console.println(a.b.c.d.className)
Scriptobjecten gebruiken om fouten op te sporen in formulierontwerpen
U kunt een scriptobject, zoals een fragment, gebruiken als hulpmiddel bij het opsporen van fouten in formulierontwerpen:
Knooppunthiërarchie onder een knooppunt tonen.
De waarde van een eigenschap of kenmerk van een knooppunt uitvoeren.
Uitvoeren of een knooppunt een aangegeven eigenschap of kenmerk heeft.
De SOM-expressie van een knooppunt uitvoeren.
De xml src van een knooppunt tonen.
Hier volgt een voorbeeld van een scriptobject met verschillende functies voor foutopsporing:
<script contentType="application/x-javascript" name="XFADEBUG">
//This script object provides several tracing functions to help debug a form design
//Dump out node hierarchy to console.println()
function printNode(node) {... }
//Dump out SOM expression to console.println() function printSOM(node) {... }
//Dump out property or attribute value function printValue(node, attrOrPropertyName) {...}
function printXMLSource(node) { ....}
function printHasPropertySpecified(node, prop) {...}\\
</script>
Zaken die u dient te vermijden bij het maken van formulieren
Het aanroepen van xfa.layout.relayout(). bij de gebeurtenis docReady veroorzaakt problemen omdat de gebeurtenis docReady elke keer wordt gestart als de indeling gereed is.
Een container met stroominhoud plaatsen in een gepositioneerde container kan leiden tot problemen met pagina-einden, overlappende objecten en herhalende subformulieren. Het basissubformulier is een container met stroominhoud. Maak hier gebruik van en plaats containers met stroominhoud in het basissubformulier door de paginasubformulieren op te heffen als de indeling gereed is. U kunt ook de paginasubformulieren instellen op stroominhoud.
Probleem met lege pagina (Acrobat 7.1 of lager). Tijdens het ontwerp wordt er een lege pagina weergegeven als het subformulier niet in de grenzen van het inhoudsgebied past. U lost het probleem op door het subformulier kleiner te maken of toe te staan dat het meerdere pagina's beslaat. Voor een gebruiker van Acrobat 7.1 of lager wordt het subformulier van het tweede niveau weergegeven op een andere pagina.