Dodeca Version 8.2.0

Aug 25, 2022 - Build 913


This version of the Dodeca uses the .NET Framework, version 4.7.2 and higher on the desktop. The components used in this version of Dodeca are SpreadsheetGear 2017 (8.7.12.102), NetAdvantage 2021, Volume 2 (21.2.46), Aspose.Cells 19.5.0, Syncfusion Essential Studio 20.1.0.56, GdPicture.NET 14.1.0.112, and Xceed Zip 3.6.7363.15420.

This version of Dodeca has two server-side services that run inside a Java Application Server. The Dodeca service is supported and tested on Java 1.8. The Dodeca-Essbase service for all Essbase versions prior to, and including, Essbase 11.1.1.3 are supported and tested on Java 1.5. The Dodeca-Essbase service for all Essbase versions 11.1.1.4 and higher is supported and tested on Java 1.6. Both services are known to run on Java 1.7, 1.8, 1.9, and 1.10.

The release notes for this version contain the following sections:


Application

  • Fixed Issue: In the client application, when the user attempts to close multiple window tabs consecutively by clicking the X on each tab, especially when the tab width is the same (such as multiple instances of the same view with the same caption), the single click can be interpreted as a double-click (when clicking relatively quickly), which causes the window to float instead of being deleted. #3181

  • In the 8.1.x versions, the following error may occur during the client startup: Module CustomToolControllers was installed but was determined to be invalid after installation. Your application may not behave as expected.

    In the 8.1.x versions, the way to avoid or eliminate the error was to always run the recompute-checksums command in the Dodeca Shell after importing a tenant.

    In 8.2, the recompute-checksums command is not required, but can still be used should the error occur. #3128

  • A new application property, ViewChatPollingInterval, is the interval (in seconds) used by the View Comments Editor to check for new/updated comments when the editor is configured in Chat mode. A value of 0 disables polling for updated comments. Refer to the View Commentary and Attachments section for additional information.

ClickOnce Prep Utility

  • When generating a self-signed certificate used to sign the ClickOnce deployments, using the SHA-1 (with RSA) option produces valid manifests that utilize the wrong hash algorithm in the manifest signature block. This results in the publisher being shown as Unknown Publisher, even if the generated certificate has been installed into the Trusted Root Certification Authorities key store. #3155

Commentary

  • Fixed Issue: When a comment contains a Unicode control character or otherwise invalid XML character as defined by the XML 1.0 spec, an error similar to the following can occur: Unable to build the view. Unable to write or send ViewUsageUpdate request. '[<char>]', hexadecimal value <char value>, is an invalid character. #3225

  • Refer to the View Commentary and Attachments and Worksheet Worksheet Commentary sections for additional information about new commentary features.

Dodeca Shell

  • In 8.2, the set command supports an optional --env flag. #3158

    dshell/:>help set
    
    NAME
    	set - Set a variable
    
    SYNOPSYS
    	set [--env]  [[--name] string]  [[--value] string]
    
    OPTIONS
    	--env	Set variable from environment. Pass with no parameters to pull in all environment variables
    		[Optional, default = false]
    
    	--name  string
    		The name of a variable to set, or the name of an environment variable if using the --env option
    		[Optional, default = <none>]
    
    	--value  string
    		Value to set for a variable, or a default value to use if an environment variable doesn't exist
    		[Optional, default = <none>]
    
    dshell/:>

    When set, the shell looks for that variable in the System environment and sets it.

    • If no variable name is provided, then all environment variables are brought in.

    • If a single name is specified, that value is brought in.

    • If a name and a value are specified, then that environment variable is brought in, but if the environment variable is null, then the value is used as a default.

  • In 8.2, the `` command can be used to restore artifact descriptions to the BINARY_ARTIFACTS table’s ARTIFACT_DESCRIPTION field. In 8.0.0569, the description was not transferred to the field when importing metadata. #3193

    Although this issue was fixed in 8.0.1.37, the ARTIFACT_DESCRIPTION will still be NULL for metadata previously imported with 8.0.0.569. The description is presented in the metadata editors, because the value is also stored in the embedded artifact. And, if the Description is changed and committed, the ARTIFACT_DESCRIPTION will contain the updated description.

    The fix-descriptions command pulls the value from the embedded artifact and assigns the value to the ARTIFACT_DESCRIPTION field in the BINARY_ARTIFACTS table.

