📜 ⬆️ ⬇️

A little more criticism 1C

Not so long ago there was another post criticizing 1C. Post is good, but ... like by. It is worth supporting a colleague, and additionally point out some important points.




Before you start


The 1C developers have done a great job and have come a long way. Today we have a wide range of tools for a fairly fast implementation of a variety of solutions for different operating systems. The mass of ready-made developments is often the best choice for small and medium businesses. This product is tested, maintained and widely documented. You read the developer’s guide and you wonder how well everything is thought out.
')
As in any huge project, you will not get anywhere from the hefty inertia, and there are bad decisions or things that are deprived of attention.

My five kopecks about "1C-ki brakes"


I stand in front of the blackboard (agile), and my view clings to five tasks with different formulations, but the same reason. Here is one of these tasks, the most remarkable:
In the processing of downloads of prices, balances and new products - an error is issued - Lock conflict ... and I can not download new items ...

It so happened that I rarely came across “clean” configurations. These are mostly reworked or heavily redesigned configurations. On the one hand, you can of course put an end to the organizations that own such configurations, and simply do not work with them. On the other hand, in such companies, as a rule, there are more “moves” and it is more interesting to work.

In general, you have already seen these two words , right? I wonder who had what feelings when you encountered this on your first time? What did you say when you were asked the necessary amount of time for this task?

The sadness is not in the fact that there is such a phenomenon, but in the fact that when I, for example, first encountered this, I didn’t know what to start at all - in 1C-ke there is no regular means to combat this ailment. Although the phenomenon is quite frequent. I think many will agree with me that in the configurator menu there should be an item dedicated to this issue.



Today we have a tool, but it is somewhere in the depths of the Performance Management Center, which is part of the Corporate Toolkit package , which is, in general, not cheap. In addition, the documentation for it is available only by subscription ITS (Techno enough). There are, of course, third-party tools, for example , this .

I know that in large growing companies, 1C developers are making a lot of effort so that hundreds of users can work comfortably. Even where every second certified specialist is in the 1C department, the total time on ordinary locks reaches frightening values. I myself worked in a similar organization, communicated with colleagues who came from other large companies. I do not pretend that this is the case everywhere, but the following picture seems to me: the mass of users passes beyond a certain threshold, after which nothing helps, even the corporate tool package. Further two options.

Option 1. Some 1C developers are replaced by SQL developers. From the configuration, everything that is connected with the database is torn out. Writes a new database, which contains all the logic. And the forms communicate with the new database only by calling stored procedures. Exchange with other databases is improved through the same Service Broker. As a result, it all works very quickly. There remains one unpleasant trifle - from 1C-ki it is impossible to transfer a table of values ​​to the stored procedure. Instead, send XML or JSON.

There is a sequel. When it comes time to buy another license package for 300 jobs, there is an understanding that 1C developers are not cheap. As a result, the idea arises to replace the “face” of 1C with PHP or C #.

Option 2. The company is trying to implement SAP.

And why? Because I am standing in front of the board, I drink tea, and I think it would be nice to decide between tasks a couple of locking tasks. But it is not known how long it will take, but I have plenty of other tasks.

Data exchange and configuration


Modularity is better than monolith. So? Well, when it turns out, when developing, break the whole into parts. When 20+ users work in 1C, it would be a good idea to dissolve everyone in different corners. Make sure that each direction has its own configuration. For example, the warehouse has its own, its own content, its own couriers and accounting, of course, too. So locks less. Many small configurations are better than one hefty. It is easier to develop, etc.

I am sure that in the future it will be like this, you go into the store, you see the developments of different companies, you gather for yourself small configurations that are required for business, you connect to the system and use it.
So what will I need? Customer order, online cash, Tinkoff bank client, Sber bank client, returnable packaging ... no, returnable packaging is not needed ...

It really takes time for me to dock configurations, even those that revolve on the same platform version. I'm not talking about the docking of typical configurations, in which the exchange has already been written. Although there is sometimes something to be surprised. For example, if an accountant loads documents to his database once a quarter (this is more convenient for a person), then the time of upload and download is measured in hours. From one type to another type. I once looked at the exchange, which lasted more than ten hours. Can you imagine if there was any mistake? That you have eliminated, put the download again ... bang! Again.
This happens. For example, I set up unloading from a typical UT11.3 through a universal format with default settings (Another program ...) for the sake of an article. Three hours later:
Errors occurred while sending data (see log).

The path to the exchange manager is not specified (empty, then the default manager is used). Look at the magazine:
Event: Sending.
Object: Cash flow item, Loss from exchange rate differences (e1cib / data / Handbook. Articles and Cash Funds Modes? Ref = ae8500259075533411e7205499471b7a).

{General Module. Exchange XDTO Server. Module (4605)}:
Not found AML for the metadata object.
Metadata object:.
Call the Text Error Exception;

What is it? Why? For what? Suppose that POD is a data exchange rule ...

I do not want to talk about the exchange with the online store. Just give a couple of tips, for those who have a dofig of the nomenclature and / or properties, suddenly someone does not know: so that he does not “thresh” for hours, the first step is to turn off the transfer of pictures. Images need to be uploaded separately to the site resource (for example, an FTP server for images). To do this, the rules are made, in it we track changes in the pictures (for example, according to the data version) and transmit. In different companies, I saw different implementations, but the essence is this.

