1c 8 does not start in the thin client. Publications

24.07.2023

One of the nice features of 1C:Enterprise technology is that the application solution developed using the technology managed forms, can be run both in a thin (executable) client for Windows, Linux, MacOS X, and as a web client for 5 browsers - Chrome, Internet Explorer, Firefox, Safari, Edge, and all this - unchanged source code applications. Moreover, externally the application in the thin client and in the browser functions and looks almost identical.
Find 10 differences (2 pictures under the cut):

Window thin client on Linux:

The same window in the web client (in the Chrome browser):

Why did we make a web client? To put it somewhat pathetically, time has set such a task for us. Working over the Internet has long been a prerequisite for business applications. First, we added the ability to work via the Internet for our thin client (some of our competitors, by the way, stopped there; others, on the contrary, abandoned the thin client and limited themselves to implementing a web client). We decided to give our users the opportunity to choose the client option that suits them best.

Adding web-based capabilities to the thin client was a big project with a complete change in client-server architecture. Creating a web client is a completely new project, starting from scratch.

Formulation of the problem

So, the project requirements: the web client must do the same as the thin client, namely:
  1. Display user interface
  2. Execute client code written in 1C language
The user interface in 1C is described in visual editor, but declaratively, without pixel-by-pixel arrangement of elements; About three dozen types of interface elements are used - buttons, input fields (text, numeric, date/time), lists, tables, graphs, etc.

Client code in the 1C language can contain server calls, working with local resources (files, etc.), printing, and much more.

Both the thin client (when working via the web) and the web client use the same set of web services to communicate with the 1C application server. Client implementations, of course, are different - the thin client is written in C++, the web client is written in JavaScript.

A little history

The web client project started in 2006, with a team of (on average) 5 people. At certain stages of the project, developers were involved to implement specific functionality ( spreadsheet document, diagrams, etc.); as a rule, these were the same developers who did this functionality in the thin client. Those. developers re-wrote components in JavaScript that they had previously created in C++.

From the very beginning, we rejected the idea of ​​any automatic (even partial) conversion of C++ thin client code into JavaScript web client due to the strong conceptual differences between the two languages; the web client was written in JavaScript from scratch.

In the first iterations of the project, the web client converted client code in the built-in 1C language directly into JavaScript. The thin client acts differently - the code in the built-in 1C language is compiled into bytecode, and then this bytecode is interpreted on the client. Subsequently, the web client began to do the same - firstly, it gave a performance gain, and secondly, it made it possible to unify the architecture of the thin and web clients.

The first version of the 1C:Enterprise platform with web client support was released in 2009. The web client at that time supported 2 browsers - Internet Explorer and Firefox. The original plans included support for Opera, but due to insurmountable problems at that time with the application closing handlers in Opera (it was not possible to track with 100% certainty that the application was closing, and at that moment carry out the disconnection procedure from the 1C application server) from these plans had to be abandoned.

Project structure

In total, the 1C:Enterprise platform has 4 projects written in JavaScript:
  1. WebTools are common libraries used by other projects (we also include the Google Closure Library here).
  2. FormattedDocument Control
  3. Scheduler control (implemented in JavaScript in both the thin client and the web client)
  4. Web client
The structure of each project resembles the structure of Java projects (or .NET projects - whichever is closer); We have namespaces, and each namespace is in a separate folder. Inside the folder there are files and namespace classes. There are about 1000 files in the web client project.

Structurally, the web client is largely divided into the following subsystems:

  • Managed client application interface
    • General application interface ( system menus, panels)
    • Interface of managed forms, including, among other things, about 30 controls (buttons, Various types input fields – text, numeric, date/time, etc., tables, lists, graphs, etc.)
  • Object model available to developers on the client (over 400 types in total: managed interface object model, data layout settings, conditional styling, etc.)
  • Interpreter of the built-in 1C language
  • Browser extensions (used for functionality not supported in JavaScript)
    • Working with cryptography
    • Working with files
    • Technology of external components, allowing them to be used in both thin and web clients

Development Features

Implementing all of the above in JavaScript is not easy. Perhaps the 1C web client is one of the largest client-side applications written in JavaScript - about 450,000 lines. We actively use an object-oriented approach in the web client code, which simplifies working with such a large project.

To minimize the size of client code, we first used our own obfuscator, and starting with platform version 8.3.6 (October 2014) we began to use Google Closure Compiler. The effect of use in numbers – the size of the web client framework after obfuscation:

  • Own obfuscator – 1556 kb
  • Google Closure Compiler – 1073 kb