dshell/:>help fix-descriptions

NAME
	fix-descriptions - Fix artifact descriptions

SYNOPSYS
	fix-descriptions [--update]

	--update
	This flag must be set in order to confirm the update of the descriptions.
	[Optional, default = false]

dshell/:>

Essbase And Sql Connections

  • In previous versions, changes to Essbase and SQL connections metadata that are committed by an administrator are not detected by the other client sessions when the connection has already been used. In 8.2, changes are detected and downloaded to the client as determined by the application’s CheckForMetadataUpdatesFrequencyPolicy setting, which is consistent with the handling of all other metadata types. #2736

  • Fixed Issue: The following error was reported by a customer when attempting to perform a Send operation using a stateful Essbase connection after the Essbase or APS server was restarted: Invalid session ID. One possibility is that the server may be restarted. Sign off and sign on again.

    We were unable to reproduce the exact error in our environment, but did encounter the following error with Essbase 21c when a stateful connection is forcibly logged off by the administrator: Network Error [11001]: Failed to retrieve name information for [EssbaseCluster].

    This issue has been resolved in 8.2, and may also address the issue reported by the customer. #3073

Essbase Connection Pooling

The Dodeca-Essbase connector now has connection pooling for stateful connections. Essbase connection pooling should increase performance and provide the ability for multiple concurrent asynchronous views to be run using the same stateful connection. #2932

A connection pool is automatically created and used when the connection is defined as stateful, which is controlled by the Essbase connection’s Stateless property.

image

In addition, new connection instances are created and stored in the pool on an as-needed basis if a connection is not available in the pool for a given operation. A new connection pool is created based the following non-null items, considering factors such as server use of elevated privileges for certain operations, logins using impersonation, and logins using SSO tokens:

  • APS Url

  • REST Url

  • OLAP Server

  • Application

  • Cubename

  • Username

  • Password

  • Admin Username

  • Admin Password

  • Username for Impersonation

  • SSOToken

The connection pool will enhance the view resolution performance, particularly in views that have multiple retrieve ranges, when the view’s Asynchronous, ParallelExecution, and ParallelRequestLimit properties are configured to optimize performance.

image

In the example above, the connection pool will create and manage up to 8 connections in the connection pool. When the view is not using parallel execution, a stateful connection may also be added to the pool if multiple views, which are utilizing asynchronous processing, submit requests simultaneously.

Connections in an Essbase connection pool are disconnected from the server once the connection is unused for a minimum of the timeout period as specified in the dodeca-essbase.properties file. The default timeout period is 3,600,000 milliseconds or one hour. The timeout check is performed on a periodic basis as defined by the connection interval property. The default connection interval is 600,000 milliseconds or 10 minutes.

image

There are DEBUG and TRACE level logging messages related to the connection pools, including some messaging that shows when a connection is instanced, when it is put into the used connections collection, when it is returned to the pool, when it is released from the pool, and printing contents of the cache after different operations.

image

The Disconnect function on the server no longer disconnects stateful connections. Instead, stateful connections in the connection pool will timeout and be removed from the pool when they have not been used during the timeout period. As a result, the Sessions console in EAS (for Essbase 11.x) or the Essbase Jet UI (for Essbase 21c) will display active user sessions. These sessions should automatically be ended after a period of inactivity longer than the connection pool timeout has occurred. Below is an example from the Jet UI.

image

