The Evolution and Development of the SapphireOne Custom Report Tool

SapphireOne Custom Reports Tool History

SapphireOne has been under continuous development since 1986. Throughout its evolution, decisions were made concerning the maintenance or deprecation of legacy features, such as the SapphireOne Custom Reports Tool, based on client requirements and a commitment to preserving a single code base.

In earlier versions, we offered Super Reports and, more recently, Page Pro Reports (which became mainstream and evolved into 4D Write Pro Reports). The development of both these third-party integrated reporting systems was either slow or had come to a complete halt. Furthermore, there were inherent limitations in customisation and integration for our developers to address.

We felt the integration of these plug-in reports never passed the MVP stage, and we elected to develop our own below. We provide an explanation of how Sapphire One has passed the MVP stage. However, not all products remain in the MVP stage forever. Some products, like SapphireOne, have evolved and matured well past the MVP stage.

The Benefits of Using SapphireOne

Stability and Reliability

Mature products like SapphireOne have gone through multiple iterations and updates, resulting in a stable and reliable product. Bugs have been fixed, and the product has been optimized for performance. This means that you can trust SapphireOne to handle your business processes without worrying about crashes or errors.

Rich Feature Set

SapphireOne has had years to develop and refine its feature set. This means that it can provide a comprehensive set of tools to handle various aspects of your business, from accounting to Payroll/HR to inventory management. Additionally, the features have been tested and optimised to provide maximum efficiency and effectiveness extensively detailed in the SapphireOne Knowledge Base.


As your business grows, you need software that can keep up. SapphireOne’s maturity means that it can handle the increasing demands of a growing business. Additionally, its modular design means that you can add or remove functionality as needed, making it a flexible solution that can adapt to your changing needs.

Established Community and Support

A mature product like SapphireOne has an established user community and support infrastructure. This means that you can tap into a wealth of knowledge and resources when you need help or have questions. Additionally, the support team has had years of experience dealing with a variety of issues, meaning that they are better equipped to handle any problems that arise.

Lower Risk

Choosing a mature product like SapphireOne means that you are choosing a product that has been tried and tested. Its stability, reliability, and established feature set mean that you are less likely to encounter major issues or unexpected surprises. This can provide peace of mind and reduce the risk associated with implementing a new software solution.


Choosing a mature product like SapphireOne can provide numerous benefits, including stability, a rich feature set, scalability, established community and support, and lower risk. These benefits make it an ideal solution for businesses looking for a reliable and comprehensive software solution.

We decided to create our own SapphireOne Custom Reports, incorporating only the best features from both reporting systems while also introducing innovative functionality.

Sapphire Report Tool – Migration from Legacy Reporting

Transitioning from Page Pro, which most of our customers currently use, to our new SapphireOne Custom Reports is a straightforward process, with the majority of conversion issues being cosmetic in nature.

Most of the scripts from Page Pro reports remain functional, as their capabilities have been carried over to SapphireOne Custom Reports.

Additional programming has been implemented to offer enhanced support for drag-and-drop functionality, page layout, and a familiar MS Word-style interface for selecting fonts and font sizes.

Accessing the SapphireOneCustom Reports Tool

Sapphire Reports can now be found in two locations.

The first location features a comprehensive, fixed list of SapphireOne Custom Reportss, which are typically accessed through the print dialog pop-up when printing reports.

A complete fixed list of reports within SapphireOne can be accessed, created, or modified by navigating to Utilities > Controls > SapphireOne Custom Report.

When the print dialog pop-up appears on the screen, you might see two custom reports listed, such as Invoice-1 or Invoice-2, Purchase-1 or Purchase-2, Sales Quote-1 or Sales Quote-2, and so on.

This means that the reports are edited within Utilities mode and can be accessed or utilised in the relevant areas of the program.

SapphireOne also features a second list of Active Reports. This list is particularly useful when a user is searching for reports that a client or customer may have with some data entered. To access this list of active SapphireOne Custom Reports, go to Utilities > Custom Tools > Custom Report List.

The Custom Report List is designed to display any report with active data. Here, users can view a comprehensive list of all active SapphireOne Custom Reports from various areas within SapphireOne. The distinguishing feature of this option is that it includes all active reports, encompassing those in the list as well as those activated from the Sapphire Tools menu. Users can select and edit any reports found and displayed in this active list if necessary.

These additional SapphireOne Custom Reports are available for users and can be edited using the Sapphire Tools menus.

The Custom Report option can be found at the bottom of most Sapphire Tools menus, as illustrated in the accompanying screenshot.

When a list is displayed on the screen, select one item for testing and use the Command G shortcut to ensure only the single item remains visible in the list. When the user chooses the Custom Report option from the Sapphire Tools menu, the Select Reports dialog will open. Please remember to select only one item for testing purposes.

The dialog shown to the left allows users to add or delete reports.

Upon saving a Custom Report, SapphireOne will prompt for a name. Once named, these reports will appear in the drop-down list accessible by clicking the down arrow button next to the toolbar print button, making them available for access and printing at any time.

Users can set up and save any number of reports; therefore, it is recommended to choose report names thoughtfully. When the initial edit menu appears, users also have the option to rename or update existing reports.

To modify an existing SapphireOne Custom Reports, simply double-click on a report in the list.

Keep in mind that the list of SapphireOne Custom Reports available at Utilities > Controls > Custom Report Layouts does not include any SapphireOne Custom Reports created using the tool menu, as previously mentioned. The Utilities > Custom Tools > Custom Report List will display these reports as well as any reports with data found in the Custom Report Layouts, as documented in this article.

Sapphire Report Tool – Basic Report Design

The following documentation on the report design process is presented at a fundamental level.

Creating any SapphireOne Custom Reports requires a minimum amount of scripting so that SapphireOne knows where to find the data to be displayed on the printed page. Users should be aware that these reports are created at three levels, which will be listed in reverse order. These levels are as follows:

  1. User-selected and entered objects on the report itself.
  2. Scripting within the report itself. Some scripting is necessary to initiate a report, and certain calculated fields may be entered using scripts.
  3. Within the data file itself, it is occasionally (but not always) necessary to code some functionality at the program level to drive the report. This is why users should exercise caution when swapping reports between data files, as they may not behave as intended.

All reports must have a start script that controls the loading of arrays and various other functions. One command used to preload arrays is SR_PreLoad(“I”).

This preload is based on Invoice information.

Calling the function SR_Roll_Up in the start script after SR_PreLoad will consolidate the lines for items with the same description and (discounted) rate. This allows multiple lines for the same product to be entered for different projects but displayed as a single line.

A Simple Error

When entering or reading the script details, there is a selection to be made first of the table and this is contained within the square brackets [ ] and then selecting a cell from the table next. 

A good example of a mistake to be made is as follows. 

[Invoices] is a table and [Invoices_Stock_Breakdown] is from a different table. 

Sapphire Reports are Company Specific

Users should also be aware that reports are, to some extent, company-specific as well as Master Login-specific. To view all the reports in a data file, users must log in to each company individually and view or modify the reports. Alternatively, using a Master Login allows the user to access and locate all the reports in the data file. However, while entering financial data is restricted in this mode, viewing and modifying SapphireOne Custom Reports is not recommended, as they can become Master Login-specific. Users must remember that if they log in as a Master User, they should log back out and edit the reports using a specific company login.

You can review our Blog and YouTube channel for additional information and resources on SapphireOne ERP, CRM and Business Accounting software.

Was this helpful?