Using Google Closure Compiler helped us improve the performance of the web client by 30% compared to our own obfuscator. In addition, the amount of memory consumed by the application has decreased by 15-25% (depending on the browser).

Google Closure Compiler works very well with object-oriented code, so its efficiency for the web client is as high as possible. Closure Compiler does a few good things for us:

  • Static type checking at the project build stage (ensures that we cover the code with JSDoc annotations). The result is static typing, very close in level to typing in C++. This helps to catch a fairly large percentage of errors at the project compilation stage.
  • Reducing code size through obfuscation
  • A number of optimizations of the executed code, for example, such as:
    • inline function substitutions. Calling a function in JavaScript is a fairly expensive operation, and inline substitutions of frequently used small methods significantly speed up the code.
    • Counting constants at compile time. If an expression depends on a constant, the actual value of the constant will be substituted into it
We use WebStorm as our web client development environment.

To analyze code, we use SonarQube, where we integrate static code analyzers. Using analyzers, we monitor the degradation of the quality of JavaScript source code and try to prevent it.

What problems did/are we solving?

During the implementation of the project, we encountered a number of interesting problems that we had to solve.

Exchange data with the server and between windows

There are situations where obfuscation of the source code can interfere with the operation of the system. Code external to the web client's executable code, due to obfuscation, may have function and parameter names that differ from those that our executable code expects. The external code for us is:
  • Code coming from the server in the form of data structures
  • Code for another application window
To avoid obfuscation when interacting with the server, we use the @expose tag:

/** * @constructor * @extends (Base.SrvObject) */ Srv.Core.GenericException = function () ( /** * @type (string) * @expose */ this.descr; /** * @type (Srv.Core.GenericException) * @expose */ this.inner; /** * @type (string) * @expose */ this.clsid; /** * @type (boolean) * @expose */ this. encoded; )
And to avoid obfuscation when interacting with other windows, we use so-called exported interfaces (interfaces in which all methods are exported).

/** * Exported DropDownWindow control interface * * @interface * @struct */ WebUI.IDropDownWindowExp = function()() /** * Moves the selection forward or backward by 1 * * @param (boolean) isForward * @param (boolean ) checkOnly * @return (boolean) * @expose */ WebUI.IDropDownWindowExp.prototype.moveMarker = function (isForward, checkOnly)() /** * Moves the selection to the beginning or end * * @param (boolean) isFirst * @param (boolean) checkOnly * @return (boolean) * @expose */ WebUI.IDropDownWindowExp.prototype.moveMarkerTo = function (isFirst, checkOnly)() /** * @return (boolean) * @expose */ WebUI.IDropDownWindowExp.prototype .selectValue = function ()()

We used Virtual DOM before it became mainstream)

Like all developers dealing with complex Web UIs, we quickly realized that the DOM is poorly suited to working with dynamic user interfaces. Almost immediately, an analogue of Virtual DOM was implemented to optimize work with the UI. During event processing, all DOM changes are stored in memory and, only when all operations are completed, the accumulated changes are applied to the DOM tree.

Optimizing the web client

To make our web client work faster, we try to use the standard browser capabilities (CSS, etc.) to the maximum. So, command panel forms (located on almost every form of the application) are rendered exclusively using browser tools, using dynamic layout based on CSS.

Testing

For functional and performance testing, we use a proprietary tool (written in Java and C++) as well as a suite of tests built on top of Selenium.

Our tool is universal - it allows you to test almost any windowed program, and therefore is suitable for testing both a thin client and a web client. The tool records the actions of the user who launched the 1C application solution into a script file. At the same time, images of the working area of ​​the screen - standards - are recorded. When monitoring new versions of the web client, scripts are played without user participation. In cases where the screenshot does not match the reference one at any step, the test is considered failed, after which a quality specialist conducts an investigation to determine whether this is an error or a planned change in the behavior of the system. In case of planned behavior, the standards are automatically replaced with new ones.

The tool also measures application performance with an accuracy of up to 25 milliseconds. In some cases, we loop parts of the script (for example, repeating the order entry several times) to analyze the degradation of execution time over time. The results of all measurements are recorded in a log for analysis.


Our testing tool and application under test

Our tool and Selenium complement each other; for example, if some button on one of the screens has changed its location, Selenium may not track this, but our tool will notice, because makes a pixel-by-pixel comparison of the screenshot with the standard. The tool is also able to track problems with processing input from the keyboard or mouse, since this is exactly what it reproduces.

