Jacky
I'm new here

Skript zum Befüllen einer FS_LIST funktioniert in FS 5.1, aber nicht in FS 5.2

Jump to solution

Hallo zusammen,

wir migrieren gerade von FS 5.1 (5.1.605.72781 ) auf FS 5.2 (5.2.424.74231) und dabei ist aufgefallen, dass eines unserer Skripte nicht mehr funktioniert. Wir befüllen in dem Vorlagenskript eine FS_LIST vom Typ "INLINE/SECTIONTEMPLATES", wobei in dem Section Template jeweils ein FS_DATASET gefüllt wird. Die FS_LIST wird dem Skript als Parameter von der Absatzvorlage übergeben.

Ich habe mir die Klasse der übergebenen FS_LIST ausgeben lassen, in der funktionierenden Version ist sie vom Typ "de.espirit.firstspirit.client.access.editor.FormDataListImpl" und in der nicht-funktionierenden Version ist sie vom Typ "de.espirit.firstspirit.generate.values.FormDataListConverter$CopyOnModificationList". Ich finde in der Doku leider nichts zu dieser Klasse und ein Typecast hatte auch nicht funktioniert.

Ich erhalte nachfolgenden Fehler bei der Generierung, die Zeilennummern stimmen aber nicht überein, da ich hier zusätzliche Kommentare eingefügt habe. Ich habe den kompletten Stacktrace als Anlage angehängt.

"Method Invocation liste.add : at Line: 43 : in file: inline evaluation of: ``__execute() { //!Beanshell import de.espirit.firstspirit.access.store.templatest . . . '' : liste .add ( idProvFormData )

Target exception: java.lang.UnsupportedOperationException at line 43"

//!Beanshell

import de.espirit.firstspirit.access.store.templatestore.*;

import de.espirit.firstspirit.access.Language;

import de.espirit.or.query.Select;

import de.espirit.or.query.Equal;

import de.espirit.or.EntityList;

import de.espirit.or.schema.Entity;

import de.espirit.firstspirit.access.editor.value.SectionFormsProducer;

import de.espirit.firstspirit.access.editor.value.DatasetContainer;

import de.espirit.firstspirit.access.editor.value.DatasetContainer.Factory;

Language masterlanguage = context.getProject().getMasterLanguage();

us = context.getUserService();

cs = us.getStore(de.espirit.firstspirit.access.store.Store.Type.CONTENTSTORE,false);

//Get variables from context

//Liste mit FS-IDs von Kontakten aus einer Datenquelle zur Befüllung von FS_DATASET

List id = context.getVariableValue("id");

//FS-List vom Typ INLINE/SECTIONTEMPLATES

liste = context.getVariableValue("liste");

formDataProducer = (SectionFormsProducer)liste.getProducer();

//Section Template "Mitarbeitervisitenkarten"

SectionTemplate templ = context.getUserService().getTemplateStore().getTemplateById(new Long(162));

//Generate Vcards for all employees

Iterator it = id.iterator();

while(it.hasNext()){

  idInt = it.next();

  idProvFormData = formDataProducer.create(templ);

  //Select Employee from Database

  session = us.getTemplateStore().getSchemes().getSchemaByName("Kontaktdaten").getSession();

  Select select = session.createSelect("Kontakte-Gesamt");

  Equal equal = new Equal("fs_id", idInt);

  select.setConstraint(equal);

  EntityList vcardResult = session.executeQuery(select);         

  Entity searchedEntity = vcardResult.get(0);

  //Set and add Employee

  content2 = cs.getContent2ByName("kontakte");

  tableTemplate = content2.getTemplate();

  container = Factory.create(searchedEntity, tableTemplate, masterlanguage);

 

  //tt_ansprechpartner ist die Eingabekomponente vom Typ FS_DATASET in dem Section Template

  idProvFormData.get(masterlanguage, "tt_ansprechpartner").set(container);

 

  //Hier wird der Fehler geworfen - " Method Invocation liste.add...liste.add( idProvFormData )...Target exception: java.lang.UnsupportedOperationException

  liste.add(idProvFormData);

}

//Return the list as result

result.setValue(liste);

Hat jemand eine Idee?

Vielen Dank und viele Grüße

Jacky

1 Solution

Accepted Solutions
StefanSchulz
I'm new here

Hallo Jacky,

offensichtlich wurde hier ein Fall bei der Verwendung der Wertemenge für die FS_LIST in der Generierung übersehen.

Da die Änderung schon länger enthalten ist, scheint der Anwendungsfall, bei der Generierung das Werteobjekt zu verändern, nicht sonderlich häufig vorzukommen.

Für die Behebung musst du dich an unseren Technical Support wenden und dort ein Ticket einstellen. Dort kann man dir auch einen Weg nennen, wie du das Problem vorläufig umgehen kannst. Hierzu bitte die Referenz-ID TS#186846 angeben, das sollte als Fehlerverweis genügen.

Beste Grüße

Stefan

View solution in original post

3 Replies
StefanSchulz
I'm new here

Hallo Jacky,

offensichtlich wurde hier ein Fall bei der Verwendung der Wertemenge für die FS_LIST in der Generierung übersehen.

Da die Änderung schon länger enthalten ist, scheint der Anwendungsfall, bei der Generierung das Werteobjekt zu verändern, nicht sonderlich häufig vorzukommen.

Für die Behebung musst du dich an unseren Technical Support wenden und dort ein Ticket einstellen. Dort kann man dir auch einen Weg nennen, wie du das Problem vorläufig umgehen kannst. Hierzu bitte die Referenz-ID TS#186846 angeben, das sollte als Fehlerverweis genügen.

Beste Grüße

Stefan

Hallo Stefan,

alles klar, vielen Dank 🙂

Viele Grüße

Jacky

0 Kudos

Der Technical Support hat dies als Fehlverhalten identifiziert, die Fehlerbehebung wird unter der internen ID 197130 im Rahmen einer zukünftigen Softwareversion durchführt werden. Auf Anfrage beim Support stellt dieser einen Workaround bereit.

0 Kudos