What is mouse programming? This is the principle of creating a user interface that allows you to get away from writing code. Many people criticize this approach: they say, programming with a mouse is unworthy of a real developer, everything should be in the code. But before that, even to draw a circle, it was necessary to know the basic syntax of the same Basic. Now any user can draw any shape in any simple graphics editor, and this will not even be called programming, since the operation is too simple. This is the development of the user interface, which allows to facilitate interaction with the computer. In this article, I will share our experience in maximizing the principles of “mouse programming” in CRM Dynamics.

In creating new services, we always focus on maximizing the “principle of programming” with the mouse. That is, when solving a problem, you need to think: how to make it so that later it does not return to you again with subsequent functional modifications? The desire to get away from the routine will accelerate the development of the product. If the user wants to frequently change some visual part of the form, give him a mechanism that will allow you to do it yourself and not distract you from the main goal, but at the same time will not interfere with the operation of the system. If, at the design stage, you are guided by the most straightforward solution and put everything into the code, the first steps will certainly be implemented faster. But over time, at the product support stage, you can drown in the operational work - editing reports, adding directories and business documentation generated from the template system. Ultimately, the development of the system may simply stop.
CRM Dynamics features
CRM Dynamics offers a graphical interface for building a sequence of business processes - you can move blocks with your mouse without any code and build specific sequences and dependencies. But what is even more interesting - here you can create a user interface with a single mouse, as easy as in the built-in form designer. Thus, developers can form extensive forms in a single style in just minutes. This, of course, speeds up development. I will give some examples of our decisions.
')
Data verification
In the overwhelming majority of business systems, there is verification of the data that the user brings into the system. Many approach the problem straightforwardly - they write in the code the algorithms for checking the presence and validity of the entered data. We went through the implementation of a separate service that allows business administrators (our privileged users) to configure verification using simple mechanisms in the user interface. Yes, the first step in our implementation (the formation of verification methods) is, for the time being, the code written by the programmer. But he already writes in a simple query building language within a user form — which means an advanced user with basic query building skills can also generate a similar method. After that, a regular user independently collects the full path of the check and sets the conditions for its use.
Consider a specific example. We make a check on the presence of an individual entered into the passport system. We describe it in code and give this method to business administrators. In this case, all the basic links are already registered in the corresponding objects. Business administrators independently set up all connections with the mouse, using the basic interface and system functionality, determine at what stage of the life cycle of a business product and for which product this method is used, namely whether you need to check the director of the borrowing organization, the accountant of the organization or other roles and relationships within the application. The passport itself is checked in the same way, and the conditions and relationships associated with it are determined by the business administrator. We are not involved in this process.
The user creates a Stop condition by specifying: Name, Stage, Product, and Check Object.
Configures the Check Object Bundle with the Check Method
The verification method is still set up by the developers, but even here the user can turn off the checkboxes and then enable the checked attributes.Printed forms
Another example of our function with maximizing the principles of “mouse programming” is printed forms. In Dynamics, you can initially create a print form template for contracts, consent forms, and other client documents by retrieving data from the system. But the standard implementation of this feature has a large number of restrictions that the business has not accepted, so we had to build a more flexible mechanism.
The first quick solution is to create printed forms through the system of building reports in the system using SQL and SSRS. I have met with this method several times and in other decisions. But the further we worked on the development of our system, the more and more difficult the printed forms became. As a result, we followed the path similar to the previous example: we implemented the processing of a SQL query and building a set of tags from it using Open XML. Business users can reuse this request by creating and quickly changing the form of contracts, questionnaires, and other business documentation by placing mouse tags in the static text of the template.
As a result, we have one big request for all basic attributes, which will change only when new ones appear. With it, the user can at any time online collect the desired print form. To speed up the execution of a request, we can always connect later, at a convenient time for us, without violating the principles of scrum, plan and make a more optimal request for specific needs, if required.
Here is the finished template in Word

This is a custom print form.With printing forms in Excel, an additional solution was needed to generate tags, but we also coped with this task. Outwardly, they did everything for the user in the same way as in working with Word templates.
Both in data verification and printing forms creation, the lower level of services remains, though partially, but on our side. But in the future, we plan to create a convenient graphical query builder. Then we can give business administrators 99% of the work with these volatile system components.
With the approach that we used, the primary labor costs, of course, are much more - after all, writing a full-fledged service is more difficult. But we are not working as integrators who want to give the finished product and forget about it. We understand that we will continue to work with this product and develop it. Observing the principles of "programming with the mouse", we save on the further support of the system.
It is worth mentioning one more detail. To follow the principles of maximizing functionality with elements of “programming with a mouse”, specialists with relatively higher qualifications are needed - developers and analysts who solve not only current functional requirements, but can also look into the future in order to close the maximum of potential future development tasks.
Of course, the realization of the possibilities for “programming with a mouse” puts a certain number of limitations compared to the use of code, since in our case all the functionality will be predetermined by the developers. But it becomes an incentive for the development of functionality, flexibility and convenience of tools for the user.