Reports are the lifeblood of business management, offering insights critical for decision-making. TallyPrime’s robust reporting system has continually raised the bar of customer delight and set industry benchmarks. From rich information and instant reports to powerful filters and a unique 'drill-down' option, TallyPrime's reporting capabilities have been a game-changer for business management. However, with success comes increased demands, and Tally faced the challenge of meeting diverse needs.
Challenges of a successful reporting system
The key challenges that TallyPrime reporting system faced stemmed from the below aspects.
- Geographies: Varied practices across different geographies
- Industries: Distinct needs in manufacturing, services, and trading
- User roles: Differing requirements for business owners, CAs, and others
- Business cycles: Unique demands during financial closures, audits, and day-to-day operations
- Personal preferences: Individual user choices add another layer of complexity
The diversity of usage scenarios posed a considerable challenge for Tally. For instance, consider the configuration of a balance sheet with percentages enabled and columns added for a monthly comparative view. Upon reopening the report (post-closing it with the configurations), below are the multiple possibilities:
- Opening it to the default view
- Opening it to the configurations that were applied when report was closed previously
- Combination view of 1&2
Different users can have distinct preferences in such cases. Considering the hundreds of reports and thousands of configurations possible, this scenario is just one of many, highlighting the need for a solution that reduces repetitive configuration setting efforts and enhances user delight. Tally addressed this challenge through the introduction of 'Saved Views in Reports'.
What are saved views in reports?
Saved Views in Reports are a powerful feature that saves the user preferences, columns, filters, and even the master context and date range of a report. Importantly, it retains configurations and filters while ensuring the security of user data.
How to create a saved view?
As with everything in TallyPrime, saving a view in the Reports is super-simple! You can easily & instantly do it by clicking on the “Save View” option. Alternatively, you can save a view with the below steps:
- Configure the report as usual
- Press ‘Ctrl+L’
- Give your view a name and accept
How to open a saved view?
Wondering how a particular saved view can be accessed later? You can do it via any one of the steps enlisted below:
- Select 'GoTo' and select a Saved View of any report
- When a report is opened, choose 'Change View' and select a Saved View of that report
- If the Saved View was set as default for the report, on simply opening the report via Gateway menu or GoTo, the Saved View will be applied on the report
Key challenges and solutions of saved views in reports
With every exciting feature that has delighted the TallyPrime users, there has been an array of challenges that the development teams had to address. Some of the most pressing ones that Saved View feature had to take care of are:
- Speed: Swiftly saving and loading views, a speed revolution!
- Simplicity: Navigating with ease, ensuring the feature's simplicity shines
- Security: Saved views, a fortress of security, prioritizing data integrity
- Consistency: Every report, a symphony of consistency for a unified user journey
- Reliability and robustness: Ensuring durability and unwavering reliability in every saved view encountered
Technical building blocks of saved views in reports
Within the realm of Saved Views in Reports, a robust foundation is laid through various technical building blocks, each serving a crucial purpose:
Variable behaviors
These have been introduced to effectively cater to diverse user needs while maintaining a consistent experience. Whether the configurations that had to be saved were business period related or business objects related like ledgers, stock items etc., these had to be handled efficiently to get the best user experience. At platform layer, these behaviors were coded and exposed to application layer so that it can be consumed with ease based on business scenarios.
- We created behaviors that accurately define what diversity exists.
- Following are the behaviors introduced and a sample code snippet of its usage:
- Business Object Context
- Period Context
- Global Context
- Skip Save
Actions
At the application layer, new actions such as saving/loading a view ensure atomicity, reliability, consistency, and improved performance, facilitating quicker and more efficient coding. While at platform layer, all the intricacies associated with these actions are abstracted from the consumer.
For instance, we have hundreds of reports and thousands of configurations, reading/writing from/to disk is expensive and slow. To optimize speed, a layered architecture is employed, by storing fundamental details of each view in memory as list of saved views.
Listing few actions below:
- Save report view Action
- Takes care of bringing up input fields to take the name of the view, automatically detects the current report, walks all its configurations, and ‘saved’ to either preferred location as selected by the user.
-
- It automatically adds views to the cache to ensure the availability of views in real-time, as well as the default view for reports.
- Load report view Action
- Fetches selected view file configurations from the corresponding save location and opened the report with set configurations on top of the current report.
- Set default view Action
- Allows the user to change the default view for a given report
Binary Data Persistence layer
As configuration data consists of variables, filters, range filters and so on, we had to engineer a capability to persist binary data (information that is non-readable by human eyes). So, if we provide a handle to binary data and its length, it can be persisted in the disk along with Company data.
Object enhancements
- To provide a great user experience, the user should be able to access saved views in the company/application via GoTo/SwitchTo. Information like if the saved view report is an independent report opened directly from GoTo/SwitchTo and if the saved view report is eligible to be shown in GoTo/SwitchTo w.r.t features enabled currently in the company are needed.
- We also had to determine if a saved view belonged to a report that is opened via a collection with context. This enabled us to reuse existing code in a big way.
- Objects were utilized in the following ways to achieve the above requirement:
-
- Standalone Report attribute is independent
- All objects having standalone reports were added to the in-memory list during application start-up. This populates saved view objects with methods from corresponding GoTo objects to access features and security rights.
- Context variable attribute was added in the object to specify the variable that served as a business object for the report.
Templates
- To ensure report save is available in all relevant places, we used templates – we have built and enhanced the same. The button and feature will become available at relevant places through this, without having to make changes in each report individually.
- This drives consistency and high-quality product delivery
Loading views at run time (speed is everything!)
- We cache the views at app load time and manage views in-memory during the operation of the application. We only load pointers to the actual file and a few additional properties instead of the entire data.
- This enables us to provide a blazing-fast experience, all while consuming a minimal amount of additional working memory.
Exception handling
- To provide a delightful experience, we need to handle exceptions as well. We handle various aspects like
- User rights: Whether the user can save/alter views in the company. These rights are available to be set for any user within the company.
- Duplicate view names for the same report and saved location are rejected.
- Availability of companies required for a view - If the view to be loaded has columns repeated over multiple companies, and none of the companies are loaded or accessible for the current user, then the view would not be loaded. If the view was the default view of a report, the view would not be loaded, and the report would open as a system view.
-
- Cases like file deletion outside of the application are handled, and the user gets a clear understanding of the behavior.
In conclusion, the introduction of Saved Views in Reports represents a paradigm shift in user experience within TallyPrime. By addressing the challenges of a successful reporting system and leveraging innovative technical solutions, Tally has not only enhanced efficiency but also added a touch of delight for users navigating the diverse landscape of business management.
So, the next time you configure a report in TallyPrime, remember the power of Saved Views – a feature designed not just to manage data but to elevate your entire reporting experience. Enhance your efficiency and delight in TallyPrime Reports with Saved Views – because in the dynamic world of business, a little efficiency goes a long way.
Visuals of final experience
Visual experience has been illustrated with a couple of screenshots from the product below:
- Save View button has been provided on the right button bar with “Ctrl + L” as the shortcut key.
- Intermediate report that opens while saving view to input details of the view.
- List of views saved at both application and company levels being displayed in the GoTo table.
- Change View also provides a list of views with options to delete and set/alter the default view of the report.
- Delete views have been provided under Help Popup Menu for Troubleshooting