Save Report View Tally’s Approach to Personalized Configurations
What’s the matter?
A highly efficient reporting system that offers 500+ reports as well as 1000+ configurations. It has been used by millions of people for over three decades. We have made it 10x more simple to use with no interruptions for users and with no effort to master! This blog post will focus on the design choices which enabled this.
Financial reports are available in Tally
TallyPrime is a powerful application that includes a wide range of options and modules. It’s incredibly rich (Accounting Inventory, Accounting, Indian Taxation International taxation) but is a stunningly easy to use product.
Business reports are an essential element for all ERP product. Business reports supplied by TallyPrime are highly regarded by our customers. These reports help users:
Get key insights, slice/dice data,
Study trends and make important business decisions.
Users can set up filters and configurations to
Modify the layout on which information is displayed.
Control of the basis for calculation
Provide business object/period/Dataset context
to be, or become, a.k.a. to preserve the configurations or not!
When there are a lot of reports with different configurations and we have more than 500 reports, a fascinating issue is posed – what configurations must be preserved when a user visits the application next time.
An easy solution is to always keep the user’s configuration’ and allow them to change it as often as they like. But, based on our experience working in this field and observing the behavior of users for more than 36 years, we’ve learned that this will be a painful experience. “%” figures for balance Sheet figures are something users might only want once in a while. Other options, like the layout, are more likely to be long-term choices.
Therefore, some reports are retained some are retained, while others are not. We decided to test the limits and create a new way of working the reports!
Experimenting with technology to make new experiences
While the current configuration works extremely well however, we identified a few problems and analyzed the different user behaviours. We set out to test the boundaries and create a radical change in the user experience. This is to both address current issues and develop new ways of using the product that allow users to work more efficiently and in a more controlled manner.
Make sure to call before proceeding
In some of our previous blog posts, it’s important to note that we own the whole UI Engine and Reporting stack of TallyPrime and that all of it is created entirely from scratch. We don’t rely on any third-party platform for this. Hence, we control all the areas we intend to improve in order to achieve the desired results.
Finding patterns in use
We considered a variety of different options:
A system that could be operated by multiple users using the computer.
It is possible to print or export an report according to the preferences of another user, who is unavailable at the time.
Diverse aspects influence the’most utilized perspective of a report for example:
The requirement for audit period is different from regular operations.
The requirements for year-end are different and the list goes on.
4. Users deal with certain inventory items, such as ledgers frequently than other
Problems in finding a practical solution – scale and acceptance on the market
Scale A solution that we suggest must be able to accommodate the various aspects mentioned above User demands and time of use and so on.
The system is well-known to users. They are using this software for a long period of time and we can’t change the patterns of their use! The solution should be based on the Tally’s simplicity.
Approach to solving
We did not want complex solutions (complex and confusing for users) for example, giving the user control over what configurations are stored, or not. They are easier to construct, but they are difficult to implement. Imagine having to create 1000 possibilities to determine if they should be kept or not! It’s like being an auto mechanic even if you only wanted to enjoy a relaxing ride as driver!
We narrowed the option to a ‘personalized solution’ whereby users are able to save views for any particular document and then save the report under any title. This allows users to save views that are virtually unlimited and now every user has their own view, with distinct views for each use and the list goes on.
Instantly, all issues are immediately solved. You can get an ideal view for each person, an account to audit reasons and a view of the year-end events and so on. What’s more? It is possible to save a glance for the most frequented buyers, suppliers and stock items, and gain access to information 10 times quicker.
Problems with Implementing the solution-based approach
Along with user experience, we have the following technical and implementation-related challenges:
a. We need the experience to be fun!
a. With the number of views to be saved ensuring rapid speed when saving, loading and updating views is essential.
a. Take care of the multitude of more than 3000 configurations available.
b. Find a strategy that we can use in more than 500 reports.
4. Congruity and ease of implementation
a. We’ll have to implement this solution on all reports in the product.
a. Solve for compatibility to ensure that future improvements will work.
a. Reports are able to support a variety of rich filters and, as such must be maintained.
b. Secure user rights
C. Limit the geography of reports report accessibility.. and many more
Awe-inspiring experience that you can create, block by block
Take a look at the Legos or, as we like to call them, Technical Building Blocks!
Our system has a layering architecture and have built the underlying capabilities to ensure consistency, performance and dependability. Upper layers utilize these capabilities to manage the variety and the nuances of user requirements and their diversity.
Here are a few of the most important elements of our technological solution for this issue:
1. Actions – translating abstract ideas into action
We have introduced a variety of new actions into the TDL (Tally Definition Language) language that will take care of all the complexity associated with saving and implementing the views. These actions contribute to the simplicity of the user experience, as well as the ease of programming, and ensuring durability.
These actions are
a. Save report view
It takes care of opening input fields that match its name from the report it detects automatically the report in question it, and then walks through its various configurations and then saves it to whichever location is determined by the client.
It adds views automatically to the cache, ensuring that views are available in real-time. It also serves as being the default view in reports.
b. View the load report
- The program copies selected view file configurations from the appropriate save location, and opens the report, with configured configurations over the report currently in use.
c. Set default view
- It allows the user to alter the default view of the particular report.
2. Variable property – embedding behavior to manage the diversity
- We have created behavior patterns that precisely define what diversity is.
- The following are the behavior introduced as well as a code sample of its use:
- Context of Business Objects
- Context of the Period
- Global Context
- Skip Save
. Binary persistence of data
- We required a method to read and write the same piece of data like variable data or filters.
- Variables utilized for the analysis and its value were stored in a specified schema and filter. The values were saved in a data stream with field IDs for writing and read data that was specific to.
- The data stream was later stored as binary datatype by copying the specific number of bytes from a pointer to the record in the config object
4. Object enhancements
- In order to provide the best user experience, users should be able access saved views within the application/company through GoTo/SwitchTo. Details such as that of if the saved report is an independent one accessible directly through GoTo/SwitchTo as well as whether the saved view report is suitable to show in GoTo/SwitchTo w.r.t capabilities that are available currently within the organization are required.
- Also, we had to figure out the if a saved page belonged to a report open via a collection that has context. This allowed the programmers to reuse code from the past in a significant way.
- The objects were used to achieve the above requirements in these ways: in order to satisfy the above requirements:
- Standalone report attributeis distinct
- Every object with independent reports have been added to the list of in-memory objects at the time of application launch. The saved view objects are populated with methods from the related GoTo objects that allow access to options and access rights to security.
- Context attributewas added to the object to indicate the variable which was used in the role of a commercial object in the report.
- To ensure that the report save feature is accessible in all pertinent locations, we made use of templates. We’ve built and improved on the identical. This button will be accessible in the appropriate places by this, and without the need to modify each report separately.
- This is what ensures consistency and quality product delivery.
6. Views loaded at run time (speed can be everything! )
- We store the views during the time of app loading and manage them in memory when running the application. We load only points to the actual file as well as a few additional properties, not the complete data.
- This allows us to offer the fastest possible experience with a minimum amount of working memory.
7. Exception handling
- To ensure that our customers have a pleasant experience, we must manage exceptions too. We deal with various issues like
- Rights of the user: Whether the user is able to save or alter views within the company. These rights can be assigned to all employees in the organization.
- Views that have duplicatenames with the same name and save locations are not accepted.
- Companies that are accessible for viewingwhen the report to be loaded contains columns that are repeated across several companies however none of these companies are accessible or loaded to the user currently using it and the view will have to be disabled. When the views were the default ones for an report, then the report would not be loaded as the view would be opened as an view in the system.
iv. The cases of deletion of files outside the application are taken care of by the user, and he gets an accurate picture of what is happening.
Enjoyable experience – made possible through ground-up technology!
The binary data format enables users to save the view either at the application level, or include it in the company’s data. This allows for flexibility and allows each user to pick the format they prefer.
The reporting engine is able to honor the views. The capability to choose an default view for reports makes the users’ lives easy through the ability to keep thereport available in the way they want it to be every time.
The fact that reports such as ledger vouchers and vouchers for stock items report can be saved in conjunction with their primary context indicates that you can make separate reports for the majority of utilized entities, removing the necessity of selecting each time. The combination of this by “GoTo,” enabled users to access these reports with lightning speed.
Visuals of the final experience
The visual experience has been demonstrated with screenshots from the application below:
The Save View button is located on the right bar. It has “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