Tests on both tools (ours and Selenium) run typical work scenarios from our application solutions. Tests are automatically launched after the daily build of the 1C:Enterprise platform. If scripts are slower (compared to the previous build), we investigate and resolve the cause of the slowdown. Our criterion is simple - the new build should work no slower than the previous one.

Developers use different tools to investigate slowdown incidents; mainly used Dynatrace AJAX Edition produced by DynaTrace. Logs of the execution of the problematic operation on the previous and new builds are recorded, then the logs are analyzed. At the same time, the execution time of single operations (in milliseconds) may not be a decisive factor - service processes such as garbage collection are periodically launched in the browser, they can overlap with the execution time of functions and distort the picture. More relevant parameters in this case would be the number of JavaScript instructions executed, the number of atomic operations on the DOM, etc. If the number of instructions/operations in the same script has increased in a new version, this almost always means a drop in performance that needs to be corrected.

Also, one of the reasons for the drop in performance may be that Google Closure Compiler for some reason was unable to perform inline substitution of the function (for example, because the function is recursive or virtual). In this case, we try to correct the situation by rewriting the source code.

Browser extensions

When an application solution needs functionality that is not available in JavaScript, we use browser extensions:
  • for working with files
  • for working with cryptography
  • working with external components
Our extensions consist of two parts. The first part is what is called a browser extension (usually extensions for Chrome and Firefox written in JavaScript), which interact with the second part - a binary extension that implements the functionality we need. It should be mentioned that we write 3 versions of binary extensions - for Windows, Linux and MacOS. The binary extension is supplied as part of the 1C:Enterprise platform and is located on the 1C application server. When called for the first time from a web client, it is downloaded to the client computer and installed in the browser.

When running in Safari, our extensions use NPAPI; when running in Internet Explorer, they use ActiveX technology. Microsoft Edge does not yet support extensions, so the web client in it works with restrictions.

Further development

One of the groups of tasks for the web client development team is further development functionality. The functionality of the web client should be identical to the functionality of the thin client; all new functionality is implemented simultaneously in both the thin and web clients.

Other tasks include architecture development, refactoring, performance and reliability improvements. For example, one of the directions is further movement towards an asynchronous work model. Some of the functionality of the web client is currently built on a synchronous model of interaction with the server. The asynchronous model is now becoming more relevant in browsers (and not only in browsers), and this forces us to modify the web client by replacing synchronous calls with asynchronous ones (and refactoring the code accordingly). The gradual transition to an asynchronous model is explained by the need to support released solutions and their gradual adaptation.

Tags: Add tags

2016-12-07T18:05:29+00:00

Many 8 users have already heard terms such as “Thick client” and “Thin client”. But few people know what this means.

Fat client- This is the normal way to work with the program. We have long been accustomed to it (since the days of 7.7 and 8.2). In details .

Thin client- this is the 1C launch mode for working via the Internet, when the accounting database is not on our computer or even on our network, but somewhere thousands of kilometers away remote server(possibly in another city or country). In details .

Simply put, for an ordinary accountant who works with a database directly on his computer or on an enterprise network, there is no difference between a thin and a thick client.

But it often happens that some errors appear in one client and are absent in another. As, for example, with displaying transactions in 1C Accounting 8.3.

In this case, it can be useful to find out which client we are currently working in and change it to another.

How do you know which client you are working with? Look at the window with the version of your 1C (at the article):

There, in the “Application” section, your client will be indicated:

It is written about how to change a client.

Sincerely, (teacher and developer).

31.07.2015

How to install and configure the 1C:Enterprise 8 thin client to work with 1C programs via the Internet online on the 1C Fresh service website.

Similar articles on the topic:

You can work with equal success with your databases located on the 1C server either using a regular browser or using the 1C:Enterprise thin client (Fig. 1).

In some cases, working using a thin client may be a more stable and convenient option. The 1C:Enterprise thin client can run on MS Windows and Linux operating systems, but in this article we will consider only the installation option under Windows OS, as it is the simplest and does not require special skills.

1. Download the current 1C thin client distribution from the 1C website using the link

The file is saved in the folder that is specified in your default browser settings. Typically, this folder is called "Downloads" or "Downloads".

2. Extract all files from the downloaded archive to any folder on the disk.

3. Run the setup.exe file from the folder where you extracted the archive files (Fig. 2). Preparations for installing the program will begin, which may take 1-2 minutes.

4. The 1C:Enterprise thin client installation wizard will start (Fig. 3). Click the "Next" button and follow the wizard's recommendations (we recommend accepting the default settings). Consistently click the "Next" button until the installation process is completed and at the last step of the wizard, click the "Finish" button.