Essbase Outline Extraction

  • In 8.2, the automated Essbase Outline XML Extraction for use with Dodeca Outline Viewer reports, has been removed and replaced by a Windows batch and Linux shell script process. #2886, #3033

    In previous versions, when an Essbase connection’s OutlineExtractEnabled is set to True, the Dodeca metadata service automatically checks for changes to the outline at the configured time interval, which is specified in the deployed dodeca.properties file. When a change is detected, the outline is extracted as XML and saved in the metadata repository as an Essbase Outline XML binary artifact. The automated functionality provided limited scheduling capability and sometimes required web service calls between different servers, which introduced potential authentication and firewall issues.

    The new outline extraction process is written using a combination of either Windows batch files or Linux shell scripts, which in turn call either MaxL or the Essbase REST API to extract the outline xml file. The script then calls the Dodeca Shell to insert the extracted outline xml file into the Dodeca repository as an Essbase Outline XML binary artifact. Since the new process uses scripting functionality, it can be called from other processing scripts in the environment or scheduled using any common operating system scheduling software.

    The script files are installed with the Dodeca Framework in the bin\extract-xml-outlines folder. The following instructions are provided in a README.txt file:

    1. Copy the files in this directory to a new working directory.

    2. Copy the dshell.jar from your version of Dodeca 8.2 or higher to the same directory.

    3. Update the JAVA_HOME, ESSBASE_USERNAME, ESSBASE_PASSWORD, RETAIN_LAST_VERSIONS_COUNT CONNECTION, TENANT, and EXTRACT_METHOD variables to the appropriate values for your environment and extract method.

    4. Update the variables listed below for your selected extract method. MaxL - HYPERION_HOME and ESSBASE_SERVER (and verify the remaining MaxL variables) REST - ESSBASE_SERVER_REST

    5. Update the extract-xml-outline-cube-list.txt file with a pipe-delimited list of the desired applications and cubes to extract. Example: Sample|Basic Demo|Basic

    6. Execute this file at the command line.

    In 8.2, the on-demand Update Outline XML capability is still supported by the client in the Essbase Connection Editor; the OutlineExtractEnabled, OutlineExtractServletPath, and OutlineExtractXmlRetentionCount properties, however, are no longer supported, since these were associated with the previous automation functionality.

Essbase Views

  • Fixed Issue: When the view’s Asynchronous property is True and workbook script is used to perform an Essbase operation that changes the size or layout of a retrieve range, the DataCellDoubleClickPolicy may not be properly respected. For example, when using the OpenViewForDrillthrough policy, the target view, specified as the DataDrillthroughViewID, may not open when the user double-clicks a data cell. This issue was introduced in version 8.0.0.569. #3183

  • Added support for parallel resolution of commentary ranges when the Asynchronous and ParallelExecution properties are True. #2841

Excel Behavior

  • Auto-Complete: In 8.0.0.569, functionality was introduced to provide a capability similar to Excel auto-complete. In 8.2, auto-complete has been enhanced to support the ability to optionally display a drop-down button in the active cell when edit mode is entered. By default, the ShowDropDownButton property is False. Use of the drop-down button more closely mimics the Excel behavior. #2801

Metadata

  • Fixed Issue: When a metadata property that represents a color is set to Transparent, the color reverts to White. This includes the following properties:

    • Application - SplashProgressBarBackColor, SplashProgressBarFromColor, SplashProgressBarToColor, SplashProgressTextColor, ViewSelector.ImageBackColor

    • CommentRange - AttachmentCountFillColor, AttachmentCountFontColor, AttachmentCountLineColor #3096

Metadata Dependency Explorer

  • Fixed Issue: Under certain circumstances, such as when the repository contains a large number of binary artifacts, the following error occurs when running a Depended On By search in the Metadata Dependency Explorer: Servlet engine ran out of available memory. #3210