So, docking applied solutions. There is a special configuration " Data Conversion 3.0 ". However, in order to succeed, you need to specify such a trifle as the file with the text of the “Manager of the Exchange Through the Universal Format” module (for UT11.3, the module contains 46+ thousand lines of code). Where is the generator of this module hidden? And if you have a new empty configuration?

You say - use XML serialization, who's in the way? And I think it would be great here: I made the same objects in both configurations, poked with my right mouse on each one directly in the configuration tree and chose which configuration to transfer data to. And in the module of the object a couple of events on this topic (Before transferring data, before receiving data). And so quickly transmitted. True, this is all somewhere on the verge of science fiction. It’s like a man’s flight to Mars.

Then so. It would be great if the function “Plans of Exchange. SelectChanges” would take the maximum size of the selected pack. Not immediately everything that has accumulated there, but for example a pack of 100 pieces. At the next iteration - another 100 pieces. And so on. It will work faster if there are a lot of changes. And the block will not be long.

Compatible with 1C




To invent a bicycle is bad. Especially if you were not going to do it. Instead of investing in the development of your own product, it is more profitable to buy a ready-made production solution. It can be a sales analysis, logistics subsystem, routes, addresses, courier applications, whatever. Here are the rules for the ability to get the icon "Compatible with 1C." Often, ready-made solutions are offered on the basis of platforms other than 1C. The rules about such decisions said a little:
The following groups of software products are accepted for certification:
...
8. programs supporting data exchange with 1C: Enterprise at the file level;
9. programs that have other ways of interacting with 1C: Enterprise (considered individually).

General requirements

1. The software product must be designed for circulation distribution, and not have a specific implementation orientation.
2. The product must have a printed manual.
3. The manual should explicitly describe the interaction of the product with 1C: Enterprise.
...
5. All end-user-oriented products must have installation tools.
6. When making corrections or changes to a certified product, the developer ensures that the modified product complies with the requirements for certification. In case of making changes that violate the requirements of certification, 1C has the right to suspend the certificate.

Requirements for integrated file-sharing products.

Software products integrated with the “1C: Enterprise” system on the basis of file sharing (upload / download) should use 1C: Enterprise standard tools for working with TXT and DBF files from the side of 1C: Enterprise.

And that's all. Solution developer receives an icon. Your customer reads materials from a third-party product, sees that there is integration with 1C, buys, and then “implementation” begins. Not rarely need to pay extra. Some products contain a really simple way to integrate, such as external processing or configuration extension.

Is there an EnterpriseData? This is exactly the tool that needs to be used to interface with non-1C solutions. There everything is already taken into account. If not taken into account, it will be added to the new version of the format. No processing is required for interfacing with the API, and even more so configuration modifications.

If a single entity is used in a third-party solution and configuration, there are always problems with object locking. I met the system, within the framework of even one it was suggested to the user with special rights to decide which changes to save and which not. I am silent about the interaction with 1C-other.

In another solution, the dudes decided not to bother and just give an error when trying to transfer the edited data.

Object locking is required directly separately and explicitly mentioned in the rules. Sometimes it seems that not all developers of mega-solutions are aware of what it is all about .

But the most unpleasant, when the label "Compatible with 1C" no. And it says something like:
There is a typical integration for 1C:
- Trade Management 10.3 and 11.3
- Integrated Automation 2.0
- Manufacturing enterprise management
- ERP

I once received such an answer from technical support of a similar company, when their processing began to regularly produce an error:
Company X provides typical processing for exchanging data between 1C: UT and X free of charge ...

That's the whole conversation. Strictly need with such guys. The nuts would tuck in. It is interesting to find out from lawyers - can anyone on their website write that he has “integration with 1C”?

Managed Forms


How cool the designer for creating managed forms! There are shortcomings (for example, a full-time search string cannot be used for all labels, or anything can be displayed when displayed), but on the whole it is very convenient to create forms. Rush of creativity as limited as possible. The developer is protected from interface design errors (you can only make the form too overloaded). They are the same for different developers. Small boxes turn out beautiful. For this I want to say thank you to everyone who invented it. Guys - this is cool, it should be so.

The ability to publish and open all this in a browser opens up wide possibilities and, in general, is simply great. There are some shortcomings, but over time they will leave.



As for the code, it so happened that the architecture of the managed forms slowed down the development. I have some statistics, depending on the developer and on the purpose of the form, if you do not take into account the simple ones, where you just need to distribute the details on the form - then the slowdown is about 2-4 times. This applies only to the forms themselves + asynchrony. But apparently nothing can be done about it.

Sometimes the customer does not like what it looks like, let's say on a mobile device. Then you have to give pages made separately through HTTP-services.

From the main, everything seems to be


I am sure that the guys from 1C themselves know all this. But, as I said at the beginning, the large inertia of the product and the complexity of the problems do not allow “to do it right now.”
See you in the comments!

Source: https://habr.com/ru/post/346324/


All Articles