5. A shortcut to launch the thin client will appear on the desktop (Fig. 4).

Important!
In the future, you need to launch the thin client using this 1C:Enterprise shortcut from the desktop, because in this case, the thin client will be updated automatically.

Congratulations, you have installed the 1C thin client on your computer, now you need to set the address of the location of your database on the 1C server and set the launch settings.

6. Open your database in a browser, to which you want to configure access through the 1C thin client (as you usually work in the service).

7. Copy the URL from your browser's address bar to your clipboard. You will need it when setting up a connection to the application from the thin client (Fig. 5).

Attention! You must use the part of the address without the ending /ru_RU.
For example, for the case shown in the figure, you should copy the following fragment of the address to the buffer: https://1cfresh.com/a/ea/123456.

8. Launch the 1C:Enterprise program from a shortcut on your desktop.

9. In the window that opens " Launch 1C:Enterprise" click the "Add" button (Fig. 6).

10. Select " Adding an existing infobase to the list" (Fig. 7).

11. In the window that opens (Fig. 8), in the infobase name field, enter the name of your database (you can use the same name as in the service) and specify the option for connecting to the infobase " On the web server" and click the "Next" button.

12. In the infobase address line field, paste from the clipboard the infobase URL line that you copied from the browser address bar (Fig. 9), without the ending /ru.

Specify the proxy usage option "Use automatic proxy detection".
If there is only one user working on your computer, you can specify the web server user authentication method as “Select automatically” (so you don’t have to enter your login and password every time).

13. In the next step, leave the settings for certificate verification settings at “default” (Fig. 10).

14. You can select “Select automatically” for the user authentication option (Fig. 11), and select “Thin Client” as the main launch mode.

As you probably noticed, user authentication is carried out in two stages - in the first step, the user is authenticated to access the server, and in the second stage, the user's rights to access each individual database are checked.

15. Launch the program; to do this, in the “Launch 1C:Enterprise” window, select the added infobase in the list and click the “1C:Enterprise” button (Fig. 12).


16. In the authentication dialog box that appears, enter the login and password that you use to access your applications in the service (Fig. 13).

After this, your database will be loaded into the 1C:Enterprise thin client and your data will be opened in it, which you previously worked with in the service through a browser (Fig. 14).

You can continue to work in the program exactly as before. Appearance and the functioning of the program are identical.

Possible problems

If, when installing a 1C thin client, a message appears:
"OpenID user authentication error (Thin Client)"

To resolve this issue, you need to click the “Change” button in the initial database selection window and set the command “/oida-” in the additional launch parameters

Application

1C thin client distributions for Windows for working with information databases in the 1CFresh.com cloud service (32 bit for versions other than XP and Vista):

NameRelease
Thin client 1C:Enterprise8.3.13.1453
Thin client 1C:Enterprise8.3.13.1437
Thin client 1C:Enterprise8.3.10.2820
Thin client 1C:Enterprise8.3.10.2796
Thin client 1C:Enterprise8.3.10.2795
Thin client 1C:Enterprise8.3.10.2789
Thin client 1C:Enterprise8.3.10.2779
Thin client 1C:Enterprise8.3.10.2770
Thin client 1C:Enterprise8.3.10.2759
Thin client 1C:Enterprise8.3.10.2744
Thin client 1C:Enterprise8.3.10.2712
Thin client 1C:Enterprise8.3.10.2698
Thin client 1C:Enterprise8.3.10.2679
Thin client 1C:Enterprise8.3.10.2637
Thin client 1C:Enterprise8.3.10.2624
Thin client 1C:Enterprise8.3.10.2609
Thin client 1C:Enterprise 8.3.10.2417
Thin client 1C:Enterprise 8.3.10.2374

