TopLogic - the automated application engine
  • Releases
  • Dokumentation
  • Github
  • Discord
  1. Home
  2. Releases
  3. TL_7.9.7
  4. #28935

7.9.7
TopLogic Release

2025-11-12

Enhancement

Major
#28753
Detail dialog for editing composition tables in forms
#28760
Extension of JMS to include an automatic reconnect
#28891
TL script: with() function
Detail
#28568
Hiding fieldsets
#28752
OpenID: Configuration of `scope` and `acr_values` via config variables
#28975
MigrationProcessor to convert a Flex attribute into a row attribute

Bugfix

Detail
#28346
Too many close buttons in dialog button bar
#28600
Popup select input fields moved to tables
#28616
Use of GotoHandler for component display in PostCreateActions
#28647
Invalid solution for "Core theme: Theme "comfort/compact" reduces all charts"
#28711
Inappropriate layout in views Group rights and user rights
#28730
Apply button of a grid is displayed incorrectly in a button row
#28731
GridComponent refuses to "accept" if NoTokenHandling is active
#28732
GridComponent: The "rows" channel is not filled or is filled too late
#28733
XML import: The field with the XML data must be mandatory
#28740
"Attribute with replacement value" does not work with I18N in edit mode
#28744
Literal ResKey cannot be decoded if it has literal ResKeys as arguments
#28757
Substitute value in transient objects is not displayed
#28758
Browser back button can lead to IndexOutOfBoundsException
#28759
Incorrect form object in "User-defined transaction"
#28761
TL script: loadFromSession() can return deleted objects
#28834
Error when restoring form changes to transient objects with calculated attributes
#28847
Error during object creation in GridComponent if new object is no longer displayed
#28851
Incorrect fallback for attribute with current-only storage
#28876
No automatic re-login when using OpenID-Auto-Login
#28877
TL script: Missing normalization when reading from the personal configuration
#28878
Sidebar toggle button disappears behind some elements
#28881
Components with collection models do not react to deletion and modification
#28887
Context menu on multi-selection can become nonsensically wide.
#28888
tl_pac_secret is displayed in the environment variables
#28889
In a deployed system, the pop-up for the sidebar is not displayed
#28890
Binary value: Accepted file types does not work for custom extensions
#28896
NPE in GuiEngine.java for deleted persons and historical view
#28912
Component inspector display defective
#28914
TL-Script-Help: Scrollbar on wrong level
#28926
Poor separator when exporting contacts and accounts to Excel
#28929
No value for hidden attributes with default value
#28935
TL-Script: Function as the result of an attribute in the model cannot access variables from its context
#28940
Error in default for IBMMQ reconnect timeout
#28944
No label for fields in editable dynamic columns
#28952
Attribute with replacement value is incorrectly adopted by TL script function Copy
#28969
Non-collapsible fieldsets can be closed by clicking on the header

update

Critical
#28763
Update dependency org.eclipse.angus:angus-mail to v2.0.4 CVE-2025-7962
#28764
Update dependency org.bouncycastle:bcpkix-jdk18on to v1.79 CVE-2025-8916
Detail
#28907
Update dependency io.netty to 4.1.127.Final CVE-2025-55163, CVE-2025-58057, CVE-2025-58056
Bugfix

Detail

#28935

TL-Script: Function as the result of an attribute in the model cannot access variables from its context

TLScript

It is possible to return a function with the storage rule "Calculation via TL script", which is then fed with parameters, e.g. to calculate a value.

It should be noted that "Unspecified" is selected as the data type, and not "Search expression" (unsightly, but not critical).

A problem arises if the returned function in turn refers to variables that were defined outside. An error appears: "Access to undefined variable .... .". If the purpose is to perform complex calculations once and only continue with the result, this is therefore not possible.

== Example A project knows the cost classification "high" or "low". A cost rate can provide values for "high" or "low". The project should provide a calculation function that receives a cost rate as a parameter should then provide either the value of "high" or "low" according to the project.

  // Variable in context of result function classification = $project.get(`projectStructure:Project#costClassification`); // Function computing a value based on the variable computed before. cost-> switch { "high".equals($classification): $cost.get(`exampleModule:Kostensatz#valueHigh`); "low".equals($classification): $cost.get(`exampleModule:Kostensatz#valueLow`); default: 0; }

The function cost->..., which is returned as a result, cannot be applied to a cost rate because when the function is called outside the block from which it is returned, the $classification variable can no longer be accessed from its original context.

This is just an example that can be easily modified, but in general you want to be able to access variables from the scope of a function.

Test

Technically:

{ increments = count(5).map(x -> y -> $y + $x); count(5).map(n -> $increments[$n](0)); }

The expected result is [0, 1, 2, 3, 4]. Currently, [4, 4, 4, 4, 4] is incorrectly returned because the increment function does not remember its context.

  • Get Started
  • Github
  • Discord
  • Das Unternehmen hinter TopLogic
  • Softwareentwicklung heute
  • Kontakt

© Copyright – Business Operation Systems GmbH

  • top-logic.com
  • Nutzungsbedingungen
  • Impressum
  • Rechtlicher Hinweis
  • Datenschutz
  • DE
  • Login