Metadata Editors

  • Fixed Issue: With the SQLPassthroughDataSets Editor and Essbase Scripts Editor, the Commit button becomes enabled after opening the SQL Editor or Query Editor and clicking OK without making a change. This issue was introduced in version 8.0.0.569. #3212

  • Fixed Issue: In 8.0.0.569, the sorting of items in Metadata Editors was changed to sort based on natural order, such that View1, View2, and View10 would display as View1, View2, and View10 instead of View1, View10, View2. This caused a performance degradation when a Metadata Editor is opened and there is a large number of metadata instances, so the change has been reverted. #2558

Selectors

  • For the selector tool, which appears in the toolbar for a selector tree and listbox, an image has been added to the button that, when clicked, opens the tree or listbox control. The image provides an end user with a visual cue. In addition, the text to the left of the button, which displays the null selection text or the current selection, also opens the control when clicked. #3227

    image

SQL and Essbase Excel Relational Views

  • Fixed Issue: When a SQL or Essbase Excel view, with DataSetRanges defined, contains an array-entered formula, such as INDEX, in a data table sheet range, the following error occurs when the view is built and no rows are retrieved: Operation is not valid for a partial array formula or data table. #3156

SQLPassthroughDataSets

  • Fixed Issue: For a Select statement, which has an AS clause that refers to an Alias beginning with a single number, the number is removed from column name in the results. When the alias begins with a number followed by '0', an error similar to the following occurs: Invalid 'name' attribute value '019YTD': The '0' character, hexadecimal value 0x03, at position 0 within the name, cannot be included in a name. This issue was introduced in 8.0.0.569. #2756

  • Fixed Issue: When an INSERT or UPDATE statement contains multiple occurrences of the same argument, which is denoted by the @ character, the following error occurs with Oracle as the database when the user attempts to save changes: Unable to save changes to <dataset range ID>. Invalid values were detected by the database when saving changes. All valid changes were successfully used. Correct the errors and retry saving any unsaved changes.

    The error displayed in the Excel comment for the inserted or updated row is Internal error or Missing IN or OUT parameter at index depending on the number of occurrences of the argument.

    When the database is SQL Server, the save operation fails with the following error: Unable to update DataSetRange <dataset range ID>. Unable to update the SQLPassthroughDataSet <SQLPassthroughDataSet ID>. The type for parameter '<parameter>' cannot be deduced in this context.

    Similar errors may occur when an UpdateSQL statement contains a Case statement. #3230, #3222

View Commentary and Attachments

In 8.2, view comments and attachments are supported. In contrast to the worksheet commentary and attachment capability supported in previous versions, view comments and attachments rely on the context of the view and do not require a range to be defined on a worksheet. #2968

The terminology that has been adopted to distinguish between the different types of commentary and attachments is worksheet comments, worksheet attachments, view comments, and view attachments. Comments and Attachments are terms used synonymously with worksheet comments and worksheet attachments.

A view can be configured to allow for both types of comments and attachments. When both are allowed, the Worksheet Comments Editor and View Comments Editor appear as tabs in a docked pane.

The View Comments Editor can be presented with a Chat style user-interface, similar to Slack, as shown below, or with a Grid style. In this screenshot, both view comments and attachments are enabled.

image

View Comments Properties

