1b.app
Link copied -

The action "Create a product from a process based on additional fields of a process product" does not work correctly

Answers:

Good afternoon. You need to pass the brand id and not its name. If you need to transfer the name and search or create a brand by name, you can refine it. Takes 1h
02.06.2022, 16:02
Original comment available on version: ru

Look, do I have improvements on my balance sheet?
It should have been a couple of hours, if so, then we are doing a revision, a convenient thing
02.06.2022, 16:05
Original comment available on version: ru

Good afternoon. Added a separate value for the selection "Brand (name)" . If the brand is not found by name, it will create a new one with the same name and prescribe the product.
03.06.2022, 11:53
Original comment available on version: ru


Due to the fact that products are the most painful topic in Boxing for me.
(since Boxing will not withstand the update of all price lists)
I want to express my deep gratitude for the information that brand IDs are needed to create.
And adding the value "Brand (name)" with the search logic is very cool.
I also wanted to clarify what the item "consider real products" is responsible for?
Because there is another problem:
Under the condition of the prohibition: "create products with the same SKUs in the system" - at the moment, any product is created ... through this action, regardless of whether such a product exists in the system or not.
Perhaps I'm doing something wrong?
10.06.2022, 11:53
Original comment available on version: ru

An order may contain several different objects listed as products:
1. Real goods that have a card
2. Dummy products that do not have a card but are added to the order. You can add products to the order without being linked to the product card, set prices for them, and so on.
Here is a checkmark that makes it so that only products from 1 item are taken into account
Regarding the fact that boxing can “not withstand” something, a very controversial expression. How many vendor records and how long do you need to ship? If you are running all the supplier's goods through orders, most likely you are doing something wrong because there is a special functionality "Download supplier prices" that specializes in price lists from suppliers and can process 100-200k rows in xls in a couple of minutes
10.06.2022, 12:06
Original comment available on version: ru

I agree, I didn’t think: “it won’t survive” this previously referred to OneBox, subject to updating 1-1.5 million positions, via api from the site.
Having a server: CX51: 8 VCPU / 32 GB RAM => should pull the price of 500 thousand, right?)
"Create a product from a process based on additional process product fields"
If "Consider real products" I thought it would work "Unique articles"
And it will not be possible to create a product that already exists in the system with the same article number.
13.06.2022, 10:22
Original comment available on version: ru

https://app.swaggerhub.com/apis-docs/Bodya44/OneBoxOSapiv2/2.0 the new api is fast enough. If you need to update, for example, only a few fields, then one request to update the product can take up to a second. Also, goods can be updated in groups through it, 100 pieces each. Accordingly, you can make a request to update 100 trial products, measure the response speed from the box and calculate how long it will take to update all your products. Also, do not forget that in api you can knock in a multi-thread, I think 10 threads will be enough. Thus, you will increase the speed of uploading your data by another 4-5 times. How painful this will be for the server and its database (the load will mainly be on the database), you need to look at a specific example. I would bet that if you want to update the prices of all products, you will be able to update 500k products in 10-30 minutes.
To begin with, I advise you to just try to update several products through a new api with one request and measure the speed on your server, it seems to me that it should suit you completely.
14.06.2022, 09:33
Original comment available on version: ru

As you conduct tests, please unsubscribe - it has become very interesting what will come out of you on real data.
14.06.2022, 09:51
Original comment available on version: ru

