What is 1C. On a complex system in simple words
Today, 1C software products are a kind of standard for the work of accounting, management and other types of accounting in small and medium businesses. Employers require their employees to work with this particular software. If the issue of integration of an online store and automation systems (balances, prices, orders, etc.) arises on the agenda, the 1C database with which you need to integrate is usually on the office side. Similarly, in many other cases: any process of automation of small and medium-sized businesses traditionally begins with 1C products and continues with their use.
As a business consultant, I often come across questions about what 1C is, what kind of structure this software product can have, and generally how this whole system works. They are usually asked by web developers who have to deal with integration issues. the site and 1C, programmers specializing in mobile applications and other professionals who, by the nature of work with 1C programs, have to face infrequently.
In this article, I decided to collect answers to the most frequent questions that constantly arise in my work. And so I want to warn you right away: the article is intended for people familiar with IT-technologies, businessmen, accountants, people far from the IT-sphere, most likely, it will be difficult to understand some nuances. Of course, I will try to write as simply as possible, and do not plan to delve into the technical nuances at the code level, but still, certain terms and concepts to non-specialists may seem complicated.
A few words about my experience with 1C
At one time, I worked as a 1C programmer in a large project, then I took the position of a project manager, for quite a long time I was the head of a project department who was exclusively involved in tasks in 1C.
Update of 02/25/2018: If you are faced with a choice of 1s for purchase, I recommend the article “How to buy 1s correctly”.
Now, as I have written more than once, I work as a business consultant in the field of small and medium business. I am constantly confronted with various tasks of work automation, and, as a result, with 1C software products. Most often, as a business consultant, I hire 1C specialists to solve certain tasks, I have a permanent team, I also hire outside specialists, including freelancing. In very rare cases, I write something on 1C myself, most often, if I need to urgently solve a small problem.
On the other hand, I am going further and further away from constant work with 1C products. If at the beginning of my career, working with 1C programs brought me 100% of my income, today the implementation of some 1C solutions takes no more than 20% in my work, the rest are websites, these are CRM systems, etc.
And so, while I was still not too far away from the issues related to the 1C program, I decided to systematize my knowledge, collect and record important aspects and nuances of working with these software products
A little more about 1C and why I am writing all this
I myself know that I was going, as they say, to embrace the immense. And so - another warning:
- I plan to create a whole series of articles about 1C, where I will talk about this software product from different points of view. This article is intended primarily for programmers. And therefore I place it on Habré. The following will cover a wider range of concepts, including interesting, to businessmen and users of 1C software products, and therefore they will be posted on the Megamind.
- I will not delve into the nuances of applying the code, to other technical details that each of you can independently read on the official 1C website, on support sites, on well-known forums, etc.
- I will not discuss the nuances of the work of a particular version of the platform. Moreover, most often I will speak about the platform 8.3 as the latest actual at the time of this writing, as well as the typical configurations that are most in demand by my clients (medium and small business).
At the same time, I don’t just want to help a web programmer or another specialist understand where to look for the right piece of code, I want to help deal with what it is - 1C.
Today, 1C on its own has made such an amount of confusion in product descriptions, requirements for the level of specialists who will customize the system, choice of platform, configuration, plug-ins, add-ons, versions, etc., etc., that the 1C system personally begins to remind me of the old series “ Octopus". If someone else remembers, then in this film the commissioner fought a criminal gang, part of which was a banking group. And this banking system was so confusing that it was very difficult to understand where the money came from, where it went, how this or that unit works and, most importantly, why.
In the 1C system, the efforts to “tangle” the user, I think, are aimed at one thing: you don’t need to figure out anything, you just have to pay. And many businessmen come to the fact that they pay and the truth, not figuring out whether they need this update, whether they need this product. Just pay and that's it.
I will try to unravel the “Sprut tentacles” and structure the general understanding of how the 1C system works.
Programmers also want to be reminded that any technical information you can find on the 1C website. I do not plan to dwell on these nuances at all. I will write in simple language, as far as possible, on matters of principle.
And if you need any specific technical nuances of 1C work, then you can always use the following resources:
In most cases, the answers to your questions can be found on one of these resources. There are many more forums and other things, but most of the solutions are there.
1C as an ecosystem
When a businessman, a lawyer, an accountant, a salesperson and another user is confronted with 1C programs, very often there is a wrong understanding of what it is. It seems to someone that 1C is a convenient accounting system, to someone that it is a system for automating an online store, someone doesn’t really understand what it is about. It even seems to some that with the help of this or that 1C product, you can solve any business problem, you just need to choose the right product and, maybe, modify it a little.
The reason for such obviously erroneous variants of perception is that no one understands what 1C is from the point of view of the platform. Everyone sees something specific. 1C itself makes even more confusion, because it actively supports all these misconceptions because of its marketing, which is trying to position 1C as a solution for all occasions and for any purpose.
In the article Why 1C is bad and why 1C programmers do n’t like it so much, I already told you that in fact 1C should be perceived as a whole ecosystem. This approach will help to understand what 1C is and why it is needed.
So, from the point of view of the technical ecosystem, 1C consists of the following components:
- The 1C platform is the basis on which configurations are written, with which programmers work, etc. It is updated from version to version, and therefore it can be: 6.0, 7.7, 8.0, 8.2, or 8.3.
- Configuration. This is the next level of concretization. Configurations are written on the platform using 1C code. Users work with configurations.
- 1C Bitrix. The system for working with sites, you should talk about it separately.
One more section in which it is possible to structure the work of 1C is the organizational level. And here there are 2 parts that also do not work without each other:
- The company itself 1C and its staff of specialists.
- 1C partners (franchising) and system maintenance specialists. They should also be allocated as one of the components of the eco-system. Without specialists who modify and implement 1C, the system will not work. It can be 1C partner companies or freelance singles, it doesn't matter, they just have to be, otherwise the system will not be viable.
Next, I propose to consider in more detail the parts of the 1C eco-system.
The platform is the very basis on which 1C programmers write ready-made programs (configurations) for users using the 1C programming language. It is the platform that is the basis without which no component, no configuration will work. At the same time, the platform itself without configuration may be of interest only to the programmer 1C, for all others (users, various specialists) it is useless.
You can work on different versions of the platform. I know that in practice there is an application of version 8.2 and 8.0, as well as a rather old, but still popular 7.7, sometimes even the use of the first successful release 6.0 is found. But I will speak exclusively about version 8.3, as the most recent one at the time of this writing. Many of the things we discuss are equally relevant for past versions. But the part was added only in the latest releases. I would like readers to take this fact into account.
It is important to understand that users most often do not need the full range of capabilities that 1C provides. This statement is especially relevant for small and medium businesses. But the quality and reliability of work for users is extremely relevant. And in this respect, unfortunately, quite a lot of problems arise with software products 1C.
Programmers when working with 1C use a special programming language that was created by 1C developers to work with the 1C platform. Today it is available in Russian and English, but it was originally written in Russian, and therefore typical configurations are also written traditionally in Russian, although there is always the possibility to use English versions of operators in the right place if the programmer works that way. This language is a mixture of BASIC and C + with the addition of SQL for writing queries. In addition, it provides for the use of various designers and plug-ins.
One of the features of the 1C platform is the lack of modularity. The platform is something whole, it is impossible to clearly indicate here what code fragment (module) is responsible for what features. Of course, during installation you can specify which components to install and which not. But this feature is present only at the time of installation, and, in fact, offers a very small number of options.
Another remark that will help, I hope, to avoid the flame and disputes:
I understand that the 1C platform is a powerful and very flexible tool. And if you, being an experienced 1C programmer, set yourself the goal of writing something special on it, most likely, you will have great software. And for different cases, here you can find a solution precisely because of the wealth of opportunities of the platform. But I most often encounter typical configurations (Accounting, Trade Management, Salary and Personnel, Production Management), most users work with them, especially when it comes to small and medium businesses. And therefore, I will write about the choice of platform, and about some problems associated with the work of 1C, mainly from the point of view of working with typical configurations.
At the same time, I also understand that with a great desire and a sufficient level of knowledge of the programmer, many issues can be resolved, and the problems will not be relevant. That is why, if you use some unique developments, problems and questions that I reveal, it may turn out to be not at all interesting for you. For all the others - I continue.
Platform Delivery Options
When choosing a platform, it is very important to pay attention to the delivery options of the solution. The first thing that matters to you is the method of organizing work with data:
- File solution
- Client-server option
In the file solution, all working information will be stored in one common file. It does not matter which of the configurations you install. In any case, you will receive a service file with the CD extension (internal 1C format) in which everything will be stored: reference books, documents, registers, etc. If the number of users of your program does not exceed 4 people, most likely, this option is quite suitable for you. Moreover, it is much easier to set up the file system, here you can even do without the help of a 1C specialist. Part of the problem of speed can be solved with the help of RPD ( Remote Desktop Protocol - Remote Desktop Protocol ), but only in part.
But for the application of 1C in companies with a fairly active document flow and a sufficiently large number of system users (more than 4 people), the file system will not work satisfactorily. Users will almost simultaneously refer to the same file, which will constantly increase in volume. In addition, constant synchronization will be required, which will slow down even more.
To solve this problem, 1C tries to try on data caching, but this method so far brings even more problems. If someone is interested in this topic, it’s enough to type “1C cache problems” in the search system, there will be a lot of forums and discussions on this subject with a variety of problems, which ultimately boil down to the fact that caching does not always work correctly.
Client-server storage management is the organization of databases in tables on a server. These can be MSSQL, Oracle, or another database organization.
The advantages of this option are obvious: no matter how many users will access the databases, there will be no problems with speed and access. This is the option that most medium-sized businesses use, and that’s what I usually recommend to customers.
In most cases, companies install a Windows server on which the program itself and the databases are stored. Sometimes applications and databases are divided into different servers, but these cases are complex and quite rare, and therefore I will not dwell on them.
Versions 1C for different platforms
Today you can choose different versions of 1C software for work on various platforms. It is also worth figuring out what is worth buying in any case.
So, there are versions 1C:
- for Windows
- for linux.
For Mac OS at the time of this writing, the version is not developed.
The 1C program, which runs under Windows, was developed from the very beginning, it is a powerful tool familiar to everyone, which has been sufficiently developed to use it without any problems. The Linux version today is still considered new, and therefore quite “raw”, it still has a lot of errors, as in any new software product.
Entrepreneurs and any representatives of business are quite conservative people, the most important thing for them is stable reliable work. Most often, business doesn’t really need high speed of work or a huge list of opportunities, just how much stable work is required. In addition, Linux today is not too in demand in the domestic business. That is why it is very rare to encounter this version.
Component base 1C
Component base 1C is very extensive, it has a huge number of possibilities, while 1C constantly splits up and adds features. Those. in the case when 1C developers need to create something new, they almost always create a new type of object. For example, when web-services were required, the developers did not begin to make some kind of plugin, but simply introduced the concept: web-service. Similarly, for many business processes in the company 1C most often create a new component, even in cases where it would be possible to simply modify the existing one.
What can be said about the components of the 1C platform:
- Some components have been working for a long time, some since the creation of the software product. They are stable and reliable.
- Some components have been added recently, some are being added right now. Most of them are very poorly tested, and therefore it is necessary to work with them with extreme caution.
When choosing a component with which you will work, you should always pay attention to when it was added. Professional 1C programmers have this rule: when developers add a new function, if possible, bypass it, until a sufficient amount of time passes. Those. they wait until the component is tested in practice, the main “bugs” are identified and corrected, and only then they begin to work with it actively.
One of the components of negative reputation 1C is the practice of the company to constantly add new untested solutions. Given that often already embedded components work poorly, they have not yet fixed bugs, and the developers have already added something new. It can be not only components, it can be new functions for existing objects, new methods, etc. This problem - the constant availability of "raw" software, constant "bugs" and their permanent fixes - will be faced by all programmers who work with 1C.
Users may also encounter this problem - errors and unstable software operation when working with the platform. There is a specific set of 1C maintenance functions that the user can perform. For this there is a user interface of the platform. And here it is worth returning to different versions of the user interface.
The 1C platform consists of many different components that are constantly being added, expanding the capabilities of this product. In addition to documents, reference books, various registers, there are also various components for input / output information, i.e. user interfaces.
On this basis, you can choose:
- Native 1C client. This is a traditional software interface, when 1C is addressed to 1C.
- Work through the browser.
- Work through the mobile application.
Each of the options has some limitations. You can read more about them on the official 1C website.
The native client is also divided into a series of subclients, which brings additional chaos to the question of software choice. The most important thing here is to choose the “thick” or “thin” version of the client. At first glance, the choice here is not critical, especially for the programmer. In fact, when working with the configuration through the interface, problems may arise due to selection errors.
What is the difference between these subclients?
"Tolstoy" requires a wide (thick) communication channel, "thin" lacks a minimum. The vast majority of my customers use a “fat” client, since local or Internet channels are now all good, there are no problems with their “width”. On the other hand, the “thin” client has certain limitations in work; there are things that cannot be done in it.
Web client (work through the browser)
Web-client - is working with the program 1C through a browser. Those. You use a certain technology that allows you to access the database via the Internet, using a convenient browser. In this case, the interface is completely outlined directly in the browser.
This option imposes certain limitations; you need to keep this in mind. On the other hand, work with the Web client is fairly stable, well-established, brought to a certain logical conclusion. That is why quite a few people use this interface option. Working with 1C online is very convenient and even necessary.
This client option from 1C appeared relatively recently and so far has not been in special demand. The reasons for this relationship:
- The client was very difficult. In order to configure this program, a person must know both 1C and mobile technologies at the same time, and, deep enough, at the code level. It is clear that finding such a specialist is quite difficult, which is not conducive to the popularity of a software solution.
- The technology is still very "raw" and poorly debugged. I personally tried to apply this solution for my clients, talked with colleagues who also got acquainted with this technology, and at the moment my opinion and colleagues agree: it is easier and more convenient to create some kind of mobile application than to use the option from 1C.
The mobile version has to combine a lot of things, it requires the work of several specialists who will work together and help each other:
- Setting up access to the database from the outside;
- Security issues;
- Setting up a server for working with mobile applications;
- Setting up software 1C;
- Setting up web applications (as needed).
All this is necessary to ensure the correct operation of the mobile application from 1C. It is clear that it is difficult and expensive to assemble such a team of specialists, and therefore this decision is not popular in small and medium businesses.
Platform 1C: summary
The 1C platform is very functional, it has a huge list of various possibilities. And this amount naturally goes into complexity. As a result, the threshold for entry into work with 1C for a programmer is very high. Clients hear about the various features of 1C, asking the programmer to help in their implementation. This means that the specialist must be constantly updated on the updates, understand and know a variety of things.
It is very difficult to find a programmer who will be able to understand everything at once at the program level: work with 1C, web programming, work with mobile applications, etc. This is possible at the conceptual level, i.e. on the one on which I now share my knowledge.
But customers usually do not understand this, and begin to demand from the 1C programmer the introduction of a variety of possibilities.
On the other hand, the 1C platform is constantly changing, it has a huge number of options, many different solutions, as a result - a huge number of bugs and their fixes.
All this together leads to a positioning problem:
- On the one hand, there is 1C company, which tells customers that 1C is simple and convenient. They never write that for servicing 1C you will need a specialist with special knowledge that it is difficult for programmers to work with modern 1C.
- On the other hand, in reality, the client faces all these problems. And well, if he comes to the aid of either a well-worked team that implements 1C, or a business consultant with my level of knowledge, who will be able to find the right specialists and set the right tasks for them. In other cases, the user is waiting for a lot of problems in the implementation process.
So, briefly about the 1C platform: a huge number of opportunities, a high degree of flexibility, a lot of different solutions. And at the same time: poor implementation quality, ever-increasing complexity of the solution, a huge number of bugs in each version.
At the conceptual level, I think there is enough information. And you can always find technical details on the 1C resources that I recommended above.
1C configurations are ready-made software solutions that are based on a specific version of the platform. Configuration is something that users work directly with, the software environment in which they keep current records, work with documents, reference books, etc. Users often may not know what their platform is worth. But what specific configuration is used, they always know.
- Typical - written by 1C. They are all present on the site 1C.
- Non-standard - written by partner companies.
At the user level, these two types differ as follows:
- Typical configuration creates and maintains the company 1C. In most cases, they are more qualitative; in these configurations, work with the code is better organized, the most optimal solutions are used, and errors are promptly corrected. Of course, everyone constantly hears about the “eternal bugs” in typical 1C configurations, and they are really constantly present there, but still, it is worth paying tribute to the company's specialists. They correct critical errors really quickly.
- Non-standard configurations are written by 1C partner companies, and here it is quite difficult to say something definite. Such configurations are very different. Most often they are written for the occasion: industry (for a particular industry) or written for a specific case (a particular company). And here it is necessary to understand that 1C partner companies for the most part have a fairly high turnover of personnel. And therefore the configurations are written in them rather unorganized. One programmer begins to write, continues - another, completes - the third. At the same time, each of them brings in something of his own, his own understanding, decisions, ideas. And the works of the predecessor are applied as it is convenient, and not as it was intended.
Maybe you remember the funny cartoon "Three of Prostokvashino"? There, a boy, Uncle Fedor, wrote a letter to his parents, but he did not finish writing, he was distracted, and his friends took turns writing for him: a cat and a dog. And each of them talked about their problems. As a result, the boy's parents were surprised to find out that “his legs ache, the tail falls off”. It is by this principle that very often non-standard configurations are written.
The lack of continuity in writing atypical configurations, and often sufficiently detailed documentation, leads to the fact that in all matters of implementation and improvements you will have to contact the company that developed this configuration.
Non-standard configurations also come in two forms:
- Written on the basis of the model. These configurations are created by adding functionality to some typical one. For example, there is such a product as 1C: Trade Management and CRM. Here combined a typical configuration of the Office of Commerce and the CRM system. Interestingly, the creators of the configuration company Rarus, it is called the trade management subsystem, although in fact - it was the basis on which the entire configuration was written.
& nbsp & nbsp & nbsp Advantages of such configurations - they are more functional in comparison with the typical ones, often very necessary features are added to them.
& nbsp & nbsp & nbsp Cons- The developers of these configurations often do not have time to create their own updates in a timely manner. Thus, it may very well be that 1C has already posted its update options, and the user of a non-standard solution will have to wait some time until the developer creates a similar update for a particular solution. In addition, such improvements are also quite "raw", they can be a lot of mistakes.
& nbsp & nbsp & nbsp
- Configurations written from scratch. When creating them, typical configurations are not used at all, solutions are written for specific tasks.
& nbsp & nbsp & nbsp Pros : the configuration was written exactly for the customer's needs, there is everything you need and almost nothing superfluous.
& nbsp & nbsp & nbsp Minuses : usually when writing such solutions, the code standards are not met, it is very difficult to refine such software products, most often, only the author can do this quickly enough.
If I came to clients and saw that there is an atypical configuration written from scratch, I try to either not touch it at all, or completely change it to a convenient and universal solution. Quite often, such solutions are not actually required, especially in small and medium businesses. In this case, typical products are easier to maintain in the future, and, as a result, cheaper, which is always important for business.
It is important to understand that entrepreneurs are usually looking for exactly the configuration. For example, to automate the work of accounting, they need 1C. Accounting, and for the organization of work with clients - 1C. Trade management. It is these products that they understand, and therefore are interesting.
Thus, it is important for a programmer to know which platform to work with. The user is interested in the configuration. In this case, without the help of 1C: in most cases, the business programmer will not be able to customize the work of the desired configuration. That is why I call 1C specialists an integral part of the 1C eco-system.
Let me remind you that 1C specialists are also different. Some are engaged in the development of the platform and standard configurations (employees of 1C), others are its partners and are engaged in implementation and refinement, and others - privately help to solve certain tasks related to the implementation of 1C.
I will tell you about who 1C programmers are, how they differ from each other, what 1C franchising is and about other equally important concepts.
Also, do not forget about such an element of the 1C eco-system as Bitrix. I will also talk about him in the future, most likely, I will devote a separate article to this system.