image
  • The Enabled property must be set to True for view comments to be available.

  • The KeyItems defines the key items that are used to associate or link the comments to the view. Each key item is represented by a unique key and the associated value, and is referred to as a key/value pair. One key item is required.

    When the view’s comments are intended to only be available within the scope of the view, and not shared across multiple views, a key item for the view ID should be included.

    Other key items can represent, for instance, a selector, such that the view comments on a given thread are available within the context of the selection. For example, if a key item is defined with the Key as Market and the Value as the Market selector’s token, [T.Market], then a separate comment thread or discussion, can exist for each market.

  • When the AutoAddViewIdToKeyItems property is True, which is the default value, a view ID is automatically added as a key item.

  • When the AutoAddSelectorValuesToKeyItems property is True, which is the default value, key items for the selectors are automatically added. Selectors that allow multiple selections are not included.

  • The EditMode controls whether the Chat interface or Grid interface is presented.

    When the Chat edit mode is used, the application’s ViewChatPollingInterval controls how frequently the comments are automatically refreshed. By default, the interval is 30 seconds.
  • If specified, the ContextString is stored with each comment. It can be used to capture context-specific information that may be important to understanding the comment.

  • AllowAdd, AllowDelete, and AllowUpdate control which operations are allowed. The value can be specified as a formula that evaluates to True or False. When AllowDelete or AllowUpdate evaluates to True, the context menu contains the Delete or Edit tool, respectively.

  • MaxCommentCharacters controls the maximum number of characters that a given comment can contain. A value of -1, which is the default, indicates that the number of characters is not limited.

  • When EditMode is Grid, SortPolicy controls how comments are sorted in the Comments Editor. DateAscending sorts by date, oldest to most recent. DateDescending sorts by date, most recent to oldest. None applies no sorting.

  • When the EditMode is Grid, ThreadPolicy controls the type of threading allowed for view comments.

    • OneCommentOnly: Allow only one comment per cell.

    • ListWithoutThreads: Allow multiple comments, but no threading.

    • ThreadedOneRootComment: Allow only one comment thread.

    • ThreadedMultipleRootComments: Allow multiple comment threads.

    • Undefined: Use of this policy will prevent any comments or responses from being entered.

View Comments Editor Properties

image
  • Caption, CaptionToolTip, TabCaption, and TabCaptionToolTip control the captions and tooltip text presented in the user-interface. <<<

  • DisplayMode controls whether the View Comments Editor is displayed in a docked pane or a modal dialog.

    • DockedControl: The editor is displayed in a dockable pane. The docked location is specified by the DockedControlLocation property.

    • LockedDockedControl: Same as a DockedControl, except that the user cannot move the comments editor to a different docked location.

    • ModalDialog: The editor is displayed in a modal dialog.

  • DockedControlLocation - Controls the initial docked location of the View Comments Editor.

  • The remaining properties are only applicable when EditMode is Grid, and control the components presented in the View Comments Editor: ShowLinks, AllowLinks, ShowContext, AllowContext, and which optional columns are included for the list of comments: ShowSubject, ShowCreatedBy, ShowDateCreated, ShowModifiedBy, ShowModifiedDate.

View Attachments Properties

image
  • The Enabled property must be set to True to allow files to be attached to the view. To allow for end-users to attach a file to a view, the EditMode must be set to Grid, since the Chat interface does not support attachments.

    Files can also be attached to a view using the workbook script AttachmentOperations.AttachFile method and overload.

  • AllowDelete controls whether the user is allowed to delete an existing view attachment. The value can be specified as a formula that evaluates to True or False.

  • AllowedFileTypes, MaximumFileSize, and MaximumAttachments represent parameters that control the file type and size, and number of attachments.

View Hierarchy Editor

  • Fixed Issue: When a view is added to a hierarchy, the views may be listed in the Select View(s) to Insert dialog in descending alphabetical order. *3211

View Selectors

  • In previous versions, the context menu displayed by the ViewSelectorTree and the ViewSelectorExplorerBar are different and neither reflects the application styling. #2528

    image
    image

    In 8.2, the previous context menus have been replaced with a context menu that reflects the application styling.

    image
  • In 8.2, a new view selector type, ViewSelectorExplorerBarTreeHybrid, combines ExplorerBar groups with tree hierarchies. #2490

    image

    Most of the properties are the same as the ViewSelectorTree and ViewSelectorExplorerBar properties. The only property that is unique to the ViewSelectorExplorerBarTreeHybrid is the ExplorerBarGroupHierarchyDisplayPolicy, which is similar to the HierarchyRootNodeDisplayPolicy property, supported by the ViewSelectorTree.

    image

    The ExplorerBarGroupHierarchyDisplayPolicy controls whether an ExplorerBar group is created for each top-level item in each hierarchy OR an ExplorerBar group is created for each hierarchy.

    The options include the following:

    • ExplorerBarGroupForTopLevelItemInSingleHierarchy - When a single view hierarchy is presented by the selector, each top-level item in the hierarchy is represented by an ExplorerBar group. When multiple hierarchies are presented by the selector, each hierarchy is represented by an ExplorerBar group.

    • ExplorerBarGroupForTopLevelItem - Each unique top-level item in each hierarchy is represented by an ExplorerBar group.

    • ExplorerBarGroupForHierarchy - Each hierarchy is represented by an ExplorerBar group.

      In this example, the view selector’s HierarchyID is set to Standard, which is the hierarchy defined in the View Hierarchies Editor on the right. The ExplorerBarGroupHierarchyDisplayPolicy is set to ExplorerBarGroupForTopLevelItemInSingleHierarchy. For a single hierarchy, ExplorerBarGroupForTopLevelItem would result in the same layout in the view selector.

      image
  • When the application’s ViewSelectorProperties.AllowEditViewMetadata property is True, additional options are available in the context menu for navigating to a view’s related metadata, including the following: Edit Essbase Connection, Edit Selector, Edit Selector List, and MDX Script from AutoCompleteRanges. #3190

    image

    For a SQLPassthroughDataSet, the context menu supports options to navigate to the related item in the SQLPassthroughDataSet Metadata Editor, to the Query Editor for a specific query, or to the SQL Editor for the selected SQL statement.

    image

Workbook Analyzer

  • Fixed Issue: The Workbook Analyzer processing fails with the following error when an analyzed Excel file is currently open in Excel: Analysis failed with exception: WorkbookParser is null. #3102

    While this issue has been addressed and the Workbook Analyzer no longer aborts under these circumstances, an Excel file that is currently open in Excel cannot be analyzed and the failure is reported in the Results file. For example, a status similar to the following will appear in the Pass/Fail column for the file: Fail - Exception: The process cannot access the file 'C:\temp\Workbook Analyzer\Income Statement_Template.xlsx' because it is being used by another process.

Workbook Script Editor

  • In the Workbook Script Editor, a new context menu option, Go to procedure, supports the ability to navigate from a procedure argument name to the referenced procedure. When defined in the current workbook script, the procedure is activated and scrolled into view. When the procedure is defined in another workbook script, the workbook script is selected, and the procedure is selected and scrolled into view. #2384

    image
  • In 8.2, the Workbook Script Editor supports the ability to easily return to any of the 25 most recently activated cells in the editor. The Return to the previously active cell and Return to the next cell in the previously active cell list tools allow for navigating backwards and forwards cell-by-cell, or for selecting a specific cell from a dropdown list of the cells. #2384

    image

    The tools are helpful when used in conjunction with the new Go to procedure context menu tool, since the history of activated cells can span multiple workbook scripts. If the procedure is in another workbook script, returning to the original workbook script is easy to do by using the Return to the previously active cell button or the dropdown list.

    image
  • Fixed Issue: In the Formula Editor, when the dropdown list of available functions is displayed, the tooltip is not updated for the highlighted item when the up and down arrow keys are used to scroll through the items in the list. #2913

  • When an event link is added and the user accepts the default name for the procedure, the procedure is automatically created, a new method row is added, and the method selection list is displayed. In previous versions, when an event link is added and the user changes the default procedure name, the procedure is not automatically created. In 8.2, the procedure is automatically created for a non-default, custom procedure name. #3198

  • The ErrorHandlingMode, OpenDebugger, has been removed as an option from the dropdown list in the Workbook Script Editor. The option was never supported, and has always been treated the same as the ThrowException option. #1092

