Wiki source code of Выгрузка в TecDoc

Last modified by Александр Молчин on 2025/06/24 13:10

Show last authors
1 = **Сборка таблиц для загрузки информации по списку артикулов одного бренда через DMM** =
2
3 DMM - личный кабинет TecDoc, через который происходит загрузка наших товаров. DMM - старая версия личного кабинета, с 2023 г. появился TecDoc ONE - новая версия личного кабинета. Основное различие - загрузка стала более удобной и легкой для пользователя, требования к уровню знаний Excel снизились плюс снижается время между загрузкой и отображением в каталоге (8 дней у DMM и 1 день у ONE). В настоящий момент DMM работает для Trialli, Luzar, Startvolt и Airline. ONE работает только для Carville Racing. В планах у TecDoc отправить все бренды на ONE во втором квартале 2025 г, но на 17.06.25 точной даты и алгоритмы сотрудники TecDoc не предоставили (вопрос задавал в июне). Надо уточнить, но возможен вариант не переезжать на ONE и остаться на DMM.
4
5 **Ссылки на DMM**
6
7 DMM по Luzar / Airline [[http:~~/~~/192.168.1.79:8181/>>url:http://192.168.1.79:8181/]]
8
9 DMM по Trialli / Startvolt [[http:~~/~~/192.168.1.76:8080/>>url:http://192.168.1.76:8080/]]
10
11 Официальная документация: [[attach:TecDoc-Data-Format_Version_2.7_EN_2.0.29.pdf||target="_blank"]]
12
13 **Файлы по сбору и подготовке информации**
14
15 Файл СБОР 2.0: [[attach:СБОР 2.0.xlsx||target="_blank"]]
16
17 Сбор таблиц в TecDoc: [[attach:Сборка таблиц TecDoc.xlsx||target="_blank"]]
18
19
20 == **ОБЩАЯ СХЕМА** ==
21
22 **Общая логика всего процесса:**
23
24 1) Выгружаем файлы по выбранному списку артикулов по заданным шаблонам как через SQL, так и через NPR
25
26 2) Делаем проверку на полноту информации, ищем ошибки
27
28 3) Отдаем ошибки маркетологам
29
30 4) Когда поступает сигнал от них, что исправления закончены или нет нужды в исправлениях, то делаем новые выгрузки по нудным разделам
31
32 5) Стыкуем значения NPR под формат TecDoc
33
34 6) Собираем таблицы в формат PRN
35
36 7) Делаем сохранение базы в DMM перед загрузкой
37
38 8) Загружаем информацию в DMM
39
40 9) Загружаем фотографии в DMM (составляем список незагруженных фото по всем артикулам, загружаем их в хранилище DMM, привязываем фото к нужным артикулам)
41
42 10) Делаем сортировку фото внутри артикулов. Бывает так, что сначала у товара со статусом "Заказано / В пути" есть только чертеж, а спустя время он приходит на склад и появляются его фото. На практике это происходит так: первой фотографией является чертеж, а живые фото следуют за ним. Нужно это отсортировать заново, чтобы чертежи встали в конец.
43
44 11) Собираем package (вся база данных - информация и фотографии) и отправляем на публикацию
45
46 12) Примерно через 8 дней информация видна в каталоге
47
48 **[[image:Алгоритм загрузки в TecDoc.png||height="537" width="1051"]]**
49
50
51
52 **Что должно получиться в финале (итоговые файлы):**
53
54 [[attach:Таблицы для загрузки.rar||target="_blank"]] - пример из последней загрузки Airline
55
56 Название файла 200.4826 означает, что это таблица № 200 из документации для бренда номер 4826 (поле Supplier No. для Airline)
57
58 Содержание таблиц:
59
60 001 - условно "сопроводительное письмо" о загрузке. Информации об артикулах в нем нет. Я его не собираю, копирую из прошлых загрузок.
61
62 200 - Артикул и Бренд
63
64 203 - Cross / OEM
65
66 209 - Штрих-коды
67
68 210 - Характеристики и их значения
69
70 211 - Номер группы TecDoc
71
72 212 - Страна, статус
73
74 400 - Применяемость
75
76 Информация о содержании всех полей таблиц есть в документации.
77
78 == **Выбор артикулов для загрузки** ==
79
80 Берем для загрузки артикулы, удовлетворяющие условиям:
81
82 Cтатус = “Заказано / В пути”
83
84 ИЛИ Статус = “На складе”
85
86 И Категория ABC <> “OUT”
87
88 И Категория ABC <> “ZAK”
89
90 И Категория ABC <> “ARC”
91
92 И Категория ABC <> “RLZ”
93
94 И Категория ABC <> “D”
95
96 Это будет Список 1.
97
98
99 Берем отчет Articles из DMM (см.ниже как его найти). Это список уже загруженных артикулов. Это будет Список 2.
100
101 [[image:1748502438816-408.png||height="374" width="378"]]
102
103
104 Удаляем Список 2 из Списка 1 и получим список артикулов для загрузки.
105
106
107 === **Выбор номера группы TecDoc для загружаемых артикулов** ===
108
109 Есть два сценария выбора:
110
111 1) Группа ранее загружалась, поэтому ее номер известен
112
113 В этом случае нужно взять **Номер группы TecDoc **из справочников:
114
115 [[attach:AIRLINE Группы TECDOC.xlsx||target="_blank"]]
116
117 [[attach:LUZAR Группы TECDOC.xlsx||target="_blank"]]
118
119 [[attach:TRIALLI Группы TecDoc.xlsx||target="_blank"]]
120
121 Бывают случаи, где внутри нашей группы (например, Газовые упоры в Trialli) содержится несколько групп TecDoc. В таком случае требуется условие, по которому определяется принадлежность к группе TecDoc (вхождение текста). На примере Газовых упоров это выглядит так:
122
123 [[image:image-20250507153434-1.png||height="52" width="559"]]
124
125 2) Группа ранее не загружалась
126
127 Если группа новая (= не загружалась в TecDoc ранее), то нужно выбрать ее номер из справочника группы TecDoc - [[attach:Generic Articles 2024 2.0.xlsx||target="_blank"]]. В нем нас интересует поле GenArtNo. Также можно вбить OEM артикула новой группы авторитетного бренда в каталог TecDoc - [[https:~~/~~/web.tecalliance.net/tecdocru/ru/login>>url:https://web.tecalliance.net/tecdocru/ru/login]] - и подобрать группу из выпавших артикулов.
128
129 Выбор группы делаю сначала сам, потом привлекаю маркетологов.
130
131 Если группы нет в справочнике Generic Articles, то можно написать письмо в TecDoc со списком групп для добавления. Такое мы делали один раз для Airline - добавление групп произошло через 3 месяца с момента подачи заявки.
132
133
134 (% class="wikigeneratedid" %)
135 == ==
136
137 == **Привязка к бренду (табл. 200)** ==
138
139 Требования из инструкции по содержанию строки:
140
141 [[image:20 супп.png||height="462" width="521"]]
142
143 Поля, актуальные нам:
144
145 ArtNo - Артикул в NPR
146
147 BrandNo - Номер бренда Carville из справочника TecDoc
148
149 TableNo - Номер таблицы = 200
150
151 (% dir="ltr" style="height:30px; width:30px" %)
152 |(% style="width:115px" %)**Бренд**|(% style="width:48px" %)**Номер бренда Carville**
153 |(% style="width:115px" %)AIRLINE|(% style="width:48px" %)4826
154 |(% style="width:115px" %)LUZAR|(% style="width:48px" %)4707
155 |(% style="width:115px" %)TRIALLI|(% style="width:48px" %)4772
156 |(% style="width:115px" %)STARTVOLT|(% style="width:48px" %)4471
157
158 (% class="wikigeneratedid" %)
159 TableNo - номер загружаемой таблицы
160
161 **Итоговая таблица:**
162
163 [[image:21 супп.png]]
164
165 == **Cross и OEM (таблица 203)** ==
166
167 Из БД делаем два запроса - OEM и Cross (прилагаю) с объединением их в одну таблицу. В DMM OEM и Cross лежат в одной куче, в отличии от NPR.
168
169 **Обработка OEM / Cross**
170
171 1) Убрать OEM / Cross, в значениях которых есть кириллица
172
173 2) Почистить OEM / Cross от лишних пробелов, служебных символов (переносов строк и т.д.)
174
175 3) Для загрузки берутся только те OEM / Cross, бренды которых находятся в справочнике брендов TecDoc (в DMM он называется Brands) = надо удалить значения tecdocId, равные null. Признаком нахождения в справочнике брендов TecDoc является наличие заполненного поля Tecdocid в справочнике “Производители OEM/Cross” в NPR.
176
177 4) Заменить ошибочные названия брендов (VALEO_INDI, BOSCH_STAH и т.д.). [[attach:Замена ошибок в брендах.xlsx||target="_blank"]] - в нем **Tecdoc id** меняем на **Tecdoc id для замены бренда.**
178
179 В конце СБОР 2.0 таблица должна выглядеть так:
180
181 1. Артикул
182 1. Номер бренда Carville
183 1. Номер бренда производителя TecDoc
184 1. Cross/OEM
185
186 Номер бренда Carville определяется так:
187
188 (% dir="ltr" style="height:30px; width:30px" %)
189 |(% style="width:115px" %)**Бренд**|(% style="width:48px" %)**Номер бренда Carville**
190 |(% style="width:115px" %)AIRLINE|(% style="width:48px" %)4826
191 |(% style="width:115px" %)LUZAR|(% style="width:48px" %)4707
192 |(% style="width:115px" %)TRIALLI|(% style="width:48px" %)4772
193 |(% style="width:115px" %)STARTVOLT|(% style="width:48px" %)4471
194
195 ==== **Запрос SQL для выгрузки Cross** ====
196
197 ~-~- Статусы: "Заказано/В пути", "На складе"
198
199 **SELECT**
200
201 b.name **AS** 'Бренд'
202
203 ,p.name **AS** 'Наименование ADS'
204
205 ,p.code **AS** 'Артикул'
206
207 ,c.code **AS** 'Код аналога'
208
209 ,om.name **AS** 'Производитель аналога'
210
211 ,om.tecdocId **AS** 'tecdocId'
212
213 **FROM** products p
214
215 **LEFT JOIN** product_group pg
216
217 **~ ON** p.group_id = pg.id
218
219 **LEFT JOIN **brands b
220
221 **ON** pg.brand_id = b.id
222
223 **LEFT JOIN** product_codes pc
224
225 **~ ON** p.id = pc.product_id
226
227 **LEFT JOIN** codes c
228
229 **ON** pc.code_id = c.id
230
231 **LEFT JOIN** oem_mark om
232
233 **ON** pc.oem_mark_id = om.id
234
235 **WHERE** 1 = 1
236
237 **AND** p.status_id **IN** (4,5)
238
239 **AND** b.name **IS NOT** null
240
241 **AND** c.code **IS NOT** null
242
243 **AND** om.name **IS NOT** null
244
245 **AND** b.id **IN** (1, 2, 3, 4, 5)
246
247 ~-~-**AND** p.code = 'ALED061'
248
249 **ORDER BY**
250
251 Бренд
252
253 ,'Наименование ADS'
254
255 ,'Производитель аналога'
256
257 ,'Код аналога'
258
259
260 ==== **Запрос SQL для выгрузки OEM** ====
261
262 ~-~- Статусы: "Заказано/В пути", "На складе"
263
264 **SELECT**
265
266 b.name **AS** 'Бренд'
267
268 ,p.name **AS** 'Наименование ADS'
269
270 ,p.code **AS** 'Артикул'
271
272 ,oc.code **AS** 'OEM'
273
274 ,om.name **AS** 'Марка'
275
276 ,om.tecdocId **AS** 'tecdocId'
277
278 **FROM** products p
279
280 **LEFT JOIN** product_group pg
281
282 **ON** p.group_id = pg.id
283
284 **LEFT JOIN** brands b
285
286 **ON** pg.brand_id = b.id
287
288 **LEFT JOIN** product_oem po
289
290 **ON** p.id = po.product_id
291
292 **LEFT JOIN** oem_codes oc
293
294 **ON **po.oem_id = oc.id
295
296 **LEFT JOIN** oem_mark om
297
298 **ON **oc.oemmarkId = om.id
299
300 **WHERE** 1 = 1
301
302 **AND** p.status_id **IN** (4,5)
303
304 **AND** oc.code **IS NOT** NULL
305
306 **~ AND **om.name **IS NOT** NULL
307
308 **AND** p.code **IS NOT** NULL
309
310 **AND** b.id **IN** (1, 2, 3, 4, 5)
311
312 **ORDER BY**
313
314 Бренд
315
316 ,Артикул
317
318 ,Марка
319
320 ,OEM
321
322 **Промежуточный вариант:**
323
324 [[image:14 супп.png||height="367" width="473"]]
325
326
327 **Итоговый вариант:**
328
329 [[image:15 супп.png]]
330
331
332 Вот изначальные требования к таблице (см. с. 149 в документации)
333
334 [[image:16 супп.png]]
335
336 == **Штрих-коды (табл. 209)** ==
337
338 == [[image:22 супп.png||height="419" width="587"]] ==
339
340 (% class="wikigeneratedid" %)
341 **ArtNo** - Артикул
342
343 (% class="wikigeneratedid" %)
344 **BrandNo** - Номер бренда Carville из справочника брендов TecDoc (см.выше)
345
346 (% class="wikigeneratedid" %)
347 **TableNo** - номер таблицы = 209
348
349 (% class="wikigeneratedid" %)
350 **GTIN** - Штрих-код / Штрих-код (груп.) из раздела Метрические данные
351
352 (% class="wikigeneratedid" %)
353 [[image:25 супп.png||height="300" width="720"]]
354
355 **Проверки:**
356
357 1) Из поля Штрих-код берем только значения с 13 символами (иногда попадаются значения с 14 символами)
358 2) Если группа = Диски тормозные или Барабаны тормозные, то берем поле Штрих-код (груп.), т.к. это парные товары, и них нет индивидуальной упаковки
359
360 3) Иногда у одного товара может быть несколько штрих-кодов и нужно либо удалять дубликаты, либо, если дубликаты не нашлись, вручную удалять лишние штрих-коды в выгрузке
361 4) Возможно, стоит сделать проверку на наличие штрих-кода. Если его нет, то отправить маркетологам на дозаполнение.
362
363 (% class="wikigeneratedid" %)
364 **Итоговая таблица:**
365
366 [[image:23 супп.png]]
367
368 == **Характеристики (табл. 210)** ==
369
370 Надо выгрузить индивидуальные и групповые характеристики.
371
372 ==== **Запрос SQL на индивидуальные характеристики** ====
373
374 **SELECT**
375
376 br.name **AS** Бренд
377
378 ,p.code **AS** Артикул
379
380 ,pg.name **AS** Группа
381
382 ,prop.name **AS** Характеристика
383
384 ,pv.val **AS** Значение
385
386 **FROM** propvalues pv
387
388 **LEFT JOIN** properties prop
389
390 **~ ON** pv.property_id = prop.id
391
392 **LEFT JOIN** products p** **
393
394 **~ ON** pv.product_id = p.id
395
396 **LEFT JOIN** product_group pg
397
398 **~ ON** p.group_id = pg.id
399
400 **LEFT JOIN** brands br
401
402 **~ ON **pg.brand_id = br.id
403
404 **WHERE** 1 = 1
405
406 **~ AND** p.status_id **IN** (4, 5)
407
408 **~ AND** pv.val **IS NOT** null
409
410 **~ AND** pv.val **NOT IN** ('')
411
412 **~ AND** br.id **IN** (1, 2, 3, 4, 5)
413
414 **~ AND **br.id = 3
415
416 **ORDER BY**
417
418 Бренд,
419
420 Группа,
421
422 Артикул
423
424 ==== **Запрос SQL на групповые характеристики** ====
425
426 **SELECT**
427
428 br.name **AS** Бренд
429
430 ,p.code **AS** Артикул
431
432 ,pg.name **AS** Группа
433
434 ,prop.name **AS** Характеристика
435
436 ,pb.defval **AS** Значение
437
438 **FROM** propbind pb
439
440 **LEFT JOIN** product_group pg
441
442 **ON** pb.group_id = pg.id
443
444 **LEFT JOIN** properties prop
445
446 **ON** pb.property_id = prop.id
447
448 **LEFT JOIN** products p
449
450 **ON **pb.group_id = p.group_id
451
452 **LEFT JOIN** brands br
453
454 **ON** pg.brand_id = br.id
455
456 **WHERE** 1 = 1
457
458 **AND** pb.defval **IS NOT** NULL
459
460 **AND** **pb.defval **NOT IN** ('')**
461
462 **AND p.code **IS NOT** NULL**
463
464 **AND** p.code **NOT IN** ('', '<новый код>')
465
466 **AND** p.status_id **IN **(4, 5)
467
468 **AND **br.id **IN **(1, 2, 3, 4, 5)
469
470 ~-~-**AND** br.id = 3
471
472 **ORDER BY**
473
474 Бренд,
475
476 Группа,
477
478 Артикул,
479
480 Характеристика
481
482
483 **Важно! Приоритет выбора значения характеристики при наличии значения в двух выгрузках (групповых и индивидуальных характеристиках).**
484
485 Логика, присущая большинству ситуаций: если у группы есть групповая характеристика, то у нее есть одно-единственное значение на всю группу, свойственное всем входящим в нее артикулам. Однако бывает так, что маркетолог меняет дефолтное значение у групповой характеристики на другое. В таком случае видим картину: у одного артикула одна и та же характеристика с двумя разными значениями фигурирует в обеих выгрузках (групповых и индивидуальных характеристик). Для этого мы проверяем наличие характеристики в обоих выгрузках, и если оно есть, то у характеристики берется значение из индивидуальной выгрузки, а групповое значение игнорируется.
486
487 Потом найти отсутствующие значения обязательных характеристик и отдать маркетологам.
488
489 Справочники характеристик:
490
491 [[attach:AIRLINE TECDOC.xlsx||target="_blank"]]
492
493 [[attach:LUZAR TECDOC.xlsx||target="_blank"]]
494
495 [[attach:TRIALLI TECDOC.xlsx||target="_blank"]]
496
497 **Важно! Добавление вручную характеристик, которых нет в NPR, но они требуются в TecDoc.**
498
499 Иногда бывают случаи, когда в TecDoc есть обязательная характеристика для конкретной группы (Mandatory Criteria), но маркетологи отказываются ее добавлять. Например, для **Датчиков износа **требуется Тип тормоза, но Антон Павлишин отказывается его добавить в NPR (его аргумент - очевидно, что везде Дисковый тормозной механизм). Другой пример -** Стойки стабилизатора** (Иван Пальмин). Для этой группы для TecDoc обязательна хар-ка Стойка со значением Соединительная штанга. Я **вручную** добавляю отдельно такие значения ко всем загружаемым артикулам, где это требуется.
500
501 **Важно! Добавление вручную информации, которой нет в разделе Характеристики, но она есть в других разделах NPR (она не требуется в TecDoc).**
502
503 Например, для Дисков тормозных нужна Масса брутто, кг, а для Прокладок ГБЦ из Luzar нужна Комплектация.
504
505
506 === Проверка полного заполнения характеристик в карточке товара артикула ===
507
508 Проверка имеет следующую логику: если обязательная характеристика не заполнена у артикула, то эта строчка будет в файле с ошибками.
509
510 Бывает, что наличие значения одной характеристики зависит от значения другой характеристики. Например, у глушителей есть диаметр 2 и его наличие зависит от его формы. Если форма глушителя = овал, то исходя из диаметр 1 и диаметр 2 должны быть заполнены (EAM 1808). Если форма = круг (EAM 0406), то значение диаметра 2 будет пустым, но не должно считаться ошибкой и не должно попасть в файл с ошибками. Таких случаев немного. Если у амортизаторов Тип верхнего крепления <> Шток, то пустое значения Хода штока, мм не должно являться ошибкой. Третий пример - Насосы водяные и Диаметр шкива. Конструкция может не предусматривать шкива.
511
512
513 === Маппинг значений характеристик NPR и к значениям справочника TecDoc. Очистка и подгонка значений. ===
514
515 После исправления маркетологами ошибок нужно сделать новые выгрузки характеристик и начать делать стыковку значений(маппинг) со справочником TecDoc.
516
517 Стыковка разделена на два файла - в одном числовые характеристик (тип N), во втором - текстовые (тип А) и характеристики со значениями из выпадающего списка (тип K).
518
519 У разных характеристик типа A или N длина значений будет отличаться, поэтому во время маппинга значений нужно не превышать максимальную длину значения. Список характеристик TecDoc и их длины можно посмотреть в файле - [[attach:Параметры TecDoc 2024.xlsx||target="_blank"]]
520
521 Например, надо подобрать значения к характеристиками **Суппортов тормозных.**
522
523 [[image:05 супп.png||height="83" width="845"]]
524
525 Ниже пойдут примеры уникальных значений NPR по каждой загружаемой группе.
526
527 Первый файл - типы K и A (см. выше - Criterion Type)
528
529 [[image:01 супп.png||height="233" width="577"]]
530
531 Найдем значения для **Количество поршней**
532
533 [[image:02 супп.png||height="202" width="629"]]
534
535 Найдем значения для **Сторона установки**
536
537 [[image:03 супп.png||height="94" width="633"]]
538
539
540 Значение характеристики **Тормозная система **должно быть названием, поэтому здесь его не меняем.
541
542 Итоговый файл с подобранными значениями характеристик типа K и A выглядит так (в конечном счете нам нужна пара Crit. No + ID (Key Value):
543
544 [[image:06 супп.png||height="261" width="648"]]
545
546 Иногда у маркетолога в NPR есть сложная и редкая информация, которой нет в справочнике TecDoc, но при этом она важна для покупателя. В таком случае мы ставим характеристику Версия (Crit No. = 1059) и вписываем значение длиной до 20 символов на английском языке. Иногда можем вписывать несколько значений характеристики **Версия.**
547
548
549 **Обработка числовых значений:**
550 1) Делать замену с “.” на “,”
551
552 2) Если значение подразумевает диапазон
553 Например, Диапазон измеряемого давления, бар = 0 - 3,5
554 то нужно выбрать 2 характеристики
555 Давление от = 0
556 Давление до = 3,5
557
558 В данном случае новые характеристики ищутся повторно
559
560 3) Проверять значения с перечислением через разделитель
561 Например, Двигатель = 31896, 33162 должен быть преобразован в
562 Двигатель = 31896
563 Двигатель = 31862
564
565 4) Убрать “+” из значений температуры. Например, +30 => 30
566
567 5) Отсечь погрешность из значения (после “±”). Например, 180±10 => 180
568
569
570 На примере **Суппортов тормозных** замена числовых значений (тип N) выглядит так:
571
572 - точки заменил на запятые
573
574 - поменял характеристику у двойных значений 44/48 и 46/52.
575
576 [[image:07 супп.png||height="37" width="510"]]
577
578 Итоговый тип N:
579
580 [[image:04 супп.png||height="502" width="577"]]
581
582
583 Потом объединеняем оба файла в один:
584
585 [[image:08 супп.png]]
586
587
588 В процессе объединения файлов числовые значения могут искажаться, поэтому нужно знать об этом и вручную корректировать такие случаи. Я это делаю как шаг в запросе Power Query.
589
590
591 === Сборка таблицы с характеристиками в TecDoc (таблица 210) ===
592
593 Формат загрузки характеристик представлен в документации на с.161. Вот он:
594
595 [[image:13 супп.png||height="630" width="605"]]
596
597
598 После этого собираем таблицу с характеристиками по каждому артикулу, учитывая порядок следования (нумерацию) характеристик в карточке товара (из справочника характеристик по бренду).
599
600 [[image:05 супп.png||height="67" width="683"]]
601
602 Промежуточный вариант:
603
604
605 [[image:11 супп.png||height="256" width="445"]]
606
607
608 Итоговый вариант:
609
610 [[image:12 супп.png]]
611
612 == ==
613
614 === **Номер группы TecDoc (табл. 211)** ===
615
616 == [[image:26 супп.png||height="303" width="483"]] ==
617
618 **ArtNo** - Артикул
619
620 **BrandNo** - Номер бренда Carville из справочника брендов
621
622 **TableNo **- номер таблицы = 211
623
624 **GenArtNo** - номер группы TecDoc. Подробнее смотреть в разделе **Выбор номера группы TecDoc для загружаемых артикулов**
625
626 **Итоговый вариант:**
627
628 **[[image:27 супп.png||height="357" width="204"]]**
629
630
631 == **Страна, статус (табл. 212)** ==
632
633 **[[image:28 супп.png||height="380" width="498"]]**
634
635 (% class="wikigeneratedid" %)
636 **ArtNo** - Артикул
637
638 (% class="wikigeneratedid" %)
639 **BrandNo** - номер бренда Carville
640
641 (% class="wikigeneratedid" %)
642 **TableNo** - номер таблицы = 212
643
644 (% class="wikigeneratedid" %)
645 **QuantUnit **- количество = ставим 1
646
647 (% class="wikigeneratedid" %)
648 **QuantPerUnit** - количество в единице товара (вроде) = ставим 1
649
650 (% class="wikigeneratedid" %)
651 **StatusDat** - ставлю дату формирования таблиц
652
653
654 (% class="wikigeneratedid" %)
655 Итоговая таблица:
656
657 (% class="wikigeneratedid" %)
658 [[image:29 супп.png||height="301" width="337"]]
659
660
661 (% class="wikigeneratedid" %)
662 **Применяемость (табл. 400)**
663
664 Делаем запрос через SQL по одному бренду:
665
666
667 **SELECT**
668
669 //br//.name **AS** 'Бренд'
670
671 ,//p//.code **AS** 'Артикул'
672
673 ,//am//.code **AS** 'Номер TecDoc легковой'
674
675 ,//am//.codeEx **AS** 'Номер TecDoc грузовой'
676
677 ,//am//.lnktargettypeID **AS** 'Linkage Target Type ID'
678
679 **FROM** products //p//
680
681 **LEFT** **JOIN** ausage //au//
682
683 **ON** //p//.id = //au//.product_id
684
685 **LEFT** **JOIN** amodification //am//
686
687 **ON** //au//.modification_id = //am//.id
688
689 **LEFT** **JOIN** product_group //pg//
690
691 **ON** //p//.group_id = //pg//.id
692
693 **LEFT** **JOIN** brands //br//
694
695 **ON** //pg//.brand_id = //br//.id
696
697 **WHERE** 1 = 1
698
699 **AND** (//p//.status_id = 4 **OR** //p//.status_id = 5)
700
701 ~-~-AND p.code = 'AG 15024'
702
703 **AND** //am//.lnktargettypeID **IS** **NOT** **null**
704
705 **AND** //br//.id **IN** (1, 2, 3, 4, 5)
706
707 **AND** //br//.id = 2
708
709 **ORDER** **BY**
710
711 //br//.name,
712
713 //p//.code
714
715
716 В полученной выгрузке добавляем столбец с условием:
717
718 IF ‘Номер TecDoc грузовой’ <> null
719
720 THEN ‘Номер TecDoc грузовой’
721
722 ELSE ‘Номер TecDoc легковой’
723
724
725 Перед загрузкой надо сделать замены всех значений Linkage Target Type ID на те, которые допускаются к загрузке. Это следует из пункта в инструкции на с.183 (третья сверху ссылка в этом тексте).
726
727 |**LnkTargetType**|**Linkage Target Type ID**|**Linkage Target Type ID для загрузки**
728 |TecDoc PC|2|2
729 |TecDoc Motorcycle|3|2
730 |TecDoc E-PC|4|2
731 |TecDoc E-LCV|5|2
732 |TecDoc Electric Motorcycle|6|2
733 |TecDoc LCV|999|2
734 |TecDoc CV|16|16
735 |TecDoc Bus|17|16
736 |TecDoc Tractor|18|16
737 |TecDoc E-Bus|20|16
738 |TecDoc E-CV|22|16
739
740 Плюс надо убрать из применяемости артикулы тех групп TecDoc, которые являются универсальными товарами. Это находится в справочнике Reference Data Generic Articles (см. ниже). **Универсальный товар имеет значение X в поле Universal.**
741
742 [[attach:Reference_Data_Generic_Articles_20250529_063516.csv||target="_blank"]]
743
744
745 Кроме того, в таблицу с применяемостью можно загружать еще двигатели (Engines).
746
747 |**Linkage Target Type**|**Linkage Target Type ID**
748 |Легковые (PC, LCV)|2
749 |Грузовые (CV)|16
750 |Двигатели (Engines)|14
751
752 **Промежуточный вариант сбора таблицы:**
753
754 [[image:17 супп.png]]
755
756
757 **Итоговый вариант:**
758
759 **[[image:18 супп.png]]**
760
761
762 **Требования из документации**
763
764 [[image:19 супп.png]]
765
766
767 = **Загрузка фотографий в TecDoc** =
768
769
770 Исходная ситуация: у нас есть загруженные артикулы в DMM, и к ним надо загрузить фото из папки ~\~\192.168.0.2\рабочая папка\ОМ\TRIALLI\ФОТО продукции TRIALLI\03_ФОТО 1000\
771
772 Файл для работы:
773
774 [[attach:01 - ФОТО - Загрузка фото в TecDoc, Привязка к артикулам.xlsx||target="_blank"]]
775
776
777 **Алгоритм следующий:**
778
779 * Найдем артикулы без фото (отчет Article Documents)
780 * Найдем все доступные фото по данным артикулам в разрешении 1000*1000 пикселей
781 * Скопируем фото в отдельную папку
782 * Загрузим фото в хранилище TecDoc
783 * Привяжем фото к артикулам и подготовим таблицу с привязками
784
785 1. Перед загрузкой фото спросить у Тимофеева Павла о том, загрузил ли он новые фотографии в разрешении 1000*1000
786 1. Сформировать отчет Article Documents
787
788 1. Зайти в DMM
789 1. Reports/Analysis > Reports > PD > Product Data: Article Documents
790 1. Supplier No. = TRIALLI/LUZAR…
791 1. Language No. = English (GB) ( ИЛИ английский (Великобритания) (4)
792 1. Export report
793 1. CSV, UTF-8
794 1. Start
795 1. Сохранить в C:\Users\User PC\Desktop\Карвиль\TecDoc\03 Загрузка фото . Создать предварительно папку для загрузки фото по каждому бренду и по каждому месяцу
796
797 1. Зайти в запрос в папке "C:\Users\User PC\Desktop\Карвиль\TecDoc\03 Загрузка фото\01 - ФОТО - Загрузка фото в TecDoc, Привязка к артикулам.xlsx"
798
799 1. В Запросе открыть лист settings
800 1. Скопировать путь к файлу Article Documents из п.1 с помощью SHIFT > Правой кнопкой по файлу > Копировать как путь
801 1. Вставить скопированный путь в таблицу “Пути” в строчку Quality Document Check
802 1. Нажать на Данные > Обновить все
803
804 Если LUZAR, то зайти в Запросы “Пути к файлам”, “Список фото в папке”, “Сравнение количества фото в папке и в TecDoc”, “Количество фото” и вставить ссылку на папку LUZAR в первый шаг запроса - ~\~\192.168.0.2\рабочая папка\ФОТОГРАФИИ ПРОДУКЦИИ\LUZAR\01_ФОТО _для текдок
805
806 1. Открыть лист “Пути к файлам”
807 1. В LUZAR фото LAT 0775, LAT 1222, LAT 1224 написано с ошибкой, можно убрать эти артикулы из загрузки.
808 1. Создать текстовый документ на рабочем столе названием Пути.txt
809 1. Скопировать столбец Name в текстовый документ, но удалить первую строчку – слово Name
810 1. Сохранить текстовый файл Пути.txt
811
812 1. Открыть Total Commander на панели задач
813
814 1. В правой половине прописать путь - ~\~\192.168.0.2\рабочая папка\ОМ\TRIALLI\ФОТО продукции TRIALLI\03_ФОТО 1000\*.*
815 1. Нажать на любой артикул из правой половины
816 1. Нажать в меню Выделение > Загрузить выделение из файла > Выбрать файл Пути.txt
817 1. Сейчас нужные файлы выделены.
818 1. Нажать внизу на F5 – Копирование
819 1. Появится окно, сверху будет надпись “Копировать файлы (N шт.) в ”
820 1. Создать папку с названием “N фото” в C:\Users\User PC\Desktop\Карвиль\TecDoc\03 Загрузка фото
821 1. Скопировать путь к новой папке (см. п.2.1)
822 1. Вставить путь в Total Commander в поле “Копировать файлы (N шт.) в ” и удалить из него кавычки
823 1. Нажать ОК
824 1. Выделенные файлы скопируются в заданную папку
825
826 1. Открыть DMM
827
828 1. Basic Data > Files
829 1. Import
830 1. Select files = выбрать папку с фото, выделить все файлы
831 1. Остальные настройки следующие:
832
833 [[image:image-20250418143833-1.png||height="882" width="703"]]
834
835
836 1. Нажать Start Import
837
838 Фото загрузятся в хранилище TecDoc
839
840 1. Сформировать отчет Document Check
841
842 1. Зайти в DMM
843 1. Reports/Analysis > Reports > QU > Quality: Document check
844 1. SUPPLIER No. = TRIALLI/LUZAR…
845 1. Export report
846 1. Format – CSV, UTF-8
847 1. Сохранить в C:\Users\User PC\Desktop\Карвиль\TecDoc\03 Загрузка фото\TecDoc reports
848
849 1. Зайти в запрос Загрузка фото в TecDoc 1000.xlsx в папке C:\Users\User PC\Desktop\Карвиль\TecDoc\03 Загрузка фото
850
851 1. В Запросе открыть лист settings
852 1. Скопировать путь к файлу Document Check из п.1 с помощью SHIFT > Правой кнопкой по файлу > Копировать как путь
853 1. Вставить скопированный путь в таблицу “Пути” в строчку Quality Document Check
854 1. Нажать на Данные > Обновить все
855 1. Открыть лист 232
856 1. Скопировать все, кроме первой строчки
857 1. Файл > Пустая книга
858 1. Встать на ячейку A1, вставить через Специальная вставка > Значения
859 1. Создать папку “Загрузка в TecDoc”
860 1. Сохранить файл в папке “Загрузка в TecDoc”. Имя файла – 232, разрешение файла – PRN
861 1. Скопировать в папку “Загрузка в TecDoc” из других загрузок файл 001.4772 (или другого бренда)
862 1. Переименовать файл 232.prn в 232.4772
863
864 1. Загрузим таблицу с привязками фото к артикулам в TecDoc
865
866 1. Сделаем экспорт базы данных перед загрузкой
867
868 Зайдем в DMM
869
870 Import/Export > Export > Product Data
871
872
873 1. Загрузим таблицу с привязками фото к артикулам
874
875 Зайдем в DMM
876
877 Import/Export > Import > Product Data
878
879 Select Files = выбрать файлы из папки “Загрузка в TecDoc”
880
881
882 1. Сделать валидацию
883 1. В результате валидации может быть ошибка 215 - Document rejected: Image No./Document type is not contained in the article images (record type 232), link documents (record type 432) and data supplier logos (record type 42). This results in rejection of all data records with the same image number/document type: Image no=477210610, Document type=3 (Record type 231)
884
885 Это значит, что фото лежит в хранилище без привязки к артикулу.
886
887 Такое происходило из-за разного регистра в артикуле и в названии фото. Например, фотка ESM 10015050**D**.jpg не притянется к артикулу ESM 10015050**d**. Нужно менять это вручную в таблице перед загрузкой или менять настройки запроса.
888
889
890
891
892
893 **Сортировка фото внутри артикулов**
894
895 Файл для работы:
896
897 [[attach:02 - ФОТО - Сортировка фотографий.xlsx||target="_blank"]]
898
899
900 Поскольку в TecDoc загружаются артикулы не только со статусом “На складе”, но и “Заказано/В пути”, то количество фотографий по одному артикулу со временем будет увеличиваться. Если товар находится “В пути”, то из фотографий на него есть только чертеж, и остальные фото появятся при появлении товара на складе.
901
902 1. Выгрузка базы из DMM
903
904 * Import / Export
905 * Export
906 * Product Data
907
908 [[image:image-20250418143833-4.png||height="788" width="1169"]]
909
910
911 1. Скачать zip-архив
912
913 [[image:image-20250418143833-5.png||height="786" width="1915"]]
914
915 1. Скачать отчет Article Documents из DMM
916 1. Создать папку для сортировки здесь: C:\Users\User PC\Desktop\Карвиль\TecDoc\03 Загрузка фото
917 1. Извлечь zip-архив в отдельную папку. Привести папку к табличному виду в проводнике через Вид > Структура > Таблица
918 1. Скопировать файл 232.<Номер бренда TecDoc> (например, 232.4707) в другую папку
919 1. Открыть файл 232.4707
920 1. Открыть файл "C:\Users\User PC\Desktop\Карвиль\TecDoc\03 Загрузка фото\02 - ФОТО - Сортировка фотографий.xlsx"
921 1. В нем на листе “232 исходная” удалить содержимое умной таблицы кроме заголовков
922 1. Скопировать таблицу из файла 232.4707 в другой файл в умную таблицу на лист “232 исходная”
923 1. На листе “Стыковка” прописать путь к файлу Article Documents без кавычек
924 1. Нажать на Данные > Обновить все
925 1. Скопировать содержимое в новый файл с названием 232.prn (поставить prn в разрешение файла)
926 1. Переименовать файл из 232.prn в 232. <Номер бренда TecDoc> (например, 232.4707)
927 1. Скопировать файл 232.4707 обратно в папку с извлеченным архивом = Заменить в папке назначения
928 1. Сделать архив-zip из всех файлов папки
929 1. Загрузить базу в TecDoc. Import / Export > Import > Product Data
930
931 [[image:image-20250418143833-6.png||height="925" width="1061"]]
932
933 1. Написать Андрею Черджиеву, чтобы он перезагрузил сервер