How to download, install and configure a 1C thin client for working with databases in cloud mode on a 1C server, 1cfresh client, 1C 8.3 Thin client, 1C thin client for cloud service 1C Fresh, How to download the 1C thin client, 1C Enterprise 8 Thin client, 1C thin client for online work, How to install the 1C Enterprise 8.3 thin client, 1C 8.2 thin client, 1C Online thin client, How to download the 1C Enterprise 8.3 thin client, What is a 1C thin client, 1C thin client what is it, 1C thin client download, How to configure a 1C Enterprise 8.3 thin client, 1C Enterprise Thin client, How to configure a 1C 8.3 thin client, How to download a 1C 8.3 thin client for free, 1C thin client download for free , installing a 1C thin client, 1c setting up a thin client, How to set up a 1c thin client to work with a 1c database via the internet, 1c 8 thin client, 1c thin client installation, 1c thin client 8.3 download, 1c thin client update, launching 1c thin client , 1c, what is the difference between a thin client and a thick client, How to install a 1c thin client to work with online accounting, 1c accounting thin client, setting up a thin client 1c 8.3, 1c enterprise 8.2 thin client, installing a thin client 1c 8.3, 1c automatic update thin client, thin client application 1C, 1C thin client mode, working in 1C Accounting in thin client mode, updating thin client 1C 8.3, 1C Enterprise 8.3 thin client, 1C Thin client for working in the 1C cloud, thin client 1C 8.2 download, How configure 1C Thin client to work in cloud mode, 1C Enterprise thin client download, 1C Enterprise 8 thin client, Install 1C thin client file version, Download the 1C thin client for free, automatically update the 1C 8.3 thin client, 1C thin client via the Internet, 1C thin client to work with 1C via the Internet, Set up the 1C 8.3 thin client to work with cloud accounting, update the 1C thin client, the difference between the thick one and thin client 1C, 1C 8.2 thin client setup, Set up the path to the database 1C thin client 1C 8.2, Where to download 1C thin client for working in the 1C cloud, 1C thin client 8.3 torrent download, Free download thin client 1C Enterprise 8.3, 1C Enterprise 8.2 thin client download, how to install and configure 1C thin client to work in the 1C Fresh service, 1C 8.2 thin client URL setup, How to configure 1C 8 thin client, What does 1C thin client mean, thin client 8, how to install thin client 8.3, thin client 8.3, thin and thick client, How to configure 1C 8.3 thin client to work with a database in the cloud on a 1C server, setting up a thin client, buy a thin client, differences between 1C thick and thin clients, download thin client, 1C thin client for windows, Download 1C thin client for linux, How to configure a 1C 8.2 database in thin client mode, connecting a 1C thin client, 1C thin client rdp, thin client price, 1C Enterprise thin client what is it? Install a 1C thin client on your computer, install a 1C thin client on local computer, 1C thin client 8.3 free download, Set up 1C Enterprise 8 thin client to work with databases given in the 1cfresh service, 1C Enterprise thin client 8.3, install 1C thin client for free, Instructions for setting up a 1C thin client, 1C thin client printing setup, 1C thin system client, 1C thin terminal client, launching the 1C thin client, 1C server for working with the database in thin client mode, checking the 1C thin client, Setting up the 1C 8 thin client address, 1C thin client application, configure the 1C thin client mode, install the thin client 1C Enterprise 8, 1C thin client installation and configuration, selecting 1C thin client mode, Configure 1C thin client to work with online accounting, 1C thin client for windows 7, 1C thin client distribution, How to install 1C thin client to work in service mode, 1C thin client for working with 1C web, 1C Enterprise thin client mode, How to set up a 1C thin client for working with cloud accounting, Instructions for setting up 1C thin client mode for working with 1C cloud, 1C thin client, 1C thin client 8.3 free download , 1C thin client update, choose a 1C thin client, How to install a 1C thin client for working in the cloud, 1C fresh client, 1C cloud client, 1C client for a cloud service, client for a 1C Accounting cloud service, 1C cloud client for working online via the Internet, cloud 1C software for accounting

Users of the service can work with applications not only in a web browser, but also in the 1C:Enterprise thin client.

This article will show you how to install and use a thin client on a computer running operating system Windows.

1. Determining the required version of the thin client

First you need to determine which version of the thin client you need.

2. Download the thin client

Download the required version of the thin client. Here are links to download thin client installation programs for those used in the service website versions of the 1C:Enterprise 8 platform and various versions of Windows:

A 64-bit thin client should only be installed if recommended by your service organization or service support line.

If the Internet browser does not ask where to place the downloaded file, the file will be saved in the folder designated in the default browser settings. Typically this folder is called Downloads or Downloads.

Automatic updating of the thin client under Windows XP and Windows Vista does not work. So you will have to install new version thin client every time the version of the 1C:Enterprise platform is updated in the service. This is not very convenient and we recommend that you consider upgrading to a more modern operating system.

3. Installing a thin client

Install the thin client using the downloaded installation file:


4. Setting up the thin client

For ease of working with the 1C:Enterprise 8 thin client, it is recommended to enable the list display mode information bases in the form of a tree (you only need to do this once):

  1. Launch the thin client.
  2. Click in the window Launch 1C:Enterprise button Setting...
  3. Check box Display as a tree.
  4. Press the button OK.

After this, the group will be located in the list of thin client infobases website with points.