Workbook Scripting

  • New Function: The DataTableRangeHasChanges function returns whether a specific range within a DataTableRange’s sheet range has any unsaved changes. Any named range or address within the DataTableRange’s sheet range may be used. If an address is not specified, the current cell address is used. #2989

    Usage
    @DataTableRangeHasChanges([<Address>])
    Parameters
    • Address - Optional. A range name or address within a data table range. The default is the active cell.

  • New Argument for LookupValue Function - In previous versions, the LookupValue function performs a case-sensitive comparison when the MatchType is Exact, but performs a case-insensitive comparison when the MatchType is Contains, StartsWith, or EndsWith. To allow for the ability to perform a case-insensitive comparison for an Exact match, an optional IgnoreCase argument has been added, which defaults to False. The argument only applies when the MatchType is Exact. When set to True, the case is ignored when looking up the Value. #3174

  • New Argument for ExecuteProcedure Method - The Break argument supports the ability to conditionally exit the procedure from which ExecuteProcedure is called. This avoids the need to call the ExitProcedure method after ExecuteProcedure when exiting the procedure is appropriate based on a given condition. The Break argument is only evaluated after the procedure associated with ExecuteProcedure is executed. #3087

  • The PromptForInput method has been revised to support the use of tabs and the return key, which allows for multiple lines to be entered, in the input field. #2958

  • New ToolClicked and ToolValueChanged Event Links and ExecuteProcedure.ToolAction Method Overload: #2741

    In previous versions, the only way to implement the logic for a custom tool using workbook script is to assign the WorkbookScriptToolController to the tool and identify the name of the workbook script and procedure as tool arguments.

    In 8.2, an alternative approach is supported, which consists of using the ToolClicked or ToolValueChanged event links as appropriate for the tool type, and executing the related workbook script logic by using the ExecuteProcedure.ToolAction overload.

    • The ToolClicked event link is supported for the Button and StateButton tools. The ToolValueChanged event link is supported for the ComboBox and TextBox tools. The ToolValueChanged event is not raised until the user exits the tool.

    • Both event links support the following arguments: ToolKey, ToolCaption, and ToolValue. The ToolValue argument is supported for the ToolClicked event link, since the StateButton tool has a value of either True to indicate the state is "on" or False to indicate the state is "off".

    • Both events can be cancelled by the CancelEvent method. This allows for the workbook script, for example, to inform the user and cancel the action when a condition is detected that should prevent the action from being executed.

      image

      To illustrate with an example, the following describes how to use the new event links and overload for the Lock Cells and Unlock Cells tools, which appear in the context menu of the sample view.

      image

      Instructions for adding the tools to the toolbars configuration and defining the workbook script logic for locking and unlocking cells are not included.

      A utility script is used to define the workbook script logic that is executed when the tools are clicked.

      image
      1. A ToolClicked event link is added for each tool. When the event link is added, the default procedure name, OnToolClicked is manually changed to reflect the tool associated with the event, OnLockCellsClicked and OnUnlockCellsClicked.

        The ExcecuteProcedure method is added to each event link procedure and the ToolAction overload is selected. Then, the ToolKey and Procedure method arguments are set to identify the key of the associated tool and the procedure to execute when the tool is clicked.

        image
      2. The utility script is added to the view’s workbook script ScriptSet. If the view does not have a workbook script, the utility script can be assigned to the view’s WorkbookScriptID.

        image
  • Fixed Issue: When a view’s Asynchronous property is True and it utilizes one or more workbook script MethodCondition or CellCondition method arguments that evaluate the state of the view’s workbook, various errors can occur. For example, when using @SheetProp(Visible,"@SheetName()") as the MethodCondition during an asynchronous event, the following error occurs: No sheet with the name or index "<sheet name>" could be found in the workbook. #3188

Worksheet Commentary

With the introduction of View Commentary and Attachments, the worksheet commentary functionality has been enhanced to support the ability to optionally display a Chat interface in the Comments Editor instead of a Grid interface. The EditMode property controls which user-interface style is presented.

Comments Editor and Comments Explorer are terms which refer to the user-interface component used to see and edit view and worksheet comments and attachments.