I get something like this:
[{"id":"100854","price":1293},{"id":"100965","price":1293},{"id":"100853","price":1293},{ "id":"100176","price":602},{"id":"100175","price":1302},{"id":"100177","price":802},{"id ":"100178","price":802},{"id":"95034","price":1193},{"id":"95131","price":1193},{"id": "95122","price":753},{"id":"97191","price":472},{"id":"97190","price":472},{"id":"97184 ","price":472},{"id":"97189","price":472},{"id":"97183","price":472},{"id":"97188", "price":472},{"id":"97186","price":472},{"id":"97182","price":472},{"id":"97187","price ":472},{"id":"97185","price":472},{"id":"96028","price":566},{"id":"96019","price": 1117},{"id":"96020","price":1117},{"id":"95104","price":907},{"id":"95147","price":1282} ,{"id":"96027","price":1402},{"id":"95144","price":984},{"id":"95145","price":984},{ "id":"95146","price":984},{"id":"95143","price":453},{"id":"96024","price":1766},{"id ":"96542","price":1766},{"id":"96021","price":1039},{"id":"96022","price":1039},{"id": "96023","price":1039},{"id":"96640","price":913},{"id" :"96726","price":1337},{"id":"98395","price":1202},{"id":"96727","price":1337},{"id":" 95179","price":661},{"id":"95130","price":661},{"id":"95124","price":661},{"id":"95123" ,"price":661},{"id":"97217","price":1038},{"id":"97218","price":1038},{"id":"97219"," price":1038},{"id":"97220","price":1038},{"id":"95129","price":823},{"id":"95128","price" :823},{"id":"95127","price":823},{"id":"95126","price":823},{"id":"95125","price":823 },{"id":"95033","price":823},{"id":"96545","price":841},{"id":"97434","price":841}, {"id":"96724","price":510},{"id":"96723","price":510},{"id":"96725","price":510},{" id":"95148","price":731},{"id":"97161","price":472},{"id":"97159","price":472},{"id" :"97156","price":472},{"id":"97160","price":472},{"id":"97158","price":472},{"id":" 97155","price":472},{"id":"97157","price":472},{"id":"95030","price":1237},{"id":"96069" ,"price":1237},{"id":"95149","price":1248},{"id":"95031","price":1248},{"id":"95150"," price":1248},{"id":"95032","price":1358},{"id":"95121","price ":1358},{"id":"97171","price":472},{"id":"97170","price":472},{"id":"97167","price": 472},{"id":"97164","price":472},{"id":"97169","price":472},{"id":"97166","price":472} ,{"id":"97163","price":472},{"id":"97168","price":472},{"id":"97165","price":472},{ "id":"97162","price":472},{"id":"94994","price":698},{"id":"97694","price":1248},{"id ":"97180","price":1003},{"id":"97177","price":1003},{"id":"97179","price":1003},{"id": "97176","price":1003},{"id":"97173","price":1003},{"id":"97178","price":1003},{"id":"97175 ","price":1003},{"id":"97172","price":1003},{"id":"97181","price":902},{"id":"97174", "price":902},{"id":"99955","price":852},{"id":"98763","price":268},{"id":"99078","price ":257},{"id":"99079","price":298},{"id":"95602","price":245}]
updating the price of 100 products in one request by the product id in the box, the response time to the request: 0.89 sec on a cold one. Cold means that this is the first request for these products, i.e. their fetch is not in the mysql cache. If you send the request again, then this is already about 0.5. sec. It is important to understand that these are almost ideal conditions without automation for the product and a local machine with 6 processor threads at 2.8 GHz.
There is also a fast parameter in the api. Then the box does not perform the updates that you sent at all, but gives you the task id. When special workers reach the stage of performing updates, the request will be executed and you can get the result of processing by the task id if you need it. With it, you will reduce the response time to ping between servers and engine startup time, which is about 0.1 sec.
If we take your data and my calculations, then 500k products is about 500k/100=5000 requests to api. Considering that everyone will work in 1 second (and your server obviously has a better processor and the response should be faster if the ping between servers is not large). 5000 requests is 5000 seconds ~ 83 minutes. If done in several threads, it can take 10-15 minutes to update all 500k products. You also need to understand that you hardly need to unload all 500k products every hour, and you need to update only those that have undergone some changes. Which reduces 500k items to a few hundred transfers every hour.
But even the transfer of 500k goods per hour in a single thread seems to me quite a normal result. So your words about the fact that boxing won’t pull something seem to me at least not justified, and at most a little offensive)
ps waiting for the results of your tests with your data. The proof that 100 products can be updated in less than 1 second is above.
14.06.2022, 10:11
Original comment available on version: ru

Good evening.

anonymous hamster
OneBox production wrote:
As you conduct tests, please unsubscribe - it has become very interesting what will come out of you on real data.

Good evening.
I apologize for such a "quick" response.
If I knew, and most importantly, I could, then I would have done it on the same day ... and carried out tests.
And so I wait and hope that the site developers and the integrator will agree and implement this functionality...
And I will definitely give you feedback.
04.07.2022, 20:50
Original comment available on version: ru


anonymous hamster
OneBox production wrote:
Good afternoon. Added a separate value for the selection "Brand (name)" . If the brand is not found by name, it will create a new one with the same name and prescribe the product.

Everything is great, as I said earlier.
Tell me, please, when creating a product through add. fields are duplicated by article, subject to prohibition.
Perhaps I'm doing something wrong?
Or is it all in need of improvement?
By type, how is the brand?
If the article exists, then we substitute the data of the product with this article.
If it does not exist, then we create an article.
Ideally, when searching for an article, the brand would be taken into account.
Type:
1. If the brand is not found by name, it will create a new one with the same name and prescribe the product.
2. If the brand is found, then we create a search by Article, taking into account the brand.
3. If the Article with such a brand does not exist, then we create a new product with such an article and brand.
4. And if it exists, then we substitute the data of the "found product"
04.07.2022, 21:03
Original comment available on version: ru

it all depends on how you create the product. Give a sequence of actions or an example of an api request with which you create a product, then I can definitely suggest an algorithm. If you create a product through apiv2 /api/v2/product/set/ then there is a findbyArray field in which you need to pass a list of fields by which you need to search for a product before creating it. Those. if ["articul", "externalid"] is passed there, then first there will be a search for the product by article and external id and then insertion.
05.07.2022, 17:17
Original comment available on version: ru

Please join the conversation. If you have something to say - please write a comment. You will need a mobile phone and an SMS code for identification to enter. Log in and comment