Show last authors
1 [[image:https://it.carville.ru/api/files/108-3344808?sign=MTcxMzU3MTIwMDAwMHwyNi03MnwxMDgtMzM0NDgwOHxJa0ZCblV2ZEhOVjhIdGZzN0dVSllCTlZj%0D%0AT0xEX2hiaVFWdHlqUjZaODJJDQo%0D%0A&updated=1712152111580]]
2 \\В НПР "старой" для отображения артикулов используется процедура get_orig с параметром @prod = код товара. (возможно передавать параметр группы @group, но это не используется на клиенте)
3 В таблице отображаются загруженные новые артикулы с названием группы, изготовителем и значком из сертификата.
4 Если сертификатов несколько на один артикул (с учетом группы), то параметры (группа, изготовитель и знак) выводятся одной строкой, через '~/~/'.
5
6
7 Первоначальная выборка данных происходит следующем образом
8
9
10 Select distinct orig,id_group,manufactEng,(Case
11 when s.IdTovSertType in (1,2,10,19) then 'EAC'
12 when s.IdTovSertType in (14,15) then 'RCT'
13 when s.IdTovSertType = 4 then 'нет' else '' end) sert
14 ,man.id_manufact,sg.name+' ('+s.Number+')'
15 From new_orig n ~-~- таблица хранящая новые артикулы
16 left join products p on p.code = n.orig ~-~- убираем уже использованные артикулы в продуктах
17 join LUZAR_PLAN.dbo.sert_art ar on ar.art_id=n.id and isnull(ar.is_product,0)=0 ~-~- таблица связи сертификата и артикула. is_product=0 указывает на то что это не действующий товар
18 join LUZAR_PLAN.dbo.SprTovSert s on s.IdTovSert = ar.sert_id and isnull(s.sertState,1) <> 0 and isnull(s.sertState,1)<>80 and Active=1
19 ~-~- таблица списка сертификатов. Проверяем что он не архивный и рабочий(sertState не 0 и не 80).
20 join [LUZAR_PLAN].[dbo].[TovSert_Manufact] m on m.IdTovSert = s.IdTovSert ~-~- таблица связи сертификата и изготовителей
21 join manufact man on man.id_manufact = m.IdManufact ~-~- таблица справочник изготовителей
22 left join LUZAR_PLAN.dbo.sert_grp sg on sg.sert_id=s.IdTovSert and sg.id=n.id and sg.is_art=case when ar.is_product=1 then 0 else 1 end ~-~- связь артикул - сертификат - группа товара. тут группа товара именно та что в сертификате
23 where p.id is null and id_group in (@group,@parent)
24 group by orig,id_group,manufactEng,IdTovSertType,man.id_manufact,sg.name,s.Number
25
26 Где @group - id группы товара по которому подбирают артикул, @parent - id родительской группы группы
27
28
29 Далее строки складываются через '~/~/' в случае если на один артикул несколько связей
30 Select orig,id_group,(select distinct manufactEng+'~/~/' from @t where orig=t.orig for xml path(''))manufactEng,
31 (select distinct sert+'~/~/' from @t where orig=t.orig for xml path(''))sert,
32 (select distinct cast(id_manufact as varchar(100))+'~/~/' from @t where orig=t.orig for xml path('')) id_manufact,
33 (select distinct VED_name+'~/~/' from @t where orig=t.orig for xml path(''))VED_name
34 From @t t
35 group by orig,id_group
36 having(Count(orig)>1)
37 \\Далее удаляются технические последние '~/~/'
38 update @res set manufactEng=SUBSTRING(manufactEng,0,len(manufactEng)-1) where len(manufactEng)>1
39 update @res set id_manufact=SUBSTRING(id_manufact,0,len(id_manufact)-1) where len(id_manufact)>1
40 update @res set VED_name=SUBSTRING(VED_name,0,len(VED_name)-1) where len(VED_name)>1
41 update @res set sert=SUBSTRING(sert,0,len(sert)-1) where len(sert)>1
42
43
44 В итоговый набор попадают все товары имеющие связи с сертификатами и товары не имеющие связи с сертификатами, им ставится прочерк в параметрах
45 Select distinct n.orig,n.id_group,null manufactEng,'-' sert
46 ,cast(n.id_manufact as varchar(100)),null
47 From new_orig n
48 left join products p (nolock) on p.code = n.orig
49 left join @t t on t.orig=n.orig
50 where p.id is null and n.id_group in (@group,@parent) and t.orig is null
51 group by n.orig,n.id_group,n.id_manufact

Tips

You can click on the arrows next to the breadcrumb elements to quickly navigate to sibling and children pages.

My Recent Modifications

Need help?

If you need help with XWiki you can contact: