USE [mag_pbi] GO /****** Object: Schema [analytics] Script Date: 17.02.2026 14:26:06 ******/ CREATE SCHEMA [analytics] GO /****** Object: Schema [artem] Script Date: 17.02.2026 14:26:06 ******/ CREATE SCHEMA [artem] GO /****** Object: Schema [ostatki] Script Date: 17.02.2026 14:26:06 ******/ CREATE SCHEMA [ostatki] GO /****** Object: Schema [pbi] Script Date: 17.02.2026 14:26:06 ******/ CREATE SCHEMA [pbi] GO /****** Object: Schema [pbiProd] Script Date: 17.02.2026 14:26:06 ******/ CREATE SCHEMA [pbiProd] GO /****** Object: Schema [sebest] Script Date: 17.02.2026 14:26:06 ******/ CREATE SCHEMA [sebest] GO /****** Object: Schema [stg] Script Date: 17.02.2026 14:26:06 ******/ CREATE SCHEMA [stg] GO /****** Object: Table [pbi].[Себестоимость] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[Себестоимость]( [id] [int] IDENTITY(1,1) NOT NULL, [Период] [datetime2](0) NULL, [Статья] [varchar](255) NOT NULL, [Вид операции] [varchar](255) NOT NULL, [Хоз операция] [varchar](255) NOT NULL, [Организация] [varchar](255) NULL, [Партнер] [varchar](255) NULL, [Контрагент] [varchar](255) NULL, [Менеджер] [varchar](255) NULL, [Тип документа] [varchar](255) NULL, [Номер документа] [varchar](255) NULL, [Валюта документа] [varchar](255) NULL, [Ценовая группа] [varchar](255) NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](38, 15) NULL, [СуммаБезНДС] [numeric](38, 15) NULL, [СуммаРучнойСкидки] [numeric](38, 15) NULL, [СуммаАвтоСкидки] [numeric](38, 15) NULL, [Закупка] [numeric](38, 15) NULL, [Закупка, usd2] [numeric](38, 15) NULL, [Курс usd2] [numeric](15, 3) NULL, [Курс usd] [numeric](15, 3) NULL, [Таможня] [numeric](38, 15) NULL, [ЕАЭС] [numeric](38, 15) NULL, [Учетная цена] [numeric](38, 15) NULL, [Учетная цена USD2+2] [numeric](38, 15) NULL, [Заказ закрыт] [datetime] NULL, [Номер заказа] [nchar](11) NULL, [Маркетинг] [numeric](38, 15) NULL, [Доставка] [numeric](38, 15) NULL, [НДС] [numeric](38, 15) NULL, [Сборка] [numeric](38, 15) NULL, [ЗатратыМП] [numeric](38, 15) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](38, 15) NULL, [Учетная стоимость USD2+2] [numeric](38, 15) NULL, [Номер регистратора] [nchar](10) NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [pbi].[pricelist] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[pricelist]( [Цена] [numeric](15, 6) NOT NULL, [Вид цены] [nvarchar](50) NULL, [1c_id] [binary](16) NOT NULL, [artic_id] [nvarchar](36) NULL, [Дата] [datetime2](0) NULL, [_Period] [datetime2](0) NOT NULL ) ON [PRIMARY] GO /****** Object: Table [pbi].[СебестоимостьПродажи] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[СебестоимостьПродажи]( [id] [int] IDENTITY(1,1) NOT NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](38, 15) NULL, [СуммаБезНДС] [numeric](38, 15) NULL, [СуммаРучнойСкидки] [numeric](38, 15) NULL, [СуммаАвтоСкидки] [numeric](38, 15) NULL, [Закупка] [numeric](38, 15) NULL, [Закупка, usd2] [numeric](38, 15) NULL, [Таможня] [numeric](38, 15) NULL, [ЕАЭС] [numeric](38, 15) NULL, [Учетная цена] [numeric](38, 15) NULL, [Учетная цена USD2+2] [numeric](38, 15) NULL, [Маркетинг] [numeric](38, 15) NULL, [Доставка] [numeric](38, 15) NULL, [НДС] [numeric](38, 15) NULL, [Сборка] [numeric](38, 15) NULL, [ЗатратыМП] [numeric](38, 15) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](38, 15) NULL, [Учетная стоимость USD2+2] [numeric](38, 15) NULL, [sebes_id] [int] NOT NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: View [pbi].[Себестоимость+СебестоимостьПродаж] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /*where [Вид операции] = 'Продажа' and sebesSales.ЗатратыМП <> 0 */ CREATE VIEW [pbi].[Себестоимость+СебестоимостьПродаж] AS SELECT [id], [Период], [Статья], [Вид операции], [Хоз операция], [Организация], [Партнер], [PartnerId], [Контрагент], [Менеджер], [Тип документа], [Номер документа], [Валюта документа], [Ценовая группа], [1c_document_id], [1c_id], [artic_id], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], CASE WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND PriceListPrice IS NOT NULL THEN -(PriceListPrice * [Количество]) / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND AnyPrice IS NOT NULL THEN -(AnyPrice * [Количество]) / 1000 ELSE [Закупка] END AS [Закупка], CASE WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND PriceListPrice IS NOT NULL THEN -(PriceListPrice / [Курс usd2] * [Количество]) / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND AnyPrice IS NOT NULL THEN -(AnyPrice / [Курс usd2] * [Количество]) / 1000 ELSE [Закупка, usd2] END AS [Закупка, usd2], [Курс usd2], [Курс usd], [Таможня], CASE WHEN ([Закупка] = 0 AND [Вид операции] = 'Продажа') AND PriceListPrice IS NOT NULL THEN PriceListPrice / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND AnyPrice IS NOT NULL THEN AnyPrice / 1000 ELSE [Учетная цена] END AS [Учетная цена], CASE WHEN ([Закупка] = 0 AND [Вид операции] = 'Продажа') AND PriceListPrice IS NOT NULL THEN PriceListPrice / [Курс usd2] / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND AnyPrice IS NOT NULL THEN AnyPrice / [Курс usd2] / 1000 ELSE [Учетная цена USD2+2] END AS [Учетная цена USD2+2], CASE WHEN ([Закупка] = 0 AND [Вид операции] = 'Продажа') AND PriceListPrice IS NOT NULL THEN (PriceListPrice * [Количество]) / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND AnyPrice IS NOT NULL THEN (AnyPrice * [Количество]) / 1000 ELSE [Учетная стоимость] END AS [Учетная стоимость], CASE WHEN ([Закупка] = 0 AND [Вид операции] = 'Продажа') AND PriceListPrice IS NOT NULL THEN (PriceListPrice / [Курс usd2] * [Количество]) / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND AnyPrice IS NOT NULL THEN (AnyPrice / [Курс usd2] * [Количество]) / 1000 ELSE [Учетная стоимость USD2+2] END AS [Учетная стоимость USD2+2], [Заказ закрыт], [Номер заказа], [Доставка], [НДС], [Сборка], PriceListPrice FROM (SELECT sebes.id, sebes.Период, sebes.Статья, sebes.[Вид операции], sebes.[Хоз операция], sebes.Организация, sebes.Партнер, sebes.PartnerId, sebes.Контрагент, sebes.Менеджер, sebes.[Тип документа], sebes.[Номер документа], sebes.[Валюта документа], sebes.[Ценовая группа], sebes.[1c_document_id], sebes.[1c_id], sebes.artic_id, sebes.Количество, sebes.Сумма AS Сумма, sebes.СуммаБезНДС, sebes.СуммаРучнойСкидки, sebes.СуммаАвтоСкидки, CASE WHEN sebesSales.sZakupka IS NOT NULL THEN sebesSales.sZakupka ELSE [Закупка] END AS Закупка, CASE WHEN sebesSales.sZakupkaUsd2 IS NOT NULL THEN sebesSales.sZakupkaUsd2 ELSE [Закупка, usd2] END AS [Закупка, usd2], sebes.[Курс usd2], sebes.[Курс usd], CASE WHEN sebesSales.customs IS NOT NULL THEN sebesSales.customs ELSE [Таможня] END AS Таможня, CASE WHEN sebesSales.uchetprice IS NOT NULL THEN sebesSales.uchetprice ELSE [Учетная цена] END AS [Учетная цена], CASE WHEN sebesSales.uchetpriceUSD22 IS NOT NULL THEN sebesSales.uchetpriceUSD22 ELSE [Учетная цена USD2+2] END AS [Учетная цена USD2+2], CASE WHEN sebesSales.uchetstoimost IS NOT NULL THEN sebesSales.uchetstoimost ELSE [Учетная стоимость] END AS [Учетная стоимость], CASE WHEN sebesSales.uchetstoimostUSD22 IS NOT NULL THEN sebesSales.uchetstoimostUSD22 ELSE [Учетная стоимость USD2+2] END AS [Учетная стоимость USD2+2], sebes.[Заказ закрыт], sebes.[Номер заказа], CASE WHEN sebesSales.delivery IS NOT NULL THEN sebesSales.delivery ELSE [Доставка] END AS Доставка, CASE WHEN sebesSales.NAT IS NOT NULL THEN sebesSales.NAT ELSE [НДС] END AS НДС, CASE WHEN sebesSales.assemble IS NOT NULL THEN sebesSales.assemble ELSE [Сборка] END AS Сборка, (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] WHERE [Вид цены] = 'Учетная цена (руб)' AND Дата <= sebes.Период AND sebes.artic_id = artic_id ORDER BY Дата DESC) AS PriceListPrice, (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] WHERE [Вид цены] = 'Учетная цена (руб)' AND sebes.artic_id = artic_id ORDER BY Дата) AS AnyPrice FROM pbi.Себестоимость AS sebes LEFT OUTER JOIN (SELECT [1c_document_id] AS onecid, artic_id AS articid, Закупка AS sZakupka, [Закупка, usd2] AS sZakupkaUsd2, Таможня AS customs, ЕАЭС AS eas, Доставка AS delivery, НДС AS NAT, Сборка AS assemble, Сумма AS SumSales, ЗатратыМП, sebes_id, [Учетная цена] AS uchetprice, [Учетная цена USD2+2] AS uchetpriceUSD22, [Учетная стоимость] AS uchetstoimost, [Учетная стоимость USD2+2] AS uchetstoimostUSD22 FROM pbi.СебестоимостьПродажи) AS sebesSales ON sebesSales.sebes_id = sebes.id ) AS mainTab GO /****** Object: Table [pbi].[ostatki_short] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[ostatki_short]( [artic_id] [nvarchar](36) NULL, [1c_id] [binary](16) NOT NULL, [Code] [nchar](11) NOT NULL, [sklad] [nvarchar](50) NOT NULL, [Категория склада] [varchar](15) NOT NULL, [upakovok] [numeric](38, 12) NULL, [quantity] [numeric](38, 3) NULL, [upakovka] [numeric](38, 6) NULL, [date] [datetime] NULL, [Учетная цена, старое] [numeric](38, 15) NULL, [upakovok_ship] [numeric](38, 15) NULL, [quantity_ship] [numeric](38, 15) NULL ) ON [PRIMARY] GO /****** Object: View [pbi].[ОстаткиTotal] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbi].[ОстаткиTotal] AS SELECT [artic_id] ,[Code] ,[sklad] ,[Категория склада] ,[upakovka] ,[date] -- количество упаковок накопительным итогом ,coalesce(sum([upakovok]) over (partition by [sklad], [artic_id] order by osh.[date] rows between unbounded preceding and current row), 0) as total_upakovok -- количество шт накопительным итогом ,coalesce(sum([quantity]) over (partition by [sklad], [artic_id] order by osh.[date] rows between unbounded preceding and current row), 0) as total_quantity FROM mag_pbi.pbi.ostatki_short osh WHERE [Категория склада] <> 'Виртуальный' GO /****** Object: View [pbi].[БазоваяУпаковка] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [pbi].[БазоваяУпаковка]as --Вынимаем из таблицы упаковок Габариты номенклатуры по базовой упаковке SELECT _Code as code , n._IDRRef , _OwnerID_RRRef , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),5,12) )) as artic_id , upakovka --as [Базовая упаковка] , [вес], [Высота], [Глубина], [Ширина], [Объем]--, md /*, isnull( (case n.[_Fld28142] WHEN 0 THEN upakovka ELSE max_upakovka end) , 1) as 'Базовая упаковка'*/ FROM mag_2019.dbo._Reference188X1 n --справочник номенклатуры LEFT JOIN ( SELECT a._Fld24768 as upakovka/*, MAX(_Fld24768)as max_upakovka*/ , a._Fld24761 as 'Вес' , a._Fld24763 as 'Высота' , a._Fld24765 as 'Глубина' , a._Fld24775 as 'Ширина' , a._Fld24771 as 'Объем' , a._OwnerID_RRRef , a._Marked as md FROM [MAG_2019].dbo._Reference347X1 a LEFT JOIN [MAG_2019].dbo._Reference347X1 b ON b._OwnerID_RRRef = a._OwnerID_RRRef AND a._Fld24768 > b._Fld24768 AND a._Marked = 0x00 AND b._Marked = 0x00 WHERE (b._Fld24768 is null) AND a._Marked = 0x00 --AND b._Marked = 0x00 AND a._OwnerID_RRRef IN (SELECT _IDRRef FROM mag_2019.dbo._Reference188X1 WHERE [_Fld28142] = 0) UNION ALL SELECT a._Fld24768 as upakovka/*, MAX(_Fld24768)as max_upakovka*/ , a._Fld24761 as 'Вес' , a._Fld24763 as 'Высота' , a._Fld24765 as 'Глубина' , a._Fld24775 as 'Ширина' , a._Fld24771 as 'Объем' , a._OwnerID_RRRef , a._Marked FROM [MAG_2019].dbo._Reference347X1 a LEFT JOIN [MAG_2019].dbo._Reference347X1 b ON b._OwnerID_RRRef = a._OwnerID_RRRef AND a._Fld24768 < b._Fld24768 AND a._Marked = 0x00 AND b._Marked = 0x00 WHERE b._Fld24768 is null AND a._Marked = 0 --AND b._Marked = 0 AND a._OwnerID_RRRef IN (SELECT _IDRRef FROM mag_2019.dbo._Reference188X1 WHERE [_Fld28142] <> 0) ) as up ON n._IDRRef = up._OwnerID_RRRef WHERE n._Fld21101RRef IN (0x80C5305A3A00E12B11E5845202CA01FB, 0x80C5305A3A00E12B11E584520AEC30EC) GO /****** Object: View [pbi].[Заказы_тех] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE view [pbi].[Заказы_тех] as SELECT DATEADD(year, -2000, z._Date_Time) as [Дата заказа поставщику] ,z._Number as 'Номер заказа поставщику' , t._Fld3473RRef as [1C_id] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),5,12) )) as partner_id , (SELECT r._Description FROM [MAG_2019].[dbo].[_Reference168] r WHERE r._IDRRef = z._Fld3410RRef) as 'Контрагент' ,case [_Fld3417RRef] when 0xB9440E49408A17534955319EBF0DAE60 then 'Согласован' when 0x99FD3E66AA3EFB074984044D5A69CFD5 then 'В пути' when 0x973A5675AC6A17F64DA37EC6C22FC12C then 'Подтвержден' when 0xA55F81415BA33BC24A053ED26C6EC02E then 'Закрыт' when 0xA87A8B13710A30B447DFF1614E84D167 then 'В производстве' when 0x8542BD023FE7B70E4613087D853F26E4 then 'Тех. заказ' end as 'Статус' , t._Fld3473RRef as [nom_1c_id] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2),5,12) ))as artic_id , t._Fld3477 as [Количество] , convert (decimal(10,2), t._Fld3477/(case (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE t._Fld3473RRef = up._OwnerID_RRRef) when 0 then 1 when null then 1 else (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE t._Fld3473RRef = up._OwnerID_RRRef) end)) as 'Кол. упаковок' , t._Fld3480/1000 as [Цена] , t._Fld3481/1000 as [Сумма] , t._Fld3481/1000 * (SELECT TOP 1 _Fld13220/_Fld13221 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = z._Fld3414RRef --валюта документа AND _Period <= z._Date_Time ORDER BY _Period desc) / (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= z._Date_Time ORDER BY _Period desc) as [Сумма всего тех заказы, usd] /*, case z.[_Fld3414RRef] when 0x80CD002590EC174111E581505088A8D5 then 'usd' else 'руб' end as 'Валюта'*/ , (SELECT _DESCRIPTION FROM [MAG_2019].[dbo].[_Reference50] /*валюты*/ v WHERE v._IDRRef = [_Fld3414RRef]) as 'Валюта' /*, case when ( SELECT COUNT(*) FROM mag_2019.[dbo].[_AccumRg16344] AS zakupka --РН Закупка INNER JOIN [mag_2019].[dbo]._Reference160 an ON an._IDRRef = zakupka.[_Fld16349RRef] WHERE an._Fld20498RRef = t._Fld3473RRef AND zakupka._Fld16357_RRRef = z.[_IDRRef] ) = 0 THEN 'В пути до РФ' ELSE 'В пути в РФ' END as 'Где товар'*/ FROM [MAG_2019].[dbo].[_Document408X1] z /* документ заказ поставщику */ INNER JOIN [MAG_2019].[dbo].[_Document408_VT3470X1] t /* табличная часть заказа поставщику */ ON t._Document408_IDRRef = z._IDRRef LEFT JOIN [mag_2019].[dbo]._Reference215X1 p /* партнер */ ON p._IDRRef = z._Fld3409RRef --LEFT JOIN mag_2019.[dbo].[_AccumRg16344] AS zakupka --РН Закупка. Присоединено для проверки,что у заказа нет пту, далее фильтрация по регистратору из закупки по NULL --ON zakupka._Fld16357_RRRef = z.[_IDRRef] WHERE (z.[_Fld3417RRef] = 0x8542BD023FE7B70E4613087D853F26E4 /*'Тех. заказ'*/ ) -- статус AND z._Posted = 1 AND z._Marked = 0 AND [_Fld3491RRef] = 0 /* причина отмены не указана */ --AND z.[_Fld3414RRef] = 0x80CD002590EC174111E581505088A8D5 -- отбор по USD /* SELECT TOP (1000) case [_Fld3417RRef] when 0xB9440E49408A17534955319EBF0DAE60 then 'Согласован' when 0x99FD3E66AA3EFB074984044D5A69CFD5 then 'В пути' when 0x973A5675AC6A17F64DA37EC6C22FC12C then 'Подтвержден' when 0xA55F81415BA33BC24A053ED26C6EC02E then 'Закрыт' when 0xA87A8B13710A30B447DFF1614E84D167 then 'В производстве' end as 'Статус' ,z._Number as 'Номер документа' ,z._Date_Time ,[_Active] ,[_RecordKind] ,[_Fld16330RRef] ,[_Fld16331RRef] /* Номенклатура */ ,[_Fld16332RRef] ,[_Fld16333] ,[_Fld16334RRef] ,[_Fld16335] /* Заказано */ ,[_Fld16336] ,[_Fld16337RRef] FROM [MAG_2019].[dbo].[_AccumRg16329] r /* регистр накопления заказы поставщикам */ INNER JOIN [MAG_2019].[dbo].[_Document408X1] z /* документ заказ поставщику */ ON r._Fld16330RRef = z._IDRRef WHERE r._Active = 0 AND [_Fld3417RRef] = 0xA87A8B13710A30B447DFF1614E84D167 /*В производстве*/ OR [_Fld3417RRef] = 0x99FD3E66AA3EFB074984044D5A69CFD5 /*В пути*/ */ /* SELECT TOP (1000) [_Fld3417RRef] , case [_Fld3417RRef] when 0xB9440E49408A17534955319EBF0DAE60 then 'Согласован' when 0x99FD3E66AA3EFB074984044D5A69CFD5 then 'В пути' when 0x973A5675AC6A17F64DA37EC6C22FC12C then 'Подтвержден' when 0xA55F81415BA33BC24A053ED26C6EC02E then 'Закрыт' when 0xA87A8B13710A30B447DFF1614E84D167 then 'В производстве' end as 'Статус' ,[_IDRRef] FROM [MAG_2019].[dbo].[_Document408X1] /* документ заказ поставщику */ WHERE _Marked = 0 AND _Posted = 1 */ GO /****** Object: View [analytics].[Курсы валют на сегодня] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******//* SELECT TOP (1000) [_Period] ,[_Fld13219RRef] ,[_Fld13220] ,[_Fld13221] --,[_Fld1150] , r._Description FROM [MAG_2019].[dbo].[_InfoRg13218] i INNER JOIN [MAG_2019].[dbo].[_Reference50] r ON i._Fld13219RRef = r._IDRRef */ CREATE VIEW [analytics].[Курсы валют на сегодня] as SELECT r._Description as currency ,( SELECT top 1 [_Fld13220] FROM [MAG_2019].[dbo].[_InfoRg13218] i WHERE i._Fld13219RRef = r._IDRRef ORDER BY [_Period] DESC) as rate FROM [MAG_2019].[dbo].[_Reference50] r GO /****** Object: View [analytics].[Проекты] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE VIEW [analytics].[Проекты] as SELECT p.[_IDRRef] as '1c_id' , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),5,12) )) as 'id' , us._Description as 'Ответственный' ,[_Code] as 'Код УТ' ,p.[_Description] as 'Название' ,[_Fld22715] as 'Завершен' ,[_Fld22711] as 'ПлановаяДатаНачала' ,[_Fld22712] as 'ДатаНачала' ,[_Fld22713] as 'ПлановаяДатаОкончания' ,[_Fld22714] as 'ДатаОкончания' ,[_Fld22716] as 'Комментарий' FROM [MAG_2019].[dbo].[_Reference258] p /* Справочник.Проекты */ LEFT JOIN [MAG_2019].[dbo].[_Reference228X1] us ON us._IDRRef = [_Fld22710RRef] WHERE p._Marked = 0 GO /****** Object: Table [pbi].[enums] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[enums]( [_IDRref] [binary](16) NOT NULL, [value] [nvarchar](150) NOT NULL, [enum] [nvarchar](50) NOT NULL ) ON [PRIMARY] GO /****** Object: View [analytics].[Заявки_на_оплату_по_табличной_части] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [analytics].[Заявки_на_оплату_по_табличной_части] as SELECT z._Number as 'Номер заявки' --, z._Posted, z_t._Fld3964RRef, z._IDRRef , DATEADD(year, -2000, z.[_Date_Time]) as [Дата создания] --, DATEADD(year, -2000,z.[_Fld3902]) as 'Дата оплаты план' --, CONVERT(datetime2, FORMAT(DATEADD(year, -2000, [_Fld3902]),'yyyy-MM-dd'), 120) as 'Дата оплаты план' ,DATEADD(year, -2000, [_Fld3902]) as 'Дата оплаты план' , CASE WHEN z.[_Fld3880RRef]= 0x96388D3803D0E2B243682753FD602008 THEN 'Согласована' WHEN z.[_Fld3880RRef] = 0xA53B783FB8E84C2D4A977FB197BB9B6A THEN 'Не согласована' WHEN z.[_Fld3880RRef] = 0xB22A4A3C82F7B70D452E0F89A2703597 THEN 'К оплате' WHEN z.[_Fld3880RRef] = 0x9EB3FD405C68C64C42B491437EDE1CAB THEN 'Отклонена' END as 'Статус' , spv._Description as 'Валюта' , dds._Description as 'Статья ДДС' , dds._IDRRef as '1c_dds_id' , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),5,12) ))as 'dds id' , z_t._Fld3959 as 'Сумма' , case spv._Description WHEN 'USD' THEN _Fld3959 * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency='USD2') ELSE _Fld3959 * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency=spv._Description) END as 'Сумма в руб.' , CASE WHEN (SELECT SUM(CASE WHEN [_RecordKind] = 0 THEN [_Fld16211] ELSE -[_Fld16211] END) AS summ FROM [MAG_2019].[dbo].[_AccumRg16206] -- РегистрНакопления.ДенежныеСредстваКВыплате WHERE [_Fld16207_RRRef] = _Document416_IDRRef ) = 0 THEN 1 ELSE 0 END as 'Оплачено' , e.value as 'Хоз. операция' , z.[_Fld3900] as 'Комментарий заявки' , z_t.[_Fld3968] as 'Комментарий расшифровки' , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = z_t._Fld3957RRef) as 'Партнер' , (SELECT _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = z._Fld3891RRef)as 'Получатель' , case when org._Description = 'АНТУРАЖ ЛТД ООО' then 'Безнал' ELSE 'Наличные' END as 'Форма оплаты' , org._Description as 'organization' , p.id as 'project id' , p.[1c_id] as '1c_project_id' FROM [MAG_2019].[dbo].[_Document416_VT3955] z_t /*Документ.ЗаявкаНаРасходованиеДенежныхСредств.ТабличнаяЧасть.РасшифровкаПлатежа*/ INNER JOIN [MAG_2019].[dbo].[_Document416] z /* Документ.ЗаявкаНаРасходованиеДенежныхСредств */ ON z._IDRRef = z_t._Document416_IDRRef LEFT JOIN mag_pbi.pbi.enums e ON e._IDRref = z.[_Fld3881RRef] AND e.enum = 'Хоз. операции'/*Перечисление хозяйственная операция*/ LEFT JOIN [MAG_2019].[dbo].[_Reference50] spv ON spv._IDRRef = z.[_Fld3883RRef] /*Справочник.Валюты */ LEFT JOIN [MAG_2019].[dbo].[_Reference316] dds /*Справочник.СтатьиДвиженияДенежныхСредств*/ ON dds._IDRRef = z_t._Fld3964RRef LEFT JOIN [MAG_2019].[dbo].[_Reference198X1] org ON org._IDRRef = z._Fld3879RRef/*справочник организации*/ LEFT JOIN [mag_pbi].[analytics].[Проекты] p ON p.[1c_id] = [_Fld28407RRef] WHERE z._Posted = 1 AND z._Marked = 0x00 AND z.[_Fld3880RRef] <> 0x9EB3FD405C68C64C42B491437EDE1CAB GO /****** Object: View [pbi].[УчетнаяСуммаДляPBI] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Скрипт для команды SelectTopNRows из среды SSMS ******/ CREATE view [pbi].[УчетнаяСуммаДляPBI] as SELECT DATEADD(year, -2000, [_Period]) as [Период] , [_RecorderRRef] as [1c_document_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),21,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),17,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),1,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),5,12))) as [artic_id] , [_Fld15567] as [Количество] , isnull( [_Fld15567] * (SELECT top 1 [_Fld27138] / 1000 FROM [mag_2019].[dbo].[_InfoRg27129X1] -- РегистрСведений.ITS_ОсновнойОтчет WHERE _Fld27130RRef = analitikaUchetaNomenklaturi._Fld20498RRef AND [_Fld27138] > 0 AND datediff(month,_Period, r._Period) >= 0 order by _period desc), [_Fld15567] * (SELECT TOP (1) [Цена]/1000 FROM [mag_pbi].[pbi].[pricelist] where [1c_id] = analitikaUchetaNomenklaturi._Fld20498RRef and [Вид цены] = 'Учетная цена (руб)' ORDER BY _Period desc) ) as [Учетная сумма, руб] , CASE WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN --'Валютная' -- Если валютная ценовая группа, то берем учетную цену (вал) r._Fld15567 * (SELECT TOP (1) [Цена] / 1000 FROM [mag_pbi].[pbi].[pricelist] pl where [1c_id] = analitikaUchetaNomenklaturi._Fld20498RRef and [Вид цены] = 'Учетная цена (вал)' AND pl._Period <= r._Period ORDER BY _Period desc) ELSE --WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN --'Рублевая' --делим учетную цену (руб) на курс r._Fld15567 * (SELECT TOP (1) [Цена] / 1000 FROM [mag_pbi].[pbi].[pricelist] pl where [1c_id] = analitikaUchetaNomenklaturi._Fld20498RRef and [Вид цены] = 'Учетная цена (руб)' AND pl._Period <= r._Period ORDER BY _Period desc) / (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= r._Period ORDER BY _Period desc) END as [Учетная сумма, usd] FROM [MAG_2019].[dbo].[_AccumRg15547] as r LEFT JOIN [MAG_2019].[dbo].[_Reference160] as analitikaUchetaNomenklaturi ON r._Fld15548RRef = analitikaUchetaNomenklaturi._IDRRef LEFT JOIN [MAG_2019].[dbo].[_Reference188X1] as refNomenclatura ON refNomenclatura.[_IDRRef] = analitikaUchetaNomenklaturi.[_Fld20498RRef] GO /****** Object: View [pbi].[Стоимость обработки заказа] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [pbi].[Стоимость обработки заказа] as select dateadd(year, -2000, [_Period]) as [date] , CASE _RecorderTRef WHEN 0x000001CA THEN doc._Number ELSE doc484._Number END as [Номер отчета комиссионера] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [_Fld33391RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33391RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33391RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33391RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36),[_Fld33391RRef], 2),5,12) )) as [artic_id] ,[_Fld33391RRef] as [1c_id]--номенклатура , _Description as [Статья себестоимости] , _Fld33394/1000 as [Сумма] , (_Fld33394/1000) / (SELECT TOP 1 _Fld13220/_Fld13221 FROM [mag_2019].[dbo].[_InfoRg13218] k--РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, k._Period) <= dateadd(year, -2000, s.[_Period]) ORDER BY k._Period desc) as [Расходы МП, usd] , (SELECT _description FROM [MAG_2019].[dbo].[_Reference198X1] /*организации*/ org WHERE org._IDRRef = CASE _RecorderTRef WHEN 0x000001CA THEN doc._Fld5484RRef ELSE doc484._Fld7208RRef END ) as [Организация] , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = CASE _RecorderTRef WHEN 0x000001CA THEN doc._Fld5485RRef ELSE doc484._Fld7210RRef END ) as [Партнер] , (SELECT _Code FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = CASE _RecorderTRef WHEN 0x000001CA THEN doc._Fld5485RRef ELSE doc484._Fld7210RRef END ) as [ПартнерКод] , (SELECT TOP 1 _Fld13220/_Fld13221 FROM [mag_2019].[dbo].[_InfoRg13218] k--РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, k._Period) <= dateadd(year, -2000, s.[_Period]) ORDER BY k._Period desc) as [Курс] from [MAG_2019].dbo._AccumRg33390 s-- РегистрНакопления СтоимостьОбработкиЗаказа left join [MAG_2019].dbo._Reference28342 -- Справочник СтатьиСебестоимости on _Fld33393RRef = _IDRRef left join [MAG_2019].dbo._Document458 as Doc -- Документ ОтчетКомиссионера on _RecorderRRef = Doc._IDRRef LEFT JOIN [MAG_2019].dbo._Document484 as Doc484 -- Документ приобритение услуг и прочих активов ON _RecorderRRef = Doc484._IDRRef GO /****** Object: View [pbi].[РекламаМаркетплейсы] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbi].[РекламаМаркетплейсы] as SELECT DATEADD(year, -2000, [_Period]) AS [Дата] ,[_Fld33745] as [Узел] ,[_Fld33746RRef] as [1c_id] ,LOWER(CONCAT( SUBSTRING ( convert(nvarchar(36), [_Fld33746RRef], 2), 25,8),'-', SUBSTRING ( convert(nvarchar(36), [_Fld33746RRef], 2),21,4),'-', SUBSTRING ( convert(nvarchar(36), [_Fld33746RRef], 2),17,4),'-', SUBSTRING ( convert(nvarchar(36), [_Fld33746RRef], 2),1,4),'-', SUBSTRING ( convert(nvarchar(36), [_Fld33746RRef], 2),5,12) )) as [artic_id] ,[_Fld33747] as [Номер кампании] ,[_Fld33748] as [Тип кампании] ,[_Fld33749] as [Просмотры] ,[_Fld33750] as [Клики] ,NULL as [atbs кол-во добавлений в корзину] ,[_Fld33751]/1000 as [Затраты, руб] ,[_Fld33751]/1000 / (SELECT TOP 1 _Fld13220/_Fld13221 FROM [mag_2019].[dbo].[_InfoRg13218] k--РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, k._Period) <= dateadd(year, -2000, oz.[_Period]) ORDER BY k._Period desc) as [Затраты, usd] ,[_Fld33752]/1000 as [Стоимость клика, руб] ,[_Fld33753] as [Количество заказов] ,[_Fld33754]/1000 as [Сумма заказов] ,[_Fld33755] as [Ставка поиск, %] ,[_Fld33756]/1000 as [Ставка поиск, руб] ,[_Fld33757] as [Охват, %] ,NULL as [cr кол-во заказов / кол-во посещений] ,NULL as [Заказано товаров, упак] ,NULL as [Дата начала] ,[_Fld33758] as [id_product] FROM [MAG_2019].[dbo].[_InfoRg33744] oz /*РегистрСведений.ДанныеПоРекламеOzon*/ UNION ALL SELECT DATEADD(year, -2000, [_Period]) AS [Дата] ,[_Fld33721] as [Узел] ,[_Fld33722RRef] as [1c_id] ,LOWER(CONCAT( SUBSTRING ( convert(nvarchar(36), [_Fld33722RRef], 2), 25,8),'-', SUBSTRING ( convert(nvarchar(36), [_Fld33722RRef], 2),21,4),'-', SUBSTRING ( convert(nvarchar(36), [_Fld33722RRef], 2),17,4),'-', SUBSTRING ( convert(nvarchar(36), [_Fld33722RRef], 2),1,4),'-', SUBSTRING ( convert(nvarchar(36), [_Fld33722RRef], 2),5,12) )) as [artic_id] ,convert(nvarchar(150),[_Fld33724]) as [Номер кампании] ,[_Fld33723] as [Тип кампании] ,[_Fld33725] as [Просмотры] ,[_Fld33726] as [Клики] ,[_Fld33728] as [atbs кол-во добавлений в корзину] ,[_Fld33727]/1000 as [Затраты, руб] ,[_Fld33727]/1000 / (SELECT TOP 1 _Fld13220/_Fld13221 FROM [mag_2019].[dbo].[_InfoRg13218] k--РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, k._Period) <= dateadd(year, -2000, wb.[_Period]) ORDER BY k._Period desc) as [Затраты, usd] ,([_Fld33727]/1000)/(case [_Fld33726] when 0 then 1 else ISNULL([_Fld33726], 1) end) as [Стоимость клика, руб] ,[_Fld33729] as [Количество заказов] ,[_Fld33732]/1000 as [Сумма заказов] ,NULL as [Ставка поиск, %] ,NULL as [Ставка поиск, руб] ,NULL as [Охват, %] ,[_Fld33730] as [cr кол-во заказов / кол-во посещений] ,[_Fld33731] as [Заказано товаров, упак] ,DATEADD(year, -2000, [_Fld33734]) as [Дата начала] ,[_Fld33733] as [id_product] FROM [MAG_2019].[dbo].[_InfoRg33720] wb /*РегистрСведений.ДанныеПоРекламеWB*/ GO /****** Object: Table [pbi].[nomenclature] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[nomenclature]( [artic_id] [nvarchar](36) NULL, [1c_id] [binary](16) NOT NULL, [code] [nchar](11) NOT NULL, [cenovaya_gruppa] [varchar](12) NOT NULL, [description] [nvarchar](150) NOT NULL, [artic] [nvarchar](50) NULL, [vid_nomen] [binary](16) NULL, [Производитель] [nvarchar](max) NULL, [group_id] [nvarchar](36) NULL, [1c_group] [binary](16) NOT NULL, [card] [nvarchar](max) NULL, [photo] [nvarchar](max) NOT NULL, [base] [int] NOT NULL, [Знаменатель веса] [numeric](15, 3) NULL, [Числитель веса] [numeric](15, 4) NULL, [Знаменатель объема] [numeric](15, 3) NULL, [Числитель объема] [numeric](15, 6) NULL, [Количество упак в коробе] [numeric](10, 0) NULL, [Количество упак в кванте] [numeric](10, 0) NULL, [id magok] [nvarchar](15) NULL, [Товарныйменеджера] [nvarchar](1024) NULL, [МенеджерПоЗакупкам2] [nvarchar](1024) NULL, [РуководительНаправления] [nvarchar](1024) NULL, [Менеджер OZON] [nvarchar](1024) NULL, [Менеджер WB] [nvarchar](1024) NULL, [АБС статус] [nvarchar](1024) NULL, [АБС план] [nvarchar](1024) NULL, [ABC Парето] [nvarchar](1024) NULL, [XYZ статус 12м] [nvarchar](1024) NULL, [Комментарий для матрицы] [nvarchar](1024) NULL, [Коллекция] [nvarchar](1024) NULL, [Ценовой сегмент Магок] [nvarchar](1024) NULL, [Ценовой сегмент МП] [nvarchar](1024) NULL, [Кол-во упак в заказе Магок] [nvarchar](1024) NULL, [Бренд] [nvarchar](1024) NULL, [Тип товара] [nvarchar](1024) NULL, [Метка] [nvarchar](1024) NULL, [Ширина, мм] [nvarchar](1024) NULL, [Цвет] [nvarchar](1024) NULL, [Номер цвета] [nvarchar](1024) NULL, [Тип шнура] [nvarchar](1024) NULL, [Тип плетения] [nvarchar](1024) NULL, [Размер] [nvarchar](1024) NULL, [Особенность] [nvarchar](1024) NULL, [Форма] [nvarchar](1024) NULL, [Ширина] [nvarchar](1024) NULL, [Формат упаковки] [nvarchar](1024) NULL, [Макс. запас] [nvarchar](1024) NULL, [Мин. запас] [nvarchar](1024) NULL, [QTY PACKS] [nvarchar](1024) NULL, [Да/Нет Собственное пр-во] [nvarchar](1024) NULL, [ID OZON] [nvarchar](1024) NULL, [ID WB] [nvarchar](1024) NULL, [WB] [nvarchar](1024) NULL, [Ozon] [nvarchar](1024) NULL, [СТМ] [nvarchar](1024) NULL, [Выгружать на я.маркет] [nvarchar](1024) NULL, [Выгружать в Google Merchant] [nvarchar](1024) NULL, [Товар МП] [nvarchar](1024) NULL, [Неликвид] [nvarchar](1024) NULL, [Статус] [nvarchar](1024) NULL, [Сквозной цвет] [nvarchar](1024) NULL, [Базовая упаковка] [numeric](15, 3) NULL, [Качество контента Ozon] [int] NULL, [Качество контента WB] [int] NULL, [Качество контента WB by Ozon] [int] NULL, [Качество контента Magok] [int] NULL, [Вид номенклатуры] [nvarchar](50) NULL, [max_year_quantity] [numeric](38, 3) NULL, [max_quarter_quantity] [numeric](38, 3) NULL, [Цена учетная, руб] [decimal](18, 7) NULL, [Цена учетная, usd] [decimal](18, 7) NULL, [СредниеМесячныеПродажи] [float] NULL, [СКО_МесячныхПродаж] [float] NULL, [minAvailableQty] [decimal](18, 4) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [pbi].[groups] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[groups]( [_Description] [varchar](255) NULL, [g] [varchar](255) NULL, [g1] [varchar](255) NULL, [g2] [varchar](255) NULL, [g3] [varchar](255) NULL, [group_id] [nvarchar](36) NULL, [_ParentIDRRef] [nvarchar](36) NULL, [lvl] [int] NULL, [path] [varchar](255) NULL, [code] [nchar](11) NULL, [1c_id] [binary](16) NULL, [план] [float] NULL, [first group] [nvarchar](36) NULL ) ON [PRIMARY] GO /****** Object: Table [pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi]( [id] [int] NOT NULL, [Период] [datetime2](0) NULL, [Статья] [varchar](50) NOT NULL, [Вид операции] [varchar](25) NOT NULL, [Хоз операция] [varchar](50) NULL, [Организация] [varchar](255) NULL, [Партнер] [varchar](255) NULL, [Контрагент] [varchar](255) NULL, [Менеджер] [varchar](255) NULL, [Тип документа] [varchar](50) NULL, [Номер документа] [varchar](25) NULL, [Валюта документа] [varchar](25) NULL, [Ценовая группа] [varchar](25) NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](21, 9) NULL, [СуммаБезНДС] [numeric](21, 9) NULL, [СуммаРучнойСкидки] [numeric](21, 9) NULL, [СуммаАвтоСкидки] [numeric](21, 9) NULL, [Закупка] [numeric](21, 9) NULL, [Закупка, usd2] [numeric](21, 9) NULL, [Курс usd2] [numeric](15, 3) NULL, [Курс usd] [numeric](15, 3) NULL, [Таможня] [numeric](21, 9) NULL, [ЕАЭС] [numeric](21, 9) NULL, [Учетная цена] [numeric](21, 9) NULL, [Учетная цена USD2+2] [numeric](21, 9) NULL, [Заказ закрыт] [datetime] NULL, [Номер заказа] [nchar](11) NULL, [Маркетинг] [numeric](21, 9) NULL, [Доставка] [numeric](21, 9) NULL, [НДС] [numeric](21, 9) NULL, [Производство] [numeric](21, 9) NULL, [ЗатратыМП] [numeric](21, 9) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](21, 9) NULL, [Учетная стоимость USD2+2] [numeric](21, 9) NULL, [Номер регистратора] [nchar](10) NULL, [Code] [nchar](11) NULL, [ЗатратыСкладХранение] [numeric](21, 9) NULL, [Приемка] [numeric](21, 9) NULL, [АтсМаркировка] [numeric](21, 9) NULL, [ВремяВыполненияМинут] [numeric](21, 9) NULL, [СборкаЗаказа] [numeric](21, 9) NULL, [КоличествоУпаковок] [numeric](15, 3) NULL, [Сумма скидки] [numeric](21, 9) NULL, [Сумма скидки USD2+2] [numeric](21, 9) NULL, [Доп расходы] [numeric](21, 9) NULL, [Доп расходы USD2+2] [numeric](21, 9) NULL, [Учетная сумма, руб] [decimal](21, 9) NULL, [Учетная сумма, usd] [decimal](21, 9) NULL, [Источник заказа] [nvarchar](50) NULL ) ON [PRIMARY] GO /****** Object: View [pbiProd].[СводныйСебестоимость Для PBI] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE VIEW [pbiProd].[СводныйСебестоимость Для PBI] as SELECT s.* FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] s INNER JOIN [mag_2019].[dbo]._Reference188X1 n /*номенклатура*/ ON n._IDRRef = s.[1c_id] INNER JOIN [mag_pbi].[pbi].[groups] g ON n._ParentIDRRef = g.[1c_id] WHERE g.g <> '*Внутренняя' AND [Статья] NOT IN ('Пересчет товара', 'Пересчет товара', 'Сборка заказа', 'Атс маркировка', 'Приемка товара') GO /****** Object: View [analytics].[Продажи_Учёт_Маржа_по_дням] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE VIEW [analytics].[Продажи_Учёт_Маржа_по_дням] AS WITH base AS ( -- Продажи и учетная сумма (только Статья = 'Реализация') SELECT CAST(s.[Период] AS date) AS [d], s.[1c_id], s.Code, SUM(CAST(s.[Сумма] AS decimal(38,6))) AS sales_sum, SUM(CAST(s.[Учетная сумма, руб] AS decimal(38,6))) AS accounting_sum, CAST(0 AS decimal(38,6)) AS ads_cost, CAST(0 AS decimal(38,6)) AS order_cost FROM [mag_pbi].[pbiProd].[СводныйСебестоимость Для PBI] AS s WHERE s.[Статья] = N'Реализация' GROUP BY CAST(s.[Период] AS date), s.[1c_id], s.Code UNION ALL -- Реклама (затраты) SELECT CAST(r.[Дата] AS date) AS [d], r.[1c_id], n.code, CAST(0 AS decimal(38,6)) AS sales_sum, CAST(0 AS decimal(38,6)) AS accounting_sum, SUM(CAST(r.[Затраты, руб] AS decimal(38,6))) AS ads_cost, CAST(0 AS decimal(38,6)) AS order_cost FROM [mag_pbi].[pbi].[РекламаМаркетплейсы] AS r INNER JOIN mag_pbi.pbi.nomenclature n ON r.[1c_id] = n.[1c_id] GROUP BY CAST(r.[Дата] AS date), r.[1c_id],n.code UNION ALL -- Стоимость обработки заказа (затраты) SELECT CAST(o.[date] AS date) AS [d], o.[1c_id], n.code, CAST(0 AS decimal(38,6)) AS sales_sum, CAST(0 AS decimal(38,6)) AS accounting_sum, CAST(0 AS decimal(38,6)) AS ads_cost, SUM(CAST(o.[Сумма] AS decimal(38,6))) AS order_cost FROM [mag_pbi].[pbi].[Стоимость обработки заказа] AS o INNER JOIN pbi.nomenclature n ON o.[1c_id] = n.[1c_id] GROUP BY CAST(o.[date] AS date), o.[1c_id], n.code ) SELECT b.[d], b.[1c_id], b.Code, SUM(b.sales_sum) AS [Сумма продаж], SUM(b.accounting_sum) AS [Учетная сумма], SUM(b.ads_cost) AS [Затраты на рекламу], SUM(b.order_cost) AS [Стоимость обработки], -- «Чистая выручка» после вычета рекламных и обработочных затрат (SUM(b.sales_sum) - SUM(b.ads_cost) - SUM(b.order_cost)) AS [Сумма продаж (нетто)], -- Торговая надбавка = нетто-продажи минус учетная сумма (SUM(b.sales_sum) - SUM(b.ads_cost) - SUM(b.order_cost) - SUM(b.accounting_sum)) AS [Торговая надбавка] FROM base b GROUP BY b.[d], b.[1c_id],b.Code; /* SELECT [Период] --datetime2(0) ,[Статья] ,[1c_id] ,[Количество] ,[Сумма] ,[Учетная сумма, руб] FROM [mag_pbi].[pbiProd].[СводныйСебестоимость Для PBI] s WHERE s.Статья = N'Реализация' SELECT [Дата] --datetime2(0) ,[1c_id] ,[Затраты, руб] FROM [mag_pbi].[pbi].[РекламаМаркетплейсы] SELECT [date] --datetime2(0) ,[1c_id] ,[Сумма] FROM [mag_pbi].[pbi].[Стоимость обработки заказа] */ GO /****** Object: View [analytics].[Заказы] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[Заказы] AS SELECT DATEADD(YEAR, -2000, z._Date_Time) AS [Дата заказа поставщику], z._Number AS [Номер заказа поставщику], t._Fld3473RRef AS [1C_id], LOWER( SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 25, 8) + '-' + SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 21, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 17, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 1, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 5, 12) ) AS partner_id, r._Description AS Контрагент, CASE z._Fld3417RRef WHEN 0xB9440E49408A17534955319EBF0DAE60 THEN 'Согласован' WHEN 0x99FD3E66AA3EFB074984044D5A69CFD5 THEN 'В пути' WHEN 0x973A5675AC6A17F64DA37EC6C22FC12C THEN 'Подтвержден' WHEN 0xA55F81415BA33BC24A053ED26C6EC02E THEN 'Закрыт' WHEN 0xA87A8B13710A30B447DFF1614E84D167 THEN 'В производстве' WHEN 0x8542BD023FE7B70E4613087D853F26E4 THEN 'Тех. заказ' WHEN 0xB38AD6232E2D17D44287D9924E5E6DF2 THEN 'На согласовании' WHEN 0xB2A33CF1C7286AF3463F20D54AE5A0BC THEN 'Выгружен на складе' ELSE 'Неизвестно' END AS Статус, t._Fld3473RRef AS nom_1c_id, n._Description AS Наименование, n._Code AS code, n._Fld21043 AS Артикул, LOWER( SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 25, 8) + '-' + SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 21, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 17, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 1, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 5, 12) ) AS artic_id, t._Fld3477 AS Количество, CONVERT(decimal(10, 2), t._Fld3477 / pack.base_pack) AS [Кол. упаковок], t._Fld3480 AS Цена, t._Fld3481 AS Сумма, g.g, g.path, v._Description AS Валюта, CASE v._Description WHEN 'USD' THEN _Fld3481 * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency='USD2') ELSE _Fld3481 * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency=v._Description) END AS 'Сумма в руб.', CASE WHEN z._Fld3420 < '4000' THEN DATEADD(MONTH, 4, GETDATE()) ELSE DATEADD(YEAR, -2000, z._Fld3420) END as 'Желаемая дата', z._Fld3432 as 'Комментарий' FROM MAG_2019.dbo._Document408X1 AS z -- Документ заказ поставщику INNER JOIN MAG_2019.dbo._Document408_VT3470X1 AS t ON t._Document408_IDRRef = z._IDRRef -- табличная часть LEFT JOIN MAG_2019.dbo._Reference215X1 AS p ON p._IDRRef = z._Fld3409RRef -- Справочник.Партнеры LEFT JOIN MAG_2019.dbo._Reference168 AS r ON r._IDRRef = z._Fld3410RRef -- Справочник.Контрагенты INNER JOIN MAG_2019.dbo._Reference188X1 AS n ON n._IDRRef = t._Fld3473RRef -- Номенклатура LEFT JOIN MAG_2019.dbo._Reference50 AS v ON v._IDRRef = z._Fld3414RRef -- Справочник.Валюты INNER JOIN pbi.groups AS g ON n._ParentIDRRef = g.[1c_id] -- группы OUTER APPLY ( SELECT TOP 1 ISNULL(NULLIF(up.upakovka, 0), 1) AS base_pack FROM pbi.БазоваяУпаковка up WHERE up._OwnerID_RRRef = t._Fld3473RRef ) AS pack WHERE z._Posted = 1 AND z._Marked = 0 AND t._Fld3491RRef = 0 --AND g NOT LIKE '*Внутр%' --AND z._Fld3417RRef <> 0xA55F81415BA33BC24A053ED26C6EC02E /* Не закрыт */ --AND z._Fld3417RRef <> 0x8542BD023FE7B70E4613087D853F26E4 /* Не Тех. заказ */ --AND z._Fld3417RRef <> 0x973A5675AC6A17F64DA37EC6C22FC12C /* Не Подтвержден */ GO /****** Object: View [analytics].[get_orders_by_group] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE view [analytics].[get_orders_by_group] as SELECT z.[Статус] as status ,z.[Номер заказа поставщику] as order_number ,z.[1C_id] ,z.[Дата заказа поставщику] as order_date ,z.Валюта as currency , n._code as 'code' ,[Кол. упаковок] as packages ,z.Количество as units ,[Цена] as price ,[Сумма в руб.] as 'sum' , z.Сумма as amount ,FORMAT([Желаемая дата], 'yyyy-MM') as 'month' ,g.path FROM [mag_pbi].[analytics].[Заказы] z INNER JOIN [mag_2019].[dbo]._Reference188X1 n /*номенклатура*/ ON n._IDRRef = z.[1c_id] INNER JOIN [mag_pbi].[pbi].[groups] g ON n._ParentIDRRef = g.[1c_id] --WHERE [Статус]='В пути' OR [Статус] = 'В производстве' OR [Статус] = 'Выгружен на складе' WHERE z.Статус NOT IN ('Тех. заказ', 'Подтвержден' ,'Закрыт') GO /****** Object: View [pbi].[Организация] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [pbi].[Организация] as --Справочник организаций select DISTINCT([Организация]) FROM [mag_pbi].[pbi].[Себестоимость+СебестоимостьПродаж] WHERE [Организация] IS NOT NULL GO /****** Object: Table [analytics].[forecast] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[forecast]( [id] [int] IDENTITY(1,1) NOT NULL, [scenario_id] [int] NOT NULL, [1c_id] [binary](16) NOT NULL, [code] [nvarchar](36) NOT NULL, [month] [date] NOT NULL, [value] [decimal](18, 3) NOT NULL, [updated_at] [datetime2](0) NOT NULL, [updated_by] [nvarchar](128) NOT NULL, [opt] [decimal](18, 3) NOT NULL, [mp] [decimal](18, 3) NOT NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: View [analytics].[get_forecast_by_group] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE VIEW [analytics].[get_forecast_by_group] as SELECT n.code as code ,f.[scenario_id] ,FORMAT(f.[month], 'yyyy-MM-01') AS [month] ,f.[value] as quantity_base ,g.path FROM [mag_pbi].[analytics].forecast f INNER JOIN mag_pbi.pbi.nomenclature n /*номенклатура*/ ON n.[1c_id] = f.[1c_id] INNER JOIN mag_pbi.pbi.groups g ON n.[1c_group] = g.[1c_id] WHERE g.g not like '*%' AND [value] > 0 GO /****** Object: View [pbi].[sklad_2019] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [pbi].[sklad_2019] as SELECT [_IDRRef] ,[_Description] , case [_Fld28161RRef] when 0x8B77E59222988E024EF951B150F9CF19 then 'Хранение' when 0x97043CB3EDC3B7064C08D641662E9C0E then 'Фасовка' when 0xB710CAB5DA47384D4182043584307EE3 then 'Розничная точка' when 0xBE296DC2882AAAC94C381C08FD79DA2D then 'Виртуальный' else 'Неопределено' end as [Категория] FROM [MAG_2019].[dbo].[_Reference298X1] where _folder = 1 AND _Marked = 0 --WHERE [_Fld28161RRef] = 0x8B77E59222988E024EF951B150F9CF19 GO /****** Object: View [ostatki].[РезервыМПиОПТ] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /**Беру РН СвободныеОстатки, считаю итоги в разрезе склада и номенклатуры, присоединяю заказклиента, чтобы получить хоз операцию, возможно надо хардкодить по клиентам, т.к помимо МП есть еще 2 клиента**/ CREATE VIEW [ostatki].[РезервыМПиОПТ] as SELECT Номенклатура as [1c_id] ,LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), Номенклатура, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), Номенклатура, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), Номенклатура, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), Номенклатура, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), Номенклатура, 2),5,12) )) as artic_id , wharehouse_id , ( SELECT s._Description FROM [mag_pbi].[pbi].[sklad_2019] s /*склад*/ WHERE s._IDRRef = wharehouse_id) as Склад , sum([Резерв]) as [Резерв] , [Где товар] FROM ( SELECT ostatki.[_Fld17246RRef] AS Номенклатура, ostatki.[_Fld17248RRef] AS wharehouse_id, --[_Fld17250] - колонка [В Резерве Со Склада] РН СвободныеОстатки -- суммируем резервы мп CASE WHEN ostatki.[_RecordKind] = 1 THEN -[_Fld17250] ELSE [_Fld17250] END as [Резерв], CASE [_Fld3156RRef] WHEN 0x9D3D5976F5C778CF4B2C4A59A606D3E5 THEN 'резервМП' ELSE 'резервОПТ' END as 'Где товар' /* CASE WHEN [_Fld3156RRef] = 0x9D3D5976F5C778CF4B2C4A59A606D3E5 --хозоперация комиссия THEN CASE WHEN ostatki.[_RecordKind] = 1 THEN -[_Fld17250] ELSE [_Fld17250] END ELSE 0 END AS РезервМпСоСклада, -- суммируем резервы опт CASE WHEN [_Fld3156RRef] = 0xA2130CEA734FC86C419139394DEC627E -- хозперация реализация THEN CASE WHEN ostatki.[_RecordKind] = 1 THEN -[_Fld17250] ELSE [_Fld17250] END ELSE 0 END AS ОптРезервыСоСклада*/ FROM [MAG_2019].[dbo].[_AccumRg17245] AS ostatki --РН СвободныеОстатки INNER JOIN [MAG_2019].[dbo].[_Document404X1] AS doczakaz ON doczakaz._IDRRef = ostatki._RecorderRRef WHERE ostatki.[_RecorderTRef] = 0x00000194 -- Только заказы клиентов AND [_Fld17250] <> 0 )as t GROUP BY Номенклатура, wharehouse_id, [Где товар] GO /****** Object: View [pbi].[Заказо_в_производстве] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE view [pbi].[Заказо_в_производстве] as SELECT DATEADD(year, -2000, z._Date_Time) as [Дата заказа поставщику] ,z._Number as 'Номер заказа поставщику' , t._Fld3473RRef as [1C_id] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),5,12) )) as partner_id , (SELECT r._Description FROM [MAG_2019].[dbo].[_Reference168] r WHERE r._IDRRef = z._Fld3410RRef) as 'Контрагент' ,case [_Fld3417RRef] when 0xB9440E49408A17534955319EBF0DAE60 then 'Согласован' when 0x99FD3E66AA3EFB074984044D5A69CFD5 then 'В пути' when 0x973A5675AC6A17F64DA37EC6C22FC12C then 'Подтвержден' when 0xA55F81415BA33BC24A053ED26C6EC02E then 'Закрыт' when 0xA87A8B13710A30B447DFF1614E84D167 then 'В производстве' when 0x8542BD023FE7B70E4613087D853F26E4 then 'Тех. заказ' end as 'Статус' , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2),5,12) ))as artic_id , t._Fld3477 as [Количество] , convert (decimal(10,2), t._Fld3477/(case (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE t._Fld3473RRef = up._OwnerID_RRRef) when 0 then 1 when null then 1 else (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE t._Fld3473RRef = up._OwnerID_RRRef) end)) as 'Кол. упаковок' , t._Fld3480/1000 as [Цена] , t._Fld3481/1000 as [Сумма] , t._Fld3481/1000 * (SELECT TOP 1 _Fld13220/_Fld13221 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = z._Fld3414RRef --валюта документа AND _Period <= z._Date_Time ORDER BY _Period desc) / (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= z._Date_Time ORDER BY _Period desc) as [Сумма всего в пр-ве, usd] , (SELECT _DESCRIPTION FROM [MAG_2019].[dbo].[_Reference50] /*валюты*/ v WHERE v._IDRRef = [_Fld3414RRef]) as 'Валюта' , e.value as 'Хоз. операция' , case e.value WHEN 'Закупка у поставщика' THEN 'Производство РФ' WHEN 'Импорт (товары в пути)' THEN 'Производство Импорт' WHEN 'Ввоз из ЕАЭС' THEN 'Производство ЕАЭС' END as 'Где товар' /*, case z.[_Fld3414RRef] when 0x80CD002590EC174111E581505088A8D5 then 'usd' else 'руб' end as 'Валюта' */ FROM [MAG_2019].[dbo].[_Document408X1] z /* документ заказ поставщику */ INNER JOIN [MAG_2019].[dbo].[_Document408_VT3470X1] t /* табличная часть заказа поставщику */ ON t._Document408_IDRRef = z._IDRRef LEFT JOIN [mag_2019].[dbo]._Reference215X1 p /* партнер */ ON p._IDRRef = z._Fld3409RRef LEFT JOIN mag_pbi.pbi.enums e ON e._IDRref = z.[_Fld3431RRef] AND e.enum = 'Хоз. операции'/*Перечисление хозяйственная операция*/ WHERE ([_Fld3417RRef] = 0xA87A8B13710A30B447DFF1614E84D167 /* В производстве */) AND z._Posted = 1 AND z._Marked = 0 AND [_Fld3491RRef] = 0 /* причина отмены не указана */ /* SELECT TOP (1000) case [_Fld3417RRef] when 0xB9440E49408A17534955319EBF0DAE60 then 'Согласован' when 0x99FD3E66AA3EFB074984044D5A69CFD5 then 'В пути' when 0x973A5675AC6A17F64DA37EC6C22FC12C then 'Подтвержден' when 0xA55F81415BA33BC24A053ED26C6EC02E then 'Закрыт' when 0xA87A8B13710A30B447DFF1614E84D167 then 'В производстве' when 0x8542BD023FE7B70E4613087D853F26E4 then 'Тех заказ' end as 'Статус' ,z._Number as 'Номер документа' ,z._Date_Time ,[_Active] ,[_RecordKind] ,[_Fld16330RRef] ,[_Fld16331RRef] /* Номенклатура */ ,[_Fld16332RRef] ,[_Fld16333] ,[_Fld16334RRef] ,[_Fld16335] /* Заказано */ ,[_Fld16336] ,[_Fld16337RRef] FROM [MAG_2019].[dbo].[_AccumRg16329] r /* регистр накопления заказы поставщикам */ INNER JOIN [MAG_2019].[dbo].[_Document408X1] z /* документ заказ поставщику */ ON r._Fld16330RRef = z._IDRRef WHERE r._Active = 0 AND [_Fld3417RRef] = 0xA87A8B13710A30B447DFF1614E84D167 /*В производстве*/ OR [_Fld3417RRef] = 0x99FD3E66AA3EFB074984044D5A69CFD5 /*В пути*/ */ /* SELECT TOP (1000) [_Fld3417RRef] , case [_Fld3417RRef] when 0xB9440E49408A17534955319EBF0DAE60 then 'Согласован' when 0x99FD3E66AA3EFB074984044D5A69CFD5 then 'В пути' when 0x973A5675AC6A17F64DA37EC6C22FC12C then 'Подтвержден' when 0xA55F81415BA33BC24A053ED26C6EC02E then 'Закрыт' when 0xA87A8B13710A30B447DFF1614E84D167 then 'В производстве' end as 'Статус' ,[_IDRRef] FROM [MAG_2019].[dbo].[_Document408X1] /* документ заказ поставщику */ WHERE _Marked = 0 AND _Posted = 1 */ GO /****** Object: View [analytics].[Товары на складах] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE view [analytics].[Товары на складах] as SELECT t._Fld17485RRef as [1c_id] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), t._Fld17485RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), t._Fld17485RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld17485RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld17485RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld17485RRef, 2),5,12) )) as artic_id , s._Description as sklad , s.[Категория] as [Где товар] , sum( [_Fld17491]*(case _RecordKind when 0 then 1 when 1 then -1 end) ) as quantity FROM [mag_2019].[dbo].[_AccumRg17484] t /*регистр товары на складах*/ --INNER JOIN [mag_2019].[dbo]._Reference188X1 n /*номенклатура*/ ON n._IDRRef = t._Fld17485RRef --INNER JOIN [mag_pbi].[pbi].[groups] g ON n._ParentIDRRef = g.[1c_id] INNER JOIN [mag_pbi].[pbi].[sklad_2019] s /*склад*/ ON s._IDRRef = t._Fld17488RRef WHERE s.[Категория]='Хранение' OR s.[Категория]='Фасовка' --g.path like 'Игрушки%' GROUP BY t._Fld17485RRef, s._Description, s.[Категория] GO /****** Object: View [pbi].[Заказо_в_пути] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE view [pbi].[Заказо_в_пути] as SELECT DATEADD(year, -2000, z._Date_Time) as [Дата заказа поставщику] ,z._Number as 'Номер заказа поставщику' , t._Fld3473RRef as [1C_id] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),5,12) )) as partner_id , (SELECT r._Description FROM [MAG_2019].[dbo].[_Reference168] r WHERE r._IDRRef = z._Fld3410RRef) as 'Контрагент' ,case [_Fld3417RRef] when 0xB9440E49408A17534955319EBF0DAE60 then 'Согласован' when 0x99FD3E66AA3EFB074984044D5A69CFD5 then 'В пути' when 0x973A5675AC6A17F64DA37EC6C22FC12C then 'Подтвержден' when 0xA55F81415BA33BC24A053ED26C6EC02E then 'Закрыт' when 0xA87A8B13710A30B447DFF1614E84D167 then 'В производстве' when 0x8542BD023FE7B70E4613087D853F26E4 then 'Тех. заказ' end as 'Статус' , t._Fld3473RRef as [nom_1c_id] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld3473RRef, 2),5,12) ))as artic_id , t._Fld3477 as [Количество] , convert (decimal(10,2), t._Fld3477/(case (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE t._Fld3473RRef = up._OwnerID_RRRef) when 0 then 1 when null then 1 else (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE t._Fld3473RRef = up._OwnerID_RRRef) end)) as 'Кол. упаковок' , t._Fld3480/1000 as [Цена] , t._Fld3481/1000 as [Сумма] , t._Fld3481/1000 * (SELECT TOP 1 _Fld13220/_Fld13221 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = z._Fld3414RRef --валюта документа AND _Period <= z._Date_Time ORDER BY _Period desc) / (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= z._Date_Time ORDER BY _Period desc) as [Сумма всего в пути, usd] /*, case z.[_Fld3414RRef] when 0x80CD002590EC174111E581505088A8D5 then 'usd' else 'руб' end as 'Валюта'*/ , (SELECT _DESCRIPTION FROM [MAG_2019].[dbo].[_Reference50] /*валюты*/ v WHERE v._IDRRef = [_Fld3414RRef]) as 'Валюта' , case when ( SELECT COUNT(*) FROM mag_2019.[dbo].[_AccumRg16344] AS zakupka --РН Закупка INNER JOIN [mag_2019].[dbo]._Reference160 an ON an._IDRRef = zakupka.[_Fld16349RRef] WHERE an._Fld20498RRef = t._Fld3473RRef AND zakupka._Fld16357_RRRef = z.[_IDRRef] ) = 0 THEN 'В пути до РФ' ELSE 'В пути в РФ' END as 'Где товар' FROM [MAG_2019].[dbo].[_Document408X1] z /* документ заказ поставщику */ INNER JOIN [MAG_2019].[dbo].[_Document408_VT3470X1] t /* табличная часть заказа поставщику */ ON t._Document408_IDRRef = z._IDRRef LEFT JOIN [mag_2019].[dbo]._Reference215X1 p /* партнер */ ON p._IDRRef = z._Fld3409RRef --LEFT JOIN mag_2019.[dbo].[_AccumRg16344] AS zakupka --РН Закупка. Присоединено для проверки,что у заказа нет пту, далее фильтрация по регистратору из закупки по NULL --ON zakupka._Fld16357_RRRef = z.[_IDRRef] WHERE (z.[_Fld3417RRef] = 0x99FD3E66AA3EFB074984044D5A69CFD5 /*'В пути'*/ ) -- статус AND z._Posted = 1 AND z._Marked = 0 AND [_Fld3491RRef] = 0 /* причина отмены не указана */ --AND z.[_Fld3414RRef] = 0x80CD002590EC174111E581505088A8D5 -- отбор по USD /* SELECT TOP (1000) case [_Fld3417RRef] when 0xB9440E49408A17534955319EBF0DAE60 then 'Согласован' when 0x99FD3E66AA3EFB074984044D5A69CFD5 then 'В пути' when 0x973A5675AC6A17F64DA37EC6C22FC12C then 'Подтвержден' when 0xA55F81415BA33BC24A053ED26C6EC02E then 'Закрыт' when 0xA87A8B13710A30B447DFF1614E84D167 then 'В производстве' end as 'Статус' ,z._Number as 'Номер документа' ,z._Date_Time ,[_Active] ,[_RecordKind] ,[_Fld16330RRef] ,[_Fld16331RRef] /* Номенклатура */ ,[_Fld16332RRef] ,[_Fld16333] ,[_Fld16334RRef] ,[_Fld16335] /* Заказано */ ,[_Fld16336] ,[_Fld16337RRef] FROM [MAG_2019].[dbo].[_AccumRg16329] r /* регистр накопления заказы поставщикам */ INNER JOIN [MAG_2019].[dbo].[_Document408X1] z /* документ заказ поставщику */ ON r._Fld16330RRef = z._IDRRef WHERE r._Active = 0 AND [_Fld3417RRef] = 0xA87A8B13710A30B447DFF1614E84D167 /*В производстве*/ OR [_Fld3417RRef] = 0x99FD3E66AA3EFB074984044D5A69CFD5 /*В пути*/ */ /* SELECT TOP (1000) [_Fld3417RRef] , case [_Fld3417RRef] when 0xB9440E49408A17534955319EBF0DAE60 then 'Согласован' when 0x99FD3E66AA3EFB074984044D5A69CFD5 then 'В пути' when 0x973A5675AC6A17F64DA37EC6C22FC12C then 'Подтвержден' when 0xA55F81415BA33BC24A053ED26C6EC02E then 'Закрыт' when 0xA87A8B13710A30B447DFF1614E84D167 then 'В производстве' end as 'Статус' ,[_IDRRef] FROM [MAG_2019].[dbo].[_Document408X1] /* документ заказ поставщику */ WHERE _Marked = 0 AND _Posted = 1 */ GO /****** Object: View [analytics].[nomenclature] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[nomenclature] as SELECT LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),5,12) ))as artic_id , n._IDRRef as '1c_id' , n._Code as code , CASE WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Рублевая' WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Валютная' ELSE 'Неопределено' END as cenovaya_gruppa , n._Description as description /*Наименование*/ , n._Fld21043 as artic /*Артикул*/ , n._Fld21053RRef as vid_nomen , cast( (SELECT _Description FROM [MAG_2019].[dbo].[_Reference260] pr WHERE pr._IDRRef = n._Fld21079RRef) as nvarchar(max)) as 'Производитель' , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),5,12) ))as group_id , n._ParentIDRRef as '1c_group' --, isnull(us._Description, 'Менеджер') as [manager] , qr._Fld27045 as 'card' , concat('https://media.magok.ru/', f._Fld21201) as 'photo' , 2019 as base , n._Fld21046 as [Знаменатель веса] , n._Fld21049 as [Числитель веса] , n._Fld21089 as [Знаменатель объема] , n._Fld21092 as [Числитель объема] , n._Fld33413 as [id magok] , (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE n._IDRRef = up._OwnerID_RRRef) as 'Базовая упаковка' , (select r._Description from [MAG_2019].[dbo].[_Reference69] /*виды ном*/ r WHERE r._IDRRef = n._Fld21053RRef) as [Вид номенклатуры] from [mag_2019].[dbo]._Reference188X1 n /*номенклатура*/ LEFT JOIN [mag_2019].[dbo].[_InfoRg27043X1] /* Регистр сведений QR коды */ qr ON qr._Fld27044RRef = n._IDRRef LEFT JOIN [mag_2019].[dbo]._Reference191X1 f /*номенклатураПрисоедФайлы*/ ON f._IDRRef = n._Fld21086RRef WHERE n._Folder = 1 GO /****** Object: View [analytics].[Внешние остатки] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[Внешние остатки] as SELECT nod._Description AS [Узел] , ost._Fld33601 AS [Тип] , ost._Fld33595 AS [Склад] , DATEADD(YEAR, -2000, ost._Fld33596) AS [Дата обновления] , [_Fld28683RRef] as [1c_id] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [_Fld28683RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28683RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28683RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28683RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36),[_Fld28683RRef], 2),5,12) )) as [artic_id] , n.code AS [code] , n.[1c_group] as [group_id] , ost._Fld33599 AS [id_внешний] , ost._Fld33602 AS [Количество] , ost._Fld33603 AS [Доступное кол-во] FROM [MAG_2019].[dbo].[_InfoRg28682X1] AS ost /* РегистрСведений.ОстаткиТоваровВоВнешнихСистемах */ LEFT JOIN [mag_pbi].[pbi].[nomenclature] n ON n.[1c_id] = ost._Fld28683RRef /* Справочник.Номенклатура */ LEFT JOIN [MAG_2019].[dbo].[_Node28072X1] nod ON nod._IDRRef = ost._Fld28684RRef /* ПланОбмена.ВнешниеСистемы */ GO /****** Object: View [analytics].[Остатки МП] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[Остатки МП] as SELECT t.[Где товар], t.artic_id, t.[1c_id], sum(t.quantity) as quantity FROM ( select case WHEN CHARINDEX('Ozon', [Узел])>0 then 'Ozon' WHEN CHARINDEX('WildBerries', [Узел])>0 then 'WildBerries' END as 'Где товар' , [1c_id], [artic_id], sum([Доступное кол-во]) as quantity FROM [mag_pbi].[analytics].[Внешние остатки] as t WHERE t.[Дата обновления] >= FORMAT(GETDATE(), 'yyyy-MM-dd') group by Узел, [1c_id], [artic_id] ) as t GROUP BY t.[Где товар], t.artic_id, t.[1c_id] GO /****** Object: View [analytics].[Где товар] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[Где товар] as SELECT [1c_id] , [artic_id] , [Где товар] , quantity FROM [analytics].[Товары на складах] UNION ALL SELECT [1c_id] , [artic_id] , [Где товар] , quantity FROM [analytics].[Остатки МП] UNION ALL SELECT [1c_id] , [artic_id] , [Где товар] , Резерв as quantity FROM [ostatki].[РезервыМПиОПТ] UNION ALL SELECT [1c_id] , [artic_id] , [Где товар] , Количество as quantity FROM [pbi].[Заказо_в_пути]-- where [Номер заказа поставщику] = 'АНУТ-003313' UNION ALL SELECT [1c_id] , [artic_id] , [Где товар] , Количество as quantity FROM [pbi].[Заказо_в_производстве] GO /****** Object: Table [pbiProd].[СебестоимостьСводныйОт2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbiProd].[СебестоимостьСводныйОт2022]( [id] [int] IDENTITY(1,1) NOT NULL, [Период] [datetime2](0) NULL, [Статья] [varchar](50) NOT NULL, [Вид операции] [varchar](25) NOT NULL, [Хоз операция] [varchar](50) NULL, [Организация] [varchar](255) NULL, [Партнер] [varchar](255) NULL, [Контрагент] [varchar](255) NULL, [Менеджер] [varchar](255) NULL, [Тип документа] [varchar](50) NULL, [Номер документа] [varchar](25) NULL, [Валюта документа] [varchar](25) NULL, [Ценовая группа] [varchar](25) NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](21, 9) NULL, [СуммаБезНДС] [numeric](21, 9) NULL, [СуммаРучнойСкидки] [numeric](21, 9) NULL, [СуммаАвтоСкидки] [numeric](21, 9) NULL, [Закупка] [numeric](21, 9) NULL, [Закупка, usd2] [numeric](21, 9) NULL, [Курс usd2] [numeric](15, 3) NULL, [Курс usd] [numeric](15, 3) NULL, [Таможня] [numeric](21, 9) NULL, [ЕАЭС] [numeric](21, 9) NULL, [Учетная цена] [numeric](21, 9) NULL, [Учетная цена USD2+2] [numeric](21, 9) NULL, [Заказ закрыт] [datetime] NULL, [Номер заказа] [nchar](11) NULL, [Маркетинг] [numeric](21, 9) NULL, [Доставка] [numeric](21, 9) NULL, [НДС] [numeric](21, 9) NULL, [Производство] [numeric](21, 9) NULL, [ЗатратыМП] [numeric](21, 9) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](21, 9) NULL, [Учетная стоимость USD2+2] [numeric](21, 9) NULL, [Номер регистратора] [nchar](10) NULL, [Code] [nchar](11) NULL, [ЗатратыСкладХранение] [numeric](21, 9) NULL, [Приемка] [numeric](21, 9) NULL, [АтсМаркировка] [numeric](21, 9) NULL, [ВремяВыполненияМинут] [numeric](21, 9) NULL, [СборкаЗаказа] [numeric](21, 9) NULL, [КоличествоУпаковок] [numeric](15, 3) NULL, [Сумма скидки] [numeric](21, 9) NULL, [Сумма скидки USD2+2] [numeric](21, 9) NULL, [Доп расходы] [numeric](21, 9) NULL, [Доп расходы USD2+2] [numeric](21, 9) NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: View [pbi].[Партнеры] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [pbi].[Партнеры] AS WITH base AS ( select --, p.* p._IDRRef as [1c_id] , p._Code , LOWER(CONCAT( SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2), 25,8),'-', SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),21,4),'-', SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),17,4),'-', SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),1,4),'-', SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),5,12) )) as [partner_id] , (SELECT TOP 1 _Fld27512 FROM [MAG_2019].[dbo].[_InfoRg27507X1] WHERE _Fld27510_RRRef = p._IDRRef) as [bitrix_id] /* Bitrix ID Партнер из РегистрСведений.Б24_Синхр_ИдентификаторыОбъектов */ , p._Description as [partner] , r._Description as region , (SELECT TOP 1 q._Description FROM [mag_2019].[dbo].[_Reference48] q WHERE q.[_IDRRef] = r.[_ParentIDRRef]) as oblast , (SELECT TOP 1 g._Description FROM [mag_2019].[dbo].[_Reference48] g WHERE g.[_IDRRef] = ( SELECT TOP 1 q._ParentIDRRef FROM [mag_2019].[dbo].[_Reference48] q WHERE q.[_IDRRef] = r.[_ParentIDRRef])) as okrug , p._Fld21809RRef as [1c_manager_id] , (SELECT _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = p._Fld21809RRef) as [Основной менеджер] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), p._Fld21809RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), p._Fld21809RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), p._Fld21809RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), p._Fld21809RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), p._Fld21809RRef, 2),5,12) ))as manager_id , (select _Description from [MAG_2019].[dbo].[_Reference133X1] r1 where r1._IDRRef = (select _Fld21824_RRRef from [MAG_2019].[dbo].[_Reference215_VT21821X1] where _Reference215_IDRRef = p._IDRRef AND _Fld21823RRef = 0x997EB49691D57EFD11ECC5660A03B95B ))as [Направление деятельности] , (SELECT _Description FROM [MAG_2019].[dbo].[_Reference133X1] r1 WHERE r1._IDRRef = (SELECT _Fld21824_RRRef FROM [MAG_2019].[dbo].[_Reference215_VT21821X1] WHERE _Reference215_IDRRef = p._IDRRef AND _Fld21823RRef = 0x80EE0CC47A052DFD11E74AB551FB3177 )) as [Что шьют?] , (SELECT _Description FROM [MAG_2019].[dbo].[_Reference133X1] r1 WHERE r1._IDRRef = (SELECT _Fld21824_RRRef FROM [MAG_2019].[dbo].[_Reference215_VT21821X1] WHERE _Reference215_IDRRef = p._IDRRef AND _Fld21823RRef = 0x997DB49691D57EFD11EC9C58903BD50D )) as [Статус партнера] , (SELECT _Description FROM [MAG_2019].[dbo].[_Reference133X1] r1 WHERE r1._IDRRef = (SELECT _Fld21824_RRRef FROM [MAG_2019].[dbo].[_Reference215_VT21821X1] WHERE _Reference215_IDRRef = p._IDRRef AND _Fld21823RRef = 0x998DB49691D57EFD11F0A297E91F7A80 )) as [Статус по динамике 2025/2024] , (SELECT _Description FROM [MAG_2019].[dbo].[_Reference133X1] r1 WHERE r1._IDRRef = (SELECT _Fld21824_RRRef FROM [MAG_2019].[dbo].[_Reference215_VT21821X1] WHERE _Reference215_IDRRef = p._IDRRef AND _Fld21823RRef = 0x998DB49691D57EFD11F0A29821A66692 )) as [Статус по обороту 2025] ,(SELECT _Description FROM MAG_2019.dbo._Reference133X1 AS r1 WHERE (_IDRRef = (SELECT _Fld21824_RRRef FROM MAG_2019.dbo._Reference215_VT21821X1 AS _Reference215_VT21821X1_1 WHERE (_Reference215_IDRRef = p._IDRRef) AND (_Fld21823RRef = 0x80D40CC47A052DFD11E6B18C02F2A68E)))) AS Category , case when p._Fld21805 =0x01 then 1 else 0 end as 'client' /**/ , case when p._Fld21807 =0x01 then 1 else 0 end as 'supplier' /**/ , case when p._Fld21810 =0x01 then 1 else 0 end as 'konkurent' /**/ , p._IDRRef as partner_ref , DATEADD(year, -2000, p._Fld21804) as [ДатаРегистрации] , (select Sg._Description FROM [MAG_2019].[dbo].[_Reference286] Sg /*Справочник Сегменты клиентов*/ where Sg._IDRRef = (select top 1 _Fld13942RRef from [MAG_2019].[dbo].[_InfoRg13941] /*РС Партнеры Сегмента*/ where _Fld13943RRef = p._IDRRef)) as [Сегмент] FROM [mag_2019].[dbo]._Reference215X1 p /* партнер */ LEFT JOIN [mag_2019].[dbo].[_Reference48] r /* бизнес регион */ ON p._Fld21802RRef = r._IDRRef /*LEFT JOIN [MAG_2019].[dbo].[_Reference215_VT21821X1] ref -- доп реквизиты партнеров ON ref._Reference215_IDRRef = p._IDRRef LEFT JOIN [MAG_2019].[dbo].[_Reference181] r1 --справочник направления деятельности ON r1._IDRRef = ref._Fld21824_RRRef where 0x997EB49691D57EFD11ECC5660A03B95B = ref._Fld21823RRef -- отбираем по доп реквизиту "направление деятельности(битрикс24)" таблица chr1109 */ WHERE p._Marked = 0 ) SELECT b.[1c_id] ,b.[_Code] ,b.[partner_id] ,b.[bitrix_id] ,b.[partner] ,b.[region] ,b.[oblast] ,b.[okrug] ,b.[1c_manager_id] ,b.[Основной менеджер] ,b.[manager_id] ,b.[Направление деятельности] ,b.[Что шьют?] ,b.[Статус партнера] ,b.[Статус по динамике 2025/2024] ,b.[Статус по обороту 2025] ,b.[Category] ,b.[client] ,b.[supplier] ,b.[konkurent] ,b.[partner_ref] ,b.[ДатаРегистрации] ,b.[Сегмент] , (select top 1 [Период] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[PartnerId] = b.[partner_id] AND [Вид операции] = 'Расход' AND [Статья] = 'Реализация' ORDER BY [Период] ASC) as [Дата первого заказа] FROM base b GO /****** Object: View [analytics].[Заявки_без_проекта_неоплачено] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE VIEW [analytics].[Заявки_без_проекта_неоплачено] as SELECT [Номер заявки] ,[Дата создания] ,[Дата оплаты план] ,[Статус] ,[Валюта] ,[Статья ДДС] ,[1c_dds_id] ,[dds id] ,[Сумма] ,[Сумма в руб.] ,[Оплачено] ,[Хоз. операция] ,[Комментарий заявки] ,[Комментарий расшифровки] ,[Партнер] ,[Получатель] ,[Форма оплаты] ,[organization] ,[project id] ,[1c_project_id] FROM [mag_pbi].[analytics].[Заявки_на_оплату_по_табличной_части] WHERE [Оплачено]=0 AND [project id] is null AND [Дата оплаты план] >= '2024-06-01' GO /****** Object: View [pbi].[Резервы] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbi].[Резервы] AS WITH base AS ( SELECT CAST(GETDATE() AS DATE) AS [Дата обновления], so._Fld17246RRef, -- оставляем GUID для связи с упаковкой s._Description as [Склад], -- считаем суммы один раз --SUM(CASE WHEN _RecordKind = 1 THEN -so._Fld17250 ELSE so._Fld17249 END) as [В наличии, шт], SUM(CASE WHEN _RecordKind = 1 THEN -so._Fld17250 ELSE so._Fld17250 END) as [В резерве со склада, шт], SUM(CASE WHEN _RecordKind = 1 THEN -so._Fld17251 ELSE so._Fld17251 END) as [В резерве под заказ, шт] FROM [MAG_2019].[dbo].[_AccumRg17245] so /*РегистрНакопления.СвободныеОстатки*/ INNER JOIN [mag_pbi].[pbi].[sklad_2019] s /*склад*/ ON s._IDRRef = so._Fld17248RRef WHERE (so._Fld17250 > 0 OR so._Fld17251 > 0) AND so._Period > '01-01-4025' GROUP BY so._Fld17246RRef, s._Description ) SELECT b.[Дата обновления], -- строим artic_id только здесь LOWER(CONCAT( SUBSTRING ( convert(nvarchar(36), b._Fld17246RRef, 2), 25,8),'-', SUBSTRING ( convert(nvarchar(36), b._Fld17246RRef, 2),21,4),'-', SUBSTRING ( convert(nvarchar(36), b._Fld17246RRef, 2),17,4),'-', SUBSTRING ( convert(nvarchar(36), b._Fld17246RRef, 2),1,4),'-', SUBSTRING ( convert(nvarchar(36), b._Fld17246RRef, 2),5,12) )) as [artic_id], b.[Склад], --b.[В резерве со склада, шт], --b.[В резерве под заказ, шт], --b.[В наличии, шт], /*b.[В наличии, шт] / CASE WHEN up.upakovka = 0 OR up.upakovka IS NULL THEN 1 ELSE up.upakovka END as [В наличии, упак],*/ (b.[В резерве со склада, шт] + b.[В резерве под заказ, шт]) as [В резерве всего, шт], (b.[В резерве со склада, шт] + b.[В резерве под заказ, шт]) / CASE WHEN up.upakovka = 0 OR up.upakovka IS NULL THEN 1 ELSE up.upakovka END as [В резерве всего, упак] FROM base b OUTER APPLY ( SELECT TOP 1 upakovka FROM mag_pbi.pbi.[БазоваяУпаковка] up WHERE up._OwnerID_RRRef = b._Fld17246RRef ) up WHERE b.[В резерве со склада, шт] <> 0 OR b.[В резерве под заказ, шт] <> 0; GO /****** Object: View [analytics].[get_nomenclature_by_group] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE view [analytics].[get_nomenclature_by_group] as SELECT n.code as code, n.description as 'description', n.artic as artic, g.path, --concat('https://media.magok.ru/', f._Fld21201) as 'photo', n.photo, n.Производитель as 'manufacturer', n.Бренд as 'brand', n.[1c_id] as [1C_id], n.[Статус] as status, n.[АБС статус] as ABC , wb._Fld28246 as [WB] , wbip._Fld28246 as [WBIP] , ozon._Fld28246 as [OZON] , ozonip._Fld28246 as [OZONIP] --, factory.Количество as factoryQuantity --, way.Количество as onwayQuantity , n.[max_year_quantity] , n.[max_quarter_quantity] , n.[Цена учетная, руб] , n.[Цена учетная, usd] , n.[СКО_МесячныхПродаж] , n.cenovaya_gruppa from [mag_pbi].[pbi].nomenclature n /*номенклатура*/ --INNER JOIN [mag_reports].[sales].[w_groups] g INNER JOIN mag_pbi.pbi.groups g ON n.[1c_group] = g.[1c_id] /*LEFT JOIN [mag_2019].[dbo]._Reference191X1 f /*номенклатураПрисоедФайлы*/ ON f._IDRRef = n._Fld21086RRef*/ LEFT JOIN [MAG_2019].[dbo].[_InfoRg28243X1] wbip -- идентификаторы объектов во внешних системах ON wbip.[_Fld28244_RRRef] = n.[1c_id] AND wbip._Fld28245RRef = 0x997FB49691D57EFD11ED51180696FB46 LEFT JOIN [MAG_2019].[dbo].[_InfoRg28243X1] ozonip -- идентификаторы объектов во внешних системах ON ozonip.[_Fld28244_RRRef] = n.[1c_id] AND ozonip._Fld28245RRef = 0x9987B49691D57EFD11EED582B1EEAA3C LEFT JOIN [MAG_2019].[dbo].[_InfoRg28243X1] ozon -- идентификаторы объектов во внешних системах ON ozon.[_Fld28244_RRRef] = n.[1c_id] AND ozon._Fld28245RRef = 0xAEC3B496910DCFD611EC0EF79C3B458F LEFT JOIN [MAG_2019].[dbo].[_InfoRg28243X1] wb -- идентификаторы объектов во внешних системах ON wb.[_Fld28244_RRRef] = n.[1c_id] AND wb._Fld28245RRef = 0xAEC3B496910DCFD611EC000B54C819F4 /* LEFT JOIN [mag_pbi].[pbi].[Заказо_в_производстве] factory ON factory.[1C_id] = n.[1c_id] LEFT JOIN [mag_pbi].[pbi].[Заказо_в_пути] way ON way.[1C_id] = n.[1c_id] */ --WHERE n._Folder = 1 --AND g.path like 'Игрушки%' /* SELECT n.code , n.description , n.artic , g.path , n.photo FROM [mag_pbi].[pbi].[nomenclature] n INNER JOIN [mag_reports].[sales].[w_groups] g ON n.group_id = g.group_id */ GO /****** Object: View [analytics].[get_quantity_by_group] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE view [analytics].[get_quantity_by_group] as SELECT n.Code as code , s._Description as sklad , s.[Категория] as [Категория склада] --, sum( [_Fld17491]*(case _RecordKind when 0 then 1 when 1 then -1 end) ) as quantity , convert( decimal(10,2), sum( [_Fld17491]*(case _RecordKind when 0 then 1 when 1 then -1 end) ) ) as quantity_base , convert( decimal(10,2), sum( [_Fld17491]*(case _RecordKind when 0 then 1 when 1 then -1 end) ) / (case (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE n.[1c_id] = up._OwnerID_RRRef) when 0 then 1 when null then 1 else (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE n.[1c_id] = up._OwnerID_RRRef) end) ) as quantity , g.path FROM [mag_2019].[dbo].[_AccumRg17484] t /*регистр товары на складах*/ INNER JOIN [mag_pbi].[pbi].nomenclature n /*номенклатура*/ ON n.[1c_id] = t._Fld17485RRef INNER JOIN [mag_pbi].[pbi].[groups] g ON n.[1c_group] = g.[1c_id] INNER JOIN [mag_pbi].[pbi].[sklad_2019] s /*склад*/ ON s._IDRRef = t._Fld17488RRef WHERE s.[Категория]='Хранение' OR s.[Категория]='Фасовка' OR s.[Категория] = 'Розничная точка' --g.path like 'Игрушки%' GROUP BY n.code, s._Description, s.[Категория], g.path, n.[1c_id] GO /****** Object: View [analytics].[Бюджет ДДС] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE VIEW [analytics].[Бюджет ДДС] as SELECT DATEADD(year, -2000,[_Period]) as 'Месяц план' , [_Fld28390RRef] as '1c_project_id' --, CONVERT(VARCHAR(64), [_Fld28390RRef], 1) , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [_Fld28390RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28390RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28390RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28390RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28390RRef], 2),5,12) )) as 'project id' ,[_Fld28391] as 'Сумма' , dds._Description as 'Статья ДДС' , dds._IDRRef as '1c_dds_id' , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),5,12) )) as 'dds id' , CASE budget._Fld33808Rref WHEN 0xB3F668344C8DBA57427B6BC0D450CEA1 THEN 'Наличные' WHEN 0xB5530D030E40BC264A41E266D1E84B1A THEN 'Безнал' END as [Форма оплаты] FROM [MAG_2019].[dbo].[_InfoRg28389] budget /* РегистрСведений.БюджетДДС */ LEFT JOIN [MAG_2019].[dbo].[_Reference316] dds /*Справочник.СтатьиДвиженияДенежныхСредств*/ ON dds._IDRRef = budget.[_Fld33803RRef] --WHERE _Active = 1 GO /****** Object: View [analytics].[Ожидаемый расход] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE VIEW [analytics].[Ожидаемый расход] as SELECT [Дата оплаты план] ,[Статья ДДС] ,[Сумма в руб.] / 1000 [Сумма в руб.] ,[Форма оплаты] , 'Заявка' as [Тип] , [Хоз. операция] FROM [mag_pbi].[analytics].[Заявки_без_проекта_неоплачено] UNION ALL SELECT [Месяц план] ,[Статья ДДС] ,[Сумма] / 1000 [Сумма] ,[Форма оплаты] , 'Бюджет' as [Тип] , 'Бюджет' as [Хоз. операция] FROM [mag_pbi].[analytics].[Бюджет ДДС] GO /****** Object: View [analytics].[get_mp_quantity_by_group] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE view [analytics].[get_mp_quantity_by_group] as SELECT t.code , [Узел] , [Склад] , g.path , [Доступное кол-во] as quantity , [Доступное кол-во] * (case (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE t.[1c_id] = up._OwnerID_RRRef) when 0 then 1 when null then 1 else (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE t.[1c_id] = up._OwnerID_RRRef) end) as quantity_base --, (SELECT TOP 1 [Доступное кол-во] FROM [mag_pbi].[analytics].[Внешние остатки] v WHERE v.[code]=t.[code] AND v.[Узел]=t.[Узел] AND v.[Склад]=t.[Склад] ORDER BY [Дата обновления] DESC) as quantity FROM [mag_pbi].[analytics].[Внешние остатки] as t INNER JOIN [mag_pbi].[pbi].[groups] g ON t.group_id = g.[1c_id] WHERE t.[Дата обновления] >= FORMAT(GETDATE(), 'yyyy-MM-dd') GO /****** Object: View [analytics].[ЗаявкиТовары] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[ЗаявкиТовары] AS WITH req AS ( SELECT z._IDRRef AS zayavka_id, /* Дата заявки без времени */ CONVERT(date, DATEADD(YEAR, -2000, z._Date_Time)) AS zayavka_date, z._Number AS zayavka_number, z._Fld34044RRef AS zayavka_status_ref, t._LineNo34053 AS line_no, t._Fld34054RRef AS nom_1c_id, CONVERT(decimal(18, 3), t._Fld34056) AS qty_initial FROM MAG_2019.dbo._Document34036 z JOIN MAG_2019.dbo._Document34036_VT34052 t ON t._Document34036_IDRRef = z._IDRRef WHERE z._Posted = 1 AND z._Marked = 0 ), deduct AS ( SELECT tpo._Fld34117RRef AS zayavka_id, tpo._Fld3473RRef AS nom_1c_id, SUM(CONVERT(decimal(18, 3), tpo._Fld3477)) AS qty_deduct FROM MAG_2019.dbo._Document408X1 po JOIN MAG_2019.dbo._Document408_VT3470X1 tpo ON tpo._Document408_IDRRef = po._IDRRef WHERE po._Posted = 1 AND po._Marked = 0 AND tpo._Fld3491RRef = 0 AND po._Fld3417RRef IN ( 0x99FD3E66AA3EFB074984044D5A69CFD5, /* В пути */ 0xA55F81415BA33BC24A053ED26C6EC02E, /* Закрыт */ 0xB2A33CF1C7286AF3463F20D54AE5A0BC, /* Выгружен на складе */ 0x97B9E76E7BCACEF3450504B1FAFC3230 /* Принят */ ) GROUP BY tpo._Fld34117RRef, tpo._Fld3473RRef ) SELECT r.zayavka_date AS [Дата заявки], r.zayavka_number AS [Номер заявки], CASE r.zayavka_status_ref WHEN 0xB9D8F6098E165A4945FD453A8394D9A6 THEN N'Планируется' WHEN 0x89144CF303169EA446E30A9CFAC257D1 THEN N'На согласовании' WHEN 0x8734648F71AB3BE645DCAC11CF62F9AE THEN N'Выполнено' WHEN 0xA6CC3F7ADAD37C7D473BFD1D132A96E8 THEN N'В производстве' ELSE N'Неизвестно' END AS [Статус заявки], r.line_no AS line_no, /* nom_1c_id (сырой) */ r.nom_1c_id AS nom_1c_id, /* nom_1c_id в нужном формате */ LOWER( SUBSTRING(CONVERT(nvarchar(36), r.nom_1c_id, 2), 25, 8) + '-' + SUBSTRING(CONVERT(nvarchar(36), r.nom_1c_id, 2), 21, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), r.nom_1c_id, 2), 17, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), r.nom_1c_id, 2), 1, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), r.nom_1c_id, 2), 5, 12) ) AS artic_id, n._Description AS [Номенклатура], n._Code AS code, n._Fld21043 AS [Артикул], g.g, g.path, r.qty_initial AS [Количество начальное], CONVERT(decimal(18, 3), r.qty_initial / pack.base_pack) AS [Кол. упаковок начальное], ISNULL(d.qty_deduct, 0) AS [Количество заказано (вычет)], CONVERT(decimal(18, 3), ISNULL(d.qty_deduct, 0) / pack.base_pack) AS [Кол. упаковок заказано (вычет)], CONVERT(decimal(18, 3), r.qty_initial - ISNULL(d.qty_deduct, 0)) AS [Количество текущее], CONVERT(decimal(18, 3), (r.qty_initial - ISNULL(d.qty_deduct, 0)) / pack.base_pack) AS [Кол. упаковок текущее] FROM req r JOIN MAG_2019.dbo._Reference188X1 n ON n._IDRRef = r.nom_1c_id LEFT JOIN pbi.[groups] g ON n._ParentIDRRef = g.[1c_id] OUTER APPLY ( SELECT TOP 1 ISNULL(NULLIF(up.upakovka, 0), 1) AS base_pack FROM pbi.[БазоваяУпаковка] up WHERE up._OwnerID_RRRef = r.nom_1c_id ) AS pack LEFT JOIN deduct d ON d.zayavka_id = r.zayavka_id AND d.nom_1c_id = r.nom_1c_id ; GO /****** Object: Table [analytics].[forecast_scenarios] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[forecast_scenarios]( [scenario_id] [int] IDENTITY(1,1) NOT NULL, [name] [nvarchar](200) NOT NULL, [description] [nvarchar](1000) NULL, [created_at] [datetime2](0) NOT NULL, [created_by] [nvarchar](128) NULL, [params_json] [nvarchar](max) NULL, [active] [bit] NOT NULL, PRIMARY KEY CLUSTERED ( [scenario_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: View [analytics].[get_forecast_scenarios] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE VIEW [analytics].[get_forecast_scenarios] as SELECT [scenario_id] ,[name] ,[description] ,[created_by] FROM [mag_pbi].[analytics].[forecast_scenarios] WHERE active = 1 GO /****** Object: View [pbi].[ПартнерыКонтрагенты] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ create view [pbi].[ПартнерыКонтрагенты] as SELECT _Description , _IDRRef , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), c._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), c._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), c._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), c._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), c._IDRRef, 2),5,12) ))as cagent_id ,c._Fld20612RRef as partner_1cid , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), c._Fld20612RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), c._Fld20612RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), c._Fld20612RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), c._Fld20612RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), c._Fld20612RRef, 2),5,12) ))as partner_id from MAG_2019.dbo._Reference168 c GO /****** Object: View [analytics].[ЗаказыВЗаявках] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[ЗаказыВЗаявках] AS SELECT CONVERT(date, DATEADD(YEAR, -2000, z._Date_Time)) AS [Дата заказа поставщику], z._Number AS [Номер заказа поставщику], /* заявка из ТЧ */ CASE WHEN za._IDRRef IS NOT NULL THEN t._Fld34117RRef END AS [Заявка_1c_id], ISNULL(za._Number, N'Без заявки') AS [Номер заявки], CASE WHEN za._IDRRef IS NOT NULL THEN CONVERT(date, DATEADD(YEAR, -2000, za._Date_Time)) END AS [Дата заявки], /* Контрагент (текст) */ r._Description AS [Контрагент], /* cagent_id (строка GUID) из 1С-ссылки контрагента */ LOWER( SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 25, 8) + '-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 21, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 17, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 1, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 5, 12) ) AS cagent_id, pc.partner_1cid, pc.partner_id, CASE z._Fld3417RRef WHEN 0xB9440E49408A17534955319EBF0DAE60 THEN N'Согласован' WHEN 0x99FD3E66AA3EFB074984044D5A69CFD5 THEN N'В пути' WHEN 0x973A5675AC6A17F64DA37EC6C22FC12C THEN N'Подтвержден' WHEN 0xA55F81415BA33BC24A053ED26C6EC02E THEN N'Закрыт' WHEN 0xA87A8B13710A30B447DFF1614E84D167 THEN N'В производстве' WHEN 0x8542BD023FE7B70E4613087D853F26E4 THEN N'Тех. заказ' WHEN 0xB38AD6232E2D17D44287D9924E5E6DF2 THEN N'На согласовании' WHEN 0xB2A33CF1C7286AF3463F20D54AE5A0BC THEN N'Выгружен на складе' ELSE N'Неизвестно' END AS [Статус], /* номенклатура */ t._Fld3473RRef AS nom_1c_id, /* nom_1c_id в нужном формате */ LOWER( SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 25, 8) + '-' + SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 21, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 17, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 1, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 5, 12) ) AS artic_id, n._Description AS [Наименование], n._Code AS code, n._Fld21043 AS [Артикул], t._Fld3477 AS [Количество], CONVERT(decimal(10, 2), t._Fld3477 / pack.base_pack) AS [Кол. упаковок], t._Fld3480 AS [Цена], t._Fld3481 AS [Сумма], g.g, g.path, /* Валюта + Сумма в руб. */ v._Description AS [Валюта], CASE v._Description WHEN 'USD' THEN t._Fld3481 * ( SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = 'USD2' ) ELSE t._Fld3481 * ( SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = v._Description ) END AS [Сумма в руб.] FROM [MAG_2019].dbo._Document408X1 z JOIN [MAG_2019].dbo._Document408_VT3470X1 t ON t._Document408_IDRRef = z._IDRRef LEFT JOIN [MAG_2019].dbo._Document34036 za ON za._IDRRef = t._Fld34117RRef LEFT JOIN [MAG_2019].dbo._Reference168 r ON r._IDRRef = z._Fld3410RRef LEFT JOIN [pbi].[ПартнерыКонтрагенты] pc ON pc.cagent_id = LOWER( SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 25, 8) + '-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 21, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 17, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 1, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 5, 12) ) JOIN [MAG_2019].dbo._Reference188X1 n ON n._IDRRef = t._Fld3473RRef LEFT JOIN [MAG_2019].dbo._Reference50 v ON v._IDRRef = z._Fld3414RRef LEFT JOIN [pbi].[groups] g ON n._ParentIDRRef = g.[1c_id] OUTER APPLY ( SELECT TOP 1 ISNULL(NULLIF(up.upakovka, 0), 1) AS base_pack FROM [pbi].[БазоваяУпаковка] up WHERE up._OwnerID_RRRef = t._Fld3473RRef ) AS pack WHERE z._Posted = 1 AND z._Marked = 0 AND t._Fld3491RRef = 0; GO /****** Object: View [analytics].[get_sales_monthly_by_group] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ /* select sum([Сумма]) , (SELECT sum([Сумма]) FROM [mag_pbi].[pbi].[Стоимость обработки заказа] obr WHERE obr.[1c_id] = s.[1c_id]) FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE [Вид операции]='Расход' AND [Статья]='Реализация' AND code = 'УТ-00210548' GROUP BY s.[1c_id] */ CREATE view [analytics].[get_sales_monthly_by_group] as SELECT sales.date , n._Code as code , g.path , sum(sales.sum) as sum , sum(sales.quantity) as quantity , sum(sales.quantity_base) as quantity_base FROM ( select FORMAT([Период], 'yyyy-MM') as date , s.Сумма as sum , s.[1c_id] , s.Количество as quantity_base , s.КоличествоУпаковок as quantity FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE [Вид операции]='Расход' AND [Статья]='Реализация' ) as sales INNER JOIN [mag_2019].[dbo]._Reference188X1 n ON n._IDRRef = sales.[1c_id] INNER JOIN [mag_pbi].[pbi].[groups] g ON n._ParentIDRRef = g.[1c_id] GROUP BY sales.date, n._Code, g.path GO /****** Object: View [analytics].[get_mpcosts_monthly_by_group] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [analytics].[get_mpcosts_monthly_by_group] as SELECT sales.date , n.code as code , g.path , sum(sales.sum) as sum FROM ( select FORMAT([date], 'yyyy-MM') as date , s.Сумма as sum , s.[1c_id] FROM [mag_pbi].[pbi].[Стоимость обработки заказа] s ) as sales INNER JOIN [mag_pbi].[pbi].nomenclature n ON n.[1c_id] = sales.[1c_id] INNER JOIN [mag_pbi].[pbi].[groups] g ON n.[1c_group] = g.[1c_id] GROUP BY sales.date, n.code, g.path GO /****** Object: Table [analytics].[deficit_proposal] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[deficit_proposal]( [id] [int] IDENTITY(1,1) NOT NULL, [scenario_id] [int] NOT NULL, [group_name] [nvarchar](100) NOT NULL, [1c_id] [binary](16) NOT NULL, [code] [nvarchar](100) NOT NULL, [place_month] [date] NOT NULL, [arrival_month] [date] NOT NULL, [demand_window_C] [decimal](18, 3) NOT NULL, [projected_stock_at_T] [decimal](18, 3) NOT NULL, [order_qty] [decimal](18, 3) NOT NULL, [updated_at] [datetime2](0) NOT NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY], CONSTRAINT [UX_deficit_proposal] UNIQUE NONCLUSTERED ( [scenario_id] ASC, [group_name] ASC, [1c_id] ASC, [arrival_month] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: View [analytics].[deficit_orders] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[deficit_orders] AS SELECT [scenario_id] as [scenario_id] , 'Дефицит' as [status] , d.[1c_id] , [place_month] as [order_date] , 'руб.' as [currency] , d.[code] , [order_qty] , n.[Цена учетная, руб] as [price] , d.order_qty * n.[Цена учетная, руб] as [sum] , [arrival_month] FROM [mag_pbi].[analytics].[deficit_proposal] d INNER JOIN pbi.nomenclature n ON n.[1c_id] = d.[1c_id] GO /****** Object: Table [analytics].[аналитика за 365 дн.] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[аналитика за 365 дн.]( [1c_id] [binary](16) NULL, [Code] [nchar](11) NULL, [Продано шт] [numeric](38, 3) NULL, [Продажи шт / день] [numeric](38, 6) NULL, [Остаток дней продаж] [numeric](38, 6) NULL, [Продажи / год, руб.] [decimal](38, 2) NULL, [учетная сумма / год, руб.] [decimal](38, 2) NULL, [ТН / год, руб.] [decimal](38, 2) NULL, [Стоимость МП год, руб.] [decimal](38, 2) NULL, [%ТН год, руб.] [decimal](38, 2) NULL, [Дней в продаже / год] [bigint] NULL, [Дней в продаже / квартал] [bigint] NULL, [Продажи / квартал, руб.] [decimal](38, 2) NULL, [учетная сумма / квартал, руб.] [decimal](38, 2) NULL, [ТН / квартал, руб.] [decimal](38, 2) NULL, [ТН / месяц, руб.] [decimal](38, 6) NULL, [Оплаченный остаток] [decimal](38, 2) NULL, [Рентабельность / год] [decimal](38, 6) NULL, [Рентабельность / квартал] [decimal](38, 6) NULL, [Рентабельность / будущий год] [decimal](38, 6) NULL, [Рентабельность по остатку / год] [decimal](38, 6) NULL, [Рентабельность по остатку / квартал] [decimal](38, 6) NULL, [Рентабельность по остатку / будущий год] [decimal](38, 6) NULL ) ON [PRIMARY] GO /****** Object: View [pbi].[nomeclature_for_pbi] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbi].[nomeclature_for_pbi] as SELECT n.[artic_id] ,n.[1c_id] ,n.[code] ,n.[cenovaya_gruppa] ,n.[description] ,n.[artic] ,n.[vid_nomen] ,n.[Производитель] ,n.[group_id] ,n.[1c_group] ,n.[card] ,n.[photo] ,n.[base] ,n.[Знаменатель веса] ,n.[Числитель веса] ,n.[Знаменатель объема] ,n.[Числитель объема] ,n.[Количество упак в коробе] ,n.[Количество упак в кванте] ,n.[id magok] ,n.[Товарныйменеджера] ,n.[МенеджерПоЗакупкам2] ,n.[РуководительНаправления] ,n.[Менеджер OZON] ,n.[Менеджер WB] ,n.[АБС статус] ,n.[АБС план] ,n.[ABC Парето] ,n.[XYZ статус 12м] ,n.[Комментарий для матрицы] ,n.[Коллекция] ,n.[Ценовой сегмент Магок] ,n.[Ценовой сегмент МП] ,n.[Кол-во упак в заказе Магок] ,n.[Бренд] ,n.[Тип товара] ,n.[Метка] ,n.[Ширина, мм] ,n.[Цвет] ,n.[Номер цвета] ,n.[Тип шнура] ,n.[Тип плетения] ,n.[Размер] ,n.[Особенность] ,n.[Форма] ,n.[Ширина] ,n.[Формат упаковки] ,n.[Макс. запас] ,n.[Мин. запас] ,n.[QTY PACKS] ,n.[Да/Нет Собственное пр-во] ,n.[ID OZON] ,n.[ID WB] ,n.[WB] ,n.[Ozon] ,n.[СТМ] ,n.[Выгружать на я.маркет] ,n.[Выгружать в Google Merchant] ,n.[Товар МП] ,n.[Неликвид] ,n.[Статус] ,n.[Сквозной цвет] ,n.[Базовая упаковка] ,n.[Качество контента Ozon] ,n.[Качество контента WB] ,n.[Качество контента WB by Ozon] ,n.[Качество контента Magok] ,n.[Вид номенклатуры] ,n.[max_year_quantity] ,n.[max_quarter_quantity] ,n.[Цена учетная, руб] ,n.[Цена учетная, usd] ,n.[СредниеМесячныеПродажи] ,n.[СКО_МесячныхПродаж] --,n.[minAvailableQty10] ,n.[minAvailableQty] --,analytics.[1c_id] --,analytics.[Code] , [Продано шт] , [Остаток дней продаж] , [Дней в продаже / год] , [Дней в продаже / квартал] , [Продажи / квартал, руб.] , [Продажи шт / день] --, [Продажи шт / день опт] --, [Остаток дней продаж опт] , [Продажи / год, руб.] , [ТН / год, руб.] , [ТН / квартал, руб.] , [ТН / месяц, руб.] , [Стоимость МП год, руб.] , [%ТН год, руб.] , [учетная сумма / год, руб.] , [учетная сумма / квартал, руб.] , [Оплаченный остаток] , [Рентабельность / год] , [Рентабельность / квартал] , [Рентабельность / будущий год] --, [Рентабельность по остатку / год] --, [Рентабельность по остатку / квартал] --, [Рентабельность по остатку / будущий год] FROM mag_pbi.pbi.nomenclature n LEFT JOIN [mag_pbi].[analytics].[аналитика за 365 дн.] analytics /* Аналитика за 365 дн */ ON analytics.[1c_id] = n.[1c_id] GO /****** Object: View [pbi].[Заказы в заявках] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbi].[Заказы в заявках] AS SELECT [Дата заказа поставщику] ,[Номер заказа поставщику] --,[Заявка_1c_id] ,[Номер заявки] ,[Дата заявки] ,[Контрагент] --,[cagent_id] --,[partner_1cid] ,[partner_id] ,[Статус] --,[nom_1c_id] ,[artic_id] --,[Наименование] --,[code] --,[Артикул] ,[Количество] ,[Кол. упаковок] ,[Цена]/1000 as 'Цена' ,[Сумма]/1000 as 'Сумма' --,[g] --,[path] ,[Количество] * (SELECT n._Fld21092 / ISNULL(NULLIF(n._Fld21089, 0), 1) FROM mag_2019.dbo._Reference188X1 n WHERE [nom_1c_id] = n._IDRRef) as [Объем, м3] ,[Валюта] ,[Сумма в руб.]/1000 as 'Сумма в руб' FROM [mag_pbi].[analytics].[ЗаказыВЗаявках] WHERE [g] NOT LIKE '*Внутренняя' AND [Статус] NOT IN ('Закрыт') GO /****** Object: Table [pbi].[СебестоимостьПродажиОт2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[СебестоимостьПродажиОт2022]( [id] [int] IDENTITY(1,1) NOT NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](38, 15) NULL, [СуммаБезНДС] [numeric](38, 15) NULL, [СуммаРучнойСкидки] [numeric](38, 15) NULL, [СуммаАвтоСкидки] [numeric](38, 15) NULL, [Закупка] [numeric](38, 15) NULL, [Закупка, usd2] [numeric](38, 15) NULL, [Таможня] [numeric](38, 15) NULL, [ЕАЭС] [numeric](38, 15) NULL, [Учетная цена] [numeric](38, 15) NULL, [Учетная цена USD2+2] [numeric](38, 15) NULL, [Маркетинг] [numeric](38, 15) NULL, [Доставка] [numeric](38, 15) NULL, [НДС] [numeric](38, 15) NULL, [Сборка] [numeric](38, 15) NULL, [ЗатратыМП] [numeric](38, 15) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](38, 15) NULL, [Учетная стоимость USD2+2] [numeric](38, 15) NULL, [sebes_id] [int] NOT NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: View [pbi].[Себестоимость+СебестоимостьПродажОт2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /*where [Вид операции] = 'Продажа' and sebesSales.ЗатратыМП <> 0 */ CREATE VIEW [pbi].[Себестоимость+СебестоимостьПродажОт2022] AS SELECT [id], [Период], [Статья], [Вид операции], [Хоз операция], [Организация], [Партнер], [PartnerId], [Контрагент], [Менеджер], [Тип документа], [Номер документа], [Валюта документа], [Ценовая группа], [1c_document_id], [1c_id], [artic_id], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], CASE WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND PriceListPrice IS NOT NULL THEN -(PriceListPrice * [Количество]) / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND AnyPrice IS NOT NULL THEN -(AnyPrice * [Количество]) / 1000 ELSE [Закупка] END AS [Закупка], CASE WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND PriceListPrice IS NOT NULL THEN -(PriceListPrice / [Курс usd2] * [Количество]) / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND AnyPrice IS NOT NULL THEN -(AnyPrice / [Курс usd2] * [Количество]) / 1000 ELSE [Закупка, usd2] END AS [Закупка, usd2], [Курс usd2], [Курс usd], [Таможня], CASE WHEN ([Закупка] = 0 AND [Вид операции] = 'Продажа') AND PriceListPrice IS NOT NULL THEN PriceListPrice / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND AnyPrice IS NOT NULL THEN AnyPrice / 1000 ELSE [Учетная цена] END AS [Учетная цена], CASE WHEN ([Закупка] = 0 AND [Вид операции] = 'Продажа') AND PriceListPrice IS NOT NULL THEN PriceListPrice / [Курс usd2] / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND AnyPrice IS NOT NULL THEN AnyPrice / [Курс usd2] / 1000 ELSE [Учетная цена USD2+2] END AS [Учетная цена USD2+2], CASE WHEN ([Закупка] = 0 AND [Вид операции] = 'Продажа') AND PriceListPrice IS NOT NULL THEN (PriceListPrice * [Количество]) / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND AnyPrice IS NOT NULL THEN (AnyPrice * [Количество]) / 1000 ELSE [Учетная стоимость] END AS [Учетная стоимость], CASE WHEN ([Закупка] = 0 AND [Вид операции] = 'Продажа') AND PriceListPrice IS NOT NULL THEN (PriceListPrice / [Курс usd2] * [Количество]) / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Продажа' AND AnyPrice IS NOT NULL THEN (AnyPrice / [Курс usd2] * [Количество]) / 1000 ELSE [Учетная стоимость USD2+2] END AS [Учетная стоимость USD2+2], [Заказ закрыт], [Номер заказа], [Доставка], [НДС], [Сборка], PriceListPrice FROM (SELECT sebes.id, sebes.Период, sebes.Статья, sebes.[Вид операции], sebes.[Хоз операция], sebes.Организация, sebes.Партнер, sebes.PartnerId, sebes.Контрагент, sebes.Менеджер, sebes.[Тип документа], sebes.[Номер документа], sebes.[Валюта документа], sebes.[Ценовая группа], sebes.[1c_document_id], sebes.[1c_id], sebes.artic_id, sebes.Количество, sebes.Сумма AS Сумма, sebes.СуммаБезНДС, sebes.СуммаРучнойСкидки, sebes.СуммаАвтоСкидки, CASE WHEN sebesSales.sZakupka IS NOT NULL THEN sebesSales.sZakupka ELSE [Закупка] END AS Закупка, CASE WHEN sebesSales.sZakupkaUsd2 IS NOT NULL THEN sebesSales.sZakupkaUsd2 ELSE [Закупка, usd2] END AS [Закупка, usd2], sebes.[Курс usd2], sebes.[Курс usd], CASE WHEN sebesSales.customs IS NOT NULL THEN sebesSales.customs ELSE [Таможня] END AS Таможня, CASE WHEN sebesSales.uchetprice IS NOT NULL THEN sebesSales.uchetprice ELSE [Учетная цена] END AS [Учетная цена], CASE WHEN sebesSales.uchetpriceUSD22 IS NOT NULL THEN sebesSales.uchetpriceUSD22 ELSE [Учетная цена USD2+2] END AS [Учетная цена USD2+2], CASE WHEN sebesSales.uchetstoimost IS NOT NULL THEN sebesSales.uchetstoimost ELSE [Учетная стоимость] END AS [Учетная стоимость], CASE WHEN sebesSales.uchetstoimostUSD22 IS NOT NULL THEN sebesSales.uchetstoimostUSD22 ELSE [Учетная стоимость USD2+2] END AS [Учетная стоимость USD2+2], sebes.[Заказ закрыт], sebes.[Номер заказа], CASE WHEN sebesSales.delivery IS NOT NULL THEN sebesSales.delivery ELSE [Доставка] END AS Доставка, CASE WHEN sebesSales.NAT IS NOT NULL THEN sebesSales.NAT ELSE [НДС] END AS НДС, CASE WHEN sebesSales.assemble IS NOT NULL THEN sebesSales.assemble ELSE [Сборка] END AS Сборка, (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] WHERE [Вид цены] = 'Учетная цена (руб)' AND Дата <= sebes.Период AND sebes.artic_id = artic_id ORDER BY Дата DESC) AS PriceListPrice, (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] WHERE [Вид цены] = 'Учетная цена (руб)' AND sebes.artic_id = artic_id ORDER BY Дата) AS AnyPrice FROM [pbi].[СебестоимостьОт2022] AS sebes LEFT OUTER JOIN (SELECT [1c_document_id] AS onecid, artic_id AS articid, Закупка AS sZakupka, [Закупка, usd2] AS sZakupkaUsd2, Таможня AS customs, ЕАЭС AS eas, Доставка AS delivery, НДС AS NAT, Сборка AS assemble, Сумма AS SumSales, ЗатратыМП, sebes_id, [Учетная цена] AS uchetprice, [Учетная цена USD2+2] AS uchetpriceUSD22, [Учетная стоимость] AS uchetstoimost, [Учетная стоимость USD2+2] AS uchetstoimostUSD22 FROM [pbi].[СебестоимостьПродажиОт2022]) AS sebesSales ON sebesSales.sebes_id = sebes.id ) AS mainTab GO /****** Object: View [analytics].[get_analytics_by_group] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE VIEW [analytics].[get_analytics_by_group] AS SELECT n.code , a.[Остаток дней продаж] , a.[Дней в продаже / год] , a.[Дней в продаже / квартал] , a.[Продажи шт / день] , a.[ТН / год, руб.] , a.[ТН / квартал, руб.] , a.[ТН / месяц, руб.] , a.[Стоимость МП год, руб.] , a.[%ТН год, руб.] , a.[учетная сумма / год, руб.] , a.[Оплаченный остаток] , a.[Рентабельность / год] , a.[Рентабельность / квартал] , a.[Рентабельность / будущий год] , [Рентабельность по остатку / год] , [Рентабельность по остатку / квартал] , [Рентабельность по остатку / будущий год] FROM analytics.[аналитика за 365 дн.] AS a INNER JOIN pbi.nomenclature AS n ON n.[1c_id] = a.[1c_id] INNER JOIN pbi.groups AS g ON n.[1c_group] = g.[1c_id] WHERE (g.g NOT LIKE '*%') GO /****** Object: View [analytics].[Где товар с упаковками] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE view [analytics].[Где товар с упаковками] as SELECT [1c_id] ,t.[artic_id] ,[Где товар] ,[quantity] as Штук , case WHEN upak.upakovka <>0 then t.quantity / upak.upakovka else 0 END as Упаковок , upak.вес , Высота , Глубина , Ширина , Объем FROM [mag_pbi].[analytics].[Где товар] t INNER JOIN [mag_pbi].[pbi].[БазоваяУпаковка] upak ON t.[1c_id] = upak.[_IDRRef] GO /****** Object: View [pbi].[Заказы] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbi].[Заказы] AS SELECT DATEADD(YEAR, -2000, z._Date_Time) AS [Дата заказа поставщику], z._Number AS [Номер заказа поставщику], --t._Fld3473RRef AS [1C_id], LOWER( SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 25, 8) + '-' + SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 21, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 17, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 1, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 5, 12) ) AS partner_id, p._Description AS Партнер, r._Description AS Контрагент, CASE z._Fld3417RRef WHEN 0xB9440E49408A17534955319EBF0DAE60 THEN 'Согласован' WHEN 0x99FD3E66AA3EFB074984044D5A69CFD5 THEN 'В пути' WHEN 0x973A5675AC6A17F64DA37EC6C22FC12C THEN 'Подтвержден' WHEN 0xA55F81415BA33BC24A053ED26C6EC02E THEN 'Закрыт' WHEN 0xA87A8B13710A30B447DFF1614E84D167 THEN 'В производстве' WHEN 0x8542BD023FE7B70E4613087D853F26E4 THEN 'Тех. заказ' WHEN 0xB38AD6232E2D17D44287D9924E5E6DF2 THEN 'На согласовании' WHEN 0xB2A33CF1C7286AF3463F20D54AE5A0BC THEN 'Выгружен на складе' ELSE 'Неизвестно' END AS Статус, --t._Fld3473RRef AS nom_1c_id, LOWER( SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 25, 8) + '-' + SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 21, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 17, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 1, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 5, 12) ) AS artic_id, t._Fld3473RRef as [1c_id], t._Fld3477 AS Количество, CONVERT(decimal(10, 2), t._Fld3477 / pack.base_pack) AS [Кол. упаковок], t._Fld3477 * (SELECT n._Fld21092 / ISNULL(NULLIF(n._Fld21089, 0), 1) FROM mag_2019.dbo._Reference188X1 n WHERE t._Fld3473RRef = n._IDRRef) as [Объем, м3], t._Fld3480 / 1000 AS Цена, t._Fld3481 / 1000 AS Сумма, t._Fld3481/1000 * (SELECT TOP 1 _Fld13220/_Fld13221 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = z._Fld3414RRef --валюта документа AND _Period <= z._Date_Time ORDER BY _Period desc) / (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= z._Date_Time ORDER BY _Period desc) as [Сумма всего, usd2], v._Description AS Валюта, case v._Description WHEN 'USD' THEN _Fld3481 / 1000 * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency='USD2') ELSE _Fld3481 / 1000 * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency=v._Description) END as 'Сумма в руб.', CASE WHEN z._Fld3420 < '4000' THEN DATEADD(MONTH, 4, GETDATE()) ELSE DATEADD(YEAR, -2000, z._Fld3420) END as 'Желаемая дата' FROM MAG_2019.dbo._Document408X1 AS z -- заказы поставщику INNER JOIN MAG_2019.dbo._Document408_VT3470X1 AS t ON t._Document408_IDRRef = z._IDRRef --табличная часть заказов поставщику LEFT JOIN MAG_2019.dbo._Reference215X1 AS p ON p._IDRRef = z._Fld3409RRef --партнеры LEFT JOIN MAG_2019.dbo._Reference168 AS r ON r._IDRRef = z._Fld3410RRef --контрагенты LEFT JOIN MAG_2019.dbo._Reference50 AS v ON v._IDRRef = z._Fld3414RRef --валюты INNER JOIN MAG_2019.dbo._Reference188X1 AS n ON n._IDRRef = t._Fld3473RRef INNER JOIN pbi.groups AS g ON n._ParentIDRRef = g.[1c_id] OUTER APPLY ( SELECT TOP 1 ISNULL(NULLIF(up.upakovka, 0), 1) AS base_pack FROM pbi.БазоваяУпаковка up WHERE up._OwnerID_RRRef = t._Fld3473RRef ) AS pack WHERE z._Posted = 1 AND z._Marked = 0 AND t._Fld3491RRef = 0 AND g NOT LIKE '*Внутр%' GO /****** Object: View [pbi].[v_nomenclature_full] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbi].[v_nomenclature_full] AS WITH ref188 AS ( SELECT n._Code, n._IDRRef, n._Fld28142 FROM MAG_2019.dbo._Reference188X1 AS n WHERE n._Fld21101RRef IN ( 0x80C5305A3A00E12B11E5845202CA01FB, 0x80C5305A3A00E12B11E584520AEC30EC ) ), up_min AS ( -- минимальная упаковка для Owner, только для номенклатур где _Fld28142 = 0 SELECT a._OwnerID_RRRef, a._Fld24768 AS upakovka, a._Fld24761 AS Вес, a._Fld24763 AS Высота, a._Fld24765 AS Глубина, a._Fld24775 AS Ширина, a._Fld24771 AS Объем FROM MAG_2019.dbo._Reference347X1 AS a LEFT JOIN MAG_2019.dbo._Reference347X1 AS b ON b._OwnerID_RRRef = a._OwnerID_RRRef AND a._Fld24768 > b._Fld24768 AND a._Marked = 0x00 AND b._Marked = 0x00 INNER JOIN ref188 AS r ON r._IDRRef = a._OwnerID_RRRef AND r._Fld28142 = 0 WHERE b._Fld24768 IS NULL AND a._Marked = 0x00 ), up_max AS ( -- максимальная упаковка для Owner, только для номенклатур где _Fld28142 <> 0 SELECT a._OwnerID_RRRef, a._Fld24768 AS upakovka, a._Fld24761 AS Вес, a._Fld24763 AS Высота, a._Fld24765 AS Глубина, a._Fld24775 AS Ширина, a._Fld24771 AS Объем FROM MAG_2019.dbo._Reference347X1 AS a LEFT JOIN MAG_2019.dbo._Reference347X1 AS b ON b._OwnerID_RRRef = a._OwnerID_RRRef AND a._Fld24768 < b._Fld24768 AND a._Marked = 0x00 AND b._Marked = 0x00 INNER JOIN ref188 AS r ON r._IDRRef = a._OwnerID_RRRef AND r._Fld28142 <> 0 WHERE b._Fld24768 IS NULL AND a._Marked = 0x00 ), up AS ( SELECT * FROM up_min UNION ALL SELECT * FROM up_max ), ref1c AS ( SELECT r._Code AS code, r._IDRRef, up._OwnerID_RRRef, LOWER( SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 25, 8) + N'-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 21, 4) + N'-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 17, 4) + N'-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 1, 4) + N'-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 5, 12) ) AS artic_id, up.upakovka, up.Вес, up.Высота, up.Глубина, up.Ширина, up.Объем FROM ref188 AS r LEFT JOIN up ON up._OwnerID_RRRef = r._IDRRef ), bc AS ( SELECT _Fld15521RRef AS _IDRRef, STRING_AGG(barcode, N'; ') AS barcodes FROM ( SELECT DISTINCT i._Fld15521RRef, CONVERT(nvarchar(64), i._Fld15520) AS barcode FROM MAG_2019.dbo._InfoRg15519 AS i ) AS x GROUP BY _Fld15521RRef ) SELECT nom.artic_id, nom.[1c_id], nom.code, nom.cenovaya_gruppa, nom.description, nom.artic, nom.vid_nomen, nom.Производитель, nom.group_id, nom.[1c_group], nom.card, nom.photo, nom.base, nom.[Знаменатель веса], nom.[Числитель веса], nom.[Знаменатель объема], nom.[Числитель объема], nom.[Количество упак в коробе], nom.[Количество упак в кванте], nom.[id magok], nom.Товарныйменеджера, nom.МенеджерПоЗакупкам2, nom.РуководительНаправления, nom.[Менеджер OZON], nom.[Менеджер WB], nom.[АБС статус], nom.[АБС план], nom.[ABC Парето], nom.[XYZ статус 12м], nom.[Комментарий для матрицы], nom.Коллекция, nom.[Ценовой сегмент Магок], nom.[Ценовой сегмент МП], nom.[Кол-во упак в заказе Магок], nom.Бренд, nom.[Тип товара], nom.Метка, nom.[Ширина, мм], nom.Цвет, nom.[Номер цвета], nom.[Тип шнура], nom.[Тип плетения], nom.Размер, nom.Особенность, nom.Форма, nom.Ширина, nom.[Формат упаковки], nom.[Макс. запас], nom.[Мин. запас], nom.[QTY PACKS], nom.[Да/Нет Собственное пр-во], nom.[ID OZON], nom.[ID WB], nom.WB, nom.Ozon, nom.СТМ, nom.[Выгружать на я.маркет], nom.[Выгружать в Google Merchant], nom.[Товар МП], nom.Неликвид, nom.Статус, nom.[Сквозной цвет], nom.[Базовая упаковка], nom.[Качество контента Ozon], nom.[Качество контента WB], nom.[Качество контента WB by Ozon], nom.[Качество контента Magok], nom.[Вид номенклатуры], nom.max_year_quantity, nom.max_quarter_quantity, nom.[Цена учетная, руб], nom.[Цена учетная, usd], nom.СредниеМесячныеПродажи, nom.СКО_МесячныхПродаж, nom.minAvailableQty, g._Description AS group__Description, g.g, g.g1, g.g2, g.g3, g.group_id AS group__group_id, g._ParentIDRRef AS group__ParentIDRRef, g.lvl AS group__lvl, g.path AS group__path, g.code AS group__code, g.[1c_id] AS group__1c_id, g.план AS group__план, g.[first group] AS group__first_group, ref1c._IDRRef AS ref_1c__IDRRef, ref1c._OwnerID_RRRef AS ref_1c__OwnerID_RRRef, ref1c.artic_id AS ref_1c__artic_id, ref1c.upakovka AS ref_1c__upakovka, ref1c.Вес AS ref_1c__Вес, ref1c.Высота AS ref_1c__Высота, ref1c.Глубина AS ref_1c__Глубина, ref1c.Ширина AS ref_1c__Ширина, ref1c.Объем AS ref_1c__Объем, bc.barcodes AS ref_1c__barcodes FROM pbi.nomenclature AS nom LEFT JOIN pbi.groups AS g ON g.[1c_id] = nom.[1c_group] LEFT JOIN ref1c ON ref1c.code = nom.code LEFT JOIN bc ON bc._IDRRef = ref1c._IDRRef; GO /****** Object: Table [analytics].[counterparties] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[counterparties]( [id] [int] IDENTITY(1,1) NOT NULL, [counterparty] [nvarchar](255) NOT NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY], CONSTRAINT [UQ_counterparties_counterparty] UNIQUE NONCLUSTERED ( [counterparty] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [analytics].[manufacturers] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[manufacturers]( [id] [int] IDENTITY(1,1) NOT NULL, [manufacturer] [nvarchar](max) NOT NULL, [ROI_norm] [decimal](10, 2) NOT NULL, [n_percent] [decimal](10, 3) NULL, [n_days] [int] NULL, [m_percent] [decimal](10, 3) NULL, [m_days] [int] NULL, CONSTRAINT [PK_manufacturers] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [analytics].[manufacturer_counterparty_map] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[manufacturer_counterparty_map]( [id] [int] IDENTITY(1,1) NOT NULL, [manufacturer_id] [int] NOT NULL, [counterparty_id] [int] NOT NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY], CONSTRAINT [UQ_mcm_counterparty] UNIQUE NONCLUSTERED ( [counterparty_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY], CONSTRAINT [UQ_mcm_pair] UNIQUE NONCLUSTERED ( [manufacturer_id] ASC, [counterparty_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: View [analytics].[get_orders_list] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [analytics].[get_orders_list] AS SELECT DATEADD(YEAR, -2000, z._Date_Time) AS [Дата заказа поставщику], cast(DATEADD(YEAR, -2000, z._Fld3420) as date) AS [Желаемая дата поступления], z._Number AS [Номер заказа поставщику], /* LOWER( SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 25, 8) + '-' + SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 21, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 17, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 1, 4) + '-' + SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 5, 12) ) AS partner_id, */ p._Description as Партнер, r._Description AS Контрагент, CASE z._Fld3417RRef WHEN 0xB9440E49408A17534955319EBF0DAE60 THEN 'Согласован' WHEN 0x99FD3E66AA3EFB074984044D5A69CFD5 THEN 'В пути' WHEN 0x973A5675AC6A17F64DA37EC6C22FC12C THEN 'Подтвержден' WHEN 0xA55F81415BA33BC24A053ED26C6EC02E THEN 'Закрыт' WHEN 0xA87A8B13710A30B447DFF1614E84D167 THEN 'В производстве' WHEN 0x8542BD023FE7B70E4613087D853F26E4 THEN 'Тех. заказ' WHEN 0xB38AD6232E2D17D44287D9924E5E6DF2 THEN 'На согласовании' WHEN 0xB2A33CF1C7286AF3463F20D54AE5A0BC THEN 'Выгружен на складе' ELSE 'Неизвестно' END AS Статус, v._Description AS Валюта, z._Fld3418 AS Сумма, CASE v._Description WHEN 'USD' THEN _Fld3418 * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency='USD2') ELSE _Fld3418 * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency=v._Description) END AS 'Сумма в руб', ISNULL(man.[manufacturer], 'Не найдено') as manufacturer, ISNULL(man.[ROI_norm], 1.36) as roi_year_normalized, [n_percent], [n_days], [m_percent], [m_days], CASE WHEN z._Fld3418 = 0 THEN 0 ELSE ( SELECT SUM(zak.Сумма * a.[%ТН год, руб.]) FROM [analytics].[Заказы] zak INNER JOIN analytics.[аналитика за 365 дн.] a ON a.[1c_id]=zak.[1C_id] WHERE zak.[Номер заказа поставщику] = z._Number ) / z._Fld3418 END as [average_year_turnover], z._Fld3432 as comment FROM MAG_2019.dbo._Document408X1 AS z LEFT JOIN MAG_2019.dbo._Reference215X1 AS p ON p._IDRRef = z._Fld3409RRef -- Справочник.Партнеры LEFT JOIN MAG_2019.dbo._Reference168 AS r ON r._IDRRef = z._Fld3410RRef -- Справочник.Контрагенты LEFT JOIN MAG_2019.dbo._Reference50 AS v ON v._IDRRef = z._Fld3414RRef -- Справочник.Валюты LEFT JOIN [analytics].[counterparties] cp ON cp.[counterparty] = r._Description LEFT JOIN [analytics].[manufacturer_counterparty_map] map ON map.[counterparty_id] = cp.id LEFT JOIN [analytics].[manufacturers] man ON man.id = map.[manufacturer_id] WHERE z._Posted = 1 AND z._Marked = 0 AND z._Fld3417RRef <> 0xA55F81415BA33BC24A053ED26C6EC02E /* Заказ не закрыт */ AND z._Fld3417RRef <> 0x8542BD023FE7B70E4613087D853F26E4 /* Не Тех. заказ */ AND z._Fld3417RRef <> 0x973A5675AC6A17F64DA37EC6C22FC12C /* Не Подтвержден */ GO /****** Object: Table [pbi].[СебестоимостьПродажиТест] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[СебестоимостьПродажиТест]( [id] [int] IDENTITY(1,1) NOT NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](38, 15) NULL, [СуммаБезНДС] [numeric](38, 15) NULL, [СуммаРучнойСкидки] [numeric](38, 15) NULL, [СуммаАвтоСкидки] [numeric](38, 15) NULL, [Закупка] [numeric](38, 15) NULL, [Закупка, usd2] [numeric](38, 15) NULL, [Таможня] [numeric](38, 15) NULL, [ЕАЭС] [numeric](38, 15) NULL, [Учетная цена] [numeric](38, 15) NULL, [Учетная цена USD2+2] [numeric](38, 15) NULL, [Маркетинг] [numeric](38, 15) NULL, [Доставка] [numeric](38, 15) NULL, [НДС] [numeric](38, 15) NULL, [Сборка] [numeric](38, 15) NULL, [ЗатратыМП] [numeric](38, 15) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](38, 15) NULL, [Учетная стоимость USD2+2] [numeric](38, 15) NULL, [sebes_id] [int] NOT NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [pbi].[СебестоимостьТест] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[СебестоимостьТест]( [id] [int] IDENTITY(1,1) NOT NULL, [Период] [datetime2](0) NULL, [Статья] [varchar](255) NOT NULL, [Вид операции] [varchar](255) NOT NULL, [Хоз операция] [varchar](255) NOT NULL, [Организация] [varchar](255) NULL, [Партнер] [varchar](255) NULL, [Контрагент] [varchar](255) NULL, [Менеджер] [varchar](255) NULL, [Тип документа] [varchar](255) NULL, [Номер документа] [varchar](255) NULL, [Валюта документа] [varchar](255) NULL, [Ценовая группа] [varchar](255) NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](38, 15) NULL, [СуммаБезНДС] [numeric](38, 15) NULL, [СуммаРучнойСкидки] [numeric](38, 15) NULL, [СуммаАвтоСкидки] [numeric](38, 15) NULL, [Закупка] [numeric](38, 15) NULL, [Закупка, usd2] [numeric](38, 15) NULL, [Курс usd2] [numeric](15, 3) NULL, [Курс usd] [numeric](15, 3) NULL, [Таможня] [numeric](38, 15) NULL, [ЕАЭС] [numeric](38, 15) NULL, [Учетная цена] [numeric](38, 15) NULL, [Учетная цена USD2+2] [numeric](38, 15) NULL, [Заказ закрыт] [datetime] NULL, [Номер заказа] [nchar](11) NULL, [Маркетинг] [numeric](38, 15) NULL, [Доставка] [numeric](38, 15) NULL, [НДС] [numeric](38, 15) NULL, [Сборка] [numeric](38, 15) NULL, [ЗатратыМП] [numeric](38, 15) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](38, 15) NULL, [Учетная стоимость USD2+2] [numeric](38, 15) NULL, [Номер регистратора] [nchar](10) NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: View [pbi].[Себестоимость+СебестоимостьПродажТестовая] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /*where [Вид операции] = 'Продажа' and sebesSales.ЗатратыМП <> 0 */ CREATE VIEW [pbi].[Себестоимость+СебестоимостьПродажТестовая] AS SELECT [id] ,[Период] ,[Статья] ,[Вид операции] ,[Хоз операция] ,[Организация] ,[Партнер] ,[PartnerId] ,[Контрагент] ,[Менеджер] ,[Тип документа] ,[Номер документа] ,[Валюта документа] ,[Ценовая группа] ,[1c_document_id] ,[1c_id] ,[artic_id] ,[Количество] ,[Сумма] ,[СуммаБезНДС] ,[СуммаРучнойСкидки] ,[СуммаАвтоСкидки] --,[Закупка] ,CASE WHEN [Закупка] = 0 and [Вид операции] = 'Продажа' THEN -(PriceListPrice * [Количество]) / 1000 ELSE [Закупка] END AS [Закупка] --,[Закупка, usd2] ,CASE WHEN [Закупка] = 0 and [Вид операции] = 'Продажа' THEN -(PriceListPrice / [Курс usd2] * [Количество]) / 1000 ELSE [Закупка, usd2] END AS [Закупка, usd2] ,[Курс usd2] ,[Курс usd] ,[Таможня] , CASE WHEN (YEAR([Период]) < 2022 ) and PriceListPrice is not null THEN PriceListPrice / 1000 WHEN (YEAR([Период]) < 2022 ) and PriceListPrice is null THEN PriceListPriceUSD2 / 1000 * [Курс usd2] ELSE [Учетная цена] END AS [Учетная цена] , CASE WHEN (YEAR([Период]) < 2022 ) and PriceListPrice is not null THEN PriceListPrice / 1000 / [Курс usd2] WHEN (YEAR([Период]) < 2022 ) and PriceListPrice is null THEN PriceListPriceUSD2 / 1000 ELSE [Учетная цена USD2+2] END AS [Учетная цена USD2+2] , CASE WHEN (YEAR([Период]) < 2022 ) and PriceListPrice is not null THEN (PriceListPrice * [Количество]) / 1000 WHEN (YEAR([Период]) < 2022 ) and PriceListPrice is null THEN (PriceListPriceUSD2 * [Количество]) / 1000 * [Курс usd2] ELSE [Учетная стоимость] END AS [Учетная стоимость] , CASE WHEN (YEAR([Период]) < 2022 ) and PriceListPrice is not null THEN (PriceListPrice * [Количество]) / 1000 / [Курс usd2] WHEN (YEAR([Период]) < 2022 ) and PriceListPrice is null THEN (PriceListPriceUSD2 * [Количество]) / 1000 ELSE [Учетная стоимость USD2+2] END AS [Учетная стоимость USD2+2] ,[Заказ закрыт] ,[Номер заказа] ,[Доставка] ,[НДС] ,[Сборка] , PriceListPrice FROM (SELECT sebes.id, sebes.Период, sebes.Статья, sebes.[Вид операции], sebes.[Хоз операция], sebes.Организация, sebes.Партнер, sebes.PartnerId, sebes.Контрагент, sebes.Менеджер, sebes.[Тип документа], sebes.[Номер документа], sebes.[Валюта документа], sebes.[Ценовая группа], sebes.[1c_document_id], sebes.[1c_id], sebes.artic_id, sebes.Количество, sebes.Сумма AS Сумма, sebes.СуммаБезНДС, sebes.СуммаРучнойСкидки, sebes.СуммаАвтоСкидки, CASE WHEN sebesSales.sZakupka IS NOT NULL THEN sebesSales.sZakupka ELSE [Закупка] END AS Закупка, CASE WHEN sebesSales.sZakupkaUsd2 IS NOT NULL THEN sebesSales.sZakupkaUsd2 ELSE [Закупка, usd2] END AS [Закупка, usd2], sebes.[Курс usd2], sebes.[Курс usd], CASE WHEN sebesSales.customs IS NOT NULL THEN sebesSales.customs ELSE [Таможня] END AS Таможня, CASE WHEN sebesSales.uchetprice IS NOT NULL THEN sebesSales.uchetprice ELSE [Учетная цена] END AS [Учетная цена], CASE WHEN sebesSales.uchetpriceUSD22 IS NOT NULL THEN sebesSales.uchetpriceUSD22 ELSE [Учетная цена USD2+2] END AS [Учетная цена USD2+2], CASE WHEN sebesSales.uchetstoimost IS NOT NULL THEN sebesSales.uchetstoimost ELSE [Учетная стоимость] END AS [Учетная стоимость], CASE WHEN sebesSales.uchetstoimostUSD22 IS NOT NULL THEN sebesSales.uchetstoimostUSD22 ELSE [Учетная стоимость USD2+2] END AS [Учетная стоимость USD2+2], sebes.[Заказ закрыт], sebes.[Номер заказа], CASE WHEN sebesSales.delivery IS NOT NULL THEN sebesSales.delivery ELSE [Доставка] END AS Доставка, CASE WHEN sebesSales.NAT IS NOT NULL THEN sebesSales.NAT ELSE [НДС] END AS НДС, CASE WHEN sebesSales.assemble IS NOT NULL THEN sebesSales.assemble ELSE [Сборка] END AS Сборка, --UchetPrice.Price as PriceListPrice (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] WHERE [Вид цены] = 'Учетная цена (руб)' AND Дата <= sebes.Период and sebes.artic_id = artic_id ORDER BY Дата desc ) as PriceListPrice , (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] WHERE [Вид цены] = 'Учетная цена (вал)' AND Дата <= sebes.Период and sebes.artic_id = artic_id ORDER BY Дата desc ) as PriceListPriceUSD2 FROM pbi.СебестоимостьТест AS sebes LEFT OUTER JOIN (SELECT [1c_document_id] AS onecid, artic_id AS articid, Закупка AS sZakupka, [Закупка, usd2] AS sZakupkaUsd2, Таможня AS customs, ЕАЭС AS eas, Доставка AS delivery, НДС AS NAT, Сборка AS assemble, Сумма AS SumSales, ЗатратыМП, sebes_id, [Учетная цена] AS uchetprice, [Учетная цена USD2+2] AS uchetpriceUSD22, [Учетная стоимость] AS uchetstoimost, [Учетная стоимость USD2+2] AS uchetstoimostUSD22 FROM pbi.СебестоимостьПродажиТест) AS sebesSales ON sebesSales.sebes_id = sebes.id ) AS mainTab GO /****** Object: Table [pbiProd].[СебестоимостьОт2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbiProd].[СебестоимостьОт2022]( [id] [int] IDENTITY(1,1) NOT NULL, [Период] [datetime2](0) NULL, [Статья] [varchar](50) NOT NULL, [Вид операции] [varchar](25) NOT NULL, [Хоз операция] [varchar](50) NULL, [Организация] [varchar](255) NULL, [Партнер] [varchar](255) NULL, [Контрагент] [varchar](255) NULL, [Менеджер] [varchar](255) NULL, [Тип документа] [varchar](50) NULL, [Номер документа] [varchar](25) NULL, [Валюта документа] [varchar](25) NULL, [Ценовая группа] [varchar](25) NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](21, 9) NULL, [СуммаБезНДС] [numeric](21, 9) NULL, [СуммаРучнойСкидки] [numeric](21, 9) NULL, [СуммаАвтоСкидки] [numeric](21, 9) NULL, [Закупка] [numeric](21, 9) NULL, [Закупка, usd2] [numeric](21, 9) NULL, [Курс usd2] [numeric](15, 3) NULL, [Курс usd] [numeric](15, 3) NULL, [Таможня] [numeric](21, 9) NULL, [ЕАЭС] [numeric](21, 9) NULL, [Учетная цена] [numeric](21, 9) NULL, [Учетная цена USD2+2] [numeric](21, 9) NULL, [Заказ закрыт] [datetime] NULL, [Номер заказа] [nchar](11) NULL, [Маркетинг] [numeric](21, 9) NULL, [Доставка] [numeric](21, 9) NULL, [НДС] [numeric](21, 9) NULL, [Производство] [numeric](21, 9) NULL, [ЗатратыМП] [numeric](21, 9) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](21, 9) NULL, [Учетная стоимость USD2+2] [numeric](21, 9) NULL, [Номер регистратора] [nchar](10) NULL, [ЗатратыСкладХранение] [numeric](21, 9) NULL, [ЗатратыСкладЗарплата] [numeric](21, 9) NULL, [Приемка] [numeric](21, 9) NULL, [АтсМаркировка] [numeric](21, 9) NULL, [ВремяВыполненияМинут] [numeric](21, 9) NULL, [СборкаЗаказа] [numeric](21, 9) NULL, [Доставка USD2+2] [numeric](21, 9) NULL, [НДС USD2+2] [numeric](21, 9) NULL, [Таможня USD2+2] [numeric](21, 9) NULL, [Производство USD2+2] [numeric](21, 9) NULL, [КоличествоУпаковок] [numeric](15, 3) NULL, [Сумма скидки] [numeric](21, 9) NULL, [Сумма скидки USD2+2] [numeric](21, 9) NULL, [Доп расходы] [numeric](21, 9) NULL, [Доп расходы USD2+2] [numeric](21, 9) NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: View [pbiProd].[ИтогСебестоимостьПродажОт2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbiProd].[ИтогСебестоимостьПродажОт2022] AS SELECT id, Период, Статья, [Вид операции], [Хоз операция], Организация, Партнер, PartnerId, Контрагент, Менеджер, [Тип документа], [Номер документа], [Валюта документа], [Ценовая группа], [1c_document_id], [1c_id], artic_id, Количество, Сумма, СуммаБезНДС, СуммаРучнойСкидки, СуммаАвтоСкидки, CASE WHEN [Закупка] = 0 AND [Вид операции] = 'Расход' AND PriceListPrice IS NOT NULL THEN - (PriceListPrice * [Количество]) / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Расход' AND AnyPrice IS NOT NULL THEN - (AnyPrice * [Количество]) / 1000 ELSE [Закупка] END AS Закупка, CASE WHEN [Закупка] = 0 AND [Вид операции] = 'Расход' AND PriceListPrice IS NOT NULL THEN - (PriceListPrice / [Курс usd2] * [Количество]) / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Расход' AND AnyPrice IS NOT NULL THEN - (AnyPrice / [Курс usd2] * [Количество]) / 1000 ELSE [Закупка, usd2] END AS [Закупка, usd2], [Курс usd2], [Курс usd], Таможня, CASE WHEN ([Закупка] = 0 AND [Вид операции] = 'Расход') AND PriceListPrice IS NOT NULL THEN PriceListPrice / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Расход' AND AnyPrice IS NOT NULL THEN AnyPrice / 1000 ELSE [Учетная цена] END AS [Учетная цена], CASE WHEN ([Закупка] = 0 AND [Вид операции] = 'Расход') AND PriceListPrice IS NOT NULL THEN PriceListPrice / [Курс usd2] / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Расход' AND AnyPrice IS NOT NULL THEN AnyPrice / [Курс usd2] / 1000 ELSE [Учетная цена USD2+2] END AS [Учетная цена USD2+2], CASE WHEN ([Закупка] = 0 AND [Вид операции] = 'Расход') AND PriceListPrice IS NOT NULL THEN (PriceListPrice * [Количество]) / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Расход' AND AnyPrice IS NOT NULL THEN (AnyPrice * [Количество]) / 1000 ELSE [Учетная стоимость] END AS [Учетная стоимость], CASE WHEN ([Закупка] = 0 AND [Вид операции] = 'Расход') AND PriceListPrice IS NOT NULL THEN (PriceListPrice / [Курс usd2] * [Количество]) / 1000 WHEN [Закупка] = 0 AND [Вид операции] = 'Расход' AND AnyPrice IS NOT NULL THEN (AnyPrice / [Курс usd2] * [Количество]) / 1000 ELSE [Учетная стоимость USD2+2] END AS [Учетная стоимость USD2+2], [Заказ закрыт], [Номер заказа], Доставка, НДС, [Производство], PriceListPrice, [ЗатратыСкладХранение], [Приемка], [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доп расходы], [Доп расходы USD2+2] FROM (SELECT id, Период, Статья, [Вид операции], [Хоз операция], Организация, Партнер, PartnerId, Контрагент, Менеджер, [Тип документа], [Номер документа], [Валюта документа], [Ценовая группа], [1c_document_id], [1c_id], artic_id, Количество, CASE WHEN rtu.[_Fld7917RRef] = 0x9987B49691D57EFD11EF1297BB0BAF58 or SoglClient.[_Fld23646RRef] = 0x9987B49691D57EFD11EF1297BB0BAF58 THEN Сумма * 1.2 ELSE Сумма END as Сумма, СуммаБезНДС, СуммаРучнойСкидки, СуммаАвтоСкидки, Закупка, [Закупка, usd2], [Курс usd2], [Курс usd], Таможня, [Учетная цена], [Учетная цена USD2+2], [Учетная стоимость], [Учетная стоимость USD2+2], [Заказ закрыт], [Номер заказа], Доставка, НДС, [Производство], (SELECT TOP (1) Цена FROM pbi.pricelist WHERE ([Вид цены] = 'Учетная цена (руб)') AND (Дата <= sebes.Период) AND (sebes.artic_id = artic_id) ORDER BY Дата DESC) AS PriceListPrice, (SELECT TOP (1) Цена FROM pbi.pricelist AS pricelist_1 WHERE ([Вид цены] = 'Учетная цена (руб)') AND (sebes.artic_id = artic_id) ORDER BY Дата) AS AnyPrice, [ЗатратыСкладХранение], [Приемка], [АтсМаркировка] , [ВремяВыполненияМинут], [СборкаЗаказа], [Доп расходы], [Доп расходы USD2+2] FROM [pbiProd].[СебестоимостьОт2022] AS sebes LEFT JOIN [MAG_2019].[dbo].[_Document500X1] as rtu on sebes.[1c_document_id] = rtu.[_IDRRef] LEFT JOIN [MAG_2019].[dbo].[_Reference300] as SoglClient on SoglClient.[_IDRRef] = rtu.[_Fld7917RRef]) AS mainTab GO /****** Object: View [pbi].[Внешние остатки] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbi].[Внешние остатки] AS SELECT nod._Description AS [Узел] , ost._Fld33601 AS [Тип] , ost._Fld33595 AS [Склад] , DATEADD(YEAR, -2000, ost._Fld33596) AS [Дата обновления] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [_Fld28683RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28683RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28683RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28683RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36),[_Fld28683RRef], 2),5,12) )) as [artic_id] --, n._Code AS [Код УТ] , ost._Fld33599 AS [id_внешний] , ost._Fld33602 AS [Количество] , ost._Fld33603 AS [Доступное кол-во] , ost._Fld33602 * (case (SELECT TOP 1 upakovka FROM mag_pbi.pbi.[БазоваяУпаковка] up WHERE ost._Fld28683RRef = up._OwnerID_RRRef) when 0 then 1 else (SELECT TOP 1 upakovka FROM mag_pbi.pbi.[БазоваяУпаковка] up WHERE ost._Fld28683RRef = up._OwnerID_RRRef) end ) as [Остаток МП, шт] FROM [MAG_2019].[dbo].[_InfoRg28682X1] AS ost /* РегистрСведений.ОстаткиТоваровВоВнешнихСистемах */ --LEFT JOIN [MAG_2019].[dbo].[_Reference188X1] n ON n._IDRRef = ost._Fld28683RRef /* Справочник.Номенклатура */ LEFT JOIN [MAG_2019].[dbo].[_Node28072X1] nod ON nod._IDRRef = ost._Fld28684RRef /* ПланОбмена.ВнешниеСистемы */ WHERE --YEAR([_Fld33596]) > 4023 ost._Fld33596 = (SELECT top 1 _Fld33596 FROM [MAG_2019].[dbo].[_InfoRg28682X1] ORDER BY _Fld33596 DESC ) GO /****** Object: View [analytics].[Заявки_на_оплату] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[Заявки_на_оплату] AS SELECT [_Number] as 'Номер заявки' , _Document416_IDRRef ,DATEADD(year, -2000, [_Fld3902]) as 'Дата оплаты план' , CASE WHEN [_Fld3880RRef]= 0x96388D3803D0E2B243682753FD602008 THEN 'Согласована' WHEN [_Fld3880RRef] = 0xA53B783FB8E84C2D4A977FB197BB9B6A THEN 'Не согласована' WHEN [_Fld3880RRef] = 0xB22A4A3C82F7B70D452E0F89A2703597 THEN 'К оплате' WHEN [_Fld3880RRef] = 0x9EB3FD405C68C64C42B491437EDE1CAB THEN 'Отклонена' END as 'Статус' , [_Fld3882] as 'Сумма' , case spv._Description WHEN 'USD' THEN [_Fld3882] * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency='USD2') ELSE [_Fld3882] * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency=spv._Description) END as 'Сумма в руб.' , CASE WHEN (SELECT SUM(CASE WHEN [_RecordKind] = 0 THEN [_Fld16211] ELSE -[_Fld16211] END) AS summ FROM [MAG_2019].[dbo].[_AccumRg16206] -- РегистрНакопления.ДенежныеСредстваКВыплате WHERE [_Fld16207_RRRef] = _Document416_IDRRef ) = 0 THEN 1 ELSE 0 END as 'Оплачено' , spv._Description as 'Валюта документа' ,DATEADD(year, -2000, [_Date_Time]) as [Дата создания] --,DATEADD(year, -2000, [_Fld3890]) as 'Дата оплаты желат' , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2),5,12) ))as partner_id , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = dr._Fld3957RRef) as 'Партнер' , (SELECT _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = r._Fld3891RRef)as 'Получатель' ,[_Fld3900] as 'Комментарий' , (SELECT _Description FROM [MAG_2019].[dbo].[_Reference316] dds /*Справочник.СтатьиДвиженияДенежныхСредств*/ WHERE dds._IDRRef = r._Fld3904RRef) as 'Статья ДДС' , e.value as 'Хоз. операция' FROM [MAG_2019].[dbo].[_Document416] r /*ЗаявкаНаРасходованиеДенежныхСредств */ LEFT JOIN [MAG_2019].[dbo].[_Document416_VT3955] dr /*Документ.ЗаявкаНаРасходованиеДенежныхСредств.ТабличнаяЧасть.РасшифровкаПлатежа*/ ON r._IDRRef = dr._Document416_IDRRef LEFT JOIN mag_pbi.pbi.enums e ON e._IDRref = r.[_Fld3881RRef] AND e.enum = 'Хоз. операции'/*Перечисление хозяйственная операция*/ LEFT JOIN [MAG_2019].[dbo].[_Reference50] spv ON spv._IDRRef = r.[_Fld3883RRef] /*Справочник.Валюты */ --LEFT JOIN [MAG_2019].[dbo].[_AccumRg16206] WHERE /*[_Fld3881RRef]=0xB96DB293C2F88D8C46DF79811923F574 AND */ r.[_Posted] = 0x01 AND r._Marked = 0x00 GO /****** Object: Table [pbiProd].[СебестоимостьДо2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbiProd].[СебестоимостьДо2022]( [id] [int] IDENTITY(1,1) NOT NULL, [Период] [datetime2](0) NULL, [Статья] [varchar](255) NOT NULL, [Вид операции] [varchar](255) NOT NULL, [Хоз операция] [varchar](255) NOT NULL, [Организация] [varchar](255) NULL, [Партнер] [varchar](255) NULL, [Контрагент] [varchar](255) NULL, [Менеджер] [varchar](255) NULL, [Тип документа] [varchar](255) NULL, [Номер документа] [varchar](255) NULL, [Валюта документа] [varchar](255) NULL, [Ценовая группа] [varchar](255) NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](38, 15) NULL, [СуммаБезНДС] [numeric](38, 15) NULL, [СуммаРучнойСкидки] [numeric](38, 15) NULL, [СуммаАвтоСкидки] [numeric](38, 15) NULL, [Закупка] [numeric](38, 15) NULL, [Закупка, usd2] [numeric](38, 15) NULL, [Курс usd2] [numeric](15, 3) NULL, [Курс usd] [numeric](15, 3) NULL, [Таможня] [numeric](38, 15) NULL, [ЕАЭС] [numeric](38, 15) NULL, [Учетная цена] [numeric](38, 15) NULL, [Учетная цена USD2+2] [numeric](38, 15) NULL, [Заказ закрыт] [datetime] NULL, [Номер заказа] [nchar](11) NULL, [Маркетинг] [numeric](38, 15) NULL, [Доставка] [numeric](38, 15) NULL, [НДС] [numeric](38, 15) NULL, [Производство] [numeric](38, 15) NULL, [ЗатратыМП] [numeric](38, 15) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](38, 15) NULL, [Учетная стоимость USD2+2] [numeric](38, 15) NULL, [Номер регистратора] [nchar](10) NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: View [pbiProd].[СводныйСебестоимость] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbiProd].[СводныйСебестоимость] AS SELECT [Период] ,[Статья] ,[Вид операции] ,[Хоз операция] ,[Организация] ,[Партнер] ,[PartnerId] ,[Контрагент] ,[Менеджер] ,[Тип документа] ,[Номер документа] ,[Валюта документа] ,[Ценовая группа] ,[1c_document_id] ,[1c_id] ,[artic_id] ,[Количество] ,[Сумма] ,[СуммаБезНДС] ,[СуммаРучнойСкидки] ,[СуммаАвтоСкидки] ,[Закупка] ,[Закупка, usd2] ,[Курс usd2] ,[Курс usd] ,[Таможня] ,[Учетная цена] ,[Учетная цена USD2+2] ,[Учетная стоимость] ,[Учетная стоимость USD2+2] ,[Заказ закрыт] ,[Номер заказа] ,[Доставка] ,[НДС] ,[Производство] ,[ЗатратыСкладХранение] ,[Приемка] ,[АтсМаркировка] ,[ВремяВыполненияМинут] ,[СборкаЗаказа] ,[Доп расходы] ,[Доп расходы USD2+2] FROM [mag_pbi].[pbiProd].[ИтогСебестоимостьПродажОт2022] UNION ALL SELECT [Период] , CASE WHEN [Статья] = 'Сборка' THEN 'Производство товара' ELSE [Статья] END AS [Статья] , CASE WHEN [Вид операции] = 'Закупка' THEN 'Приход' ELSE 'Расход' END AS [Вид операции] ,[Хоз операция] ,[Организация] ,[Партнер] ,[PartnerId] ,[Контрагент] ,[Менеджер] ,[Тип документа] ,[Номер документа] ,[Валюта документа] ,[Ценовая группа] ,[1c_document_id] ,[1c_id] ,[artic_id] ,[Количество] ,[Сумма] ,[СуммаБезНДС] ,[СуммаРучнойСкидки] ,[СуммаАвтоСкидки] ,[Закупка] ,[Закупка, usd2] ,[Курс usd2] ,[Курс usd] ,[Таможня] ,[Учетная цена] ,[Учетная цена USD2+2] ,[Учетная стоимость] ,[Учетная стоимость USD2+2] ,[Заказ закрыт] ,[Номер заказа] ,[Доставка] ,[НДС] ,[Производство] , 0 as [ЗатратыСкладХранение] , 0 as [Приемка] , 0 as [АтсМаркировка] , 0 as [ВремяВыполненияМинут] , 0 as [СборкаЗаказа] , 0 as [Доп расходы] , 0 as [Доп расходы USD2+2] FROM [mag_pbi].[pbiProd].[СебестоимостьДо2022] GO /****** Object: Table [pbi].[w_ostatok_da_net] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[w_ostatok_da_net]( [dt] [date] NULL, [_IDRREF] [binary](16) NOT NULL, [artic_id] [nvarchar](36) NULL, [minAvailableQty] [decimal](18, 4) NULL, [ostatok] [numeric](15, 6) NULL, [quantity] [numeric](15, 6) NULL, [upakovok] [numeric](15, 6) NULL, [sellable_stock] [decimal](18, 6) NULL, [quantity_mp] [numeric](15, 6) NULL, [upakovok_mp] [numeric](15, 6) NULL, [dostupno_upakovok_mp] [numeric](15, 6) NULL, [ostatok_mp] [numeric](15, 6) NULL, [ostatok_all] [numeric](15, 6) NULL ) ON [PRIMARY] GO /****** Object: Table [analytics].[seasonality_groups] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[seasonality_groups]( [g] [varchar](255) NULL, [g1] [varchar](255) NULL, [month] [tinyint] NOT NULL, [koef] [numeric](38, 23) NULL ) ON [PRIMARY] GO /****** Object: View [analytics].[ForecastBasesKs] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[ForecastBasesKs] AS WITH MaxDate AS ( SELECT MAX(Период) AS max_date FROM [pbiProd].[СводныйСебестоимость Для PBI] WHERE Статья = 'реализация' ), LastFullMonth AS ( SELECT YEAR(DATEADD(MONTH, -1, max_date)) AS last_year, MONTH(DATEADD(MONTH, -1, max_date)) AS last_month FROM MaxDate ), -- 1. Продажи по SKU × месяц Sales AS ( SELECT artic_id, YEAR(Период) AS Год, MONTH(Период) AS Месяц, SUM(Количество) AS total_sales FROM [pbiProd].[СводныйСебестоимость Для PBI] WHERE Статья = 'реализация' GROUP BY artic_id, YEAR(Период), MONTH(Период) ), -- 2. Дни в продаже (по флагу ostatok_all) Stock AS ( SELECT artic_id, YEAR(dt) AS Год, MONTH(dt) AS Месяц, SUM(CASE WHEN ostatok_all = 1 THEN 1 ELSE 0 END) AS days_available FROM [pbi].[w_ostatok_da_net] GROUP BY artic_id, YEAR(dt), MONTH(dt) ), -- 3. База: нормализованные продажи (только Основной + Маркетплейс) Base AS ( SELECT s.artic_id, n.code, n.description, s.Год, s.Месяц, s.total_sales, st.days_available, -- сезонность: либо родная, либо общая (по группе 0) COALESCE(sg_main.seasonal_koef, sg_def.seasonal_koef) AS seasonal_koef, s.total_sales / NULLIF(COALESCE(sg_main.seasonal_koef, sg_def.seasonal_koef), 0) AS Normalized_sales, CASE WHEN st.days_available > 19 THEN 1 ELSE 0 END AS valid_month, CASE WHEN st.days_available > 19 THEN s.total_sales / NULLIF(COALESCE(sg_main.seasonal_koef, sg_def.seasonal_koef), 0) ELSE NULL END AS normalized_valid_sales FROM Sales s LEFT JOIN Stock st ON s.artic_id = st.artic_id AND s.Год = st.Год AND s.Месяц = st.Месяц JOIN [pbi].[nomenclature] n ON s.artic_id = n.artic_id LEFT JOIN [analytics].[seasonality_groups] sg_main ON n.[1c_group] = sg_main.group_1c_id AND s.Месяц = sg_main.[month] LEFT JOIN [analytics].[seasonality_groups] sg_def ON sg_def.group_1c_id = 0x00000000000000000000000000000000 AND sg_def.[month] = s.Месяц WHERE n.Статус IN ('Основной', 'Маркетплейс') ), -- 4. Пронумеровка месяцев (только до последнего полного месяца) Windowed AS ( SELECT b.*, ROW_NUMBER() OVER ( PARTITION BY b.artic_id ORDER BY (b.Год*100 + b.Месяц) DESC ) AS rn_desc FROM Base b CROSS JOIN LastFullMonth lm WHERE (b.Год*100 + b.Месяц) <= (lm.last_year*100 + lm.last_month) ), -- 4b. Последний валидный месяц (строгий, для контроля) LastValid AS ( SELECT artic_id, normalized_valid_sales AS Base_LastMonth FROM ( SELECT artic_id, normalized_valid_sales, ROW_NUMBER() OVER ( PARTITION BY artic_id ORDER BY (Год*100 + Месяц) DESC ) AS rn FROM Windowed WHERE valid_month = 1 AND normalized_valid_sales IS NOT NULL ) x WHERE rn = 1 ), -- 5. Строгие базы (12M, 3M) – только по валидным месяцам StrictAggregates AS ( SELECT w.artic_id, AVG(CASE WHEN rn_desc <= 12 AND valid_month = 1 THEN normalized_valid_sales END) AS Base_12M, CASE WHEN MIN(CASE WHEN rn_desc <= 3 THEN valid_month END) = 1 THEN AVG(CASE WHEN rn_desc <= 3 THEN normalized_valid_sales END) ELSE NULL END AS Base_3M FROM Windowed w GROUP BY w.artic_id ), -- 6. Irregular-база: средняя нормализованная продажа за последние 12 календарных месяцев, -- только по месяцам с total_sales > 0 IrregularBase AS ( SELECT w.artic_id, AVG(w.Normalized_sales) AS Base_Irregular FROM Windowed w CROSS JOIN LastFullMonth lm WHERE (w.Год * 12 + w.Месяц) > (lm.last_year * 12 + lm.last_month - 12) -- последние 12 месяцев AND (w.Год * 12 + w.Месяц) <= (lm.last_year * 12 + lm.last_month) AND w.total_sales > 0 AND w.Normalized_sales IS NOT NULL GROUP BY w.artic_id ), -- 7. TREND (регрессия по ln(sales), окно ~24 мес по валидным) TrendData AS ( SELECT w.artic_id, ROW_NUMBER() OVER ( PARTITION BY w.artic_id ORDER BY (w.Год*100 + w.Месяц) ) - 1 AS t, LOG(w.normalized_valid_sales) AS ln_sales FROM Windowed w CROSS JOIN LastFullMonth lm WHERE (w.Год*100 + w.Месяц) > (lm.last_year*100 + lm.last_month - 200) AND (w.Год*100 + w.Месяц) <= (lm.last_year*100 + lm.last_month) AND w.normalized_valid_sales > 0 ), TrendAgg AS ( SELECT artic_id, COUNT(*) AS n_obs, EXP( (AVG(t*ln_sales) - AVG(t)*AVG(ln_sales)) / NULLIF(AVG(t*t) - AVG(t)*AVG(t), 0) ) AS g_raw FROM TrendData GROUP BY artic_id HAVING COUNT(*) >= 6 ), TrendFinal AS ( SELECT artic_id, POWER( CASE WHEN POWER(g_raw, 12) < 0.7 THEN 0.7 WHEN POWER(g_raw, 12) > 1.5 THEN 1.5 ELSE POWER(g_raw, 12) END, 1.0/12 ) AS Ktrend FROM TrendAgg ) -- === ФИНАЛ (одна строка на активный SKU) === SELECT n.artic_id, n.code, n.description, -- строгие базы sa.Base_12M, sa.Base_3M, ib.Base_Irregular, -- единая выбранная база CASE WHEN sa.Base_3M IS NOT NULL THEN sa.Base_3M WHEN sa.Base_12M IS NOT NULL THEN sa.Base_12M ELSE ib.Base_Irregular END AS Base_Selected, lv.Base_LastMonth, tf.Ktrend FROM pbi.nomenclature n LEFT JOIN StrictAggregates sa ON n.artic_id = sa.artic_id LEFT JOIN IrregularBase ib ON n.artic_id = ib.artic_id LEFT JOIN LastValid lv ON n.artic_id = lv.artic_id LEFT JOIN TrendFinal tf ON n.artic_id = tf.artic_id WHERE n.Статус IN ('Основной', 'Маркетплейс'); GO /****** Object: View [analytics].[income_expence] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [analytics].[income_expence] as SELECT t.*, CONCAT(t.[Номер документа], ' ', t.[Дата]) as 'Номер_Дата' FROM -- См. WHERE в самом низу -- WHERE g <> 'Прочие перемещения ДС' AND [Статья ДДС] <> 'Закупка_Приобретение валюты' ( SELECT '' as 'Получатель' , c.[path] as 'path' , case WHEN c.g1='Конвертация валюты' THEN 'Закупка' ELSE c.first_group END as g , c.g1 , c.g2 , c.g3 , c.g4 , c._Description as 'Статья ДДС' , e.value as 'operation' , convert(date, DATEADD(year, -2000, [_Period]), 104) as 'Дата' , FORMAT(DATEADD(year, -2000, [_Period]), 'yyyy') as 'Год' , FORMAT(DATEADD(year, -2000, [_Period]), 'MM') as 'Месяц' ,case _RecordKind when 1 then -acc._Fld16165 / 1000 when 0 then acc._Fld16165 / 1000 end as 'Сумма' ,case _RecordKind when 1 then -acc._Fld16166 / 1000 when 0 then acc._Fld16166 / 1000 end as 'Сумма упр(приход)' ,case _RecordKind when 1 then -acc._Fld16167 / 1000 when 0 then acc._Fld16167 / 1000 end as 'Сумма регл(приход)' , org._Description as 'organization' , rs._Description as 'schet' , 'Безнал' as 'type' , (SELECT _DESCRIPTION FROM [MAG_2019].[dbo].[_Reference50] /*валюты*/ v WHERE v._IDRRef = rs._Fld18073RRef) as 'valuta' , case acc._RecorderTRef WHEN 0x000001FD THEN (SELECT d._Number FROM MAG_2019.dbo._Document509 d WHERE d._IDRRef = acc._RecorderRRef ) WHEN 0x000001E1 THEN (SELECT d._Number FROM MAG_2019.dbo._Document481 d WHERE d._IDRRef = acc._RecorderRRef ) WHEN 0x000001F1 THEN (SELECT d._Number FROM MAG_2019.dbo._Document497 d WHERE d._IDRRef = acc._RecorderRRef ) WHEN 0x00000181 THEN (SELECT d._Number FROM MAG_2019.dbo._Document385 d WHERE d._IDRRef = acc._RecorderRRef ) END as [Номер документа] FROM [mag_2019].[dbo].[_AccumRg16162] acc /* регистр денежные средства б/н */ LEFT JOIN [MAG_2019].[dbo].[_Reference198X1] org ON org._IDRRef = acc._Fld16163RRef/*справочник организации*/ LEFT JOIN [MAG_2019].[dbo].[_Reference47] rs ON rs._IDRRef = acc._Fld16164RRef/* справочник банковские счета */ LEFT JOIN [mag_reports].[costs].[costs_groups] c ON c._IDRref = acc._Fld16171RRef /* статья ДДС */ LEFT JOIN mag_reports.dbo.enums e ON e._IDRref = acc._Fld16170RRef AND e.enum = 'Хоз. операции'/*Перечисление хозяйственная операция*/ WHERE 1=1 --AND path not like '%Прочие перемещения ДС%' -- WHERE path is not null /*and path not like '%Сдача денежных средств в банк (в рублях)%' and path not like '%Перевод ДС ИП - ЧП%' and path not like '%Прочие перемещения ДС %' and path not like '%Расходы | расход%' */ UNION all SELECT ( SELECT _Description FROM [MAG_2019].dbo._Reference168 /* контрагенты */ WHERE _IDRRef = (SELECT top 1 _Fld3891RRef FROM [MAG_2019].dbo._Document416 /* заявка на расход ДС */ d416 WHERE d416._IDRref = /*ro_tbl._Fld7773RRef*/ (SELECT top 1 _Document495_IDRRef FROM [MAG_2019].dbo._Document495_VT7759 ro_tbl /* Расходный кассовый ордер табл */ WHERE ro_tbl._Document495_IDRRef = ro._IDRRef ) ) ) as 'Получатель' , c.[path] as 'path' , case WHEN c.g1='Конвертация валюты' THEN 'Закупка' ELSE c.first_group END as g , c.g1 , c.g2 , c.g3 , c.g4 , c._Description as 'Статья ДДС' , e.value as 'operation' , convert(date, DATEADD(year, -2000, [_Period]), 104) as 'Дата' , FORMAT(DATEADD(year, -2000, [_Period]), 'yyyy') as 'Год' , FORMAT(DATEADD(year, -2000, [_Period]), 'MM') as 'Месяц' ,case _RecordKind when 1 then -_Fld16220 / 1000 when 0 then _Fld16220 / 1000 end as 'Сумма' ,case _RecordKind when 1 then -acc._Fld16221 / 1000 when 0 then acc._Fld16221 / 1000 end as 'Сумма упр(приход)' ,case _RecordKind when 1 then -acc._Fld16222 / 1000 when 0 then acc._Fld16222 / 1000 end as 'Сумма регл(приход)' , org._Description , k._Description ,'Наличные' as 'type' ,(SELECT _DESCRIPTION FROM [MAG_2019].[dbo].[_Reference50] /*валюты*/ v WHERE v._IDRRef = k._Fld20385RRef) as 'valuta' , case acc._RecorderTRef WHEN 0x000001EF THEN (SELECT d._Number FROM MAG_2019.dbo._Document495 d WHERE d._IDRRef = acc._RecorderRRef ) WHEN 0x000001E5 THEN (SELECT d._Number FROM MAG_2019.dbo._Document485 d WHERE d._IDRRef = acc._RecorderRRef ) WHEN 0x000001F1 THEN (SELECT d._Number FROM MAG_2019.dbo._Document497 d WHERE d._IDRRef = acc._RecorderRRef ) WHEN 0x00000181 THEN (SELECT d._Number FROM MAG_2019.dbo._Document385 d WHERE d._IDRRef = acc._RecorderRRef ) END as [Номер документа] FROM [mag_2019].[dbo].[_AccumRg16217] acc /* регистр денежные средства нал */ LEFT JOIN [MAG_2019].[dbo].[_Reference198X1] org ON org._IDRRef = acc._Fld16218RRef/*справочник организации*/ LEFT JOIN [MAG_2019].[dbo].[_Reference147] k /* кассы */ ON k._IDRRef = acc._Fld16219RRef LEFT JOIN [mag_reports].[costs].[costs_groups] c ON c._IDRref = acc._Fld16224RRef LEFT JOIN mag_reports.dbo.enums e ON e._IDRref = acc._Fld16223RRef AND e.enum = 'Хоз. операции'/*Перечисление хозяйственная операция*/ LEFT JOIN [MAG_2019].dbo._Document495 ro /* Расходный кассовый ордер */ ON ro._IDRRef = acc._RecorderRRef WHERE 1=1 --AND path not like '%Прочие перемещения ДС%' --path is not null /*and path not like '%Сдача денежных средств в банк (в рублях)%' and path not like '%Перевод ДС ИП - ЧП%' and path not like '%Прочие перемещения ДС %' and path not like '%Расходы | расход%'*/ /* union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-01-01', 0, -652685 / 1000 , -652685 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-02-01', 0, -847900 / 1000 , -847900 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-03-01', 0, -856435 / 1000 ,- 856435 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-04-01', 0, -974905 / 1000 , -974905 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-05-01', 0, -977626 / 1000 , -977626 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-06-01', 0, -662517 / 1000 , -662517 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-07-01', 0, -748000 / 1000 , -748000 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-08-01', 0, -877971 / 1000 , -877971 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-09-01', 0, -946906 / 1000 , -946906 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-10-01', 0, -1325939 / 1000 , -1325939 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-11-01', 0, -1172364 / 1000 , -1172364 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-12-01', 0, -946108 / 1000 , -946108 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-01-01', 0, -955189 / 1000 , -955189 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-02-01', 0, -987967 / 1000 , -987967 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-03-01', 0, -1092812 / 1000 , -1092812 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-04-01', 0, -600712 / 1000 , -600712 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-05-01', 0, -886494 / 1000 , -886494 / 1000 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-06-01', 0, -950 , -950 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-07-01', 0, -958.5 , -958.5 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-08-01', 0, -987.2 , -987.2 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-09-01', 0, -1034 , -1034 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-10-01', 0, -1119 , -1119 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-11-01', 0, -1291 , -1291 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-12-01', 0, -1112 , -1112 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-01-01', 0, -1019 , -1019 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-02-01', 0, -1188 , -1188 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-03-01', 0, -1446 , -1446 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-04-01', 0, -1330 , -1330 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-05-01', 0, -927 , -927 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-06-01', 0, -1140 , -1140 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-07-01', 0, -881 , -881 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-08-01', 0, -1238 , -1238 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-09-01', 0, -1403 , -1403 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-10-01', 0, -1495 , -1495 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-11-01', 0, -1043 , -1043 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-12-01', 0, -1197 , -1197 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-01-01', 0, -1405 , -1405 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-02-01', 0, -1418 , -1418 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-03-01', 0, -1254 , -1254 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-04-01', 0, -1461 , -1461 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-05-01', 0, -1275 , -1275 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-06-01', 0, -1502 , -1502 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-07-01', 0, -1524 , -1524 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-08-01', 0, -1384 , -1384 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-09-01', 0, -1623 , -1623 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-10-01', 0, -1699 , -1699 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-11-01', 0, -1963 , -1963 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-12-01', 0, -1743 , -1743 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-01-01', 0, -1560 , -1560 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-02-01', 0, -1727 , -1727 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-03-01', 0, -2104 , -2104 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-04-01', 0, -1504 , -1504 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-05-01', 0, -1674 , -1674 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-06-01', 0, -1503 , -1503 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-07-01', 0, -1582 , -1582 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-08-01', 0, -1569 , -1569 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-09-01', 0, -2104 , -2104 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-10-01', 0, -2104 , -2104 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-11-01', 0, -2104 , -2104 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-12-01', 0, -2104 , -2104 , '', '', '', 'руб.', '' union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-01-01', 0, -1611 , -1611 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-02-01', 0, -1759 , -1759 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-03-01', 0, -1853 , -1853 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-04-01', 0, -1718 , -1718 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-05-01', 0, -1516 , -1516 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-06-01', 0, -1682 , -1682 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-07-01', 0, -1669 , -1669 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-08-01', 0, -1669 , -1669 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-09-01', 0, -1709 , -1709 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-10-01', 0, -1899 , -1899 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-11-01', 0, -2228 , -2228 , '', '', '', 'руб.', ''union all select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-12-01', 0, -2320 , -2320 , '', '', '', 'руб.', '' union all --2025 select '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2025-01-01', 0, -1604 , -1604 , '', '', '', 'руб.', ''--union all */ ) as t WHERE g <> 'Прочие перемещения ДС' AND [Статья ДДС] <> 'Закупка_Приобретение валюты' GO /****** Object: View [pbi].[Расходы по годам] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE VIEW [pbi].[Расходы по годам] as SELECT [Категория], Год, sum( Сумма) as [Сумма] FROM ( SELECT g as 'Категория' , Год , -[Сумма] as 'Сумма' FROM [mag_pbi].[analytics].[income_expence] WHERE Дата > '2018' AND g NOT IN ('Приход', 'Закупка') AND g1 NOT IN ('Дедовск_Аренда склада А', 'Сдача А', 'Сдача Е1') ) as t GROUP BY [Категория], Год GO /****** Object: View [analytics].[doprekvizit] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[doprekvizit] AS SELECT CASE WHEN i._Marked = 0x00 THEN 0 ELSE 1 END AS [ПометкаУдаления], i._Type AS [ТипЗначения], i._Fld28453 AS [ТипЗначенияВнешнейСистемы], i._Fld17721 AS [description], LOWER( CONCAT( SUBSTRING(h.hex, 25, 8), '-', SUBSTRING(h.hex, 21, 4), '-', SUBSTRING(h.hex, 17, 4), '-', SUBSTRING(h.hex, 1, 4), '-', SUBSTRING(h.hex, 5, 12) ) ) AS [uid], i._Fld28554 AS [ИмяВоВнешнейСистеме], CASE i._Fld28553 WHEN 0x01 THEN 1 ELSE 0 END AS [ВыгружатьВоВнешниеСистемы], CASE i._Fld33511 WHEN 0x01 THEN 1 ELSE 0 END AS [ВыгружатьНаСайт], CASE i._Fld28529 WHEN 0x01 THEN 1 ELSE 0 END AS [ФильтрНаСайте], CASE i._Fld28530 WHEN 0x01 THEN 1 ELSE 0 END AS [ОтображатьНаСайте], CASE i._Fld27792 WHEN 0x01 THEN 1 ELSE 0 END AS [АТС_НеПроверять], CASE i._Fld17724 WHEN 0x01 THEN 1 ELSE 0 END AS [ЗаполнятьОбязательно] FROM MAG_2019.dbo._Chrc1109 AS i CROSS APPLY (SELECT CONVERT(varchar(36), i._IDRRef, 2) AS hex) AS h; GO /****** Object: View [analytics].[doprekvizitvalues] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[doprekvizitvalues] AS SELECT n._Code AS [code], 'DopRekvizit' AS [type], -- GUID r._Reference188_IDRRef в текстовом виде (uid) LOWER( SUBSTRING(h.hex_ref,25,8) + '-' + SUBSTRING(h.hex_ref,21,4) + '-' + SUBSTRING(h.hex_ref,17,4) + '-' + SUBSTRING(h.hex_ref, 1,4) + '-' + SUBSTRING(h.hex_ref, 5,12) ) AS [uid], r._Reference188_IDRRef AS [uid_bin], r._Fld21137RRef AS [value_bin], r._Fld21137RRef AS [name_uid_bin], -- GUID r._Fld21137RRef в текстовом виде (name_uid) LOWER( SUBSTRING(h.hex_name,25,8) + '-' + SUBSTRING(h.hex_name,21,4) + '-' + SUBSTRING(h.hex_name,17,4) + '-' + SUBSTRING(h.hex_name, 1,4) + '-' + SUBSTRING(h.hex_name, 5,12) ) AS [name_uid], c._Fld17721 AS [name], pbi.get_rekvizit_value( r._Reference188_IDRRef, r._Fld21137RRef, r._Fld21138_TYPE, r._Fld21138_L, r._Fld21138_N, r._Fld21138_T, r._Fld21138_S, r._Fld21138_RTRef, r._Fld21138_RRRef ) AS [value] FROM MAG_2019.dbo._Reference188_VT21135X1 AS r INNER JOIN MAG_2019.dbo._Reference188X1 AS n ON r._Reference188_IDRRef = n._IDRRef INNER JOIN MAG_2019.dbo._Chrc1109 AS c ON c._IDRRef = r._Fld21137RRef CROSS APPLY ( SELECT CONVERT(varchar(36), r._Reference188_IDRRef, 2) AS hex_ref, CONVERT(varchar(36), r._Fld21137RRef, 2) AS hex_name ) AS h; GO /****** Object: View [analytics].[images] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[images] AS SELECT n._Code AS [КодУТ], -- GUID r._IDRRef -> текст (КартинкаИД) LOWER( SUBSTRING(h.hex_r,25,8) + '-' + SUBSTRING(h.hex_r,21,4) + '-' + SUBSTRING(h.hex_r,17,4) + '-' + SUBSTRING(h.hex_r, 1,4) + '-' + SUBSTRING(h.hex_r, 5,12) ) AS [КартинкаИД], -- Путь к файлу CONCAT('media.magok.ru/', r._Fld21201) AS [Путь], CASE WHEN r._Fld28532 = 0x01 THEN 1 ELSE 0 END AS [Основное], ISNULL(v._Description, N'') AS [ВнешняяСистема], CASE WHEN r._Marked = 0x00 THEN 0 ELSE 1 END AS [ПометкаУдаления], -- GUID n._IDRRef -> текст (НоменклатураИД) LOWER( SUBSTRING(h.hex_n,25,8) + '-' + SUBSTRING(h.hex_n,21,4) + '-' + SUBSTRING(h.hex_n,17,4) + '-' + SUBSTRING(h.hex_n, 1,4) + '-' + SUBSTRING(h.hex_n, 5,12) ) AS [НоменклатураИД] FROM MAG_2019.dbo._Reference191X1 AS r INNER JOIN MAG_2019.dbo._Reference188X1 AS n ON n._IDRRef = r._Fld21192RRef LEFT JOIN MAG_2019.dbo._Node28072X1 AS v ON v._IDRRef = r._Fld28611RRef CROSS APPLY ( SELECT CONVERT(varchar(36), r._IDRRef, 2) AS hex_r, CONVERT(varchar(36), n._IDRRef, 2) AS hex_n ) AS h; GO /****** Object: View [analytics].[Группы_статей_ДДС] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [analytics].[Группы_статей_ДДС] as WITH DirectReports([Статья ддс], g, g1,g2,g3,g4,[1c_id],[id], [_ParentIDRRef], lvl, [path]/*Name, Title, EmployeeID, EmployeeLevel, Sort*/) AS (SELECT CONVERT(varchar(255), e.[_Description]), CONVERT(varchar(255),e.[_Description]), --g CONVERT(varchar(255),''), --g1 CONVERT(varchar(255),''), --g2 CONVERT(varchar(255),''), --g3 CONVERT(varchar(255),''), --g4 e._IDRRef, LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), _IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),5,12) )), e._ParentIDRRef, 1, CONVERT(varchar(255), e.[_Description]) FROM [mag_2019].[dbo].[_Reference316] AS e WHERE e._ParentIDRRef = 0x00000000000000000000000000000000 AND e._Marked = 0 UNION ALL SELECT CONVERT(varchar(255), /*REPLICATE ('| ' , lvl) +*/ e._Description), CONVERT(varchar(255),d.g), /*g1*/ CASE lvl + 1 WHEN 2 THEN CONVERT(varchar(255),e._Description) ELSE CONVERT(varchar(255),d.g1) END, /*g2*/ CASE lvl + 1 WHEN 3 THEN CONVERT(varchar(255),e._Description) ELSE CONVERT(varchar(255),d.g2) END, /*g3*/ CASE lvl + 1 WHEN 4 THEN CONVERT(varchar(255),e._Description) ELSE CONVERT(varchar(255),d.g3) END, /*g4*/ CASE lvl + 1 WHEN 5 THEN CONVERT(varchar(255),e._Description) ELSE CONVERT(varchar(255),d.g4) END, e._IDRRef, LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), _IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),5,12) )), e._ParentIDRRef, lvl + 1, CONVERT (varchar(255), RTRIM(path) + ' | ' + e._Description) FROM [mag_2019].[dbo].[_Reference316] AS e INNER JOIN DirectReports AS d ON e._ParentIDRRef = d.[1c_id] WHERE e._Marked = 0 ) SELECT * FROM DirectReports --ORDER BY Sort GO /****** Object: View [analytics].[Ожидаемое_поступление] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [analytics].[Ожидаемое_поступление] as SELECT d._Number as [Номер] , CONVERT(datetime2, FORMAT(DATEADD(year, -2000, [_Date_Time]),'yyyy-MM-dd'), 120) as [Дата поступления] , CASE _Fld5074RRef WHEN 0xB5530D030E40BC264A41E266D1E84B1A then 'Безнал' WHEN 0xB3F668344C8DBA57427B6BC0D450CEA1 then 'Наличные' ELSE 'Любая' END as [Форма оплаты] , d._Fld5070 / 1000 as 'Сумма' , (SELECT _Description FROM [MAG_2019].[dbo].[_Reference316] dds /*Справочник.СтатьиДвиженияДенежныхСредств*/ WHERE dds._IDRRef = d._Fld5072RRef) as 'Статья ДДС' , (SELECT _Description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = d._Fld5069RRef) as 'Организация' , (SELECT _Description FROM [MAG_2019].[dbo].[_Reference50] spv /*Справочник.Валюты */ WHERE spv._IDRRef = d._Fld5071RRef) as 'Валюта документа' , d._Fld5073 as 'Назначение платежа' FROM MAG_2019.dbo._Document443 d /* Документ.ОжидаемоеПоступлениеДенежныхСредств */ WHERE d._Marked = 0x00 AND d._Posted = 0x01 /* 0xB5530D030E40BC264A41E266D1E84B1A безнал 0xB3F668344C8DBA57427B6BC0D450CEA1 нал */ GO /****** Object: View [dbo].[tovar_bez_kontenta] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /** Беру свободные остатки, ищу товары больше нуля, присоединяю доп реквизиты и таблицу значений доп реквизитов, чтобы понять статус товара. Далее соединяю с внешними файлами по ссылке номенклатуры из свободных остатков, беру 1 попавшуюся фотку, где null там нет фото, тоже самое делаю с ценами соединяю свободные остатки с ценами номенклатуры выбираю по двум видам цен (валютка, рублевая) * *Беру свободные остатки, ищу товары больше нуля, присоединяю доп реквизиты и таблицу значений доп реквизитов, чтобы понять статус товара. Далее соединяю с внешними файлами по ссылке номенклатуры из свободных остатков, беру 1 попавшуюся фотку, где null там нет фото, тоже самое делаю с ценами соединяю свободные остатки с ценами номенклатуры выбираю по двум видам цен (валютка, рублевая) **/ CREATE VIEW [dbo].[tovar_bez_kontenta] AS SELECT SUM(CASE WHEN [_RecordKind] = 1 THEN - [_Fld17249] ELSE [_Fld17249] END) AS ВНаличии, ostatki._Fld17246RRef AS Номенклатура, tabznach._Description AS Статус, CASE WHEN photo._Fld21192RRef IS NULL THEN 'Нет' ELSE 'Да' END AS НаличиеФото, CASE WHEN price._Fld15490RRef IS NULL THEN 'Нет' ELSE 'Да' END AS НаличиеЦены, CASE WHEN IdMP._Fld28244_RRRef IS NULL THEN 'Нет' ELSE 'Да' END AS ЕстьИдМаркета FROM MAG_2019.dbo._AccumRg17245 AS ostatki LEFT OUTER JOIN (SELECT _Fld21138_RRRef, _Reference188_IDRRef FROM MAG_2019.dbo._Reference188_VT21135X1 WHERE (_Fld21137RRef = 0x80DB0CC47A052DFD11E6E88DD05808D1)) AS DopRekv ON ostatki._Fld17246RRef = DopRekv._Reference188_IDRRef LEFT OUTER JOIN MAG_2019.dbo._Reference133X1 AS tabznach ON DopRekv._Fld21138_RRRef = tabznach._IDRRef LEFT OUTER JOIN (SELECT _Fld21192RRef, MIN(_IDRRef) AS FirstPhoto FROM MAG_2019.dbo._Reference191X1 GROUP BY _Fld21192RRef) AS photo ON photo._Fld21192RRef = ostatki._Fld17246RRef LEFT OUTER JOIN (SELECT _Fld15490RRef, MIN(_Period) AS FirstPrice FROM MAG_2019.dbo._InfoRg15489 WHERE (_Fld15492RRef = 0x80C5305A3A00E12B11E58A143E5B131D) OR (_Fld15492RRef = 0x80C5305A3A00E12B11E58A144F47AACF) GROUP BY _Fld15490RRef) AS price ON price._Fld15490RRef = ostatki._Fld17246RRef LEFT OUTER JOIN (SELECT _Fld28244_RRRef, MIN(_Fld28245RRef) AS FirstIdMP FROM MAG_2019.dbo._InfoRg28243X1 GROUP BY _Fld28244_RRRef) AS IdMP ON IdMP._Fld28244_RRRef = ostatki._Fld17246RRef WHERE (DopRekv._Fld21138_RRRef <> 0xAEACB496910DCFD611EA896A13FE2E89) GROUP BY ostatki._Fld17246RRef, tabznach._Description, photo._Fld21192RRef, price._Fld15490RRef, IdMP._Fld28244_RRRef HAVING (SUM(CASE WHEN [_RecordKind] = 1 THEN - [_Fld17249] ELSE [_Fld17249] END) > 0) AND (photo._Fld21192RRef IS NULL OR price._Fld15490RRef IS NULL) GO /****** Object: View [dbo].[СтоимостьОпераций_Отбор] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [dbo].[СтоимостьОпераций_Отбор] AS /* формула (КолвоСтрокВОтборе/5000+КолвоУпаковокОтобранных/20000)/2*30000*/ SELECT rn_otbor.[_Period], rn_otbor.[_RecorderRRef] AS ссылкаотбор, rn_otbor.[_Fld17380RRef] AS номенклатура, rn_otbor.[_Fld17387] AS отобраноЕдХр, /*COALESCE(_Fld24768,1) AS Числитель, --числитель из упаковки*/ (rn_otbor.[_Fld17387] / COALESCE (_Fld24768,1)) AS КолвоУпаковок, /*количество отобранного в упаковках*/ ((COUNT(*) OVER (PARTITION BY rn_otbor.[_RecorderRRef]) / 5000.0 + (rn_otbor.[_Fld17387] / COALESCE (_Fld24768,1)) / 20000.0) / 2 * 30000) AS СтоимостьСборки /*формула от склада в начале*/ FROM [MAG_2019].[dbo].[_AccumRg17378] AS rn_otbor /*Рн ТоварыКОтбору*/ LEFT JOIN (SELECT _OwnerID_RRRef, _Fld24768 FROM (SELECT _OwnerID_RRRef, _Fld24768, ROW_NUMBER() OVER (PARTITION BY _OwnerID_RRRef ORDER BY _ParentIDRRef DESC) AS rn FROM [MAG_2019].[dbo].[_Reference347X1] /*справочник упаковки единицы измерения*/ WHERE _Marked = 0x00/*не помечена на удаление*/) AS ranked WHERE rn = 1) AS upak ON upak._OwnerID_RRRef = rn_otbor._Fld17380RRef WHERE rn_otbor.[_RecordKind] = 0 /*толькоприходы*/ AND rn_otbor.[_RecorderTRef] = 0x000001C5 /*регистратор отбор*/ AND rn_otbor.[_Fld17387] > 0 GO /****** Object: View [dbo].[СтоимостьОпераций_Фасовка] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Скрипт для команды SelectTopNRows из среды SSMS ******/ CREATE VIEW [dbo].[СтоимостьОпераций_Фасовка] AS SELECT TOP (100) PERCENT _Period, _RecorderRRef AS ссылказаказнасборку, _Fld33653RRef AS номенклатура, _Fld33656 AS колворабот, _Fld33658 AS сумма, _Fld33658 / 2 AS стоимостьработыфасовщика FROM MAG_2019.dbo._AccumRg33652 WHERE (_RecorderTRef = 0x00000197) ORDER BY _Period DESC GO /****** Object: View [ostatki].[OstatkiMarketSklad] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [ostatki].[OstatkiMarketSklad] AS WITH tabMain AS (SELECT _Fld28683RRef, _Fld28684RRef, MAX(_Fld33596) AS MaxDate FROM MAG_2019.dbo._InfoRg28682X1 WITH (NOLOCK) WHERE (_Fld33601 = 'Остатки') GROUP BY _Fld28683RRef, _Fld28684RRef), FilteredRekv AS (SELECT DISTINCT _Reference188_IDRRef FROM MAG_2019.dbo._Reference188_VT21135X1 WITH (NOLOCK) WHERE (_Fld21137RRef IN (0xAEC2B496910DCFD611EBE86B75A98522, 0xAEC3B496910DCFD611EC1BAAEA86F8FE)) AND (_Fld21138_L = 0x01)) SELECT nom._Code AS CodeUT, uzel._Description AS Uzel, ost._Fld33599 AS ID, SUM(ost._Fld33602) AS KolvoMarket, MAX(ISNULL(free.[в наличии], 0) - ISNULL(free.[В Резерве Со Склада], 0) - ISNULL(free.[В Резерве Под Заказ], 0)) AS KolvoSklad FROM tabMain AS tm INNER JOIN MAG_2019.dbo._InfoRg28682X1 AS ost WITH (NOLOCK) ON ost._Fld28683RRef = tm._Fld28683RRef AND ost._Fld28684RRef = tm._Fld28684RRef AND ost._Fld33596 = tm.MaxDate INNER JOIN MAG_2019.dbo._Reference188X1 AS nom WITH (NOLOCK) ON nom._IDRRef = tm._Fld28683RRef INNER JOIN FilteredRekv AS rekv ON rekv._Reference188_IDRRef = nom._IDRRef LEFT OUTER JOIN mag_reports.sklad.Свободные_остатки_срез AS free WITH (NOLOCK) ON free.[1c_id] = tm._Fld28683RRef AND free.[Категория склада] = 'Хранение' INNER JOIN MAG_2019.dbo._Node28072X1 AS uzel WITH (NOLOCK) ON uzel._IDRRef = tm._Fld28684RRef GROUP BY nom._Code, uzel._Description, ost._Fld33599 GO /****** Object: View [ostatki].[МаркировкаОчередьВРАботе] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /**Беру документ АТС маркировка, отбираю доки по статусам подготовлено и в работе, группирую по номенклатуре и складу, суммирую количество, рассовываю количество по статусам (двум колонкам остатков) **/ CREATE VIEW [ostatki].[МаркировкаОчередьВРАботе] as SELECT DocMarked.[_Fld27691RRef] AS Склад, TabMarked.[_Fld27699RRef] AS Номенклатура, -- колонка для доков в статусе подготовлено SUM(CASE WHEN DocMarked.[_Fld27692RRef] = 0x927BBCDBD4443FE64E798FCC81E07916 THEN TabMarked.[_Fld27703] ELSE 0 END) AS [К выполнению], -- колонка для доков в статусе в работе SUM(CASE WHEN DocMarked.[_Fld27692RRef] = 0xBB36C8856B7EF9644E3B3F5C0BAE134A THEN TabMarked.[_Fld27703] ELSE 0 END) AS [В работе] FROM [MAG_2019].[dbo].[_Document27688] AS DocMarked -- Документ АТС Маркировка LEFT JOIN [MAG_2019].[dbo].[_Document27688_VT27697] AS TabMarked -- Товары документа АТС Маркировка ON DocMarked._IDRRef = TabMarked._Document27688_IDRRef WHERE DocMarked.[_Posted] = 0x01 -- проведен да AND (DocMarked._Fld27692RRef = 0x927BBCDBD4443FE64E798FCC81E07916 OR DocMarked._Fld27692RRef = 0xBB36C8856B7EF9644E3B3F5C0BAE134A ) GROUP BY DocMarked.[_Fld27691RRef], TabMarked.[_Fld27699RRef]; GO /****** Object: View [ostatki].[НаСогласовании] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Скрипт для команды SelectTopNRows из среды SSMS ******/ CREATE VIEW [ostatki].[НаСогласовании] as SELECT doc.[_IDRRef] ,DATEADD(YEAR,-2000,doc.[_Date_Time]) AS Дата ,DATEADD(YEAR,-2000,doc.[_Fld3420]) AS ЖелаемаяДатаПоступления ,doc.[_Number] AS НомерЗП ,doc.[_Fld3409RRef] AS Партнер ,doc.[_Fld3417RRef] AS Статус ,doc.[_Fld3431RRef] AS ХозОперация ,nomenk AS Номенклатура ,zakazano AS КЗаказу FROM [mag_2019].[dbo].[_Document408X1] AS doc --документ ЗаказПоставщику LEFT JOIN (SELECT --РН ЗаказыПоставщикам. Делаю группировку по номенклатуре и регистратору, чтобы просуммировать колонку с количеством (отмененные позиции делают доп движение с минусом) _Fld16331RRef AS nomenk ,SUM(_Fld16335) AS zakazano ,_RecorderRRef AS link FROM [mag_2019].[dbo].[_AccumRg16329] GROUP BY _Fld16331RRef,_RecorderRRef ) AS zakaz ON doc.[_IDRRef] = zakaz.link LEFT JOIN [mag_2019].[dbo].[_AccumRg16344] AS zakupka --РН Закупка. Присоединено для проверки,что у заказа нет пту, далее фильтрация по регистратору из закупки по NULL ON zakupka._Fld16357_RRRef = doc.[_IDRRef] WHERE doc.[_Posted] = 0x01 --проведен AND ([_Fld3417RRef] = 0xB38AD6232E2D17D44287D9924E5E6DF2 OR [_Fld3417RRef] = 0xB9440E49408A17534955319EBF0DAE60 OR [_Fld3417RRef] = 0x973A5675AC6A17F64DA37EC6C22FC12C) --отборы по статусу ЗП, расшифровка ниже --0xB38AD6232E2D17D44287D9924E5E6DF2 - на согласовании --0xB9440E49408A17534955319EBF0DAE60 - согласован --0x973A5675AC6A17F64DA37EC6C22FC12C - подтвержден AND zakupka._RecorderRRef IS NULL --Считаю, что все, что в статусах "на согласовании", "согласован", "подтвержден" находится на согласовании, т.к. если согласовано, то либо впути, либо в производстве. Так же сделана доп.проверка, что на заказ нет ПТУ (Через РН Закупки) --через РН закупки (получаю оформленные пту) по ссылке на заказ через соединение отсекаю лишнее, --из закупок беру остаток, потом через аналитику тяну сслку на номенклатуру, проверяю в РН Товыра к поступлению по полям принимается и к оформлению распоряжений нулевые значения GO /****** Object: View [ostatki].[ОчередьНаСборкуРазборку] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [ostatki].[ОчередьНаСборкуРазборку] as /****** СборкиРазборки в очереди.Беру график поступления товаров, соединяю с товарами к поступлению и выбираю null записи ( в товары к поступлению есть движение только при статусе документа "К выполению", так же при установке этого статуса создаются документы для сборки.******/ SELECT график.[_Fld15654RRef] AS Номенклатура ,график.[_Fld15656RRef] AS Склад ,SUM(график.[_Fld15659]) AS Количество --Количество из заказов FROM [MAG_2019].[dbo].[_AccumRg15653] AS график --РН ГрафикПоступленияТоваров LEFT JOIN [MAG_2019].[dbo].[_AccumRg17465] AS кпоступлению -- РН ТоварыКПоступлению ON график.[_RecorderRRef] = кпоступлению._Fld17466_RRRef WHERE график.[_RecorderTRef] = 0x00000197 -- тип регистратора ЗаказНаСборкуРазборку AND кпоступлению._Fld17466_RRRef IS NULL GROUP BY график.[_Fld15654RRef],график.[_Fld15656RRef] GO /****** Object: View [ostatki].[СборкиРазборкиВРаботе] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Заказ на сборку разборку делает движение в РН Товары к поступлению в колонку КОформлениюНакладныхПоРаспоряжению, после оформления закрывающего документа СБОРКА товаров появляется минусовое движение в ту же колонку******/ CREATE VIEW [ostatki].[СборкиРазборкиВРаботе] as SELECT [_Fld17467RRef] AS Номенклатура ,[_Fld17470RRef] AS Склад ,SUM(CASE WHEN [_RecordKind] = 1 THEN -[_Fld17474] ELSE [_Fld17474] END) AS КОформлениюНакладныхПоРаспоряжению FROM [MAG_2019].[dbo].[_AccumRg17465] --РН ТоварыКПоступлению WHERE [_Fld17466_RTRef] = 0x00000197 -- где документ поступления(распоржения) = заказ на сборку разборку GROUP BY [_Fld17467RRef],[_Fld17470RRef] HAVING SUM(CASE WHEN [_RecordKind] = 1 THEN -[_Fld17474] ELSE [_Fld17474] END) != 0 GO /****** Object: View [ostatki].[СобираетсяИКСборке] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [ostatki].[СобираетсяИКСборке] as SELECT [_Fld17394RRef] AS Номенклатура ,[_Fld17391RRef] AS Склад, SUM(CASE WHEN [_RecordKind] = 1 THEN -[_Fld17402] --считаю итоги по колонке собирается ELSE [_Fld17402] END) AS ВOчереди, SUM(CASE WHEN [_RecordKind] = 1 THEN -[_Fld17403] --считаю итоги по колонке собрано ELSE [_Fld17403] END) AS Собирается FROM [MAG_2019].[dbo].[_AccumRg17390] --РН ТоварыКОтгрузке GROUP BY [_Fld17391RRef],[_Fld17394RRef] -- Группировка по складу и номенклатуре HAVING --фильтрую нулевые SUM(CASE WHEN [_RecordKind] = 1 THEN -[_Fld17402] ELSE [_Fld17402] END) != 0 OR SUM(CASE WHEN [_RecordKind] = 1 THEN -[_Fld17403] ELSE [_Fld17403] END) != 0 GO /****** Object: View [ostatki].[СобраноНеОплачено] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /**Беру регистр товары к отгрузке, группирую по полям, считаю итог по колонке к отгрузке (РСО в статусе отгрузке) товар упакован Тоже самое делаю с расчетами клиентов, подсчитываю итог к оплате и внутренним соединением отбираю записи по которым итог оплаты <> 0**/ CREATE VIEW [ostatki].[СобраноНеОплачено] as /**Беру регистр товары к отгрузке, группирую по полям, считаю итог по колонке к отгрузке (РСО в статусе отгрузке) товар упакован Тоже самое делаю с расчетами клиентов, подсчитываю итог к оплате и внутренним соединением отбираю записи по которым итог оплаты <> 0**/ SELECT [_Fld17391RRef] AS Склад ,[_Fld17393_RRRef] AS ДокументОтгрузки ,[_Fld17394RRef] AS Номенклатура ,SUM(CASE WHEN [_RecordKind] = 1 THEN -[_Fld17399] -- считаю итоги ELSE [_Fld17399] END) AS КОтгрузке FROM [MAG_2019].[dbo].[_AccumRg17390] AS otgruzka --РН ТоварыКОтгрузке JOIN ( SELECT _Fld17136_RRRef AS ЗаказКлиента, SUM(CASE WHEN [_RecordKind] = 1 THEN -_Fld17139 --К оплате ELSE _Fld17139 END ) AS Оплачивается FROM [MAG_2019].[dbo]._AccumRg17134 --РН РасчетыСКлиентами GROUP BY _Fld17136_RRRef ) AS oplata ON oplata.ЗаказКлиента = otgruzka.[_Fld17393_RRRef] WHERE [_Fld17392_RTRef] = 0x000000D7 --отбор по типу ЗаказКлиента --AND -- [_Fld17393_RRRef] = 0x89910B421F3F9FD34C8BBD4F8B7C855A GROUP BY [_Fld17391RRef], [_Fld17394RRef], [_Fld17393_RRRef] --группировка по складу, документу отгрузки и номенклатуре HAVING SUM(CASE WHEN [_RecordKind] = 1 THEN -[_Fld17399] --выбираю записи где к отгрузке больше нуля ELSE [_Fld17399] END) > 0 AND SUM(oplata.Оплачивается) <> 0 -- фильтруем по к оплате клиента GO /****** Object: View [ostatki].[ТоварыВПеремещении] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Заказ на перемещение делает движение в РН Товары к поступлению в колонку КОформлениюНакладныхПоРаспоряжению, после оформления закрывающего документа ПЕРЕМЕЩЕНЕ товаров появляется минусовое движение в ту же колонку******/ CREATE VIEW [ostatki].[ТоварыВПеремещении] as SELECT [_Fld17467RRef] AS Номенклатура ,[_Fld17470RRef] AS Склад ,SUM(CASE WHEN [_RecordKind] = 1 THEN -[_Fld17474] ELSE [_Fld17474] END) AS КОформлениюНакладныхПоРаспоряжению FROM mag_2019.[dbo].[_AccumRg17465] --РН ТоварыКПоступлению WHERE [_Fld17466_RTRef] = 0x00000196 -- где документ поступления(распоржения) = заказ на перемещение GROUP BY [_Fld17467RRef],[_Fld17470RRef] HAVING SUM(CASE WHEN [_RecordKind] = 1 THEN -[_Fld17474] ELSE [_Fld17474] END) != 0 GO /****** Object: View [pbi].[groups_view] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [pbi].[groups_view] as WITH DirectReports(_Description, g, g1, g2, g3, [_IDRRef], [_ParentIDRRef], lvl, [path], [code]/*Name, Title, EmployeeID, EmployeeLevel, Sort*/) AS (SELECT CONVERT(varchar(255), e.[_Description]), CONVERT(varchar(255),e.[_Description]), CONVERT(varchar(255),''), --g1 CONVERT(varchar(255),''), --g2 CONVERT(varchar(255),''), --g3 e._IDRRef, e._ParentIDRRef, 1, CONVERT(varchar(255), e.[_Description]), e._Code FROM [mag_2019].[dbo]._Reference188X1 AS e WHERE e._ParentIDRRef = 0x00000000000000000000000000000000 AND _Description <> '' /*AND _Marked = 0 */AND _Folder = 0x00 UNION ALL SELECT CONVERT(varchar(255), /* REPLICATE ('| ' , lvl) + */ e._Description), CONVERT(varchar(255),d.g), /*g1*/ CASE lvl + 1 WHEN 2 THEN CONVERT(varchar(255),e._Description) ELSE CONVERT(varchar(255),d.g1) END, /*g2*/ CASE lvl + 1 WHEN 3 THEN CONVERT(varchar(255),e._Description) ELSE CONVERT(varchar(255),d.g2) END, /*g3*/ CASE lvl + 1 WHEN 4 THEN CONVERT(varchar(255),e._Description) ELSE CONVERT(varchar(255),d.g3) END, e._IDRRef, e._ParentIDRRef, lvl + 1, CONVERT (varchar(255), RTRIM(path) + ' | ' + e._Description), e._Code FROM [mag_2019].[dbo]._Reference188X1 AS e INNER JOIN DirectReports AS d ON e._ParentIDRRef = d._IDRRef WHERE e._Description <> '' /*AND _Marked = 0 */ AND _Folder = 0x00 ) SELECT _Description, g, g1, g2, g3 , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),5,12) )) as group_id , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),5,12) )) as '_ParentIDRRef' --, convert(uniqueidentifier, [_IDRRef]) as group_id --, convert(uniqueidentifier, [_ParentIDRRef]) as [_ParentIDRRef] , lvl, [path] , code , n._IDRRef as [1c_id] FROM DirectReports n --ORDER BY Sort GO /****** Object: View [pbi].[node_mp] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbi].[node_mp] AS SELECT v._Description as [Узел], o._Description as [Организация], CASE WHEN v._Description LIKE '%Ozon%' THEN 'a93dedda-0616-11e6-80de-305a3a00e12b' WHEN v._Description LIKE '%WildBerries%' THEN '51fd191e-bf7d-11e5-80c9-305a3a00e12b' END AS [partner_id] FROM [MAG_2019].[dbo].[_Node28072X1] v /* Внешние системы */ LEFT JOIN [MAG_2019].[dbo].[_Reference198X1] o /* Справочник.Организации */ ON v._Fld28430RRef = o._IDRRef WHERE v._Description LIKE '%Ozon%' OR v._Description LIKE '%WildBerries%' GO /****** Object: View [pbi].[users_1C] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE view [pbi].[users_1C] AS /* н( добавляем подразделение select _IDRRef as [1c_id] ,LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), _IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),5,12) ))as [user_id] , _Description as [user] from [MAG_2019].[dbo].[_Reference228X1] us7 /* Пользователи */ */ select us7._IDRRef as [1c_id] ,LOWER ( CONCAT ( SUBSTRING(convert(nvarchar(36), us7._IDRRef, 2),25,8), '-', SUBSTRING(convert(nvarchar(36), us7._IDRRef, 2),21,4), '-', SUBSTRING(convert(nvarchar(36), us7._IDRRef, 2),17,4), '-', SUBSTRING(convert(nvarchar(36), us7._IDRRef, 2),1,4), '-', SUBSTRING(convert(nvarchar(36), us7._IDRRef, 2),5,12) ) )as [user_id] , us7._Description as [user] , podr._Description as [podr] , (SELECT par._Description FROM [MAG_2019].[dbo].[_Reference319] par WHERE podr._ParentIDRRef = par._IDRRef) as [higher_podr] from [MAG_2019].[dbo].[_Reference228X1] us7 /* Пользователи */ left join [MAG_2019].[dbo].[_Reference319] podr on us7._Fld22183RRef = podr._IDRRef /* н) */ GO /****** Object: View [pbi].[Внешние продажи] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbi].[Внешние продажи] AS SELECT nod._Description AS [Узел] , [_Fld33610] AS [Вид загрузки] , [_Fld33611] AS [Склад] , DATEADD(YEAR, -2000, [_Fld33612]) AS [Дата] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [_Fld33613RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33613RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33613RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33613RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36),[_Fld33613RRef], 2),5,12) )) as [artic_id] --, n._Code AS [Код УТ] , [_Fld33614] AS [id_внешний] , [_Fld33624] AS [Область] , [_Fld33627] AS [Страна] , [_Fld33628] AS [Регион] , [_Fld33615] AS [Количество] , [_Fld33616]/1000 AS [Сумма] FROM [MAG_2019].[dbo].[_InfoRg33608X1] outd /* РегистрСведений.ДанныеИзВнешнихСистем */ --LEFT JOIN [MAG_2019].[dbo].[_Reference188X1] n ON n._IDRRef = outd._Fld33613RRef /* Справочник.Номенклатура */ LEFT JOIN [MAG_2019].[dbo].[_Node28072X1] nod ON nod._IDRRef = outd._Fld33609RRef /* ПланОбмена.ВнешниеСистемы */ GO /****** Object: View [pbi].[Внешний оборот] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [pbi].[Внешний оборот] as SELECT DATEADD(YEAR, -2000, [_Period]) as [Дата] ,LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [_Fld33760RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33760RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33760RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33760RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33760RRef], 2),5,12) )) as [artic_id] ,(SELECT _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = omp._Fld33761RRef ) as [Организация] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [_Fld33762RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33762RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33762RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33762RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld33762RRef], 2),5,12) )) as [partner_id] ,[_Fld33763] / 1000 as [Сумма оборот МП, руб] /*,[_Fld33764] as 'id_oborot'*/ FROM [MAG_2019].[dbo].[_InfoRg33759] omp /*РегистрСведений.ОборотМП*/ GO /****** Object: View [pbi].[Заявки_на_оплату] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbi].[Заявки_на_оплату] AS SELECT DATEADD(year, -2000, [_Date_Time]) as [date] ,[_Number] as 'Номер заявки' , CASE WHEN [_Fld3880RRef]= 0x96388D3803D0E2B243682753FD602008 THEN 'Согласована' WHEN [_Fld3880RRef] = 0xA53B783FB8E84C2D4A977FB197BB9B6A THEN 'Не согласована' WHEN [_Fld3880RRef] = 0xB22A4A3C82F7B70D452E0F89A2703597 THEN 'К оплате' WHEN [_Fld3880RRef] = 0x9EB3FD405C68C64C42B491437EDE1CAB THEN 'Отклонена' END as 'Статус' ,[_Fld3882]/1000 as 'Сумма' , (SELECT _Description FROM [MAG_2019].[dbo].[_Reference50] spv /*Справочник.Валюты */ WHERE spv._IDRRef = r.[_Fld3883RRef]) as 'Валюта документа' --,DATEADD(year, -2000, [_Fld3890]) as 'Дата оплаты желат' , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2),5,12) ))as partner_id , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = dr._Fld3957RRef) as 'Партнер' , (SELECT _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = r._Fld3891RRef)as 'Получатель' ,[_Fld3900] as 'Комментарий' ,DATEADD(year, -2000, [_Fld3902]) as 'Дата оплаты план' , (SELECT _Description FROM [MAG_2019].[dbo].[_Reference316] dds /*Справочник.СтатьиДвиженияДенежныхСредств*/ WHERE dds._IDRRef = r._Fld3904RRef) as 'Статья ДДС' FROM [MAG_2019].[dbo].[_Document416] r LEFT JOIN [MAG_2019].[dbo].[_Document416_VT3955] dr /*ЗаявкаНаРасходованиеДенежныхСредств доп.реквизиты*/ ON r._IDRRef = dr._Document416_IDRRef WHERE [_Fld3881RRef]=0xB96DB293C2F88D8C46DF79811923F574 AND [_Posted] = 0x01 GO /****** Object: View [pbi].[значения доп реквизитов номенклатуры] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [pbi].[значения доп реквизитов номенклатуры]as SELECT rf._Reference188_IDRRef , _Fld21137RRef , [_Fld21138_TYPE] , [_Fld21138_RTRef] , case [_Fld21138_TYPE] WHEN 0x02 THEN CAST(CAST([_Fld21138_L] as int) as nvarchar) WHEN 0x03 THEN CAST([_Fld21138_N] as nvarchar) WHEN 0x04 THEN CAST([_Fld21138_T] as nvarchar) WHEN 0x05 THEN [_Fld21138_S] WHEN 0x08 THEN CASE [_Fld21138_RTRef] WHEN 0x00000085 THEN zn._Description WHEN 0x0000012A THEN sk._Description WHEN 0x000000E4 THEN us._Description WHEN 0x000000BC THEN n._Description WHEN 0x000000C6 THEN org._Description END END as 'value' FROM [MAG_2019].[dbo].[_Reference188_VT21135X1] rf LEFT JOIN [MAG_2019].[dbo].[_Reference133X1] zn ON zn._IDRRef = rf._Fld21138_RRRef/*Значения свойств объектов*/ LEFT JOIN [MAG_2019].[dbo].[_Reference298X1] sk ON sk._IDRRef = rf._Fld21138_RRRef/*склады*/ LEFT JOIN [MAG_2019].[dbo].[_Reference228X1] us ON us._IDRRef = rf._Fld21138_RRRef/*пользователи*/ LEFT JOIN [MAG_2019].[dbo]._Reference188X1 n ON n._IDRRef = rf._Fld21138_RRRef/*номенклатура*/ LEFT JOIN [MAG_2019].[dbo].[_Reference198X1] org ON org._IDRRef = rf._Fld21138_RRRef /*организации*/ GO /****** Object: View [pbi].[ЛогЗаказов] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [pbi].[ЛогЗаказов] as SELECT [_Period] ,[_Fld27034RRef] as zakazNum , case [_Fld27036RRef] WHEN 0xA0246AE133C0E27F4B98056779E0C46F then 'Создан' WHEN 5 then 'ОбрабатываетсяМенеджером' WHEN 5 then 'СобираетсяНаСкладе' WHEN 5 then 'СобранНаСкладе' WHEN 0xBD0BB146294D59F849B1A47CC0FADAA8 then 'Отгружен' WHEN 0xBB03030B7C212B9943817BEBAECB25F6 then 'Закрыт' WHEN 0x85CE81BA5F726FFB4F95EB78CFC3BB16 then 'КОбеспечению' WHEN 0x9E7046572889AD6A44C2D0C5B6482CEA then 'КПроверке' WHEN 0x8D47C8F6E3E225324C30970997C3A72E then 'КОтгрузке' WHEN 0xBDDE20C3E855004349685F0313E5D26C then 'Оплачен' else 'СтатусНеопределен' end as 'status' FROM [MAG_2019].[dbo].[_InfoRg27033X1] GROUP BY [_Fld27034RRef],_Period, [_Fld27036RRef] GO /****** Object: View [pbi].[ПартнерыСегменты] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create view [pbi].[ПартнерыСегменты] as select RS._Fld13943RRef as [1c_parnter_id], LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), _Fld13943RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), _Fld13943RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), _Fld13943RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), _Fld13943RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), _Fld13943RRef, 2),5,12) ))as partner_id, Sg._Description as [Сегмент] from MAG_2019.dbo._InfoRg13941 as RS /*РС Партнеры Сегмента*/ left join MAG_2019.dbo._Reference286 as Sg /*Справочник Сегменты клиентов*/ on RS._Fld13942RRef = Sg._IDRRef GO /****** Object: View [pbi].[ПланПродажМенеджеров] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Скрипт для команды SelectTopNRows из среды SSMS ******/ CREATE view [pbi].[ПланПродажМенеджеров] as SELECT dateadd(year, -2000, [_Fld27878]) as [_Fld27878] ,[_Fld27879RRef] as [1c_id] ,LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [_Fld27879RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [_Fld27879RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld27879RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld27879RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld27879RRef], 2),5,12) ))as [user_id] ,[_Fld27880] as [план продаж] , us._Description as [Менеджер] FROM [MAG_2019].[dbo].[_InfoRg27877] i -- регистр сведений план продаж менеджеров LEFT JOIN [MAG_2019].[dbo].[_Reference228X1] us /* пользователи */ on us._IDRRef =i._Fld27879RRef GO /****** Object: View [pbi].[ПланыПродажПоГруппам] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [pbi].[ПланыПродажПоГруппам] as SELECT DATEADD(year, -2000, _Fld27907) as [Месяц], --(SELECT _description FROM MAG_2019.dbo._Reference188X1 n WHERE n._IDRRef = _Fld27908RRef) as [Группа], --_Fld27908RRef as [Группа], LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), _Fld27908RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), _Fld27908RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), _Fld27908RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), _Fld27908RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), _Fld27908RRef, 2),5,12) ))as [group_id], _Fld27909 as [План продаж], -- _Fld28446 as [План маржи] (select us7._Description FROM [MAG_2019].[dbo].[_Reference228X1] us7 WHERE us7.[_IDRRef] = rg._Fld33700RRef) as [Товарный менеджер], (select us7._Description FROM [MAG_2019].[dbo].[_Reference228X1] us7 WHERE us7.[_IDRRef] = rg._Fld33714RRef) as [Менеджер по закупкам] FROM mag_2019.dbo._InfoRg27906 rg --РегистрСведений.ПланыПродажПоГруппам WHERE DATEADD(year, -2000, _Fld27907) >= '2023' GO /****** Object: View [pbi].[Сборки] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE VIEW [pbi].[Сборки] as SELECT DATEADD(year, -2000, z.[_Date_Time]) as [Дата документа] ,z.[_Number] as [Номер документа] , k._Fld28069RRef as [Вариант комплектации] , k._Fld28059RRef as [ИД номенклатура комплекта] , (SELECT _description FROM MAG_2019.dbo._Reference188X1 n where n._IDRRef = k._Fld28059RRef )-- номенклатура комплекта as [номенклатура комплекта] , k._Fld28062 * isnull( (SELECT _Fld24768 FROM [MAG_2019].dbo._Reference347X1 u WHERE u._IDRRef = k._Fld28061RRef), 1) as [кол-во комплекта] , t._Fld3381RRef as [ИД номенклатура комплектации] , (SELECT _description FROM MAG_2019.dbo._Reference188X1 n where n._IDRRef = t._Fld3381RRef )-- номенклатура комплектации as [номенклатура комплектации] , t._Fld3386 * isnull( (SELECT _Fld24768 FROM [MAG_2019].dbo._Reference347X1 u WHERE u._IDRRef = t._Fld3384RRef), 1) as [количество комплектации] , ( SELECT sum(r._Fld27811) FROM [MAG_2019].[dbo].[_Document407_VT27806] r-- работы WHERE r._Document407_IDRRef = z._IDRRef AND r._Fld28056 = k._Fld28070--код строки ) as [работы] --, t._Fld3386 -- упаковок комплектации FROM [MAG_2019].[dbo].[_Document407] z-- Заказ на сборку INNER JOIN [MAG_2019].[dbo].[_Document407_VT28057] k -- Комплекты ON z._IDRRef = k._Document407_IDRRef INNER JOIN [MAG_2019].[dbo].[_Document407_VT3379] t -- товары -- комплектующик ON t._Document407_IDRRef = z._IDRRef AND t._Fld28055 = k._Fld28070--код строки WHERE z._Posted = 1 and z.[_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус закрыт and t._Fld3392 = 0 --не отменено and k._Fld28152 = 0 --не отменено --and z.[_number] = 'АНУТ-000753' and _Date_Time = '4023-03-20 07:01:24' /* ,[_Fld3348RRef] ,[_Fld3349RRef] ,[_Fld3350RRef] ,[_Fld3351RRef] ,[_Fld3353RRef] ,[_Fld3354RRef] ,[_Fld3355RRef] ,[_Fld3356] ,[_Fld3357] ,[_Fld3358] ,[_Fld3359] ,[_Fld3360] ,[_Fld3361] ,[_Fld3362] ,[_Fld3363] ,[_Fld3364RRef] ,[_Fld3365RRef] ,[_Fld3366RRef] ,[_Fld3367] ,[_Fld3368RRef] ,[_Fld3369RRef] ,[_Fld3370RRef] ,[_Fld3371RRef] ,[_Fld3372] ,[_Fld3373] ,[_Fld3374RRef] ,[_Fld3375RRef] ,[_Fld3376RRef] ,[_Fld3377] ,[_Fld3378RRef] ,[_Fld27875RRef] ,[_Fld27876RRef] ,[_Fld28054RRef] ,[_Fld28230RRef] ,[_Fld28241] ,[_Fld28242] ,[_Fld28681] ,[_Fld1150]*/ GO /****** Object: View [pbi].[сборки_комплектующие] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE view [pbi].[сборки_комплектующие]as SELECT DATEADD(year, -2000, z._Date_Time) as [Период] , z._Number as [Номер документа] , n._IDRRef as [1c_id] , n._Description as [Номенклатура] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36),n._IDRRef, 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),21,4),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),17,4),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),1,4),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),5,12))) as [artic_id] , -1 * t._Fld3386 * isnull( (SELECT _Fld24768 FROM [MAG_2019].dbo._Reference347X1 u WHERE u._IDRRef = t._Fld3384RRef), 1) as [Количество] , CASE WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' ELSE 'Неопределено' END as [Ценовая группа] , t._Fld28055 as [код строки] FROM [MAG_2019].[dbo].[_Document407] z-- Заказ на сборку INNER JOIN [MAG_2019].[dbo].[_Document407_VT3379] t -- товары -- комплектующик ON t._Document407_IDRRef = z._IDRRef-- AND t._Fld28055 = k._Fld28070--код строки INNER JOIN MAG_2019.dbo._Reference188X1 n ON n._IDRRef = t._Fld3381RRef WHERE z._Posted = 1 and z.[_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус закрыт and t._Fld3392 = 0 --не отменено --and t._Fld28055 > 0 -- номер строки комплекта and z._Fld3375RRef = 0x8374C64FF49E4478480E940AF675A52B -- сборка; разборка - 0xACE76F03B97D94454E799ED5AD2322CE GO /****** Object: View [pbi].[Сборки_комплекты] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE VIEW [pbi].[Сборки_комплекты] as SELECT DATEADD(year, -2000, z.[_Date_Time]) as [Период] ,z.[_Number] as [Номер документа] , k._Fld28069RRef as [Вариант комплектации] , k._Fld28059RRef as [1c_id] , n._Description-- номенклатура комплекта as [номенклатура] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36),n._IDRRef, 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),21,4),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),17,4),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),1,4),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),5,12))) as [artic_id] , k._Fld28062 * isnull( (SELECT _Fld24768 FROM [MAG_2019].dbo._Reference347X1 u WHERE u._IDRRef = k._Fld28061RRef), 1) as [количество] , CASE WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' ELSE 'Неопределено' END as [Ценовая группа] , k._Fld28070 as [код строки] FROM [MAG_2019].[dbo].[_Document407] z-- Заказ на сборку INNER JOIN [MAG_2019].[dbo].[_Document407_VT28057] k -- Комплекты ON z._IDRRef = k._Document407_IDRRef INNER JOIN MAG_2019.dbo._Reference188X1 n ON n._IDRRef = k._Fld28059RRef WHERE z._Posted = 1 and z.[_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус закрыт and k._Fld28152 = 0 --не отменено and z._Fld3375RRef = 0x8374C64FF49E4478480E940AF675A52B --and z.[_number] = 'АНУТ-000753' and _Date_Time = '4023-03-20 07:01:24' /* ,[_Fld3348RRef] ,[_Fld3349RRef] ,[_Fld3350RRef] ,[_Fld3351RRef] ,[_Fld3353RRef] ,[_Fld3354RRef] ,[_Fld3355RRef] ,[_Fld3356] ,[_Fld3357] ,[_Fld3358] ,[_Fld3359] ,[_Fld3360] ,[_Fld3361] ,[_Fld3362] ,[_Fld3363] ,[_Fld3364RRef] ,[_Fld3365RRef] ,[_Fld3366RRef] ,[_Fld3367] ,[_Fld3368RRef] ,[_Fld3369RRef] ,[_Fld3370RRef] ,[_Fld3371RRef] ,[_Fld3372] ,[_Fld3373] ,[_Fld3374RRef] ,[_Fld3375RRef] ,[_Fld3376RRef] ,[_Fld3377] ,[_Fld3378RRef] ,[_Fld27875RRef] ,[_Fld27876RRef] ,[_Fld28054RRef] ,[_Fld28230RRef] ,[_Fld28241] ,[_Fld28242] ,[_Fld28681] ,[_Fld1150]*/ GO /****** Object: View [pbi].[СегментыНоменклатуры] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE view [pbi].[СегментыНоменклатуры] as SELECT [_Fld13642RRef] --сегмент , s._Description as [Сегмент] , [_Fld13643RRef] as [1c_id]--номенклатура , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [_Fld13643RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [_Fld13643RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld13643RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld13643RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld13643RRef], 2),5,12) ))as artic_id FROM [MAG_2019].[dbo].[_InfoRg13641] rg -- регистр сведений Номенклатура сегмента INNER JOIN [MAG_2019].[dbo].[_Reference285X1] s --справочник сегменты ON s._IDRRef = rg._Fld13642RRef GO /****** Object: View [pbi].[Сохраненные настройки 1С для PowerBI] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE VIEW [pbi].[Сохраненные настройки 1С для PowerBI] as SELECT [_Fld27871] as [Параметр] , CASE [_Fld27872_TYPE] WHEN 5 THEN [_Fld27872_S] WHEN 3 THEN cast ([_Fld27872_N] as varchar) END as [Значение] FROM [MAG_2019].[dbo].[_InfoRg27869] WHERE [_Fld27870] LIKE '%PowerBI%' GO /****** Object: Table [analytics].[deficit_money_request] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[deficit_money_request]( [id] [int] IDENTITY(1,1) NOT NULL, [scenario_id] [int] NOT NULL, [g] [nvarchar](255) NULL, [manufacturer] [nvarchar](255) NULL, [place_month] [date] NOT NULL, [deficit] [decimal](18, 2) NOT NULL, [pay_days] [int] NOT NULL, [percent] [decimal](9, 6) NOT NULL, [created_at] [datetime2](0) NOT NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [analytics].[forecast_history] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[forecast_history]( [id] [int] IDENTITY(1,1) NOT NULL, [forecast_id] [int] NOT NULL, [scenario_id] [int] NOT NULL, [1c_id] [binary](16) NOT NULL, [code] [nvarchar](36) NOT NULL, [month] [date] NOT NULL, [old_value] [decimal](18, 3) NULL, [new_value] [decimal](18, 3) NOT NULL, [changed_at] [datetime2](0) NOT NULL, [changed_by] [nvarchar](128) NOT NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [analytics].[load_log_w_ostatok_da_net] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[load_log_w_ostatok_da_net]( [id] [int] IDENTITY(1,1) NOT NULL, [load_time] [datetime] NOT NULL, [days_back] [int] NOT NULL, [rows_updated] [int] NOT NULL, [duration_sec] [int] NOT NULL, [created_at] [datetime] NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [analytics].[sales_weekly_features] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[sales_weekly_features]( [sku_id] [varbinary](16) NOT NULL, [week_start] [date] NOT NULL, [qty_week] [decimal](18, 4) NOT NULL, [availability_rate] [decimal](6, 4) NOT NULL, [year_num] [int] NOT NULL, [month_num] [tinyint] NOT NULL, [iso_week] [tinyint] NOT NULL, [quarter_num] [tinyint] NOT NULL, [dow_monday1] [tinyint] NOT NULL, [category_l1] [nvarchar](200) NULL, [minAvailableQty] [decimal](18, 4) NULL, [lag_w1] [decimal](18, 4) NULL, [lag_w2] [decimal](18, 4) NULL, [lag_w4] [decimal](18, 4) NULL, [lag_w12] [decimal](18, 4) NULL, [lag_w26] [decimal](18, 4) NULL, [lag_w52] [decimal](18, 4) NULL, [ma4] [decimal](18, 4) NULL, [ma12] [decimal](18, 4) NULL, [created_at] [datetime2](7) NOT NULL, CONSTRAINT [PK_sales_weekly_features] PRIMARY KEY CLUSTERED ( [sku_id] ASC, [week_start] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [analytics].[seasonality_groups_summ_1] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[seasonality_groups_summ_1]( [g] [varchar](255) NULL, [g1] [varchar](255) NULL, [month] [tinyint] NOT NULL, [koef] [numeric](38, 23) NULL ) ON [PRIMARY] GO /****** Object: Table [analytics].[stock_balance] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[stock_balance]( [Дата] [date] NULL, [artic_id] [nvarchar](36) NULL, [1c_id] [binary](16) NULL, [code] [nchar](11) NULL, [Остаток склад шт] [numeric](38, 3) NULL, [Остаток склад упак] [numeric](38, 12) NULL, [Остаток склад руб] [numeric](26, 7) NULL, [Остаток склад м3] [numeric](26, 7) NULL, [Остаток МП, шт] [numeric](26, 7) NULL, [Остаток МП, руб] [numeric](26, 7) NULL, [Остаток склад + МП, шт] [numeric](26, 7) NULL, [Остаток склад + МП, руб] [numeric](26, 7) NULL, [Остаток склад + в пути + произв., упак] [numeric](26, 7) NULL, [Остаток склад + в пути + произв., руб] [numeric](26, 7) NULL, [Остаток склад + МП + в пути + произв., упак] [numeric](26, 7) NULL, [Остаток склад + МП + в пути + произв., руб] [numeric](26, 7) NULL ) ON [PRIMARY] GO /****** Object: Table [analytics].[stock_plan_by_arrival] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[stock_plan_by_arrival]( [scenario_id] [int] NOT NULL, [arrival_month] [date] NOT NULL, [1c_id] [binary](16) NOT NULL, [code] [nvarchar](36) NOT NULL, [opening_qty] [decimal](18, 3) NOT NULL, [inbound_confirmed] [decimal](18, 3) NOT NULL, [inbound_deficit] [decimal](18, 3) NOT NULL, [forecast_demand] [decimal](18, 3) NOT NULL, [closing_qty] [decimal](18, 3) NOT NULL, [updated_at] [datetime2](0) NOT NULL, CONSTRAINT [PK_stock_plan_by_arrival] PRIMARY KEY CLUSTERED ( [scenario_id] ASC, [arrival_month] ASC, [1c_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [analytics].[прогноз из excel] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[прогноз из excel]( [ut_code] [nvarchar](50) NOT NULL, [type] [nvarchar](10) NOT NULL, [forecast_month] [date] NOT NULL, [forecast_value] [float] NULL, [user_name] [nvarchar](255) NULL, [updated_at] [datetime] NULL ) ON [PRIMARY] GO /****** Object: Table [analytics].[срез учетных цен] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [analytics].[срез учетных цен]( [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Учетная цена] [numeric](21, 9) NULL, [Учетная цена USD2+2] [numeric](21, 9) NULL, [Период] [nvarchar](4000) NULL, [количество] [numeric](21, 9) NULL ) ON [PRIMARY] GO /****** Object: Table [dbo].[content_rating] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[content_rating]( [code] [varchar](50) NULL, [ozon] [int] NULL, [wb] [int] NOT NULL, [magok] [int] NULL ) ON [PRIMARY] GO /****** Object: Table [dbo].[grades_quartal] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[grades_quartal]( [name] [nvarchar](50) NULL, [quartal] [nvarchar](50) NULL, [subject] [nvarchar](50) NULL, [grade] [int] NULL ) ON [PRIMARY] GO /****** Object: Table [dbo].[lineage_edges] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[lineage_edges]( [db_name] [nvarchar](128) NULL, [from_schema] [nvarchar](128) NULL, [from_object] [nvarchar](128) NULL, [from_type] [nvarchar](60) NULL, [to_schema] [nvarchar](128) NULL, [to_object] [nvarchar](128) NULL, [to_type] [nvarchar](60) NULL, [edge_source] [varchar](27) NOT NULL ) ON [PRIMARY] GO /****** Object: Table [dbo].[lineage_objects] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[lineage_objects]( [db_name] [nvarchar](128) NULL, [schema_name] [sysname] NOT NULL, [object_name] [sysname] NOT NULL, [object_type] [char](2) NULL, [object_type_desc] [nvarchar](60) NULL, [create_date] [datetime] NOT NULL, [modify_date] [datetime] NOT NULL ) ON [PRIMARY] GO /****** Object: Table [dbo].[order_source] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[order_source]( [order_id] [nvarchar](50) NOT NULL, [source] [nvarchar](50) NULL, [campaign] [nvarchar](max) NULL, [banner_group] [nvarchar](max) NULL, [phrase_or_cond] [nvarchar](max) NULL, [product_quantity] [nvarchar](50) NULL, [product_price] [nvarchar](50) NULL, [product_quantity_json] [nvarchar](max) NULL, [product_price_json] [nvarchar](max) NULL, [campaign_name] [nvarchar](500) NULL, [banner_group_name] [nvarchar](500) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[site_product] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[site_product]( [code] [nvarchar](50) NOT NULL, [name] [nvarchar](255) NOT NULL, [active] [bit] NOT NULL, [quantity] [int] NOT NULL, [price] [decimal](18, 2) NOT NULL, CONSTRAINT [PK_site_product] PRIMARY KEY CLUSTERED ( [code] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[Turnover] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Turnover]( [id] [int] IDENTITY(1,1) NOT NULL, [dt] [datetime] NULL, [ProductID] [int] NULL, [StorehouseID] [int] NULL, [Operation] [int] NOT NULL, [Quantity] [int] NULL ) ON [PRIMARY] GO /****** Object: Table [dbo].[yandex_direct_criteria_stats] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[yandex_direct_criteria_stats]( [id] [int] IDENTITY(1,1) NOT NULL, [date] [date] NOT NULL, [campaign_name] [nvarchar](500) NULL, [campaign_id] [nvarchar](50) NOT NULL, [adgroup_name] [nvarchar](500) NULL, [adgroup_id] [nvarchar](50) NOT NULL, [criterion] [nvarchar](1000) NULL, [criterion_id] [nvarchar](50) NOT NULL, [impressions] [int] NULL, [clicks] [int] NULL, [ctr] [decimal](10, 4) NULL, [cost] [decimal](18, 2) NULL, [avg_cpc] [decimal](18, 2) NULL, [created_at] [datetime] NULL, [updated_at] [datetime] NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY], CONSTRAINT [UQ_adgroup_criterion_date] UNIQUE NONCLUSTERED ( [adgroup_id] ASC, [criterion_id] ASC, [date] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [pbi].[content_rating] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[content_rating]( [code] [varchar](50) NULL, [ozon] [int] NULL, [wb] [int] NULL, [wb_by_ozon] [int] NULL, [magok] [int] NULL ) ON [PRIMARY] GO /****** Object: Table [pbi].[direct_adv_costs] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[direct_adv_costs]( [Дата] [datetime2](0) NULL, [Кампания] [nvarchar](255) NULL, [N кампании] [nvarchar](50) NULL, [Группа] [nvarchar](255) NULL, [N группы] [nvarchar](50) NULL, [Условия показа] [nvarchar](255) NULL, [N условия показа] [nvarchar](50) NULL, [Показы] [int] NULL, [Клики] [int] NULL, [CTR, %] [decimal](18, 2) NULL, [Расход, руб] [decimal](18, 2) NULL, [Ср. цена клика, руб] [decimal](18, 2) NULL ) ON [PRIMARY] GO /****** Object: Table [pbi].[direct_orders] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[direct_orders]( [Кампания] [nvarchar](255) NULL, [Группа] [nvarchar](255) NULL, [Условия показа] [nvarchar](255) NULL, [ID покупки] [nvarchar](50) NULL, [Количество покупок] [int] NULL, [Доход, руб] [decimal](18, 2) NULL ) ON [PRIMARY] GO /****** Object: Table [pbi].[nomenclatureVolumeStorehouse] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[nomenclatureVolumeStorehouse]( [Период] [datetime2](0) NOT NULL, [balance] [numeric](15, 5) NULL, [1c_id] [binary](16) NULL, [storehouse] [binary](16) NULL, [volume] [numeric](15, 5) NULL, [totalVolume] [numeric](15, 5) NULL ) ON [PRIMARY] GO /****** Object: Table [pbi].[ostatki] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[ostatki]( [artic_id] [nvarchar](36) NULL, [1c_id] [binary](16) NOT NULL, [Code] [nchar](11) NOT NULL, [sklad] [nvarchar](50) NOT NULL, [Категория склада] [varchar](15) NOT NULL, [upakovok] [numeric](38, 12) NULL, [quantity] [numeric](26, 3) NULL, [upakovka] [numeric](15, 3) NULL, [date] [datetime2](0) NULL, [Учетная цена по себест] [numeric](38, 15) NULL, [Учетная цена по себест, usd2+2] [numeric](38, 15) NULL, [Учетная цена, старое] [numeric](38, 15) NULL, [upakovok_ship] [numeric](38, 15) NULL, [quantity_ship] [numeric](38, 15) NULL ) ON [PRIMARY] GO /****** Object: Table [pbi].[ostatki_mp] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[ostatki_mp]( [Дата] [date] NOT NULL, [Узел] [nvarchar](100) NOT NULL, [artic_id] [nvarchar](36) NOT NULL, [id_внешний] [nvarchar](36) NULL, [Остаток МП, упак] [decimal](18, 3) NULL, [Доступно МП, упак] [decimal](18, 3) NULL, [Остаток МП, шт] [decimal](18, 3) NULL ) ON [PRIMARY] GO /****** Object: Table [pbi].[Turnover] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[Turnover]( [id] [int] IDENTITY(1,1) NOT NULL, [dt] [datetime] NULL, [ProductID] [int] NULL, [StorehouseID] [int] NULL, [Operation] [int] NOT NULL, [Quantity] [int] NULL, CONSTRAINT [pk_turnover] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [pbi].[Себестоимость2023] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[Себестоимость2023]( [id] [int] IDENTITY(1,1) NOT NULL, [Период] [datetime2](0) NULL, [Статья] [varchar](255) NOT NULL, [Вид операции] [varchar](255) NOT NULL, [Хоз операция] [varchar](255) NOT NULL, [Организация] [varchar](255) NULL, [Партнер] [varchar](255) NULL, [Контрагент] [varchar](255) NULL, [Менеджер] [varchar](255) NULL, [Тип документа] [varchar](255) NULL, [Номер документа] [varchar](255) NULL, [Валюта документа] [varchar](255) NULL, [Ценовая группа] [varchar](255) NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](38, 15) NULL, [СуммаБезНДС] [numeric](38, 15) NULL, [СуммаРучнойСкидки] [numeric](38, 15) NULL, [СуммаАвтоСкидки] [numeric](38, 15) NULL, [Закупка] [numeric](38, 15) NULL, [Закупка, usd2] [numeric](38, 15) NULL, [Курс usd2] [numeric](15, 3) NULL, [Курс usd] [numeric](15, 3) NULL, [Таможня] [numeric](38, 15) NULL, [ЕАЭС] [numeric](38, 15) NULL, [Учетная цена] [numeric](38, 15) NULL, [Учетная цена USD2+2] [numeric](38, 15) NULL, [Заказ закрыт] [datetime] NULL, [Номер заказа] [nchar](11) NULL, [Маркетинг] [numeric](38, 15) NULL, [Доставка] [numeric](38, 15) NULL, [НДС] [numeric](38, 15) NULL, [Сборка] [numeric](38, 15) NULL, [ЗатратыМП] [numeric](38, 15) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](38, 15) NULL, [Учетная стоимость USD2+2] [numeric](38, 15) NULL, [Номер регистратора] [nchar](10) NULL, [ЗатратыСкладХранение] [numeric](38, 15) NULL, [ЗатратыСкладЗарплата] [numeric](38, 15) NULL, [Приемка] [numeric](38, 15) NULL, [АтсМаркировка] [numeric](38, 15) NULL, [ВремяВыполненияМинут] [numeric](38, 15) NULL, [СборкаЗаказа] [numeric](38, 15) NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [pbi].[Себестоимость2024] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[Себестоимость2024]( [id] [int] IDENTITY(1,1) NOT NULL, [Период] [datetime2](0) NULL, [Статья] [varchar](255) NOT NULL, [Вид операции] [varchar](255) NOT NULL, [Хоз операция] [varchar](255) NOT NULL, [Организация] [varchar](255) NULL, [Партнер] [varchar](255) NULL, [Контрагент] [varchar](255) NULL, [Менеджер] [varchar](255) NULL, [Тип документа] [varchar](255) NULL, [Номер документа] [varchar](255) NULL, [Валюта документа] [varchar](255) NULL, [Ценовая группа] [varchar](255) NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](38, 15) NULL, [СуммаБезНДС] [numeric](38, 15) NULL, [СуммаРучнойСкидки] [numeric](38, 15) NULL, [СуммаАвтоСкидки] [numeric](38, 15) NULL, [Закупка] [numeric](38, 15) NULL, [Закупка, usd2] [numeric](38, 15) NULL, [Курс usd2] [numeric](15, 3) NULL, [Курс usd] [numeric](15, 3) NULL, [Таможня] [numeric](38, 15) NULL, [ЕАЭС] [numeric](38, 15) NULL, [Учетная цена] [numeric](38, 15) NULL, [Учетная цена USD2+2] [numeric](38, 15) NULL, [Заказ закрыт] [datetime] NULL, [Номер заказа] [nchar](11) NULL, [Маркетинг] [numeric](38, 15) NULL, [Доставка] [numeric](38, 15) NULL, [НДС] [numeric](38, 15) NULL, [Сборка] [numeric](38, 15) NULL, [ЗатратыМП] [numeric](38, 15) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](38, 15) NULL, [Учетная стоимость USD2+2] [numeric](38, 15) NULL, [Номер регистратора] [nchar](10) NULL, [ЗатратыСкладХранение] [numeric](38, 15) NULL, [ЗатратыСкладЗарплата] [numeric](38, 15) NULL, [Приемка] [numeric](38, 15) NULL, [АтсМаркировка] [numeric](38, 15) NULL, [ВремяВыполненияМинут] [numeric](38, 15) NULL, [СборкаЗаказа] [numeric](38, 15) NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [pbi].[СебестоимостьДо2022Тест] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[СебестоимостьДо2022Тест]( [id] [int] IDENTITY(1,1) NOT NULL, [Период] [datetime2](0) NULL, [Статья] [varchar](255) NOT NULL, [Вид операции] [varchar](255) NOT NULL, [Хоз операция] [varchar](255) NOT NULL, [Организация] [varchar](255) NULL, [Партнер] [varchar](255) NULL, [Контрагент] [varchar](255) NULL, [Менеджер] [varchar](255) NULL, [Тип документа] [varchar](255) NULL, [Номер документа] [varchar](255) NULL, [Валюта документа] [varchar](255) NULL, [Ценовая группа] [varchar](255) NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](38, 15) NULL, [СуммаБезНДС] [numeric](38, 15) NULL, [СуммаРучнойСкидки] [numeric](38, 15) NULL, [СуммаАвтоСкидки] [numeric](38, 15) NULL, [Закупка] [numeric](38, 15) NULL, [Закупка, usd2] [numeric](38, 15) NULL, [Курс usd2] [numeric](15, 3) NULL, [Курс usd] [numeric](15, 3) NULL, [Таможня] [numeric](38, 15) NULL, [ЕАЭС] [numeric](38, 15) NULL, [Учетная цена] [numeric](38, 15) NULL, [Учетная цена USD2+2] [numeric](38, 15) NULL, [Заказ закрыт] [datetime] NULL, [Номер заказа] [nchar](11) NULL, [Маркетинг] [numeric](38, 15) NULL, [Доставка] [numeric](38, 15) NULL, [НДС] [numeric](38, 15) NULL, [Производство] [numeric](38, 15) NULL, [ЗатратыМП] [numeric](38, 15) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](38, 15) NULL, [Учетная стоимость USD2+2] [numeric](38, 15) NULL, [Номер регистратора] [nchar](10) NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [pbi].[СебестоимостьСводныйОт2022Тестовый] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbi].[СебестоимостьСводныйОт2022Тестовый]( [id] [int] IDENTITY(1,1) NOT NULL, [Период] [datetime2](0) NULL, [Статья] [varchar](255) NOT NULL, [Вид операции] [varchar](255) NOT NULL, [Хоз операция] [varchar](255) NOT NULL, [Организация] [varchar](255) NULL, [Партнер] [varchar](255) NULL, [Контрагент] [varchar](255) NULL, [Менеджер] [varchar](255) NULL, [Тип документа] [varchar](255) NULL, [Номер документа] [varchar](255) NULL, [Валюта документа] [varchar](255) NULL, [Ценовая группа] [varchar](255) NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](38, 15) NULL, [СуммаБезНДС] [numeric](38, 15) NULL, [СуммаРучнойСкидки] [numeric](38, 15) NULL, [СуммаАвтоСкидки] [numeric](38, 15) NULL, [Закупка] [numeric](38, 15) NULL, [Закупка, usd2] [numeric](38, 15) NULL, [Курс usd2] [numeric](15, 3) NULL, [Курс usd] [numeric](15, 3) NULL, [Таможня] [numeric](38, 15) NULL, [ЕАЭС] [numeric](38, 15) NULL, [Учетная цена] [numeric](38, 15) NULL, [Учетная цена USD2+2] [numeric](38, 15) NULL, [Заказ закрыт] [datetime] NULL, [Номер заказа] [nchar](11) NULL, [Маркетинг] [numeric](38, 15) NULL, [Доставка] [numeric](38, 15) NULL, [НДС] [numeric](38, 15) NULL, [Сборка] [numeric](38, 15) NULL, [ЗатратыМП] [numeric](38, 15) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](38, 15) NULL, [Учетная стоимость USD2+2] [numeric](38, 15) NULL, [Номер регистратора] [nchar](10) NULL, [Code] [nchar](11) NULL, [ЗатратыСкладХранение] [numeric](38, 15) NULL, [Приемка] [numeric](38, 15) NULL, [АтсМаркировка] [numeric](38, 15) NULL, [ВремяВыполненияМинут] [numeric](38, 15) NULL, [СборкаЗаказа] [numeric](38, 15) NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [pbiProd].[GroupsOfNomenclature] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbiProd].[GroupsOfNomenclature]( [artic_id] [nchar](36) NOT NULL, [2k] [int] NULL, [4k] [int] NULL, [6k] [int] NULL, [8k] [int] NULL, [10k] [int] NULL, [15k] [int] NULL, [20k] [int] NULL, [upload] [int] NULL ) ON [PRIMARY] GO /****** Object: Table [pbiProd].[Логирование] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbiProd].[Логирование]( [Инфо] [text] NOT NULL, [Период] [datetime2](0) NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [pbiProd].[НоменклатураВПроизводствеПоУровням] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbiProd].[НоменклатураВПроизводствеПоУровням]( [id] [int] IDENTITY(1,1) NOT NULL, [1c_id] [binary](16) NULL, [УровеньПроизводства] [numeric](2, 0) NOT NULL, [RowNum] [numeric](6, 0) NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [pbiProd].[СебестоимостьИтогиДо2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbiProd].[СебестоимостьИтогиДо2022]( [id] [int] IDENTITY(1,1) NOT NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](38, 15) NULL, [СуммаБезНДС] [numeric](38, 15) NULL, [СуммаРучнойСкидки] [numeric](38, 15) NULL, [СуммаАвтоСкидки] [numeric](38, 15) NULL, [Закупка] [numeric](38, 15) NULL, [Закупка, usd2] [numeric](38, 15) NULL, [Таможня] [numeric](38, 15) NULL, [ЕАЭС] [numeric](38, 15) NULL, [Учетная цена] [numeric](38, 15) NULL, [Учетная цена USD2+2] [numeric](38, 15) NULL, [Доставка] [numeric](38, 15) NULL, [НДС] [numeric](38, 15) NULL, [Сборка] [numeric](38, 15) NULL, [ЗатратыМП] [numeric](38, 15) NULL, [Учетная стоимость] [numeric](38, 15) NULL, [Учетная стоимость USD2+2] [numeric](38, 15) NULL, [1c_id] [binary](16) NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [pbiProd].[СебестоимостьПроизводствоОт2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbiProd].[СебестоимостьПроизводствоОт2022]( [id] [int] IDENTITY(1,1) NOT NULL, [Период] [datetime2](0) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Учетная цена] [numeric](21, 9) NULL, [Учетная цена USD2+2] [numeric](21, 9) NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [pbiProd].[СебестоимостьСводныйОт2022_copy_2025-03-26] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbiProd].[СебестоимостьСводныйОт2022_copy_2025-03-26]( [id] [int] IDENTITY(1,1) NOT NULL, [Период] [datetime2](0) NULL, [Статья] [varchar](50) NOT NULL, [Вид операции] [varchar](25) NOT NULL, [Хоз операция] [varchar](50) NULL, [Организация] [varchar](255) NULL, [Партнер] [varchar](255) NULL, [Контрагент] [varchar](255) NULL, [Менеджер] [varchar](255) NULL, [Тип документа] [varchar](50) NULL, [Номер документа] [varchar](25) NULL, [Валюта документа] [varchar](25) NULL, [Ценовая группа] [varchar](25) NULL, [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL, [Сумма] [numeric](21, 9) NULL, [СуммаБезНДС] [numeric](21, 9) NULL, [СуммаРучнойСкидки] [numeric](21, 9) NULL, [СуммаАвтоСкидки] [numeric](21, 9) NULL, [Закупка] [numeric](21, 9) NULL, [Закупка, usd2] [numeric](21, 9) NULL, [Курс usd2] [numeric](15, 3) NULL, [Курс usd] [numeric](15, 3) NULL, [Таможня] [numeric](21, 9) NULL, [ЕАЭС] [numeric](21, 9) NULL, [Учетная цена] [numeric](21, 9) NULL, [Учетная цена USD2+2] [numeric](21, 9) NULL, [Заказ закрыт] [datetime] NULL, [Номер заказа] [nchar](11) NULL, [Маркетинг] [numeric](21, 9) NULL, [Доставка] [numeric](21, 9) NULL, [НДС] [numeric](21, 9) NULL, [Производство] [numeric](21, 9) NULL, [ЗатратыМП] [numeric](21, 9) NULL, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] [numeric](21, 9) NULL, [Учетная стоимость USD2+2] [numeric](21, 9) NULL, [Номер регистратора] [nchar](10) NULL, [Code] [nchar](11) NULL, [ЗатратыСкладХранение] [numeric](21, 9) NULL, [Приемка] [numeric](21, 9) NULL, [АтсМаркировка] [numeric](21, 9) NULL, [ВремяВыполненияМинут] [numeric](21, 9) NULL, [СборкаЗаказа] [numeric](21, 9) NULL, [КоличествоУпаковок] [numeric](15, 3) NULL ) ON [PRIMARY] GO /****** Object: Table [pbiProd].[УчетнаяЦенаПоСебестоимости] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [pbiProd].[УчетнаяЦенаПоСебестоимости]( [artic_id] [nvarchar](36) NOT NULL, [Учетная цена] [numeric](15, 6) NULL, [Учетная цена USD2+2] [numeric](15, 9) NULL, [Период] [datetime2](0) NOT NULL ) ON [PRIMARY] GO /****** Object: Table [stg].[forecast_load] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [stg].[forecast_load]( [1c_id] [nvarchar](100) NOT NULL, [code] [nvarchar](100) NOT NULL, [month] [nvarchar](50) NOT NULL, [value] [nvarchar](100) NOT NULL, [user_name] [nvarchar](200) NOT NULL, [updated_at] [nvarchar](100) NOT NULL ) ON [PRIMARY] GO ALTER TABLE [analytics].[deficit_money_request] ADD DEFAULT (sysdatetime()) FOR [created_at] GO ALTER TABLE [analytics].[deficit_proposal] ADD DEFAULT (sysutcdatetime()) FOR [updated_at] GO ALTER TABLE [analytics].[forecast] ADD DEFAULT (sysutcdatetime()) FOR [updated_at] GO ALTER TABLE [analytics].[forecast] ADD CONSTRAINT [DF_forecast_opt] DEFAULT ((0)) FOR [opt] GO ALTER TABLE [analytics].[forecast] ADD CONSTRAINT [DF_forecast_mp] DEFAULT ((0)) FOR [mp] GO ALTER TABLE [analytics].[forecast_history] ADD DEFAULT (sysutcdatetime()) FOR [changed_at] GO ALTER TABLE [analytics].[forecast_scenarios] ADD DEFAULT (sysutcdatetime()) FOR [created_at] GO ALTER TABLE [analytics].[forecast_scenarios] ADD CONSTRAINT [DF_forecast_scenarios_active] DEFAULT ((1)) FOR [active] GO ALTER TABLE [analytics].[load_log_w_ostatok_da_net] ADD DEFAULT (sysdatetime()) FOR [created_at] GO ALTER TABLE [analytics].[sales_weekly_features] ADD DEFAULT (sysutcdatetime()) FOR [created_at] GO ALTER TABLE [analytics].[stock_plan_by_arrival] ADD DEFAULT ((0)) FOR [opening_qty] GO ALTER TABLE [analytics].[stock_plan_by_arrival] ADD DEFAULT ((0)) FOR [inbound_confirmed] GO ALTER TABLE [analytics].[stock_plan_by_arrival] ADD DEFAULT ((0)) FOR [inbound_deficit] GO ALTER TABLE [analytics].[stock_plan_by_arrival] ADD DEFAULT ((0)) FOR [forecast_demand] GO ALTER TABLE [analytics].[stock_plan_by_arrival] ADD DEFAULT ((0)) FOR [closing_qty] GO ALTER TABLE [analytics].[stock_plan_by_arrival] ADD DEFAULT (sysutcdatetime()) FOR [updated_at] GO ALTER TABLE [analytics].[срез учетных цен] ADD DEFAULT (NULL) FOR [количество] GO ALTER TABLE [dbo].[site_product] ADD DEFAULT ((1)) FOR [active] GO ALTER TABLE [dbo].[site_product] ADD DEFAULT ((0)) FOR [quantity] GO ALTER TABLE [dbo].[site_product] ADD DEFAULT ((0)) FOR [price] GO ALTER TABLE [dbo].[yandex_direct_criteria_stats] ADD DEFAULT ((0)) FOR [impressions] GO ALTER TABLE [dbo].[yandex_direct_criteria_stats] ADD DEFAULT ((0)) FOR [clicks] GO ALTER TABLE [dbo].[yandex_direct_criteria_stats] ADD DEFAULT ((0)) FOR [ctr] GO ALTER TABLE [dbo].[yandex_direct_criteria_stats] ADD DEFAULT ((0)) FOR [cost] GO ALTER TABLE [dbo].[yandex_direct_criteria_stats] ADD DEFAULT ((0)) FOR [avg_cpc] GO ALTER TABLE [dbo].[yandex_direct_criteria_stats] ADD DEFAULT (getdate()) FOR [created_at] GO ALTER TABLE [dbo].[yandex_direct_criteria_stats] ADD DEFAULT (getdate()) FOR [updated_at] GO ALTER TABLE [pbi].[ostatki] ADD DEFAULT ((0)) FOR [Учетная цена по себест] GO ALTER TABLE [pbi].[ostatki] ADD DEFAULT ((0)) FOR [Учетная цена по себест, usd2+2] GO ALTER TABLE [pbi].[ostatki] ADD DEFAULT ((0)) FOR [Учетная цена, старое] GO ALTER TABLE [pbi].[ostatki] ADD DEFAULT ((0)) FOR [upakovok_ship] GO ALTER TABLE [pbi].[ostatki] ADD DEFAULT ((0)) FOR [quantity_ship] GO ALTER TABLE [pbi].[ostatki_short] ADD DEFAULT ((0)) FOR [Учетная цена, старое] GO ALTER TABLE [pbi].[ostatki_short] ADD DEFAULT ((0)) FOR [upakovok_ship] GO ALTER TABLE [pbi].[ostatki_short] ADD DEFAULT ((0)) FOR [quantity_ship] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ('') FOR [Вид операции] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ('') FOR [Хоз операция] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ('') FOR [Организация] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ('') FOR [Партнер] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ('') FOR [Контрагент] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ('') FOR [Менеджер] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ('') FOR [Тип документа] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ('') FOR [Номер документа] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ('') FOR [Валюта документа] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ('') FOR [Ценовая группа] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Количество] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Сумма] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [СуммаБезНДС] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [СуммаРучнойСкидки] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [СуммаАвтоСкидки] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Закупка] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Закупка, usd2] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Курс usd2] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Курс usd] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Таможня] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [ЕАЭС] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Учетная цена] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Учетная цена USD2+2] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Маркетинг] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Доставка] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [НДС] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Сборка] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [ЗатратыМП] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Учетная стоимость] GO ALTER TABLE [pbi].[Себестоимость] ADD DEFAULT ((0)) FOR [Учетная стоимость USD2+2] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [Количество] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [Сумма] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [СуммаБезНДС] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [СуммаРучнойСкидки] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [СуммаАвтоСкидки] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [Закупка] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [Закупка, usd2] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [Таможня] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [ЕАЭС] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [Учетная цена] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [Учетная цена USD2+2] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [Маркетинг] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [Доставка] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [НДС] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [Сборка] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [ЗатратыМП] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [Учетная стоимость] GO ALTER TABLE [pbi].[СебестоимостьПродажи] ADD DEFAULT ((0)) FOR [Учетная стоимость USD2+2] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [Количество] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [Сумма] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [СуммаБезНДС] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [СуммаРучнойСкидки] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [СуммаАвтоСкидки] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [Закупка] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [Закупка, usd2] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [Таможня] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [ЕАЭС] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [Учетная цена] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [Учетная цена USD2+2] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [Маркетинг] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [Доставка] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [НДС] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [Сборка] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [ЗатратыМП] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [Учетная стоимость] GO ALTER TABLE [pbi].[СебестоимостьПродажиОт2022] ADD DEFAULT ((0)) FOR [Учетная стоимость USD2+2] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [Количество] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [Сумма] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [СуммаБезНДС] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [СуммаРучнойСкидки] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [СуммаАвтоСкидки] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [Закупка] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [Закупка, usd2] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [Таможня] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [ЕАЭС] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [Учетная цена] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [Учетная цена USD2+2] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [Маркетинг] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [Доставка] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [НДС] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [Сборка] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [ЗатратыМП] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [Учетная стоимость] GO ALTER TABLE [pbi].[СебестоимостьПродажиТест] ADD DEFAULT ((0)) FOR [Учетная стоимость USD2+2] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ('') FOR [Вид операции] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ('') FOR [Хоз операция] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ('') FOR [Организация] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ('') FOR [Партнер] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ('') FOR [Контрагент] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ('') FOR [Менеджер] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ('') FOR [Тип документа] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ('') FOR [Номер документа] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ('') FOR [Валюта документа] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ('') FOR [Ценовая группа] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Количество] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Сумма] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [СуммаБезНДС] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [СуммаРучнойСкидки] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [СуммаАвтоСкидки] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Закупка] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Закупка, usd2] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Курс usd2] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Курс usd] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Таможня] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [ЕАЭС] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Учетная цена] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Учетная цена USD2+2] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Маркетинг] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Доставка] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [НДС] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Сборка] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [ЗатратыМП] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Учетная стоимость] GO ALTER TABLE [pbi].[СебестоимостьТест] ADD DEFAULT ((0)) FOR [Учетная стоимость USD2+2] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ('') FOR [Вид операции] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ('') FOR [Хоз операция] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ('') FOR [Организация] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ('') FOR [Партнер] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ('') FOR [Контрагент] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ('') FOR [Менеджер] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ('') FOR [Тип документа] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ('') FOR [Номер документа] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ('') FOR [Валюта документа] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ('') FOR [Ценовая группа] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Количество] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Сумма] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [СуммаБезНДС] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [СуммаРучнойСкидки] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [СуммаАвтоСкидки] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Закупка] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Закупка, usd2] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Курс usd2] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Курс usd] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Таможня] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [ЕАЭС] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Учетная цена] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Учетная цена USD2+2] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Маркетинг] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Доставка] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [НДС] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Производство] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [ЗатратыМП] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Учетная стоимость] GO ALTER TABLE [pbiProd].[СебестоимостьДо2022] ADD DEFAULT ((0)) FOR [Учетная стоимость USD2+2] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [Количество] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [Сумма] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [СуммаБезНДС] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [СуммаРучнойСкидки] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [СуммаАвтоСкидки] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [Закупка] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [Закупка, usd2] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [Таможня] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [ЕАЭС] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [Учетная цена] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [Учетная цена USD2+2] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [Доставка] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [НДС] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [Сборка] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [ЗатратыМП] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [Учетная стоимость] GO ALTER TABLE [pbiProd].[СебестоимостьИтогиДо2022] ADD DEFAULT ((0)) FOR [Учетная стоимость USD2+2] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ('') FOR [Вид операции] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ('') FOR [Хоз операция] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ('') FOR [Организация] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ('') FOR [Партнер] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ('') FOR [Контрагент] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ('') FOR [Менеджер] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ('') FOR [Тип документа] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ('') FOR [Номер документа] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ('') FOR [Валюта документа] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ('') FOR [Ценовая группа] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Количество] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Сумма] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [СуммаБезНДС] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [СуммаРучнойСкидки] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [СуммаАвтоСкидки] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Закупка] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Закупка, usd2] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Курс usd2] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Курс usd] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Таможня] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [ЕАЭС] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Учетная цена] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Учетная цена USD2+2] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Маркетинг] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Доставка] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [НДС] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Производство] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [ЗатратыМП] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Учетная стоимость] GO ALTER TABLE [pbiProd].[СебестоимостьОт2022] ADD DEFAULT ((0)) FOR [Учетная стоимость USD2+2] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ('') FOR [Вид операции] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ('') FOR [Хоз операция] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ('') FOR [Организация] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ('') FOR [Партнер] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ('') FOR [Контрагент] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ('') FOR [Менеджер] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ('') FOR [Тип документа] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ('') FOR [Номер документа] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ('') FOR [Валюта документа] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ('') FOR [Ценовая группа] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Количество] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Сумма] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [СуммаБезНДС] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [СуммаРучнойСкидки] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [СуммаАвтоСкидки] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Закупка] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Закупка, usd2] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Курс usd2] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Курс usd] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Таможня] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [ЕАЭС] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Учетная цена] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Учетная цена USD2+2] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Маркетинг] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Доставка] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [НДС] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Производство] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [ЗатратыМП] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Учетная стоимость] GO ALTER TABLE [pbiProd].[СебестоимостьСводныйОт2022] ADD DEFAULT ((0)) FOR [Учетная стоимость USD2+2] GO ALTER TABLE [analytics].[forecast] WITH CHECK ADD CONSTRAINT [FK_forecast_scenario] FOREIGN KEY([scenario_id]) REFERENCES [analytics].[forecast_scenarios] ([scenario_id]) ON DELETE CASCADE GO ALTER TABLE [analytics].[forecast] CHECK CONSTRAINT [FK_forecast_scenario] GO /****** Object: StoredProcedure [analytics].[create_forecast_loop] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE procedure [analytics].[create_forecast_loop] as begin DECLARE @from_month DATE = DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1); DECLARE @to_month_excl DATE = '2027-01-01'; DECLARE @scenario_id INT = 4; DECLARE @path NVARCHAR(255); DECLARE cur CURSOR LOCAL FAST_FORWARD FOR SELECT [path] FROM [pbi].[groups] g WHERE [lvl] = 2 AND g.[path] NOT LIKE '*%' -- (опционально) исключить служебные группы /*AND ( g.[path] LIKE N'Р%' OR g.[path] LIKE N'С%' OR g.[path] LIKE N'Т%' OR g.[path] LIKE N'У%' OR g.[path] LIKE N'Ф%' OR g.[path] LIKE N'Х%' OR g.[path] LIKE N'Ц%' OR g.[path] LIKE N'Ч%' OR g.[path] LIKE N'Ш%' OR g.[path] LIKE N'Щ%' OR g.[path] LIKE N'Э%' OR g.[path] LIKE N'Ю%' OR g.[path] LIKE N'Я%' )*/ ORDER BY [path]; OPEN cur; FETCH NEXT FROM cur INTO @path; WHILE @@FETCH_STATUS = 0 BEGIN PRINT CONCAT('Rebuild forecast for: ', @path); EXEC [analytics].[sp_build_forecast_s4_by_group] @path = @path, @from_month = @from_month, @to_month_excl = @to_month_excl, @scenario_id = @scenario_id; FETCH NEXT FROM cur INTO @path; END CLOSE cur; DEALLOCATE cur; END GO /****** Object: StoredProcedure [analytics].[create_seasonality_groups] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [analytics].[create_seasonality_groups] as BEGIN /* 1) Таблица результата */ IF NOT EXISTS ( SELECT 1 FROM sys.tables t JOIN sys.schemas s ON s.schema_id = t.schema_id WHERE s.name = 'analytics' AND t.name = 'seasonality_groups' ) BEGIN CREATE TABLE [analytics].[seasonality_groups]( [group_1c_id] BINARY(16) NOT NULL, [month] TINYINT NOT NULL, -- 1..12 [seasonal_koef] DECIMAL(18,6) NOT NULL, CONSTRAINT [PK_seasonality_groups] PRIMARY KEY ([group_1c_id], [month]) ); CREATE INDEX [IX_seasonality_groups_month] ON [analytics].[seasonality_groups]([month]); END TRUNCATE TABLE [analytics].[seasonality_groups]; /* 2) Пересчёт коэффициентов сезонности для g и g1 */ ;WITH -- Продажи по товарам за последние 24 месяца (кол-во) [base_sales] AS ( SELECT [n].[1c_id] AS [sku_1c_id], [gcur].[g], [gcur].[g1], [v].[Период] AS [dt], CAST([v].[Количество] AS DECIMAL(18,6)) AS [qty] FROM [mag_pbi].[pbiProd].[СводныйСебестоимость Для PBI] AS [v] JOIN [pbi].[nomenclature] AS [n] ON [n].[1c_id] = [v].[1c_id] LEFT JOIN [pbi].[groups] AS [gcur] ON [gcur].[1c_id] = [n].[1c_group] WHERE [v].[Статья] = N'Реализация' AND [v].[Период] >= DATEADD(YEAR, -2, CAST(GETDATE() AS date)) ), -- Агрегация по месяцам и уровню g (lvl=0) [lvl0_monthly] AS ( SELECT [g0].[1c_id] AS [group_1c_id], DATEFROMPARTS(YEAR([b].[dt]), MONTH([b].[dt]), 1) AS [month_start], SUM([b].[qty]) AS [qty_m] FROM [base_sales] AS [b] JOIN [pbi].[groups] AS [g0] ON [g0].[lvl] = 1 AND [g0].[g] = [b].[g] GROUP BY [g0].[1c_id], DATEFROMPARTS(YEAR([b].[dt]), MONTH([b].[dt]), 1) ), -- Агрегация по месяцам и уровню g1 (lvl=1) [lvl1_monthly] AS ( SELECT [g1].[1c_id] AS [group_1c_id], DATEFROMPARTS(YEAR([b].[dt]), MONTH([b].[dt]), 1) AS [month_start], SUM([b].[qty]) AS [qty_m] FROM [base_sales] AS [b] JOIN [pbi].[groups] AS [g1] ON [g1].[lvl] = 2 AND [g1].[g1] = [b].[g1] GROUP BY [g1].[1c_id], DATEFROMPARTS(YEAR([b].[dt]), MONTH([b].[dt]), 1) ), -- Объединяем уровни [monthly_union] AS ( SELECT * FROM [lvl0_monthly] UNION ALL SELECT * FROM [lvl1_monthly] ), -- Средние по «месяцу года» [per_moy] AS ( SELECT [u].[group_1c_id], MONTH([u].[month_start]) AS [month], AVG([u].[qty_m]) AS [avg_qty_moy] FROM [monthly_union] AS [u] GROUP BY [u].[group_1c_id], MONTH([u].[month_start]) ), -- Общая средняя по группе [overall] AS ( SELECT [u].[group_1c_id], AVG([u].[qty_m]) AS [overall_avg_monthly] FROM [monthly_union] AS [u] GROUP BY [u].[group_1c_id] ), -- Черновой коэффициент [raw_koef] AS ( SELECT [p].[group_1c_id], [p].[month], CASE WHEN [o].[overall_avg_monthly] = 0 THEN 0 ELSE [p].[avg_qty_moy] / [o].[overall_avg_monthly] END AS [k_raw] FROM [per_moy] AS [p] JOIN [overall] AS [o] ON [o].[group_1c_id] = [p].[group_1c_id] ), [norm] AS ( SELECT [r].[group_1c_id], [r].[month], [r].[k_raw] / NULLIF(AVG([r].[k_raw]) OVER (PARTITION BY [r].[group_1c_id]), 0) AS [seasonal_koef] FROM [raw_koef] AS [r] ) INSERT INTO [analytics].[seasonality_groups] ([group_1c_id], [month], [seasonal_koef]) SELECT [group_1c_id], [month], CAST([seasonal_koef] AS DECIMAL(18,6)) FROM [norm]; END GO /****** Object: StoredProcedure [analytics].[sp_build_deficit_proposal] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /* ======================================================================= [analytics].[sp_build_deficit_proposal] — Дефицит и рекомендации к заказу с учётом: • стартовых остатков (склад + МП), • прихода из заказов (4 статуса, включая 'Согласован'), • прогноза по сценарию, • НЕТ бэк-ордеров: спрос не «копится» ниже нуля, остаток считается итеративно и не уходит в минус, • размер заказа = прогноз окна [T .. T + @cover_months). ======================================================================= */ CREATE PROCEDURE [analytics].[sp_build_deficit_proposal] @scenario_id INT = 4, -- ID сценария прогноза @group_path NVARCHAR(255) = N'', -- path группы ('' = весь каталог) @lead_time_m INT = 4, -- срок поставки (мес.) @cover_months INT = 6, -- покрытие (мес.) @from_month DATE = NULL, -- старт (1-е число месяца) @to_month_excl DATE = '2028-01-01', -- полуинтервал [from, to) @debug BIT = 0 AS BEGIN SET NOCOUNT ON; /* 0) Чистим прошлые данные по сценарию */ DELETE FROM [analytics].[deficit_proposal] WHERE scenario_id = @scenario_id; /* Нормализация параметров */ SET @group_path = LTRIM(RTRIM(REPLACE(@group_path, '''', N''))); IF @from_month IS NULL SET @from_month = DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1); /* 1) Календарь */ IF OBJECT_ID('tempdb..#cal') IS NOT NULL DROP TABLE #cal; CREATE TABLE #cal (month_start DATE NOT NULL PRIMARY KEY); ;WITH cal AS ( SELECT @from_month AS month_start UNION ALL SELECT DATEADD(MONTH, 1, month_start) FROM cal WHERE month_start < DATEADD(MONTH, -1, @to_month_excl) ) INSERT INTO #cal(month_start) SELECT month_start FROM cal OPTION (MAXRECURSION 32767); /* 2) SKU по group_path */ IF OBJECT_ID('tempdb..#skus') IS NOT NULL DROP TABLE #skus; CREATE TABLE #skus ( sku_1c_id BINARY(16) NOT NULL PRIMARY KEY, code NVARCHAR(36) NULL, minAvail DECIMAL(18,6) NULL ); INSERT INTO #skus(sku_1c_id, code, minAvail) SELECT n.[1c_id], n.[code], n.[minAvailableQty] FROM [pbi].[nomenclature] n JOIN [pbi].[groups] g ON g.[1c_id] = n.[1c_group] WHERE g.[path] LIKE @group_path + N'%'; IF NOT EXISTS (SELECT 1 FROM #skus) BEGIN RAISERROR(N'По path=%s не найдено SKU.', 16, 1, @group_path); RETURN; END /* 3) Прогноз по сценарию */ IF OBJECT_ID('tempdb..#fcast') IS NOT NULL DROP TABLE #fcast; CREATE TABLE #fcast ( sku_1c_id BINARY(16) NOT NULL, [month] DATE NOT NULL, qty DECIMAL(18,3) NOT NULL, PRIMARY KEY (sku_1c_id, [month]) ); INSERT INTO #fcast(sku_1c_id, [month], qty) SELECT f.[1c_id], f.[month], f.[value] FROM [analytics].[forecast] f JOIN #skus s ON s.sku_1c_id = f.[1c_id] WHERE f.[scenario_id] = @scenario_id AND f.[month] >= @from_month AND f.[month] < @to_month_excl; /* 4) Приходы из заказов (по месяцам) */ IF OBJECT_ID('tempdb..#inb_status') IS NOT NULL DROP TABLE #inb_status; CREATE TABLE #inb_status ( sku_1c_id BINARY(16) NOT NULL, [month] DATE NOT NULL, [status] NVARCHAR(100) NOT NULL, units DECIMAL(18,3) NOT NULL, PRIMARY KEY (sku_1c_id, [month], [status]) ); INSERT INTO #inb_status(sku_1c_id, [month], [status], units) SELECT s.sku_1c_id, DATEFROMPARTS(TRY_CONVERT(INT, LEFT(o.[month], 4)), TRY_CONVERT(INT, SUBSTRING(o.[month], 6, 2)), 1), o.[status], SUM(COALESCE(o.[units], 0.0)) FROM [analytics].[get_orders_by_group] o JOIN #skus s ON s.code = o.[code] WHERE o.[status] IN (N'В пути', N'В производстве', N'Выгружен на складе'/*, N'Согласован'*/) AND TRY_CONVERT(INT, LEFT(o.[month], 4)) IS NOT NULL AND TRY_CONVERT(INT, SUBSTRING(o.[month], 6, 2)) BETWEEN 1 AND 12 GROUP BY s.sku_1c_id, DATEFROMPARTS(TRY_CONVERT(INT, LEFT(o.[month], 4)), TRY_CONVERT(INT, SUBSTRING(o.[month], 6, 2)), 1), o.[status]; IF OBJECT_ID('tempdb..#inb') IS NOT NULL DROP TABLE #inb; CREATE TABLE #inb ( sku_1c_id BINARY(16) NOT NULL, [month] DATE NOT NULL, units DECIMAL(18,3) NOT NULL, PRIMARY KEY (sku_1c_id, [month]) ); INSERT INTO #inb(sku_1c_id, [month], units) SELECT sku_1c_id, [month], SUM(units) FROM #inb_status WHERE [month] >= @from_month AND [month] < @to_month_excl GROUP BY sku_1c_id, [month]; /* 5) Стартовые остатки: склад + МП */ IF OBJECT_ID('tempdb..#stock_base') IS NOT NULL DROP TABLE #stock_base; CREATE TABLE #stock_base (sku_1c_id BINARY(16) NOT NULL PRIMARY KEY, qty DECIMAL(18,3) NOT NULL); INSERT INTO #stock_base(sku_1c_id, qty) SELECT s.sku_1c_id, COALESCE(b.qty, 0.0) FROM #skus s LEFT JOIN ( SELECT code, SUM(COALESCE(quantity_base,0.0)) AS qty FROM [analytics].[get_quantity_by_group] GROUP BY code ) b ON b.code = s.code; IF OBJECT_ID('tempdb..#stock_mp') IS NOT NULL DROP TABLE #stock_mp; CREATE TABLE #stock_mp (sku_1c_id BINARY(16) NOT NULL PRIMARY KEY, qty DECIMAL(18,3) NOT NULL); INSERT INTO #stock_mp(sku_1c_id, qty) SELECT s.sku_1c_id, COALESCE(m.qty, 0.0) FROM #skus s LEFT JOIN ( SELECT code, SUM(COALESCE(quantity_base,0.0)) AS qty FROM [analytics].[get_mp_quantity_by_group] GROUP BY code ) m ON m.code = s.code; IF OBJECT_ID('tempdb..#stock0') IS NOT NULL DROP TABLE #stock0; CREATE TABLE #stock0 (sku_1c_id BINARY(16) NOT NULL PRIMARY KEY, qty DECIMAL(18,3) NOT NULL); INSERT INTO #stock0(sku_1c_id, qty) SELECT s.sku_1c_id, COALESCE(b.qty,0) + COALESCE(mp.qty,0) FROM #skus s LEFT JOIN #stock_base b ON b.sku_1c_id = s.sku_1c_id LEFT JOIN #stock_mp mp ON mp.sku_1c_id = s.sku_1c_id; /* 6) Лента (сырой спрос/приход) */ IF OBJECT_ID('tempdb..#tl') IS NOT NULL DROP TABLE #tl; CREATE TABLE #tl ( sku_1c_id BINARY(16) NOT NULL, [month] DATE NOT NULL, demand_m DECIMAL(18,3) NOT NULL, inb_m DECIMAL(18,3) NOT NULL, cum_d DECIMAL(38,3) NULL, -- кумулятив обслуженного спроса cum_i DECIMAL(38,3) NULL, -- кумулятив прихода net_stock DECIMAL(38,3) NULL, -- итоговый остаток месяца (>=0) served_m DECIMAL(18,3) NULL, -- обслуженный спрос в месяце lost_m DECIMAL(18,3) NULL, -- потерянный спрос в месяце PRIMARY KEY (sku_1c_id, [month]) ); INSERT INTO #tl(sku_1c_id, [month], demand_m, inb_m) SELECT s.sku_1c_id, c.month_start, COALESCE(f.qty, 0.0), COALESCE(i.units, 0.0) FROM #skus s CROSS JOIN #cal c LEFT JOIN #fcast f ON f.sku_1c_id = s.sku_1c_id AND f.[month] = c.month_start LEFT JOIN #inb i ON i.sku_1c_id = s.sku_1c_id AND i.[month] = c.month_start; /* 6.1) Пронумеруем месяцы (для рекурсивного расчёта без бэк-ордеров) */ IF OBJECT_ID('tempdb..#seq') IS NOT NULL DROP TABLE #seq; CREATE TABLE #seq ( sku_1c_id BINARY(16) NOT NULL, [month] DATE NOT NULL, demand_m DECIMAL(18,3) NOT NULL, inb_m DECIMAL(18,3) NOT NULL, rn INT NOT NULL, PRIMARY KEY (sku_1c_id, rn) ); INSERT INTO #seq(sku_1c_id, [month], demand_m, inb_m, rn) SELECT t.sku_1c_id, t.[month], t.demand_m, t.inb_m, ROW_NUMBER() OVER (PARTITION BY t.sku_1c_id ORDER BY t.[month]) FROM #tl t; /* 6.2) Рекурсивный расчёт: served/lost/net_stock (без накопления спроса ниже нуля) */ IF OBJECT_ID('tempdb..#flow') IS NOT NULL DROP TABLE #flow; CREATE TABLE #flow( sku_1c_id BINARY(16) NOT NULL, rn INT NOT NULL, [month] DATE NOT NULL, demand_m DECIMAL(18,3) NOT NULL, inb_m DECIMAL(18,3) NOT NULL, served_m DECIMAL(18,3) NOT NULL, lost_m DECIMAL(18,3) NOT NULL, net_stock DECIMAL(38,3) NOT NULL, PRIMARY KEY (sku_1c_id, rn) ); ;WITH r AS ( /* первый месяц */ SELECT s.sku_1c_id, s.rn, s.[month], s.demand_m, s.inb_m, CAST( CASE WHEN st.qty + s.inb_m >= s.demand_m THEN s.demand_m ELSE st.qty + s.inb_m END AS DECIMAL(18,3)) AS served_m, CAST( CASE WHEN st.qty + s.inb_m >= s.demand_m THEN 0.0 ELSE s.demand_m - (st.qty + s.inb_m) END AS DECIMAL(18,3)) AS lost_m, CAST( CASE WHEN st.qty + s.inb_m - s.demand_m < 0 THEN 0 ELSE st.qty + s.inb_m - s.demand_m END AS DECIMAL(38,3)) AS net_stock FROM #seq s JOIN #stock0 st ON st.sku_1c_id = s.sku_1c_id WHERE s.rn = 1 UNION ALL /* последующие месяцы */ SELECT s.sku_1c_id, s.rn, s.[month], s.demand_m, s.inb_m, CAST( CASE WHEN r.net_stock + s.inb_m >= s.demand_m THEN s.demand_m ELSE r.net_stock + s.inb_m END AS DECIMAL(18,3)) AS served_m, CAST( CASE WHEN r.net_stock + s.inb_m >= s.demand_m THEN 0.0 ELSE s.demand_m - (r.net_stock + s.inb_m) END AS DECIMAL(18,3)) AS lost_m, CAST( CASE WHEN r.net_stock + s.inb_m - s.demand_m < 0 THEN 0 ELSE r.net_stock + s.inb_m - s.demand_m END AS DECIMAL(38,3)) AS net_stock FROM r JOIN #seq s ON s.sku_1c_id = r.sku_1c_id AND s.rn = r.rn + 1 ) INSERT INTO #flow SELECT * FROM r OPTION (MAXRECURSION 32767); /* 6.3) Обновим #tl: кумулятивы по обслуженному спросу/приходу и итоговый остаток */ ;WITH cd AS ( SELECT f.sku_1c_id, s.[month], SUM(f.served_m) OVER (PARTITION BY f.sku_1c_id ORDER BY f.rn ROWS UNBOUNDED PRECEDING) AS cum_d_served, SUM(s.inb_m) OVER (PARTITION BY s.sku_1c_id ORDER BY s.rn ROWS UNBOUNDED PRECEDING) AS cum_i_raw, f.net_stock, f.served_m, f.lost_m FROM #flow f JOIN #seq s ON s.sku_1c_id = f.sku_1c_id AND s.rn = f.rn ) UPDATE t SET t.cum_d = cd.cum_d_served, t.cum_i = cd.cum_i_raw, t.net_stock = cd.net_stock, t.served_m = cd.served_m, t.lost_m = cd.lost_m FROM #tl t JOIN cd ON cd.sku_1c_id = t.sku_1c_id AND cd.[month] = t.[month]; /* 7) Первый месяц дефицита T (учитываем lead_time) */ DECLARE @start_T DATE = DATEFROMPARTS(YEAR(DATEADD(MONTH, @lead_time_m, @from_month)), MONTH(DATEADD(MONTH, @lead_time_m, @from_month)), 1); IF OBJECT_ID('tempdb..#first_def') IS NOT NULL DROP TABLE #first_def; CREATE TABLE #first_def (sku_1c_id BINARY(16) NOT NULL PRIMARY KEY, T DATE NULL); INSERT INTO #first_def(sku_1c_id, T) SELECT d.sku_1c_id, MIN(d.[month]) AS T FROM ( SELECT t.sku_1c_id, t.[month] FROM #tl t JOIN #skus s ON s.sku_1c_id = t.sku_1c_id WHERE t.net_stock < COALESCE(s.minAvail, 0.0) AND t.[month] >= @start_T ) d GROUP BY d.sku_1c_id; /* 8) Якоря: T, T+C, T+2C ... */ IF OBJECT_ID('tempdb..#anchors') IS NOT NULL DROP TABLE #anchors; CREATE TABLE #anchors ( sku_1c_id BINARY(16) NOT NULL, T DATE NOT NULL, PRIMARY KEY (sku_1c_id, T) ); ;WITH recur AS ( SELECT fd.sku_1c_id, fd.T FROM #first_def fd WHERE fd.T IS NOT NULL UNION ALL SELECT r.sku_1c_id, DATEADD(MONTH, @cover_months, r.T) FROM recur r WHERE DATEADD(MONTH, @cover_months, r.T) < @to_month_excl ) INSERT INTO #anchors(sku_1c_id, T) SELECT sku_1c_id, T FROM recur OPTION (MAXRECURSION 32767); /* 9) Подготовка строк к вставке (размер заказа = прогноз окна) */ IF OBJECT_ID('tempdb..#rows_to_insert') IS NOT NULL DROP TABLE #rows_to_insert; CREATE TABLE #rows_to_insert ( [scenario_id] INT, [group_name] NVARCHAR(255), [1c_id] BINARY(16), [code] NVARCHAR(36), [place_month] DATE, [arrival_month] DATE, [demand_window_C] DECIMAL(18,3), [projected_stock_at_T] DECIMAL(18,3), [order_qty] DECIMAL(18,3) ); ;WITH base AS ( SELECT s.sku_1c_id, s.code, a.T, st.qty AS stock0, /* прогноз окна [T .. T+C) */ (SELECT SUM(demand_m) FROM #tl z WHERE z.sku_1c_id = s.sku_1c_id AND z.[month] >= a.T AND z.[month] < DATEADD(MONTH, @cover_months, a.T) ) AS demand_window, /* кумулятивы до T-1 (обслуженный спрос и приход) */ (SELECT TOP (1) z.cum_i FROM #tl z WHERE z.sku_1c_id = s.sku_1c_id AND z.[month] < a.T ORDER BY z.[month] DESC ) AS cum_i_before, (SELECT TOP (1) z.cum_d FROM #tl z WHERE z.sku_1c_id = s.sku_1c_id AND z.[month] < a.T ORDER BY z.[month] DESC ) AS cum_d_before, /* приход именно в T */ (SELECT SUM(inb_m) FROM #tl z WHERE z.sku_1c_id = s.sku_1c_id AND z.[month] = a.T ) AS inb_t FROM #anchors a JOIN #skus s ON s.sku_1c_id = a.sku_1c_id JOIN #stock0 st ON st.sku_1c_id = s.sku_1c_id ) INSERT INTO #rows_to_insert SELECT @scenario_id, @group_path, b.sku_1c_id, b.code, DATEADD(MONTH, -@lead_time_m, b.T) AS place_month, b.T AS arrival_month, CAST(ISNULL(b.demand_window,0) AS DECIMAL(18,3)) AS demand_window_C, /* старт на T (после прихода T), снизу 0 */ CAST( CASE WHEN ( ISNULL(b.stock0,0) + ISNULL(b.cum_i_before,0) + ISNULL(b.inb_t,0) - ISNULL(b.cum_d_before,0) ) < 0 THEN 0 ELSE ( ISNULL(b.stock0,0) + ISNULL(b.cum_i_before,0) + ISNULL(b.inb_t,0) - ISNULL(b.cum_d_before,0) ) END AS DECIMAL(18,3)) AS projected_stock_at_T, /* размер заказа = прогноз окна */ CAST(ISNULL(b.demand_window,0) AS DECIMAL(18,3)) AS order_qty FROM base AS b; /* 10) Вставка рекомендаций (незначащие — отбрасываем) */ INSERT INTO [analytics].[deficit_proposal] ([scenario_id], [group_name], [1c_id], [code], [place_month], [arrival_month], [demand_window_C], [projected_stock_at_T], [order_qty], [updated_at]) SELECT scenario_id, group_name, [1c_id], [code], [place_month], [arrival_month], [demand_window_C], [projected_stock_at_T], [order_qty], GETDATE() FROM #rows_to_insert WHERE [order_qty] > 0; /* 11) Отладка по желанию */ IF @debug = 1 BEGIN SELECT TOP (200) r.[code], r.[arrival_month], r.[place_month], r.[projected_stock_at_T], r.[demand_window_C], r.[order_qty] FROM #rows_to_insert r ORDER BY r.[arrival_month], r.[code]; END END GO /****** Object: StoredProcedure [analytics].[sp_build_forecast_s4_by_group] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [analytics].[sp_build_forecast_s4_by_group] @path NVARCHAR(255), -- путь группы (например, N'Игрушки') @from_month DATE = NULL, -- по умолчанию: 1-е число текущего месяца @to_month_excl DATE = '2028-01-01', -- полуинтервал [from, to) @scenario_id INT = 4, @allow_fallback_all BIT = 0 -- 1 = если группа не найдена/пустая → считать весь каталог с дефолтной сезонностью AS BEGIN SET NOCOUNT ON; ---------------------------------------------------------------- -- Нормализация пути: убираем лишние кавычки и пробелы ---------------------------------------------------------------- SET @path = LTRIM(RTRIM(REPLACE(@path, '''', N''))); IF @from_month IS NULL SET @from_month = DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1); ---------------------------------------------------------------- -- Идентификаторы групп для сезонности ---------------------------------------------------------------- DECLARE @season_group_id BINARY(16) = NULL; DECLARE @DEFAULT_GROUP_ID BINARY(16) = 0x00000000000000000000000000000000; -- Пытаемся найти группу ровно по path SELECT @season_group_id = g.[1c_id] FROM [pbi].[groups] g WHERE g.[path] = @path; -- Если нет точного совпадения, ищем верхний узел, начинающийся с @path IF @season_group_id IS NULL BEGIN SELECT TOP (1) @season_group_id = g.[1c_id] FROM [pbi].[groups] g WHERE g.[path] LIKE @path + N'%' ORDER BY g.[lvl] ASC; END -- Если группу так и не нашли: по умолчанию НЕ уходим на весь каталог (защита от опечаток) IF @season_group_id IS NULL AND @allow_fallback_all = 0 BEGIN RAISERROR (N'Группа с path = %s не найдена. Проверьте параметр @path или запустите с @allow_fallback_all=1 для расчёта по всему каталогу.', 16, 1, @path); RETURN; END -- Если всё-таки нужно фолбэкнуть на дефолтную сезонность IF @season_group_id IS NULL AND @allow_fallback_all = 1 SET @season_group_id = @DEFAULT_GROUP_ID; ---------------------------------------------------------------- -- TEMP: календарь месяцев [from, to) ---------------------------------------------------------------- IF OBJECT_ID('tempdb..#cal') IS NOT NULL DROP TABLE #cal; CREATE TABLE #cal (month_start DATE NOT NULL PRIMARY KEY); ;WITH cal AS ( SELECT @from_month AS month_start UNION ALL SELECT DATEADD(MONTH, 1, month_start) FROM cal WHERE month_start < DATEADD(MONTH, -1, @to_month_excl) ) INSERT INTO #cal(month_start) SELECT month_start FROM cal OPTION (MAXRECURSION 32767); ---------------------------------------------------------------- -- TEMP: SKU под деревом @path; если пусто и разрешён фолбэк → все SKU ---------------------------------------------------------------- IF OBJECT_ID('tempdb..#skus') IS NOT NULL DROP TABLE #skus; CREATE TABLE #skus ( sku_1c_id BINARY(16) NOT NULL PRIMARY KEY, code NVARCHAR(36) NULL ); INSERT INTO #skus(sku_1c_id, code) SELECT n.[1c_id], n.[code] FROM [pbi].[nomenclature] n JOIN [pbi].[groups] g ON g.[1c_id] = n.[1c_group] WHERE g.[path] LIKE @path + N'%' OPTION (RECOMPILE); IF NOT EXISTS (SELECT 1 FROM #skus) BEGIN IF @allow_fallback_all = 1 BEGIN INSERT INTO #skus(sku_1c_id, code) SELECT n.[1c_id], n.[code] FROM [pbi].[nomenclature] n; SET @season_group_id = @DEFAULT_GROUP_ID; END ELSE BEGIN RAISERROR (N'По path = %s не найдено ни одного SKU. Расчёт не выполнялся.', 16, 1, @path); RETURN; END END ---------------------------------------------------------------- -- TEMP: ставки продаж (шт/день) ---------------------------------------------------------------- IF OBJECT_ID('tempdb..#rate') IS NOT NULL DROP TABLE #rate; CREATE TABLE #rate ( sku_1c_id BINARY(16) NOT NULL PRIMARY KEY, rate_per_day DECIMAL(38,6) NOT NULL ); INSERT INTO #rate(sku_1c_id, rate_per_day) SELECT a.[1c_id], ISNULL(a.[Продажи шт / день],0) FROM [analytics].[аналитика за 365 дн.] a JOIN #skus s ON s.sku_1c_id = a.[1c_id]; ---------------------------------------------------------------- -- TEMP: сезонность ТОЛЬКО по @season_group_id; если нет строк — используем дефолт ---------------------------------------------------------------- IF OBJECT_ID('tempdb..#season') IS NOT NULL DROP TABLE #season; CREATE TABLE #season ( [month] TINYINT NOT NULL PRIMARY KEY, -- 1..12 seasonal_koef DECIMAL(18,6) NOT NULL ); INSERT INTO #season([month], seasonal_koef) /*SELECT sg.[month], sg.[seasonal_koef] FROM [analytics].[seasonality_groups] sg WHERE sg.[group_1c_id] = @season_group_id;*/ SELECT [month] , AVG([koef]) FROM [mag_pbi].[analytics].[seasonality_groups_summ_1] GROUP BY [month]; /*IF @@ROWCOUNT = 0 BEGIN INSERT INTO #season([month], seasonal_koef) SELECT sg.[month], sg.[seasonal_koef] FROM [analytics].[seasonality_groups] sg WHERE sg.[group_1c_id] = @DEFAULT_GROUP_ID; -- если и дефолта нет, #season останется пустой → в формуле будет 1.0 END */ ---------------------------------------------------------------- -- Удаляем старые строки сценария (батчами, чтобы не держать тяжёлые блокировки) ---------------------------------------------------------------- WHILE 1 = 1 BEGIN DELETE TOP (50000) f FROM [analytics].[forecast] f JOIN #skus s ON s.sku_1c_id = f.[1c_id] WHERE f.[scenario_id] = @scenario_id AND f.[month] >= @from_month AND f.[month] < @to_month_excl; IF @@ROWCOUNT = 0 BREAK; END ---------------------------------------------------------------- -- Вставка прогноза: rate_per_day × дни_в_месяце × seasonal_koef(@path/@default) ---------------------------------------------------------------- INSERT INTO [analytics].[forecast] ([scenario_id], [1c_id], [code], [month], [value], [updated_at], [updated_by]) SELECT @scenario_id, s.sku_1c_id, s.code, c.month_start, CAST(ISNULL(r.rate_per_day, 0) * DAY(EOMONTH(c.month_start)) * ISNULL(se.seasonal_koef, 1.0) AS DECIMAL(18,3)) AS value, GETDATE(), SUSER_SNAME() FROM #skus s CROSS JOIN #cal c LEFT JOIN #rate r ON r.sku_1c_id = s.sku_1c_id LEFT JOIN #season se ON se.[month] = MONTH(c.month_start) OPTION (RECOMPILE); END GO /****** Object: StoredProcedure [analytics].[sp_create_analytics_365] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [analytics].[sp_create_analytics_365] AS BEGIN /* ... твой закомментированный блок без изменений ... */ ------------------------------------------------------------- -- 1) Базовая таблица аналитики за 365 дней ------------------------------------------------------------- DROP TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] SELECT s.[1c_id], s.Code, SUM(s.Количество) as [Продано шт] INTO [mag_pbi].[analytics].[аналитика за 365 дн.] FROM [pbiProd].[СводныйСебестоимость Для PBI] s WHERE s.Статья = N'Реализация' AND s.[Период] >= DATEADD(day, -365, GETDATE()) GROUP BY [1c_id], s.Code; ------------------------------------------------------------- -- 2) Продажи шт / день ------------------------------------------------------------- IF COL_LENGTH('analytics.аналитика за 365 дн.', 'Продажи шт / день') IS NULL BEGIN ALTER TABLE [analytics].[аналитика за 365 дн.] ADD [Продажи шт / день] numeric(38,6) NULL; /*ALTER TABLE [analytics].[аналитика за 365 дн.] ADD [Продажи шт / день опт] numeric(38,6) NULL;*/ END; ;WITH bounds AS ( SELECT CAST(DATEADD(day, -365, CAST(GETDATE() AS date)) AS date) AS start_date, CAST(GETDATE() AS date) AS end_date ), days365 AS ( SELECT t.[_IDRREF] AS [1c_id], SUM(t.[ostatok]) AS days_on_sale_365 --SUM(t.[ostatok10]) AS days_on_sale_365_opt FROM [pbi].[w_ostatok_da_net] t CROSS JOIN bounds b WHERE t.[dt] >= b.start_date AND t.[dt] < b.end_date -- исключаем текущий день GROUP BY t.[_IDRREF] ) UPDATE a SET [Продажи шт / день] = CASE WHEN d.days_on_sale_365 > 0 THEN CAST(a.[Продано шт] AS numeric(38,6)) / CAST(d.days_on_sale_365 AS numeric(38,6)) ELSE NULL END /*[Продажи шт / день опт] = CASE WHEN d.days_on_sale_365_opt > 0 THEN CAST(a.[Продано шт] AS numeric(38,6)) / CAST(d.days_on_sale_365_opt AS numeric(38,6)) ELSE NULL END*/ FROM [analytics].[аналитика за 365 дн.] a LEFT JOIN days365 d ON d.[1c_id] = a.[1c_id]; ------------------------------------------------------------- -- 3) Остаток дней продаж ------------------------------------------------------------- IF COL_LENGTH('analytics.аналитика за 365 дн.', 'Остаток дней продаж') IS NULL BEGIN ALTER TABLE [analytics].[аналитика за 365 дн.] ADD [Остаток дней продаж] numeric(38,6) NULL; /*ALTER TABLE [analytics].[аналитика за 365 дн.] ADD [Остаток дней продаж опт] numeric(38,6) NULL;*/ END; UPDATE a SET [Остаток дней продаж] = CASE WHEN a.[Продажи шт / день] > 0 THEN sb.[Остаток склад + МП, шт] / a.[Продажи шт / день] ELSE NULL END /*[Остаток дней продаж опт] = CASE WHEN a.[Продажи шт / день опт] > 0 THEN sb.[Остаток склад + МП, шт] / a.[Продажи шт / день опт] ELSE NULL END*/ FROM [analytics].[аналитика за 365 дн.] a LEFT JOIN ( SELECT n.[1c_id], s.[Остаток склад + МП, шт] FROM [mag_pbi].[analytics].[stock_balance] s INNER JOIN [mag_pbi].[pbi].[nomenclature] n ON n.artic_id = s.artic_id ) sb ON sb.[1c_id] = a.[1c_id]; ------------------------------------------------------------- -- 4) Сумма продаж, учетка, ТН (год) ------------------------------------------------------------- IF COL_LENGTH('analytics.аналитика за 365 дн.', 'Продажи / год, руб.') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [Продажи / год, руб.] decimal(38,2) NULL; END; IF COL_LENGTH('analytics.аналитика за 365 дн.', 'учетная сумма / год, руб.') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [учетная сумма / год, руб.] decimal(38,2) NULL; END; IF COL_LENGTH('analytics.аналитика за 365 дн.', 'ТН / год, руб.') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [ТН / год, руб.] decimal(38,2) NULL; END; IF COL_LENGTH('analytics.аналитика за 365 дн.', 'Стоимость МП год, руб.') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [Стоимость МП год, руб.] decimal(38,2) NULL; END; IF COL_LENGTH('analytics.аналитика за 365 дн.', '%ТН год, руб.') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [%ТН год, руб.] decimal(38,2) NULL; END; DECLARE @end date = CAST(GETDATE() AS date); -- сегодня (не включаем) DECLARE @start date = DATEADD(day, -365, @end); -- 365 дней назад ;WITH Y AS ( SELECT v.[1c_id], SUM(v.[Сумма продаж]) AS sales_year, SUM(v.[Учетная сумма]) AS acct_year, SUM(v.[Стоимость обработки]) AS cost_mp, SUM(v.[Торговая надбавка]) AS tn_year FROM [analytics].[Продажи_Учёт_Маржа_по_дням] v WHERE v.[d] >= @start AND v.[d] < @end GROUP BY v.[1c_id] ) UPDATE a SET a.[Продажи / год, руб.] = COALESCE(Y.sales_year, 0), a.[учетная сумма / год, руб.] = COALESCE(Y.acct_year, 0), a.[ТН / год, руб.] = COALESCE(Y.tn_year, 0), a.[Стоимость МП год, руб.] = COALESCE(Y.cost_mp, 0), a.[%ТН год, руб.] = CASE WHEN NULLIF(COALESCE(Y.acct_year, 0), 0) IS NULL THEN NULL ELSE CAST(COALESCE(Y.tn_year, 0) AS decimal(19,6)) / CAST(NULLIF(Y.acct_year, 0) AS decimal(19,6)) END FROM [mag_pbi].[analytics].[аналитика за 365 дн.] AS a LEFT JOIN Y ON Y.[1c_id] = a.[1c_id]; ------------------------------------------------------------- -- 5) Дней в продаже / год и / квартал ------------------------------------------------------------- SET @end = CAST(GETDATE() AS date); DECLARE @startY date = DATEADD(day, -365, @end); DECLARE @startQ date = DATEADD(month, -3, @end); IF COL_LENGTH('mag_pbi.analytics.аналитика за 365 дн.', 'Дней в продаже / год') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [Дней в продаже / год] bigint NULL; END; IF COL_LENGTH('mag_pbi.analytics.аналитика за 365 дн.', 'Дней в продаже / квартал') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [Дней в продаже / квартал] bigint NULL; END; ;WITH daysY AS ( SELECT [_IDRREF] AS [1c_id], COUNT_BIG(*) AS days_in_sale_year FROM [pbi].[w_ostatok_da_net] WHERE [dt] >= @startY AND [dt] < @end AND [ostatok] >= 1 GROUP BY [_IDRREF] ), daysQ AS ( SELECT [_IDRREF] AS [1c_id], COUNT_BIG(*) AS days_in_sale_quarter FROM [pbi].[w_ostatok_da_net] WHERE [dt] >= @startQ AND [dt] < @end AND [ostatok] >= 1 GROUP BY [_IDRREF] ), days AS ( SELECT COALESCE(y.[1c_id], q.[1c_id]) AS [1c_id], y.days_in_sale_year, q.days_in_sale_quarter FROM daysY y FULL OUTER JOIN daysQ q ON q.[1c_id] = y.[1c_id] ) UPDATE a SET a.[Дней в продаже / год] = d.days_in_sale_year, a.[Дней в продаже / квартал] = d.days_in_sale_quarter FROM [mag_pbi].[analytics].[аналитика за 365 дн.] a LEFT JOIN days d ON d.[1c_id] = a.[1c_id]; ------------------------------------------------------------- -- 6) Сумма продаж, учетка, ТН (квартал) ------------------------------------------------------------- IF COL_LENGTH('analytics.аналитика за 365 дн.', 'Продажи / квартал, руб.') IS NULL BEGIN ALTER TABLE [analytics].[аналитика за 365 дн.] ADD [Продажи / квартал, руб.] decimal(38,2) NULL; END; IF COL_LENGTH('analytics.аналитика за 365 дн.', 'учетная сумма / квартал, руб.') IS NULL BEGIN ALTER TABLE [analytics].[аналитика за 365 дн.] ADD [учетная сумма / квартал, руб.] decimal(38,2) NULL; END; IF COL_LENGTH('analytics.аналитика за 365 дн.', 'ТН / квартал, руб.') IS NULL BEGIN ALTER TABLE [analytics].[аналитика за 365 дн.] ADD [ТН / квартал, руб.] decimal(38,2) NULL; END; SET @start = DATEADD(month, -3, @end); ;WITH Q AS ( SELECT v.[1c_id], SUM(v.[Сумма продаж]) AS sales_q, SUM(v.[Учетная сумма]) AS acct_q, SUM(v.[Торговая надбавка]) AS tn_q FROM [analytics].[Продажи_Учёт_Маржа_по_дням] v WHERE v.[d] >= @start AND v.[d] < @end GROUP BY v.[1c_id] ) UPDATE a SET a.[Продажи / квартал, руб.] = Q.sales_q, a.[учетная сумма / квартал, руб.] = Q.acct_q, a.[ТН / квартал, руб.] = Q.tn_q FROM [analytics].[аналитика за 365 дн.] AS a LEFT JOIN Q ON Q.[1c_id] = a.[1c_id]; ------------------------------------------------------------- -- 7) ТН / месяц (по текущей скорости) ------------------------------------------------------------- IF COL_LENGTH('mag_pbi.analytics.аналитика за 365 дн.', 'ТН / месяц, руб.') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [ТН / месяц, руб.] decimal(38,6) NULL; END; UPDATE a SET a.[ТН / месяц, руб.] = ISNULL(a.[ТН / год, руб.], 0) / NULLIF(a.[Продано шт], 0) * ISNULL(a.[Продажи шт / день], 0) * 30 FROM [mag_pbi].[analytics].[аналитика за 365 дн.] a; ------------------------------------------------------------------------------------- -- 8) ДОПОЛНИТЕЛЬНО: Оплаченный остаток и рентабельности (ROIC и по остатку в руб.) -- (год назад, квартал назад и на будущий год) по 12-месячному окну ------------------------------------------------------------------------------------- -- новые колонки IF COL_LENGTH('mag_pbi.analytics.аналитика за 365 дн.', 'Оплаченный остаток') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [Оплаченный остаток] decimal(38,2) NULL; END; IF COL_LENGTH('mag_pbi.analytics.аналитика за 365 дн.', 'Рентабельность / год') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [Рентабельность / год] decimal(38,6) NULL; END; IF COL_LENGTH('mag_pbi.analytics.аналитика за 365 дн.', 'Рентабельность / квартал') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [Рентабельность / квартал] decimal(38,6) NULL; END; IF COL_LENGTH('mag_pbi.analytics.аналитика за 365 дн.', 'Рентабельность / будущий год') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [Рентабельность / будущий год] decimal(38,6) NULL; END; -- новые поля рентабельности по остатку в рублях (сразу в %) IF COL_LENGTH('mag_pbi.analytics.аналитика за 365 дн.', 'Рентабельность по остатку / год') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [Рентабельность по остатку / год] decimal(38,6) NULL; END; IF COL_LENGTH('mag_pbi.analytics.аналитика за 365 дн.', 'Рентабельность по остатку / квартал') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [Рентабельность по остатку / квартал] decimal(38,6) NULL; END; IF COL_LENGTH('mag_pbi.analytics.аналитика за 365 дн.', 'Рентабельность по остатку / будущий год') IS NULL BEGIN ALTER TABLE [mag_pbi].[analytics].[аналитика за 365 дн.] ADD [Рентабельность по остатку / будущий год] decimal(38,6) NULL; END; --------------------------------------------------------- -- 8.1 Окно 12 полных месяцев --------------------------------------------------------- DECLARE @mp_today date = CAST(GETDATE() AS date); DECLARE @mp_lastFullMonth date = EOMONTH(DATEADD(month, -1, @mp_today)); DECLARE @mp_firstMonthStart date = DATEADD( month, -11, DATEFROMPARTS(YEAR(@mp_lastFullMonth), MONTH(@mp_lastFullMonth), 1) ); DECLARE @mp_curMonthStart date = @mp_firstMonthStart; IF OBJECT_ID('tempdb..#mp_months') IS NOT NULL DROP TABLE #mp_months; CREATE TABLE #mp_months ( MonthStart date NOT NULL PRIMARY KEY ); WHILE @mp_curMonthStart <= DATEFROMPARTS(YEAR(@mp_lastFullMonth), MONTH(@mp_lastFullMonth), 1) BEGIN INSERT INTO #mp_months (MonthStart) VALUES (@mp_curMonthStart); SET @mp_curMonthStart = DATEADD(month, 1, @mp_curMonthStart); END; --------------------------------------------------------- -- 8.2 Набор SKU из аналитики 365 --------------------------------------------------------- IF OBJECT_ID('tempdb..#mp_s') IS NOT NULL DROP TABLE #mp_s; CREATE TABLE #mp_s( [1c_id] binary(16) NOT NULL, code nchar(11) NOT NULL, CONSTRAINT PK_mp_s PRIMARY KEY ([1c_id], code) ); INSERT INTO #mp_s([1c_id], code) SELECT DISTINCT a.[1c_id], a.[Code] FROM [mag_pbi].[analytics].[аналитика за 365 дн.] a; --------------------------------------------------------- -- 8.3 Внешние остатки --------------------------------------------------------- IF OBJECT_ID('tempdb..#mp_ext_stock') IS NOT NULL DROP TABLE #mp_ext_stock; CREATE TABLE #mp_ext_stock( Dt date NOT NULL, code nchar(11) NOT NULL, qty numeric(18,3) NOT NULL, CONSTRAINT PK_mp_ext_stock PRIMARY KEY (Dt, code) ); INSERT INTO #mp_ext_stock (Dt, code, qty) SELECT CAST(o.[Дата обновления] AS date) AS Dt, o.code, SUM(o.[Количество]) AS qty FROM analytics.[Внешние остатки] o JOIN #mp_s s ON s.code = o.code GROUP BY CAST(o.[Дата обновления] AS date), o.code; --------------------------------------------------------- -- 8.4 Приходы (Закупка / Приход) --------------------------------------------------------- IF OBJECT_ID('tempdb..#mp_incoming') IS NOT NULL DROP TABLE #mp_incoming; CREATE TABLE #mp_incoming( MonthStart date NOT NULL, [1c_id] binary(16) NOT NULL, qty numeric(18,3) NOT NULL, CONSTRAINT PK_mp_incoming PRIMARY KEY (MonthStart, [1c_id]) ); INSERT INTO #mp_incoming (MonthStart, [1c_id], qty) SELECT DATEFROMPARTS(YEAR(s.[Период]), MONTH(s.[Период]), 1) AS MonthStart, s.[1c_id], SUM(s.[Количество]) AS qty FROM pbiProd.[СводныйСебестоимость Для PBI] s JOIN #mp_s sf ON sf.[1c_id] = s.[1c_id] WHERE s.[Статья] = N'Закупка' AND s.[Вид операции] = N'Приход' AND s.[Период] >= @mp_firstMonthStart GROUP BY DATEFROMPARTS(YEAR(s.[Период]), MONTH(s.[Период]), 1), s.[1c_id]; --------------------------------------------------------- -- 8.5 Обязательства по месяцам --------------------------------------------------------- IF OBJECT_ID('tempdb..#mp_obligations') IS NOT NULL DROP TABLE #mp_obligations; CREATE TABLE #mp_obligations( MonthStart date NOT NULL, [1c_id] binary(16) NOT NULL, obligation numeric(18,2) NOT NULL, CONSTRAINT PK_mp_obligations PRIMARY KEY (MonthStart, [1c_id]) ); ;WITH ObligRows AS ( SELECT m.MonthStart, inc.[1c_id], CASE WHEN EOMONTH(m.MonthStart) < EOMONTH(inc.MonthStart) THEN 0 ELSE CASE WHEN full_sum - paid_to_month > 0 THEN full_sum - paid_to_month ELSE 0 END END AS ObligationPerIncoming FROM #mp_months m JOIN #mp_incoming inc ON 1 = 1 JOIN pbi.nomenclature n2 ON n2.[1c_id] = inc.[1c_id] JOIN analytics.manufacturers man2 ON man2.[manufacturer] = n2.Производитель CROSS APPLY ( SELECT inc.qty * n2.[Цена учетная, руб] AS full_sum, ( (CASE WHEN man2.n_percent IS NOT NULL AND EOMONTH(m.MonthStart) >= DATEADD(day, man2.n_days - 90, EOMONTH(inc.MonthStart)) THEN inc.qty * n2.[Цена учетная, руб] * man2.n_percent ELSE 0 END) + (CASE WHEN man2.m_percent IS NOT NULL AND EOMONTH(m.MonthStart) >= DATEADD(day, man2.m_days - 90, EOMONTH(inc.MonthStart)) THEN inc.qty * n2.[Цена учетная, руб] * man2.m_percent ELSE 0 END) ) AS paid_to_month ) calc ) INSERT INTO #mp_obligations (MonthStart, [1c_id], obligation) SELECT MonthStart, [1c_id], SUM(ObligationPerIncoming) AS obligation FROM ObligRows GROUP BY MonthStart, [1c_id]; --------------------------------------------------------- -- 8.6 ТН по месяцам --------------------------------------------------------- IF OBJECT_ID('tempdb..#mp_tn_monthly') IS NOT NULL DROP TABLE #mp_tn_monthly; CREATE TABLE #mp_tn_monthly( MonthStart date NOT NULL, [1c_id] binary(16) NOT NULL, tn_amount numeric(18,2) NULL, CONSTRAINT PK_mp_tn_monthly PRIMARY KEY (MonthStart, [1c_id]) ); INSERT INTO #mp_tn_monthly (MonthStart, [1c_id], tn_amount) SELECT DATEFROMPARTS(YEAR(p.[d]), MONTH(p.[d]), 1) AS MonthStart, p.[1c_id], SUM(ISNULL(p.[Торговая надбавка],0)) AS tn_amount FROM [mag_pbi].[analytics].[Продажи_Учёт_Маржа_по_дням] p JOIN #mp_s s ON s.[1c_id] = p.[1c_id] WHERE p.[d] >= @mp_firstMonthStart AND p.[d] <= @mp_lastFullMonth GROUP BY DATEFROMPARTS(YEAR(p.[d]), MONTH(p.[d]), 1), p.[1c_id]; --------------------------------------------------------- -- 8.7 Помесячный план по всем SKU (остаток, оплаченный остаток, ТН, рубли-дни, остаток учетка руб) --------------------------------------------------------- IF OBJECT_ID('tempdb..#mp_plan') IS NOT NULL DROP TABLE #mp_plan; SELECT s.[1c_id], s.code, m.MonthStart, [Остаток шт] = ISNULL(intStock.quantity, 0) + ISNULL(ext.qty, 0), [Остаток учетка руб] = (ISNULL(intStock.quantity, 0) + ISNULL(ext.qty, 0)) * ISNULL(n.[Цена учетная, руб], 0), [Оплаченный остаток] = CAST( CASE WHEN paid_raw < 0 THEN 0 ELSE paid_raw END AS decimal(18,2) ), [ТН] = ISNULL(tn.tn_amount, 0), [рубли-дни] = CAST( CASE WHEN paid_raw < 0 THEN 0 ELSE paid_raw END * DAY(EOMONTH(m.MonthStart)) AS decimal(18,2) ) INTO #mp_plan FROM #mp_months m CROSS JOIN #mp_s s OUTER APPLY ( SELECT TOP (1) w1.quantity FROM [mag_pbi].[pbi].[w_ostatok_da_net] w1 WHERE w1._IDRREF = s.[1c_id] AND w1.dt <= EOMONTH(m.MonthStart) ORDER BY w1.dt DESC ) AS intStock LEFT JOIN #mp_ext_stock ext ON ext.code = s.code AND ext.Dt = EOMONTH(m.MonthStart) LEFT JOIN #mp_obligations ob ON ob.[1c_id] = s.[1c_id] AND ob.MonthStart = m.MonthStart LEFT JOIN [mag_pbi].[pbi].[nomenclature] n ON n.[1c_id] = s.[1c_id] LEFT JOIN #mp_tn_monthly tn ON tn.[1c_id] = s.[1c_id] AND tn.MonthStart = m.MonthStart CROSS APPLY ( SELECT (ISNULL(intStock.quantity, 0) + ISNULL(ext.qty, 0)) * ISNULL(n.[Цена учетная, руб], 0) - ISNULL(ob.obligation, 0) AS paid_raw ) p; --------------------------------------------------------- -- 8.8 Агрегаты по SKU: ROIC (год/квартал/будущий) + рентабельность по остатку (год/квартал/будущий) --------------------------------------------------------- -- старт квартала (последние 3 месяца окна) DECLARE @mp_q_start date = DATEADD( month, -2, DATEFROMPARTS(YEAR(@mp_lastFullMonth), MONTH(@mp_lastFullMonth), 1) ); ;WITH AggYear AS ( SELECT p.[1c_id], tn_year = SUM(p.[ТН]), rd_year = SUM(p.[рубли-дни]), avg_cap_year = AVG(NULLIF(p.[Остаток учетка руб], 0.0)) FROM #mp_plan p GROUP BY p.[1c_id] ), AggQuarter AS ( SELECT p.[1c_id], tn_q = SUM(p.[ТН]), rd_q = SUM(p.[рубли-дни]), avg_cap_q = AVG(NULLIF(p.[Остаток учетка руб], 0.0)) FROM #mp_plan p WHERE p.MonthStart >= @mp_q_start GROUP BY p.[1c_id] ), RoicPast AS ( SELECT ay.[1c_id], RoicValue = CASE WHEN ay.rd_year > 0 THEN ay.tn_year * 365.0 / ay.rd_year * 100.0 ELSE NULL END, ay.tn_year, ay.avg_cap_year FROM AggYear ay ), RoicQuarterPast AS ( SELECT aq.[1c_id], RoicQ = CASE WHEN aq.rd_q > 0 THEN aq.tn_q * 365.0 / aq.rd_q * 100.0 ELSE NULL END, aq.tn_q, aq.avg_cap_q FROM AggQuarter aq ), LastRow AS ( SELECT p.[1c_id], p.[Оплаченный остаток], p.[Остаток шт], p.[Остаток учетка руб], ROW_NUMBER() OVER ( PARTITION BY p.[1c_id] ORDER BY p.MonthStart DESC ) AS rn FROM #mp_plan p ), FutureBase AS ( SELECT a.[1c_id], a.[Продажи шт / день] AS sales_per_day, a.[Продано шт] AS sold_year, a.[ТН / год, руб.] AS tn_year_hist, lr.[Оплаченный остаток] AS paid_stock_now, lr.[Остаток шт] AS q_stock, lr.[Остаток учетка руб] AS stock_rub_now FROM [mag_pbi].[analytics].[аналитика за 365 дн.] a LEFT JOIN LastRow lr ON lr.[1c_id] = a.[1c_id] AND lr.rn = 1 ), FutureInputs AS ( SELECT f.[1c_id], f.sales_per_day, f.sold_year, tn_year = COALESCE(f.tn_year_hist, rp.tn_year), f.paid_stock_now, f.q_stock, f.stock_rub_now, tn_per_unit = CASE WHEN f.sold_year > 0 AND COALESCE(f.tn_year_hist, rp.tn_year) IS NOT NULL THEN COALESCE(f.tn_year_hist, rp.tn_year) / f.sold_year ELSE NULL END, max_sell_1y = CASE WHEN f.sales_per_day IS NULL THEN NULL ELSE f.sales_per_day * 365.0 END FROM FutureBase f LEFT JOIN RoicPast rp ON rp.[1c_id] = f.[1c_id] ), FutureCalc AS ( SELECT fi.[1c_id], RoicFuture = CASE WHEN fi.paid_stock_now IS NULL OR fi.paid_stock_now <= 0 OR fi.sales_per_day IS NULL OR fi.sales_per_day <= 0 OR fi.tn_per_unit IS NULL OR fi.q_stock IS NULL OR fi.q_stock <= 0 OR fi.max_sell_1y IS NULL OR fi.max_sell_1y <= 0 THEN NULL ELSE ( ( fi.tn_per_unit * (CASE WHEN fi.q_stock <= fi.max_sell_1y THEN fi.q_stock ELSE fi.max_sell_1y END) ) * 365.0 / ( CASE WHEN fi.q_stock / fi.sales_per_day >= 365.0 THEN fi.paid_stock_now * 365.0 ELSE fi.paid_stock_now * (fi.q_stock / fi.sales_per_day) / 2.0 END ) * 100.0 ) END, tn_future = CASE WHEN fi.tn_per_unit IS NULL OR fi.max_sell_1y IS NULL OR fi.q_stock IS NULL THEN NULL ELSE fi.tn_per_unit * (CASE WHEN fi.q_stock <= fi.max_sell_1y THEN fi.q_stock ELSE fi.max_sell_1y END) END, q_future = CASE WHEN fi.max_sell_1y IS NULL OR fi.q_stock IS NULL THEN NULL WHEN fi.q_stock <= fi.max_sell_1y THEN fi.q_stock ELSE fi.max_sell_1y END FROM FutureInputs fi ), CapRentFuture AS ( SELECT fi.[1c_id], RentCapFuturePct = CASE WHEN fc.tn_future IS NULL OR fi.stock_rub_now IS NULL OR fi.stock_rub_now <= 0 OR fi.q_stock IS NULL OR fi.q_stock <= 0 OR fc.q_future IS NULL OR fc.q_future <= 0 THEN NULL ELSE CASE WHEN (fi.stock_rub_now * (1.0 - (fc.q_future / fi.q_stock) / 2.0)) <= 0 THEN NULL ELSE fc.tn_future / (fi.stock_rub_now * (1.0 - (fc.q_future / fi.q_stock) / 2.0)) * 100.0 END END FROM FutureInputs fi LEFT JOIN FutureCalc fc ON fc.[1c_id] = fi.[1c_id] ) UPDATE a SET a.[Рентабельность / год] = rp.RoicValue, a.[Рентабельность / квартал] = rq.RoicQ, a.[Оплаченный остаток] = lr.[Оплаченный остаток], a.[Рентабельность / будущий год] = fc.RoicFuture, a.[Рентабельность по остатку / год] = CASE WHEN rp.avg_cap_year IS NOT NULL AND rp.avg_cap_year > 0 AND rp.tn_year IS NOT NULL THEN (rp.tn_year / rp.avg_cap_year) * 100.0 ELSE NULL END, a.[Рентабельность по остатку / квартал] = CASE WHEN rq.avg_cap_q IS NOT NULL AND rq.avg_cap_q > 0 AND rq.tn_q IS NOT NULL THEN (rq.tn_q / rq.avg_cap_q) * 100.0 ELSE NULL END, a.[Рентабельность по остатку / будущий год] = cf.RentCapFuturePct FROM [mag_pbi].[analytics].[аналитика за 365 дн.] a LEFT JOIN RoicPast rp ON rp.[1c_id] = a.[1c_id] LEFT JOIN RoicQuarterPast rq ON rq.[1c_id] = a.[1c_id] LEFT JOIN LastRow lr ON lr.[1c_id] = a.[1c_id] AND lr.rn = 1 LEFT JOIN FutureCalc fc ON fc.[1c_id] = a.[1c_id] LEFT JOIN CapRentFuture cf ON cf.[1c_id] = a.[1c_id]; ------------------------------------------------------------------------------------- -- 9) Индекс (как был) ------------------------------------------------------------------------------------- CREATE NONCLUSTERED INDEX [analyticsаналитика за 365 дн.] ON [analytics].[аналитика за 365 дн.] ([1c_id]) INCLUDE ( [Продажи шт / день], [Остаток дней продаж], [ТН / год, руб.], [ТН / квартал, руб.], [Рентабельность / год], [Рентабельность / квартал], [Дней в продаже / год], [Дней в продаже / квартал] ); END GO /****** Object: StoredProcedure [analytics].[sp_fill_deficit_money_request] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [analytics].[sp_fill_deficit_money_request] @scenario_id INT AS BEGIN SET NOCOUNT ON; ------------------------------------------------------------------ -- 1. Чистим старые записи по сценарию (если нужно) ------------------------------------------------------------------ --DECLARE @scenario_id INT = 4 DELETE FROM [analytics].[deficit_money_request] WHERE scenario_id = @scenario_id; ------------------------------------------------------------------ -- 2. Готовим временную таблицу с данными (через CTE + SELECT INTO) ------------------------------------------------------------------ IF OBJECT_ID('tempdb..#deficit_data') IS NOT NULL DROP TABLE #deficit_data; ;WITH base AS ( SELECT g.g , n.Производитель , d.place_month , SUM(d.order_qty * n.[Цена учетная, руб]) AS Deficit , SUM(a.[%ТН год, руб.] * d.order_qty * n.[Цена учетная, руб]) / NULLIF(SUM(d.order_qty * n.[Цена учетная, руб]), 0) AS [%ТН средн] FROM [analytics].[deficit_proposal] d INNER JOIN pbi.nomenclature n ON n.[1c_id] = d.[1c_id] INNER JOIN [analytics].[аналитика за 365 дн.] a ON a.[1c_id] = d.[1c_id] INNER JOIN pbi.[groups] g ON g.[1c_id] = n.[1c_group] WHERE d.scenario_id = @scenario_id AND n.cenovaya_gruppa = N'Валютная' GROUP BY g.g , n.Производитель , d.place_month HAVING SUM(d.order_qty * n.[Цена учетная, руб]) > 10 ), data AS ( SELECT b.g , b.Производитель , b.place_month , b.Deficit , b.[%ТН средн] , b.[%ТН средн] * ISNULL(roi.ROI_norm, 1.36) AS [%ROI заказа] , ISNULL(roi.[ROI_norm], 1.36) AS [ROI normalized] , b.[%ТН средн] * ISNULL(roi.ROI_norm, 1.36) * b.Deficit AS [ROI руб] , ISNULL(roi.n_percent, 0.3) AS n_percent , ISNULL(roi.n_days, 1) AS n_days , ISNULL(roi.m_percent, 0.7) AS m_percent , ISNULL(roi.m_days, 60) AS m_days FROM base b LEFT JOIN [analytics].[manufacturers] roi ON roi.[manufacturer] = b.Производитель ) SELECT g , Производитель , place_month , Deficit , n_percent , n_days , m_percent , m_days INTO #deficit_data FROM data; -- SELECT * FROM #deficit_data -- SELECT sum(deficit) FROM #deficit_data ------------------------------------------------------------------ -- 3. Переменные и курсор по временной таблице ------------------------------------------------------------------ DECLARE @g NVARCHAR(255) , @manufacturer NVARCHAR(255) , @place_month DATE , @deficit DECIMAL(18,2) , @n_percent DECIMAL(9,6) , @n_days INT , @m_percent DECIMAL(9,6) , @m_days INT , @pay_date DATE , @pay_amount DECIMAL(18,2); DECLARE cur_deficit CURSOR LOCAL FAST_FORWARD FOR SELECT g , Производитель , place_month , Deficit , n_percent , n_days , m_percent , m_days FROM #deficit_data; OPEN cur_deficit; FETCH NEXT FROM cur_deficit INTO @g , @manufacturer , @place_month , @deficit , @n_percent , @n_days , @m_percent , @m_days; WHILE @@FETCH_STATUS = 0 BEGIN ----------------------------------------------------------------- -- Вариант N ----------------------------------------------------------------- IF @n_percent IS NOT NULL AND @n_percent <> 0 BEGIN -- дата платежа = place_month + n_days SET @pay_date = DATEADD(DAY, @n_days, @place_month); -- сумма платежа = deficit * n_percent SET @pay_amount = @deficit * @n_percent; INSERT INTO [analytics].[deficit_money_request] ( scenario_id , g , manufacturer , place_month -- здесь уже ХРАНИМ дату платежа , deficit -- здесь храним сумму платежа , pay_days , [percent] , created_at ) VALUES ( @scenario_id , @g , @manufacturer , @pay_date , @pay_amount , @n_days , @n_percent , SYSDATETIME() ); END; ----------------------------------------------------------------- -- Вариант M ----------------------------------------------------------------- IF @m_percent IS NOT NULL AND @m_percent <> 0 BEGIN SET @pay_date = DATEADD(DAY, @m_days, @place_month); SET @pay_amount = @deficit * @m_percent; INSERT INTO [analytics].[deficit_money_request] ( scenario_id , g , manufacturer , place_month , deficit , pay_days , [percent] , created_at ) VALUES ( @scenario_id , @g , @manufacturer , @pay_date , @pay_amount , @m_days , @m_percent , SYSDATETIME() ); END; FETCH NEXT FROM cur_deficit INTO @g , @manufacturer , @place_month , @deficit , @n_percent , @n_days , @m_percent , @m_days; END; CLOSE cur_deficit; DEALLOCATE cur_deficit; END; GO /****** Object: StoredProcedure [analytics].[sp_load_koef_groups] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [analytics].[sp_load_koef_groups] as BEGIN Print('Запускайте код процедуры руками') RETURN 0 DROP TABLE #koef CREATE TABLE #koef ( [group_1c_id] nvarchar(256) NOT NULL, [seasonal_koef] [decimal](18, 6) NOT NULL, [month] int NOT NULL ); BULK INSERT #koef FROM '\\192.168.35.3\admin3\Обмен\powerbi\k1.csv' WITH ( FIRSTROW = 2, -- пропустить заголовок FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', CODEPAGE = '1251' -- если кириллица ); -- Проверить наличие данных во вр таблице select top 100 * from #koef --DELETE FROM [analytics].[seasonality_groups] INSERT INTO [analytics].[seasonality_groups] SELECT g.[1c_id], k.month, k.seasonal_koef FROM #koef k INNER JOIN pbi.groups g ON g.[1c_id]=k.group_1c_id ------------------------------ SET NOCOUNT ON; ------------------------------------------------------------ -- 1. Таблица месяцев 1..12 ------------------------------------------------------------ IF OBJECT_ID('tempdb..#Months') IS NOT NULL DROP TABLE #Months; CREATE TABLE #Months ( [month] tinyint NOT NULL PRIMARY KEY ); INSERT INTO #Months ([month]) VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12); ------------------------------------------------------------ -- 2. База продаж 2024–2025 по g–g1 × месяц ------------------------------------------------------------ IF OBJECT_ID('tempdb..#SalesByGroupMonth') IS NOT NULL DROP TABLE #SalesByGroupMonth; SELECT g.[g], g.[g1], [month] = MONTH(s.[Период]), qty = /* SUM(s.Сумма) */ SUM(s.[Количество]) INTO #SalesByGroupMonth FROM [mag_pbi].[pbiProd].[СводныйСебестоимость Для PBI] AS s INNER JOIN [pbi].[nomenclature] n ON n.[1c_id] = s.[1c_id] INNER JOIN [pbi].[groups] g ON g.[1c_id] = n.[1c_group] WHERE s.[Статья] = N'Реализация' AND s.[Период] >= '2023-12-01' AND s.[Период] < '2025-12-01' AND g.[g] NOT LIKE N'*%' GROUP BY g.[g], g.[g1], MONTH(s.[Период]); ------------------------------------------------------------ -- 3. Список всех g–g1, которые продавались ------------------------------------------------------------ IF OBJECT_ID('tempdb..#GroupList') IS NOT NULL DROP TABLE #GroupList; SELECT DISTINCT sbgm.[g], sbgm.[g1] INTO #GroupList FROM #SalesByGroupMonth sbgm; ------------------------------------------------------------ -- 4. g–g1 × все 12 месяцев (qty = 0, если продаж не было) ------------------------------------------------------------ IF OBJECT_ID('tempdb..#AllGroupMonths') IS NOT NULL DROP TABLE #AllGroupMonths; SELECT gl.[g], gl.[g1], m.[month], qty = ISNULL(sbgm.qty, 0) INTO #AllGroupMonths FROM #GroupList gl CROSS JOIN #Months m LEFT JOIN #SalesByGroupMonth sbgm ON sbgm.[g] = gl.[g] AND sbgm.[g1] = gl.[g1] AND sbgm.[month] = m.[month]; ------------------------------------------------------------ -- 5. Общий объём продаж по g–g1 за все 12 месяцев ------------------------------------------------------------ IF OBJECT_ID('tempdb..#GroupTotals') IS NOT NULL DROP TABLE #GroupTotals; SELECT agm.[g], agm.[g1], total_qty = SUM(agm.qty) INTO #GroupTotals FROM #AllGroupMonths agm GROUP BY agm.[g], agm.[g1]; ------------------------------------------------------------ -- 6. Финальный результат: g, g1, koef, month -- Сумма koef по 12 месяцам для каждого g–g1 = 1 ------------------------------------------------------------ SELECT agm.[g], agm.[g1], agm.[month], koef = CASE WHEN gt.total_qty = 0 THEN 0 ELSE CAST(agm.qty AS decimal(18,6)) / NULLIF(gt.total_qty, 0) END --INTO analytics .seasonality_groups_summ_1 FROM #AllGroupMonths agm INNER JOIN #GroupTotals gt ON gt.[g] = agm.[g] AND gt.[g1] = agm.[g1] ORDER BY agm.[g], agm.[g1], agm.[month]; END GO /****** Object: StoredProcedure [analytics].[sp_rebuild_stock_plan_by_arrival] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [analytics].[sp_rebuild_stock_plan_by_arrival] @scenario_id INT, @from_month DATE, -- например: DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1) @to_month DATE -- последний месяц горизонта + 1 день (интервал [from, to) по месяцам) AS BEGIN SET NOCOUNT ON; -- Безопасная рамка IF @from_month IS NULL SET @from_month = DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1); IF @to_month IS NULL SET @to_month = DATEADD(MONTH, 12, @from_month); -- 12 мес по умолчанию -- Чистим целевой диапазон DELETE FROM [analytics].[stock_plan_by_arrival] WHERE [scenario_id] = @scenario_id AND [arrival_month] >= @from_month AND [arrival_month] < @to_month; ;WITH months AS ( -- календарь месяцев [from, to) SELECT CAST(@from_month AS DATE) AS m UNION ALL SELECT DATEADD(MONTH, 1, m) FROM months WHERE DATEADD(MONTH, 1, m) < @to_month ), -- 1) Стартовый остаток на начало горизонта (берём последний известный quantity) opening AS ( SELECT w._IDRREF AS [1c_id], n.code AS [code], CAST(@from_month AS DATE) AS [arrival_month], CAST( MAX(CASE WHEN w.dt = x.max_dt THEN w.quantity END) AS DECIMAL(18,3)) AS opening_qty FROM [pbi].[w_ostatok_da_net] w JOIN ( SELECT _IDRREF, MAX(dt) AS max_dt FROM [pbi].[w_ostatok_da_net] WHERE dt < @from_month GROUP BY _IDRREF ) x ON x._IDRREF = w._IDRREF AND x.max_dt = w.dt JOIN [pbi].[nomenclature] n ON n.[1c_id] = w._IDRREF GROUP BY w._IDRREF, n.code ), -- 2) Подтвержденные приходы (ожидаемые заказы) по дате прихода → к первому дню месяца inbound_confirmed AS ( SELECT o.[1c_id], n.code, o.month AS arrival_month, CAST(SUM(o.units) AS DECIMAL(18,3)) AS inbound_confirmed FROM [mag_pbi].[analytics].[get_orders_by_group] o JOIN [pbi].[nomenclature] n ON n.[1c_id] = o.[1c_id] WHERE o.[status] IN (N'В пути', N'В производстве', N'Выгружен на складе', N'Согласован') AND o.month >= @from_month AND o.month < @to_month GROUP BY o.[1c_id], n.code, o.month ), -- 3) Будущие заказы (дефицит → рекомендованные поставки) по месяцу прихода inbound_deficit AS ( SELECT d.[1c_id], d.[code], DATEFROMPARTS(YEAR(d.[arrival_month]), MONTH(d.[arrival_month]), 1) AS arrival_month, CAST(SUM(d.[order_qty]) AS DECIMAL(18,3)) AS inbound_deficit FROM [analytics].[deficit_proposal] d WHERE d.[scenario_id] = @scenario_id AND d.[arrival_month] >= @from_month AND d.[arrival_month] < @to_month GROUP BY d.[1c_id], d.[code], DATEFROMPARTS(YEAR(d.[arrival_month]), MONTH(d.[arrival_month]), 1) ), -- 4) Прогноз спроса по месяцам forecast AS ( SELECT f.[1c_id], f.[code], DATEFROMPARTS(YEAR(f.[month]), MONTH(f.[month]), 1) AS arrival_month, CAST(SUM(f.[value]) AS DECIMAL(18,3)) AS forecast_demand FROM [analytics].[forecast] f WHERE f.[scenario_id] = @scenario_id AND f.[month] >= @from_month AND f.[month] < @to_month GROUP BY f.[1c_id], f.[code], DATEFROMPARTS(YEAR(f.[month]), MONTH(f.[month]), 1) ), -- 5) Объединим каркас всех SKU × месяцы горизонта sku_calendar AS ( SELECT DISTINCT n.[1c_id], n.[code], m.m AS arrival_month FROM [pbi].[nomenclature] n CROSS JOIN months m ), base_union AS ( SELECT c.[1c_id], c.[code], c.[arrival_month], COALESCE(op.opening_qty, 0) AS opening_qty, COALESCE(ic.inbound_confirmed, 0) AS inbound_confirmed, COALESCE(idf.inbound_deficit, 0) AS inbound_deficit, COALESCE(fc.forecast_demand, 0) AS forecast_demand FROM sku_calendar c LEFT JOIN opening op ON op.[1c_id]=c.[1c_id] AND op.[code]=c.[code] AND op.[arrival_month]=@from_month LEFT JOIN inbound_confirmed ic ON ic.[1c_id]=c.[1c_id] AND ic.[code]=c.[code] AND ic.[arrival_month]=c.[arrival_month] LEFT JOIN inbound_deficit idf ON idf.[1c_id]=c.[1c_id] AND idf.[code]=c.[code] AND idf.[arrival_month]=c.[arrival_month] LEFT JOIN forecast fc ON fc.[1c_id]=c.[1c_id] AND fc.[code]=c.[code] AND fc.[arrival_month]=c.[arrival_month] WHERE c.[arrival_month] >= @from_month AND c.[arrival_month] < @to_month ), -- 6) Расчёт rolling opening/closing по месяцам projected AS ( SELECT @scenario_id AS scenario_id, b.[1c_id], b.[code], b.[arrival_month], -- opening: для первого месяца берем opening_qty из "opening", далее — прошлый closing CAST( CASE WHEN b.[arrival_month] = @from_month THEN b.[opening_qty] ELSE 0 END AS DECIMAL(18,3)) AS opening_qty, b.[inbound_confirmed], b.[inbound_deficit], b.[forecast_demand] FROM base_union b ) -- Вставка построчно с расчетом closing через окно INSERT INTO [analytics].[stock_plan_by_arrival] ([scenario_id],[arrival_month],[1c_id],[code], [opening_qty],[inbound_confirmed],[inbound_deficit],[forecast_demand],[closing_qty],[updated_at]) SELECT p.scenario_id, p.arrival_month, p.[1c_id], p.[code], -- opening по месяцу = LAG(closing) OVER (по SKU упорядочено по месяцу), для первого — opening_qty CAST( COALESCE( LAG( closing_calc ) OVER (PARTITION BY p.[1c_id], p.[code] ORDER BY p.arrival_month), p.opening_qty ) AS DECIMAL(18,3)) AS opening_qty, p.inbound_confirmed, p.inbound_deficit, p.forecast_demand, -- closing = opening + inbound_confirmed + inbound_deficit - forecast CAST( ( COALESCE( LAG( closing_calc ) OVER (PARTITION BY p.[1c_id], p.[code] ORDER BY p.arrival_month), p.opening_qty) + p.inbound_confirmed + p.inbound_deficit - p.forecast_demand ) AS DECIMAL(18,3) ) AS closing_qty, SYSUTCDATETIME() FROM ( -- промежуточное вычисление closing для использования в LAG SELECT scenario_id, [1c_id], [code], arrival_month, opening_qty, inbound_confirmed, inbound_deficit, forecast_demand, CAST(opening_qty + inbound_confirmed + inbound_deficit - forecast_demand AS DECIMAL(18,3)) AS closing_calc FROM projected ) p OPTION (MAXRECURSION 0); END GO /****** Object: StoredProcedure [analytics].[sp_report_ROI] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [analytics].[sp_report_ROI] AS BEGIN WITH base AS( SELECT g.g, n.Производитель, d.place_month, --SELECT SUM(d.order_qty * n.[Цена учетная, руб]) AS Deficit, -- средний %ТН, защита от деления на 0 SUM(a.[%ТН год, руб.] * d.order_qty * n.[Цена учетная, руб]) / NULLIF(SUM(d.order_qty * n.[Цена учетная, руб]), 0) AS [%ТН средн] FROM [analytics].[deficit_proposal] d INNER JOIN pbi.nomenclature n ON n.[1c_id] = d.[1c_id] INNER JOIN [analytics].[аналитика за 365 дн.] a ON a.[1c_id] = d.[1c_id] INNER JOIN pbi.groups g ON g.[1c_id] = n.[1c_group] WHERE --d.place_month IN ('2025-10-01','2025-11-01') --d.place_month <= '2026-09-01' d.scenario_id = 4 AND n.cenovaya_gruppa = 'Валютная' --AND a.[%ТН год, руб.] > 0.7 GROUP BY g.g, n.Производитель, d.place_month HAVING SUM(d.order_qty * n.[Цена учетная, руб]) > 2000 ) SELECT b.* , b.[%ТН средн] * isnull( roi.ROI_norm, 1.36) AS [%ROI заказа] , isnull( roi.[ROI_norm], 1.36) AS [ROI normalized] , b.[%ТН средн] * isnull( roi.ROI_norm, 1.36) * b.Deficit as [ROI руб] , isnull(roi.n_percent, 0.3) as n_percent , isnull(roi.n_days, 1) n_days , isnull(roi.m_percent, 0.7) m_percent , isnull(roi. m_days, 60 ) m_days FROM base b LEFT JOIN [analytics].[manufacturers] roi ON roi.[manufacturer] = b.Производитель ORDER BY [%ROI заказа] DESC, b.g, Deficit DESC; /****** Script for SelectTopNRows command from SSMS ******/ SELECT --[id] --,[scenario_id] --[g] --,[manufacturer] --,[place_month] --, FORMAT([place_month], 'yy-MM') as 'Дата платежа' ,sum([deficit]) as 'Сумма платежа' --,[pay_days] --,[percent] --,[created_at] FROM [mag_pbi].[analytics].[deficit_money_request] GROUP BY FORMAT([place_month], 'yy-MM') ORDER BY FORMAT([place_month], 'yy-MM') ASC SELECT sum([deficit]) as 'Платежи в 2026' FROM [mag_pbi].[analytics].[deficit_money_request] WHERE FORMAT([place_month], 'yy-MM') < '27-01' ------ SELECT t.month as month, sum(t.Выручка) as revenue, sum(t.[Сумм. учет]) as uchet FROM ( SELECT --,[1c_id] a.[%ТН год, руб.] ,a.[code] ,[month] , value as 'Штуки' , [value] * n.[Цена учетная, руб] as 'Сумм. учет' , [value] * n.[Цена учетная, руб] * ( 1 + a.[%ТН год, руб.] ) as 'Выручка' --, a. * FROM [mag_pbi].[analytics].[forecast] f INNER JOIN analytics.[аналитика за 365 дн.] a ON a.[1c_id] = f.[1c_id] INNER JOIN pbi.nomenclature n ON a.[1c_id] = n.[1c_id] WHERE scenario_id = 4 AND a.[%ТН год, руб.] > 0 ) as t GROUP BY t.month ORDER BY t.month asc DECLARE @pathPattern nvarchar(400) =N'Кружево%' -- например: N'Бусины | Под жемчуг | На бобинах%' ------------------------------------------------------------- -- 1. SKU внутри нужного path ------------------------------------------------------------- ;WITH sku_in_group AS ( SELECT a.[1c_id] , a.[Code] AS code , g.[path] , a.[Оплаченный остаток] AS PaidCapital -- руб , a.[Рентабельность остатка / год назад] AS RoicPast -- твой показатель за прошлый год FROM [mag_pbi].[analytics].[аналитика за 365 дн.] a INNER JOIN [mag_pbi].[pbi].[nomenclature] n ON n.[1c_id] = a.[1c_id] INNER JOIN [mag_pbi].[pbi].[groups] g ON g.[1c_id] = n.[1c_group] WHERE g.[path] LIKE @pathPattern ) ------------------------------------------------------------- -- 2. Итог по группе (взвешенная рентабельность) ------------------------------------------------------------- SELECT @pathPattern AS [Фильтр path] --, MIN(path) AS [Пример path] , SUM(PaidCapital) AS [Оплаченный остаток всего, руб] , CASE WHEN SUM(PaidCapital) > 0 THEN SUM(ISNULL(PaidCapital,0) * ISNULL(RoicPast,0)) / SUM(PaidCapital) ELSE NULL END AS [Рентабельность остатка / год назад, %] FROM sku_in_group; ------------------------------------------------------------- -- 3. Детализация по SKU для этой же группы ------------------------------------------------------------- /*SELECT path , code , PaidCapital AS [Оплаченный остаток, руб] , RoicPast AS [Рентабельность остатка / год назад, %] FROM sku_in_group ORDER BY path, code;*/ SET NOCOUNT ON; DECLARE @sumPaid decimal(38,6) , @sumWeightedPast decimal(38,6) , @sumWeightedFuture decimal(38,6) , @roicPastTotal decimal(38,6) , @roicFutureTotal decimal(38,6); /* 1. Считаем суммы по всем SKU */ SELECT @sumPaid = SUM(CAST(ISNULL([Оплаченный остаток], 0.0) AS decimal(38,6))) , @sumWeightedPast = SUM( CAST(ISNULL([Оплаченный остаток], 0.0) AS decimal(38,6)) * CAST(ISNULL([Рентабельность остатка / год назад], 0.0) AS decimal(38,6)) ) , @sumWeightedFuture = SUM( CAST(ISNULL([Оплаченный остаток], 0.0) AS decimal(38,6)) * CAST(ISNULL([Рентабельность остатка / будущий год], 0.0) AS decimal(38,6)) ) FROM [analytics].[аналитика за 365 дн.]; /* 2. Итоговые рентабельности (в процентах) */ SET @roicPastTotal = CASE WHEN @sumPaid > 0 THEN @sumWeightedPast / @sumPaid ELSE NULL END; SET @roicFutureTotal = CASE WHEN @sumPaid > 0 THEN @sumWeightedFuture / @sumPaid ELSE NULL END; /* 3. Возвращаем результат */ SELECT @sumPaid AS [Оплаченный остаток всего, руб] , @roicPastTotal AS [Рентабельность остатка / год назад всего, %] , @roicFutureTotal AS [Рентабельность остатка / будущий год всего, %]; END GO /****** Object: StoredProcedure [analytics].[sp_report_ROI_подробно] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE procedure [analytics].[sp_report_ROI_подробно] as BEGIN --------------------------------------------------------- -- 0. Параметры дат: 12 полных месяцев НАЗАД --------------------------------------------------------- DECLARE @today date = CAST(GETDATE() AS date); DECLARE @lastFullMonth date; DECLARE @firstMonthStart date; DECLARE @curMonthStart date; -- последний полный месяц (месяц до текущего дня) SET @lastFullMonth = EOMONTH(DATEADD(month, -1, @today)); -- первый из 12 полных месяцев SET @firstMonthStart = DATEADD( month, -11, DATEFROMPARTS(YEAR(@lastFullMonth), MONTH(@lastFullMonth), 1) ); SET @curMonthStart = @firstMonthStart; --------------------------------------------------------- -- 1. Список месяцев (#months) --------------------------------------------------------- IF OBJECT_ID('tempdb..#months') IS NOT NULL DROP TABLE #months; CREATE TABLE #months ( MonthStart date NOT NULL PRIMARY KEY ); WHILE @curMonthStart <= DATEFROMPARTS(YEAR(@lastFullMonth), MONTH(@lastFullMonth), 1) BEGIN INSERT INTO #months (MonthStart) VALUES (@curMonthStart); SET @curMonthStart = DATEADD(month, 1, @curMonthStart); END; --------------------------------------------------------- -- 2. SKU (#s) – здесь укажи нужный код товара --------------------------------------------------------- IF OBJECT_ID('tempdb..#s') IS NOT NULL DROP TABLE #s; CREATE TABLE #s ( [1c_id] binary(16) NOT NULL, code nchar(11) NOT NULL ); INSERT INTO #s ([1c_id], code) SELECT n.[1c_id], n.code FROM pbi.nomenclature n WHERE n.code = N'УТ-00176242'; -- <=== поменяй при необходимости --------------------------------------------------------- -- 3. Внешние остатки (#ext_stock) – срезы на конец месяца --------------------------------------------------------- IF OBJECT_ID('tempdb..#ext_stock') IS NOT NULL DROP TABLE #ext_stock; CREATE TABLE #ext_stock ( Dt date NOT NULL, code nchar(11) NOT NULL, qty numeric(18,3) NOT NULL, CONSTRAINT PK_ext_stock PRIMARY KEY (Dt, code) ); INSERT INTO #ext_stock (Dt, code, qty) SELECT CAST(o.[Дата обновления] AS date) AS Dt, o.code, SUM(o.[Количество]) AS qty FROM analytics.[Внешние остатки] o JOIN #s s ON s.code = o.code GROUP BY CAST(o.[Дата обновления] AS date), o.code; --------------------------------------------------------- -- 4. Приходы (#incoming) – Закупка / Приход по месяцам -- БЕРЁМ ТОЛЬКО ПРИХОДЫ ВНУТРИ НАШИХ 12 МЕСЯЦЕВ --------------------------------------------------------- IF OBJECT_ID('tempdb..#incoming') IS NOT NULL DROP TABLE #incoming; CREATE TABLE #incoming ( MonthStart date NOT NULL, -- месяц прихода (1-е число) code nchar(11) NOT NULL, qty numeric(18,3) NOT NULL, CONSTRAINT PK_incoming PRIMARY KEY (MonthStart, code) ); INSERT INTO #incoming (MonthStart, code, qty) SELECT DATEFROMPARTS(YEAR(s.[Период]), MONTH(s.[Период]), 1) AS MonthStart, n.code, SUM(s.[Количество]) AS qty FROM pbiProd.[СводныйСебестоимость Для PBI] s JOIN pbi.nomenclature n ON n.[1c_id] = s.[1c_id] JOIN #s sfilter ON sfilter.code = n.code WHERE s.[Статья] = N'Закупка' AND s.[Вид операции] = N'Приход' AND s.[Период] >= @firstMonthStart -- отключаем старые приходы GROUP BY DATEFROMPARTS(YEAR(s.[Период]), MONTH(s.[Период]), 1), n.code; --------------------------------------------------------- -- 5. Части платежей по каждому приходу (#pay_parts) -- (1-й и 2-й платёж по производителю, проценты как ДОЛИ) --------------------------------------------------------- IF OBJECT_ID('tempdb..#pay_parts') IS NOT NULL DROP TABLE #pay_parts; CREATE TABLE #pay_parts ( MonthStart date NOT NULL, -- месяц прихода (ключ к #incoming) code nchar(11) NOT NULL, pay_date date NOT NULL, -- дата платежа amount numeric(18,2) NOT NULL ); -- первый платёж (n) INSERT INTO #pay_parts (MonthStart, code, pay_date, amount) SELECT inc.MonthStart, inc.code, DATEADD(day, man.n_days - 90, EOMONTH(inc.MonthStart)) AS pay_date, inc.qty * n.[Цена учетная, руб] * man.n_percent AS amount FROM #incoming inc JOIN pbi.nomenclature n ON n.code = inc.code JOIN analytics.manufacturers man ON man.[manufacturer] = n.Производитель WHERE man.n_percent IS NOT NULL AND man.n_percent <> 0; -- второй платёж (m) INSERT INTO #pay_parts (MonthStart, code, pay_date, amount) SELECT inc.MonthStart, inc.code, DATEADD(day, man.m_days - 90, EOMONTH(inc.MonthStart)) AS pay_date, inc.qty * n.[Цена учетная, руб] * man.m_percent AS amount FROM #incoming inc JOIN pbi.nomenclature n ON n.code = inc.code JOIN analytics.manufacturers man ON man.[manufacturer] = n.Производитель WHERE man.m_percent IS NOT NULL AND man.m_percent <> 0; --------------------------------------------------------- -- 6. Платежи по месяцам (#payments) – для колонки [платеж] --------------------------------------------------------- IF OBJECT_ID('tempdb..#payments') IS NOT NULL DROP TABLE #payments; CREATE TABLE #payments ( MonthStart date NOT NULL, -- месяц платежа (1-е число) code nchar(11) NOT NULL, amount numeric(18,2) NOT NULL, CONSTRAINT PK_payments PRIMARY KEY (MonthStart, code) ); INSERT INTO #payments (MonthStart, code, amount) SELECT DATEFROMPARTS(YEAR(p.pay_date), MONTH(p.pay_date), 1) AS MonthStart, p.code, SUM(p.amount) AS amount FROM #pay_parts p GROUP BY DATEFROMPARTS(YEAR(p.pay_date), MONTH(p.pay_date), 1), p.code; --------------------------------------------------------- -- 7. Обязательства по месяцам (#obligations) -- Считаем только по приходам (#incoming) --------------------------------------------------------- IF OBJECT_ID('tempdb..#obligations') IS NOT NULL DROP TABLE #obligations; CREATE TABLE #obligations ( MonthStart date NOT NULL, -- месяц, на который считаем долг code nchar(11) NOT NULL, obligation numeric(18,2) NOT NULL, CONSTRAINT PK_obligations PRIMARY KEY (MonthStart, code) ); ;WITH ObligRows AS ( SELECT m.MonthStart, inc.code, CASE -- если месяц ещё до прихода товара – долга нет WHEN EOMONTH(m.MonthStart) < EOMONTH(inc.MonthStart) THEN 0 ELSE CASE WHEN full_sum - paid_to_month > 0 THEN full_sum - paid_to_month ELSE 0 END END AS ObligationPerIncoming FROM #months m JOIN #incoming inc ON 1 = 1 -- каждая пара (месяц, приход) JOIN pbi.nomenclature n2 ON n2.code = inc.code JOIN analytics.manufacturers man2 ON man2.[manufacturer] = n2.Производитель CROSS APPLY ( SELECT inc.qty * n2.[Цена учетная, руб] AS full_sum, ( -- оплачено к концу месяца m.MonthStart (по обоим платежам) (CASE WHEN man2.n_percent IS NOT NULL AND EOMONTH(m.MonthStart) >= DATEADD(day, man2.n_days - 90, EOMONTH(inc.MonthStart)) THEN inc.qty * n2.[Цена учетная, руб] * man2.n_percent ELSE 0 END) + (CASE WHEN man2.m_percent IS NOT NULL AND EOMONTH(m.MonthStart) >= DATEADD(day, man2.m_days - 90, EOMONTH(inc.MonthStart)) THEN inc.qty * n2.[Цена учетная, руб] * man2.m_percent ELSE 0 END) ) AS paid_to_month ) calc ) INSERT INTO #obligations (MonthStart, code, obligation) SELECT MonthStart, code, SUM(ObligationPerIncoming) AS obligation FROM ObligRows GROUP BY MonthStart, code; --------------------------------------------------------- -- 8. ТН по месяцам (#tn_monthly) из Продажи_Учёт_Маржа_по_дням --------------------------------------------------------- IF OBJECT_ID('tempdb..#tn_monthly') IS NOT NULL DROP TABLE #tn_monthly; CREATE TABLE #tn_monthly ( MonthStart date NOT NULL, code nchar(11) NOT NULL, tn_amount numeric(18,2) NOT NULL, CONSTRAINT PK_tn_monthly PRIMARY KEY (MonthStart, code) ); INSERT INTO #tn_monthly (MonthStart, code, tn_amount) SELECT DATEFROMPARTS(YEAR(p.[d]), MONTH(p.[d]), 1) AS MonthStart, p.[Code], SUM(p.[Торговая надбавка]) AS tn_amount FROM [mag_pbi].[analytics].[Продажи_Учёт_Маржа_по_дням] p JOIN #s s ON s.code = p.[Code] WHERE p.[d] >= @firstMonthStart AND p.[d] <= @lastFullMonth GROUP BY DATEFROMPARTS(YEAR(p.[d]), MONTH(p.[d]), 1), p.[Code]; --------------------------------------------------------- -- 9. Финальный SELECT ПО МЕСЯЦАМ (прошлый год) --------------------------------------------------------- IF OBJECT_ID('tempdb..#month_plan') IS NOT NULL DROP TABLE #month_plan; SELECT s.[1c_id], s.code, n.Производитель, n.[Цена учетная, руб], n.[Цена учетная, руб]*(ISNULL(intStock.quantity, 0) + ISNULL(ext.qty, 0)) AS [Остаток учетка руб], man.n_percent, man.n_days, man.m_percent, man.m_days, RIGHT('0' + CAST(MONTH(m.MonthStart) AS varchar(2)), 2) + '-' + CAST(YEAR(m.MonthStart) AS varchar(4)) AS [месяц], -- MM-YYYY (текст) m.MonthStart AS [MonthStart], -- реальная дата месяца ISNULL(intStock.quantity, 0) + ISNULL(ext.qty, 0) AS [остаток], -- шт ISNULL(inc.qty, 0) AS [приход], -- шт ISNULL(pay.amount, 0) AS [платеж], -- руб ISNULL(ob.obligation, 0) AS [Обязательства],-- руб CAST( CASE WHEN p.paid_raw < 0 THEN 0 ELSE p.paid_raw END AS numeric(18,2) ) AS [Оплаченный остаток], -- руб ISNULL(tn.tn_amount, 0) AS [ТН], -- торговая надбавка за месяц, руб CAST( CASE WHEN p.paid_raw < 0 THEN 0 ELSE p.paid_raw END * DAY(EOMONTH(m.MonthStart)) AS numeric(18,2) ) AS [рубли-дни] -- оплаченный остаток × дней в месяце INTO #month_plan FROM #months m CROSS JOIN #s s OUTER APPLY ( SELECT TOP (1) w1.quantity FROM pbi.[w_ostatok_da_net] w1 WHERE w1._IDRREF = s.[1c_id] AND w1.dt <= EOMONTH(m.MonthStart) ORDER BY w1.dt DESC ) AS intStock LEFT JOIN #ext_stock ext ON ext.code = s.code AND ext.Dt = EOMONTH(m.MonthStart) LEFT JOIN #incoming inc ON inc.code = s.code AND inc.MonthStart = m.MonthStart LEFT JOIN pbi.nomenclature n ON n.code = s.code LEFT JOIN analytics.manufacturers man ON man.[manufacturer] = n.Производитель LEFT JOIN #payments pay ON pay.code = s.code AND pay.MonthStart = m.MonthStart LEFT JOIN #obligations ob ON ob.code = s.code AND ob.MonthStart = m.MonthStart LEFT JOIN #tn_monthly tn ON tn.code = s.code AND tn.MonthStart = m.MonthStart CROSS APPLY ( -- сырые оплаченные рубли (до обрезки в 0) SELECT (ISNULL(intStock.quantity, 0) + ISNULL(ext.qty, 0)) * ISNULL(n.[Цена учетная, руб], 0) - ISNULL(ob.obligation, 0) AS paid_raw ) p ORDER BY m.MonthStart; -- помесячная картина прошлого SELECT * FROM #month_plan; --------------------------------------------------------- -- 10. Рентабельность за прошлый год (ROIC как было) --------------------------------------------------------- DECLARE @roic_past numeric(38,6); DECLARE @tn_year numeric(38,6); DECLARE @ruble_days_year numeric(38,6); SELECT @tn_year = SUM(t.[ТН]), @ruble_days_year = SUM(t.[рубли-дни]) FROM #month_plan t; SET @roic_past = CASE WHEN @ruble_days_year > 0 THEN @tn_year * 365.0 / @ruble_days_year * 100.0 ELSE NULL END; --------------------------------------------------------- -- 10a. Рентабельность по остатку В РУБЛЯХ (год и квартал назад) -- ТН / средний остаток учетка руб --------------------------------------------------------- DECLARE @rent_cap_year numeric(38,6); DECLARE @rent_cap_quarter numeric(38,6); -- год: средний Остаток учетка руб по всем 12 месяцам DECLARE @avg_cap_year numeric(38,6); SELECT @avg_cap_year = AVG(NULLIF(t.[Остаток учетка руб], 0.0)) FROM #month_plan t; IF @avg_cap_year IS NOT NULL AND @avg_cap_year > 0 AND @tn_year IS NOT NULL SET @rent_cap_year = @tn_year / @avg_cap_year; ELSE SET @rent_cap_year = NULL; -- квартал: последние 3 месяца окна DECLARE @q_start date = DATEADD( month, -2, DATEFROMPARTS(YEAR(@lastFullMonth), MONTH(@lastFullMonth), 1) ); DECLARE @tn_q numeric(38,6); DECLARE @avg_cap_q numeric(38,6); SELECT @tn_q = SUM(t.[ТН]), @avg_cap_q = AVG(NULLIF(t.[Остаток учетка руб], 0.0)) FROM #month_plan t WHERE t.MonthStart >= @q_start; IF @avg_cap_q IS NOT NULL AND @avg_cap_q > 0 AND @tn_q IS NOT NULL SET @rent_cap_quarter = @tn_q / @avg_cap_q; ELSE SET @rent_cap_quarter = NULL; --------------------------------------------------------- -- 11. Рентабельность остатка на будущий год (ROIC вперёд) --------------------------------------------------------- -- 11.1. Текущий SKU и его продажи / день DECLARE @sku_1c_id binary(16); SELECT TOP(1) @sku_1c_id = [1c_id] FROM #s; DECLARE @sales_per_day numeric(38,6); -- Продажи шт / день DECLARE @sold_year numeric(38,6); -- Продано шт за последние 12 мес -- берём скорость продаж из аналитики за 365 дней (если есть) SELECT @sales_per_day = a.[Продажи шт / день] FROM [mag_pbi].[analytics].[аналитика за 365 дн.] a WHERE a.[1c_id] = @sku_1c_id; -- продано шт за наши 12 месяцев (по себестоимости) SELECT @sold_year = SUM(s.[Количество]) FROM pbiProd.[СводныйСебестоимость Для PBI] s WHERE s.[1c_id] = @sku_1c_id AND s.[Статья] = N'Реализация' AND s.[Период] >= @firstMonthStart AND s.[Период] <= @lastFullMonth; IF (@sales_per_day IS NULL OR @sales_per_day = 0) AND @sold_year IS NOT NULL BEGIN -- fallback, если ещё не прогоняли sp_create_analytics_365 SET @sales_per_day = @sold_year / 365.0; END; -- 11.2. Маржа на штуку по истории DECLARE @tn_per_unit numeric(38,6); SET @tn_per_unit = CASE WHEN @sold_year IS NOT NULL AND @sold_year > 0 THEN @tn_year / @sold_year ELSE NULL END; -- 11.3. Текущий оплаченный остаток, остаток шт и остаток учетка руб (последний месяц окна) DECLARE @q_stock numeric(18,6); -- текущий остаток шт DECLARE @paid_stock_today numeric(18,6); -- оплаченный остаток в руб DECLARE @stock_rub_today numeric(18,6); -- остаток учетка руб на конец окна SELECT TOP(1) @q_stock = [остаток], @paid_stock_today = [Оплаченный остаток], @stock_rub_today = [Остаток учетка руб] FROM #month_plan ORDER BY MonthStart DESC; -- последний из 12 месяцев = @lastFullMonth -- 11.4. Сколько успеем продать за будущий год и какая будет ТН DECLARE @q_future numeric(18,6); -- сколько штук реально успеем продать за год DECLARE @tn_future numeric(18,6); -- ожидаемая ТН за будущий год IF @sales_per_day IS NOT NULL AND @sales_per_day > 0 BEGIN DECLARE @max_sell_1y numeric(18,6); SET @max_sell_1y = @sales_per_day * 365.0; SET @q_future = CASE WHEN @q_stock IS NULL THEN 0 WHEN @q_stock <= @max_sell_1y THEN @q_stock ELSE @max_sell_1y END; END ELSE BEGIN SET @q_future = 0; END; IF @tn_per_unit IS NOT NULL SET @tn_future = @tn_per_unit * @q_future; ELSE SET @tn_future = NULL; -- 11.5. Будущие рубли-дни и ROIC вперёд DECLARE @days_to_sell numeric(18,6); DECLARE @ruble_days_future numeric(18,6); DECLARE @roic_future numeric(38,6); IF @sales_per_day IS NOT NULL AND @sales_per_day > 0 AND @q_stock IS NOT NULL SET @days_to_sell = @q_stock / @sales_per_day; ELSE SET @days_to_sell = NULL; IF @days_to_sell IS NULL OR @paid_stock_today IS NULL OR @paid_stock_today <= 0 OR @tn_future IS NULL BEGIN SET @roic_future = NULL; END ELSE BEGIN IF @days_to_sell >= 365.0 -- остаток будет лежать весь год SET @ruble_days_future = @paid_stock_today * 365.0; ELSE -- остаток линейно уходит до нуля за days_to_sell SET @ruble_days_future = @paid_stock_today * @days_to_sell / 2.0; IF @ruble_days_future > 0 SET @roic_future = @tn_future * 365.0 / @ruble_days_future * 100.0; ELSE SET @roic_future = NULL; END; --------------------------------------------------------- -- 11.6. Рентабельность по остатку В РУБЛЯХ на будущий год -- (ТН_future / средний остаток учетка руб в горизонте) --------------------------------------------------------- DECLARE @rent_cap_future numeric(38,6); IF @stock_rub_today IS NULL OR @stock_rub_today <= 0 OR @q_stock IS NULL OR @q_stock <= 0 OR @q_future IS NULL OR @q_future <= 0 OR @tn_future IS NULL BEGIN SET @rent_cap_future = NULL; END ELSE BEGIN DECLARE @avg_cap_future numeric(38,6); -- считаем, что капитал уходит линейно пропорционально количеству: -- капитал "на продажу" = stock_rub_today * (q_future / q_stock) -- средний капитал = stock_rub_today - 0.5 * капитал_на_продажу SET @avg_cap_future = @stock_rub_today * (1.0 - (@q_future / @q_stock) / 2.0); IF @avg_cap_future > 0 SET @rent_cap_future = @tn_future / @avg_cap_future; ELSE SET @rent_cap_future = NULL; END; --------------------------------------------------------- -- 11.7. Таблица будущего по месяцам (#future_plan) — как было --------------------------------------------------------- IF OBJECT_ID('tempdb..#future_plan') IS NOT NULL DROP TABLE #future_plan; CREATE TABLE #future_plan ( PeriodStart date, PeriodEnd date, DaysInPeriod int, QtyStart numeric(18,6), Sold numeric(18,6), QtyEnd numeric(18,6), PaidCapitalAvg numeric(18,6), RubleDays numeric(18,6), TN_period numeric(18,6), ROIC_period numeric(38,6) ); DECLARE @f_start date, @f_end date, @days int, @rem_qty numeric(18,6), @qty_start numeric(18,6), @qty_end numeric(18,6), @sold numeric(18,6), @capital_start numeric(18,6), @capital_end numeric(18,6), @capital_avg numeric(18,6), @tn_period numeric(18,6), @ruble_days_m numeric(18,6), @roic_m numeric(38,6), @cum_days int; SET @rem_qty = ISNULL(@q_stock, 0); SET @f_start = @today; SET @cum_days = 0; WHILE @cum_days < 365 AND @rem_qty > 0 AND @sales_per_day IS NOT NULL AND @sales_per_day > 0 BEGIN -- конец периода = конец месяца, в котором f_start SET @f_end = EOMONTH(@f_start); SET @days = DATEDIFF(day, @f_start, @f_end) + 1; -- не выходим за 365 дней горизонта IF @cum_days + @days > 365 BEGIN SET @days = 365 - @cum_days; SET @f_end = DATEADD(day, @days - 1, @f_start); END; SET @qty_start = @rem_qty; DECLARE @can_sell numeric(18,6); SET @can_sell = @sales_per_day * @days; SET @sold = CASE WHEN @rem_qty <= @can_sell THEN @rem_qty ELSE @can_sell END; SET @qty_end = @qty_start - @sold; IF @q_stock IS NOT NULL AND @q_stock > 0 AND @paid_stock_today IS NOT NULL BEGIN SET @capital_start = @paid_stock_today * (@qty_start / @q_stock); SET @capital_end = @paid_stock_today * (@qty_end / @q_stock); END ELSE BEGIN SET @capital_start = 0; SET @capital_end = 0; END; SET @capital_avg = (@capital_start + @capital_end) / 2.0; IF @tn_per_unit IS NOT NULL SET @tn_period = @tn_per_unit * @sold; ELSE SET @tn_period = NULL; SET @ruble_days_m = @capital_avg * @days; IF @ruble_days_m > 0 AND @tn_period IS NOT NULL SET @roic_m = @tn_period * 365.0 / @ruble_days_m * 100.0; ELSE SET @roic_m = NULL; INSERT INTO #future_plan ( PeriodStart, PeriodEnd, DaysInPeriod, QtyStart, Sold, QtyEnd, PaidCapitalAvg, RubleDays, TN_period, ROIC_period ) VALUES ( @f_start, @f_end, @days, @qty_start, @sold, @qty_end, @capital_avg, @ruble_days_m, @tn_period, @roic_m ); SET @rem_qty = @qty_end; SET @cum_days = @cum_days + @days; SET @f_start = DATEADD(day, 1, @f_end); IF @cum_days >= 365 BREAK; END; --------------------------------------------------------- -- 12. Итог: прошлое и будущее + рентабельность по остатку (руб) --------------------------------------------------------- SELECT @roic_past AS [ROIC за год назад], @roic_future AS [ROIC на будущий год], @rent_cap_year AS [Рентабельность по остатку (руб) / год назад], @rent_cap_quarter AS [Рентабельность по остатку (руб) / квартал назад], @rent_cap_future AS [Рентабельность по остатку (руб) / будущий год]; -- Таблица будущего по месяцам / периодам (как было) SELECT * FROM #future_plan ORDER BY PeriodStart; END GO /****** Object: StoredProcedure [analytics].[sp_run_deficit_all_skus] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [analytics].[sp_run_deficit_all_skus] @scenario_id INT as BEGIN DELETE FROM [analytics].[deficit_proposal] where scenario_id = @scenario_id EXEC [analytics].[sp_build_deficit_proposal] @scenario_id = @scenario_id, @group_path = N'', -- пусто = все группы @lead_time_m = 4, @cover_months = 6, @from_month = '2025-10-01', @to_month_excl = '2028-01-01', @debug = 0; -- чтобы не заспамить Messages END GO /****** Object: StoredProcedure [analytics].[sp_загрузка_прогноза_закупки] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ CREATE PROCEDURE [analytics].[sp_загрузка_прогноза_закупки] AS BEGIN SET NOCOUNT ON; IF OBJECT_ID('tempdb..#plan2026') IS NOT NULL DROP TABLE #plan2026; CREATE TABLE #plan2026 ( code nvarchar(50) NOT NULL, opt decimal(18,2) NULL, mp decimal(18,2) NULL, updated_by nvarchar(100) NULL ); -- уникальный индекс по коду, дубли игнорируем CREATE UNIQUE INDEX UX_plan2026_code ON #plan2026(code) WITH (IGNORE_DUP_KEY = ON); BULK INSERT #plan2026 FROM '\\192.168.35.3\admin3\Обмен\powerbi\plan2026.csv' WITH ( FIRSTROW = 2, -- пропускаем заголовок FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', CODEPAGE = '1251', -- или 1251, если файл не в UTF-8 TABLOCK ); -- Проверка SELECT COUNT(*) AS total_rows, COUNT(DISTINCT code) AS distinct_codes FROM #plan2026; -- Проверка SELECT TOP (20) * FROM #plan2026 SELECT month , avg([koef]) FROM [mag_pbi].[analytics].[seasonality_groups_summ_1] GROUP by month order by month ------------------------------------------------------------ -- 1. Средняя сезонность по месяцам → #Seasonality ------------------------------------------------------------ IF OBJECT_ID('tempdb..#Seasonality') IS NOT NULL DROP TABLE #Seasonality; SELECT [month] , koef = AVG([koef]) INTO #Seasonality FROM [mag_pbi].[analytics].[seasonality_groups_summ_1] GROUP BY [month]; ------------------------------------------------------------ -- 2. Почистить сценарий 8 (если нужно пересчитать) ------------------------------------------------------------ DELETE FROM [mag_pbi].[analytics].[forecast] WHERE scenario_id = 8; ------------------------------------------------------------ -- 3. Записать прогноз в forecast для scenario_id = 8 -- value = opt_месяц + mp_месяц ------------------------------------------------------------ INSERT INTO [mag_pbi].[analytics].[forecast] ( scenario_id , [1c_id] , [code] , [month] , [value] , [updated_at] , [updated_by] , [opt] , [mp] ) SELECT 8 AS scenario_id , n.[1c_id] , p.[code] , DATEFROMPARTS(2026, s.[month], 1) AS [month] , CAST( (p.opt * s.koef) + (p.mp * s.koef) AS decimal(18,3)) AS [value] , GETDATE() AS updated_at , p.[updated_by] AS updated_by , CAST(p.opt * s.koef AS decimal(18,3)) AS [opt] , CAST(p.mp * s.koef AS decimal(18,3)) AS [mp] FROM #plan2026 AS p INNER JOIN [mag_pbi].[pbi].[nomenclature] AS n ON n.[code] = p.[code] CROSS JOIN #Seasonality AS s; -- всего строк и разных кодов --EXEC [analytics].[sp_build_deficit_proposal] @scenario_id = 8 /* /****** Script for SelectTopNRows command from SSMS ******/ INSERT INTO [mag_pbi].[analytics].[forecast] ( scenario_id , [1c_id] , [code] , [month] , [value] , [updated_at] , [updated_by] , [opt] , [mp] ) SELECT 8 AS scenario_id ,[1c_id] ,[code] ,[month] ,[value] ,[updated_at] ,[updated_by] ,[opt] ,[mp] FROM [mag_pbi].[analytics].[forecast] WHERE scenario_id = 5 AND code not in (SELECT code FROM [mag_pbi].[analytics].[forecast] WHERE scenario_id = 8 ) */ --EXEC [analytics].[sp_fill_deficit_money_request] @scenario_id = 8 END GO /****** Object: StoredProcedure [analytics].[usp_CreateForecastBasesKs] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [analytics].[usp_CreateForecastBasesKs] AS BEGIN SET NOCOUNT ON; -- Удаляем вьюху, если существует IF OBJECT_ID('analytics.ForecastBasesKs', 'V') IS NOT NULL DROP VIEW analytics.ForecastBasesKs; -- Создаём заново EXEC(' CREATE VIEW [analytics].[ForecastBasesKs] AS WITH MaxDate AS ( SELECT MAX(Период) AS max_date FROM [pbi].[Себестоимость] WHERE Статья = ''реализация'' ), LastFullMonth AS ( SELECT YEAR(DATEADD(MONTH, -1, max_date)) AS last_year, MONTH(DATEADD(MONTH, -1, max_date)) AS last_month FROM MaxDate ), -- 1. Продажи по SKU × месяц Sales AS ( SELECT artic_id, YEAR(Период) AS Год, MONTH(Период) AS Месяц, SUM(Количество) AS total_sales FROM [pbi].[Себестоимость] WHERE Статья = ''реализация'' GROUP BY artic_id, YEAR(Период), MONTH(Период) ), -- 2. Дни в продаже Stock AS ( SELECT artic_id, YEAR(dt) AS Год, MONTH(dt) AS Месяц, SUM(CASE WHEN ostatok = 1 THEN 1 ELSE 0 END) AS days_available FROM [pbi].[w_ostatok_da_net] GROUP BY artic_id, YEAR(dt), MONTH(dt) ), -- 3. База Base AS ( SELECT s.artic_id, n.code, n.description, s.Год, s.Месяц, s.total_sales, st.days_available, sg.seasonal_koef, (s.total_sales / NULLIF(sg.seasonal_koef,0)) AS Normalized_sales, CASE WHEN st.days_available > 19 THEN 1 ELSE 0 END AS valid_month, CASE WHEN st.days_available > 19 THEN (s.total_sales / NULLIF(sg.seasonal_koef,0)) ELSE NULL END AS normalized_valid_sales FROM Sales s LEFT JOIN Stock st ON s.artic_id = st.artic_id AND s.Год = st.Год AND s.Месяц = st.Месяц JOIN [pbi].[nomenclature] n ON s.artic_id = n.artic_id JOIN [analytics].[seasonality_groups] sg ON n.[1c_group] = sg.group_1c_id AND s.Месяц = sg.month ), Windowed AS ( SELECT b.*, ROW_NUMBER() OVER (PARTITION BY b.artic_id ORDER BY (b.Год*100 + b.Месяц) DESC) AS rn_desc FROM Base b ), Aggregates AS ( SELECT w.artic_id, AVG(CASE WHEN rn_desc <= 12 THEN normalized_valid_sales END) AS Base_12M, CASE WHEN MIN(CASE WHEN rn_desc <= 3 THEN valid_month END) = 1 THEN AVG(CASE WHEN rn_desc <= 3 THEN normalized_valid_sales END) ELSE NULL END AS Base_3M FROM Windowed w CROSS JOIN LastFullMonth lm WHERE (w.Год*100 + w.Месяц) <= (lm.last_year*100 + lm.last_month) GROUP BY w.artic_id ), TrendData AS ( SELECT w.artic_id, ROW_NUMBER() OVER (PARTITION BY w.artic_id ORDER BY (w.Год*100 + w.Месяц)) - 1 AS t, LOG(w.normalized_valid_sales) AS ln_sales FROM Windowed w CROSS JOIN LastFullMonth lm WHERE (w.Год*100 + w.Месяц) > (lm.last_year*100 + lm.last_month - 200) AND (w.Год*100 + w.Месяц) <= (lm.last_year*100 + lm.last_month) AND w.normalized_valid_sales > 0 ), TrendAgg AS ( SELECT artic_id, COUNT(*) AS n_obs, EXP( (AVG(t*ln_sales) - AVG(t)*AVG(ln_sales)) / NULLIF(AVG(t*t) - AVG(t)*AVG(t),0) ) AS g_raw FROM TrendData GROUP BY artic_id HAVING COUNT(*) >= 6 ), TrendFinal AS ( SELECT artic_id, POWER( CASE WHEN POWER(g_raw, 12) < 0.7 THEN 0.7 WHEN POWER(g_raw, 12) > 1.5 THEN 1.5 ELSE POWER(g_raw, 12) END, 1.0/12 ) AS Ktrend FROM TrendAgg ), YoYpairs AS ( SELECT w.artic_id, (w.Год*100 + w.Месяц) AS ym, w.normalized_valid_sales AS v2, LAG(w.normalized_valid_sales, 12) OVER ( PARTITION BY w.artic_id ORDER BY (w.Год*100 + w.Месяц) ) AS v1 FROM Windowed w CROSS JOIN LastFullMonth lm WHERE (w.Год*100 + w.Месяц) <= (lm.last_year*100 + lm.last_month) ), YoYratios AS ( SELECT artic_id, (v2 / v1) AS ratio FROM YoYpairs WHERE v1 > 0 AND v2 > 0 ), YoYFinal AS ( SELECT DISTINCT artic_id, CASE WHEN PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY ratio) OVER (PARTITION BY artic_id) < 0.7 THEN 0.7 WHEN PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY ratio) OVER (PARTITION BY artic_id) > 1.5 THEN 1.5 ELSE PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY ratio) OVER (PARTITION BY artic_id) END AS Kgrowth_YoY, COUNT(ratio) OVER (PARTITION BY artic_id) AS cnt_pairs FROM YoYratios ), YoYFiltered AS ( SELECT artic_id, Kgrowth_YoY FROM YoYFinal WHERE cnt_pairs >= 3 ) SELECT n.artic_id, n.code, n.description, a.Base_12M, a.Base_3M, CASE WHEN a.Base_3M IS NOT NULL THEN a.Base_3M ELSE a.Base_12M END AS Base_Selected, tf.Ktrend, yf.Kgrowth_YoY FROM pbi.nomenclature n LEFT JOIN Aggregates a ON n.artic_id = a.artic_id LEFT JOIN TrendFinal tf ON n.artic_id = tf.artic_id LEFT JOIN YoYFiltered yf ON n.artic_id = yf.artic_id; '); END; GO /****** Object: StoredProcedure [analytics].[usp_InsertForecasts] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [analytics].[usp_InsertForecasts] AS BEGIN SET NOCOUNT ON; -- Удаляем старые прогнозы DELETE FROM analytics.forecast WHERE scenario_id IN (5, 6); -- Чистим временные таблицы IF OBJECT_ID('tempdb..#Params') IS NOT NULL DROP TABLE #Params; IF OBJECT_ID('tempdb..#Calendar') IS NOT NULL DROP TABLE #Calendar; -- #Params SELECT DATEFROMPARTS( YEAR(DATEADD(MONTH, -1, MAX(Период))), MONTH(DATEADD(MONTH, -1, MAX(Период))), 1 ) AS LastMonth INTO #Params FROM pbi.Себестоимость WHERE Статья = 'реализация'; -- #Calendar SELECT DATEFROMPARTS(YEAR(d), MONTH(d), 1) AS MonthStart INTO #Calendar FROM ( SELECT TOP (1000) DATEADD(MONTH, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)), (SELECT LastMonth FROM #Params)) AS d FROM master..spt_values ) x WHERE d <= '2026-12-01'; -- Вставка Trend (5) INSERT INTO analytics.forecast (scenario_id, [1c_id], code, [month], value, updated_at, updated_by) SELECT 5, n.[1c_id], f.code, c.MonthStart, CAST( ROUND( f.Base_Selected * sg.seasonal_koef * POWER(f.Ktrend, DATEDIFF(MONTH, p.LastMonth, c.MonthStart)), 0 ) AS numeric(18,0) ), GETDATE(), SUSER_SNAME() FROM analytics.ForecastBasesKs f JOIN pbi.nomenclature n ON f.artic_id = n.artic_id CROSS JOIN #Params p JOIN #Calendar c ON c.MonthStart > p.LastMonth JOIN analytics.seasonality_groups sg ON n.[1c_group] = sg.group_1c_id AND sg.[month] = MONTH(c.MonthStart) WHERE f.Base_Selected IS NOT NULL AND f.Ktrend IS NOT NULL; -- Вставка YoY (6) INSERT INTO analytics.forecast (scenario_id, [1c_id], code, [month], value, updated_at, updated_by) SELECT 6, n.[1c_id], f.code, c.MonthStart, CAST( ROUND( f.Base_Selected * sg.seasonal_koef * f.Kgrowth_YoY, 0 ) AS numeric(18,0) ), GETDATE(), SUSER_SNAME() FROM analytics.ForecastBasesKs f JOIN pbi.nomenclature n ON f.artic_id = n.artic_id CROSS JOIN #Params p JOIN #Calendar c ON c.MonthStart > p.LastMonth JOIN analytics.seasonality_groups sg ON n.[1c_group] = sg.group_1c_id AND sg.[month] = MONTH(c.MonthStart) WHERE f.Base_Selected IS NOT NULL AND f.Kgrowth_YoY IS NOT NULL; END; GO /****** Object: StoredProcedure [analytics].[Подготовка таблицы продаж к прогнозу] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [analytics].[Подготовка таблицы продаж к прогнозу] as BEGIN /* ========= ПАРАМЕТРЫ ========= */ DECLARE @FromDate date = '2023-01-01'; DECLARE @ToDate date = CAST(GETDATE() AS date); /* ========= ВСПОМОГАТЕЛЬНЫЕ: НЕДЕЛЯ С ПОНЕДЕЛЬНИКА ========= */ IF OBJECT_ID('tempdb..#dates') IS NOT NULL DROP TABLE #dates; WITH d AS ( SELECT @FromDate AS d UNION ALL SELECT DATEADD(day,1,d) FROM d WHERE d < @ToDate ) SELECT d AS [date], DATEADD(day, - (DATEPART(weekday,d) + @@DATEFIRST + 5) % 7, d) AS week_start INTO #dates FROM d OPTION (MAXRECURSION 0); CREATE INDEX IX_dates_week ON #dates(week_start); /* ========= 1) ПРОДАЖИ (только положительные) ========= */ IF OBJECT_ID('tempdb..#sales_raw') IS NOT NULL DROP TABLE #sales_raw; SELECT CAST(s.[Период] AS date) AS [date], s.[1c_id] AS sku_id, CAST(s.[КоличествоУпаковок] AS decimal(18,4)) AS qty INTO #sales_raw FROM [pbiProd].[СводныйСебестоимость Для PBI] s WHERE s.[Статья] = N'Реализация' AND s.[Вид операции] = N'Расход' AND s.[КоличествоУпаковок] > 0 AND s.[Период] >= @FromDate AND s.[Период] <= @ToDate; CREATE INDEX IX_sales_raw ON #sales_raw(sku_id, [date]); /* ========= 2) ФИЛЬТРУЕМ ПРОДАЖИ ПО НАЛИЧИЮ (ostatok=1 из pbi.w_ostatok_da_net) ========= */ IF OBJECT_ID('tempdb..#sales_clean_daily') IS NOT NULL DROP TABLE #sales_clean_daily; SELECT sr.sku_id, sr.[date], sr.qty INTO #sales_clean_daily FROM #sales_raw sr JOIN [pbi].[w_ostatok_da_net] a ON a.[_IDRREF] = sr.sku_id AND a.dt = sr.[date] AND a.ostatok = 1; CREATE INDEX IX_sales_clean_daily ON #sales_clean_daily(sku_id, [date]); /* ========= 3) АГРЕГАЦИЯ В НЕДЕЛИ ========= */ /* 3.1 Продажи по неделям */ IF OBJECT_ID('tempdb..#sales_weekly') IS NOT NULL DROP TABLE #sales_weekly; SELECT scd.sku_id, d.week_start, SUM(scd.qty) AS qty_week INTO #sales_weekly FROM #sales_clean_daily scd JOIN #dates d ON d.[date] = scd.[date] GROUP BY scd.sku_id, d.week_start; CREATE INDEX IX_sales_weekly ON #sales_weekly(sku_id, week_start); /* 3.2 Доля доступности по неделям (из pbi.w_ostatok_da_net) */ IF OBJECT_ID('tempdb..#avail_weekly') IS NOT NULL DROP TABLE #avail_weekly; SELECT a.[_IDRREF] AS sku_id, d.week_start, SUM(a.ostatok) AS days_available, COUNT(*) AS days_total, CAST(SUM(a.ostatok) * 1.0 / NULLIF(COUNT(*),0) AS decimal(6,4)) AS availability_rate INTO #avail_weekly FROM [pbi].[w_ostatok_da_net] a JOIN #dates d ON d.[date] = a.dt WHERE a.dt BETWEEN @FromDate AND @ToDate GROUP BY a.[_IDRREF], d.week_start; CREATE INDEX IX_avail_weekly ON #avail_weekly(sku_id, week_start); /* ========= 4) СКЛЕЙКА: оставляем недели без продаж, если товар был доступен ========= */ IF OBJECT_ID('tempdb..#weekly_base') IS NOT NULL DROP TABLE #weekly_base; SELECT COALESCE(sw.sku_id, aw.sku_id) AS sku_id, COALESCE(sw.week_start, aw.week_start) AS week_start, COALESCE(sw.qty_week, 0) AS qty_week, COALESCE(aw.availability_rate, 0) AS availability_rate INTO #weekly_base FROM #sales_weekly sw FULL JOIN #avail_weekly aw ON aw.sku_id = sw.sku_id AND aw.week_start = sw.week_start; CREATE INDEX IX_weekly_base ON #weekly_base(sku_id, week_start); /* ========= 5) МЕТАДАННЫЕ SKU (cat L1, minAvailableQty) ========= */ IF OBJECT_ID('tempdb..#sku_meta') IS NOT NULL DROP TABLE #sku_meta; SELECT n.[1c_id] AS sku_id, n.minAvailableQty, CAST(CASE WHEN CHARINDEX(N' | ', g.path) > 0 THEN LEFT(g.path, CHARINDEX(N' | ', g.path) - 1) ELSE g.path END AS nvarchar(200)) AS category_l1 INTO #sku_meta FROM [mag_pbi].[pbi].[nomenclature] n LEFT JOIN [mag_pbi].[pbi].[groups] g ON g.group_id = n.group_id; CREATE INDEX IX_sku_meta ON #sku_meta(sku_id); /* ========= 6) ВИТРИНА С ЛАГАМИ И ФИЧАМИ (analytics) ========= */ IF OBJECT_ID('analytics.sales_weekly_features', 'U') IS NOT NULL DROP TABLE analytics.sales_weekly_features; CREATE TABLE analytics.sales_weekly_features ( sku_id varbinary(16) NOT NULL, week_start date NOT NULL, qty_week decimal(18,4) NOT NULL, availability_rate decimal(6,4) NOT NULL, -- календарные year_num int NOT NULL, month_num tinyint NOT NULL, iso_week tinyint NOT NULL, quarter_num tinyint NOT NULL, dow_monday1 tinyint NOT NULL, -- справочники category_l1 nvarchar(200) NULL, minAvailableQty decimal(18,4) NULL, -- лаги lag_w1 decimal(18,4) NULL, lag_w2 decimal(18,4) NULL, lag_w4 decimal(18,4) NULL, lag_w12 decimal(18,4) NULL, lag_w26 decimal(18,4) NULL, lag_w52 decimal(18,4) NULL, -- скользящие средние ma4 decimal(18,4) NULL, ma12 decimal(18,4) NULL, created_at datetime2 NOT NULL DEFAULT sysutcdatetime(), CONSTRAINT PK_sales_weekly_features PRIMARY KEY (sku_id, week_start) ); WITH base AS ( SELECT wb.sku_id, wb.week_start, wb.qty_week, wb.availability_rate, YEAR(wb.week_start) AS year_num, MONTH(wb.week_start) AS month_num, DATEPART(ISO_WEEK, wb.week_start) AS iso_week, DATEPART(QUARTER, wb.week_start) AS quarter_num, 1 AS dow_monday1 FROM #weekly_base wb ), enriched AS ( SELECT b.*, m.category_l1, m.minAvailableQty FROM base b LEFT JOIN #sku_meta m ON m.sku_id = b.sku_id ), lags AS ( SELECT e.*, LAG(e.qty_week, 1) OVER (PARTITION BY e.sku_id ORDER BY e.week_start) AS lag_w1, LAG(e.qty_week, 2) OVER (PARTITION BY e.sku_id ORDER BY e.week_start) AS lag_w2, LAG(e.qty_week, 4) OVER (PARTITION BY e.sku_id ORDER BY e.week_start) AS lag_w4, LAG(e.qty_week, 12) OVER (PARTITION BY e.sku_id ORDER BY e.week_start) AS lag_w12, LAG(e.qty_week, 26) OVER (PARTITION BY e.sku_id ORDER BY e.week_start) AS lag_w26, LAG(e.qty_week, 52) OVER (PARTITION BY e.sku_id ORDER BY e.week_start) AS lag_w52, CAST(AVG(e.qty_week) OVER ( PARTITION BY e.sku_id ORDER BY e.week_start ROWS BETWEEN 4 PRECEDING AND 1 PRECEDING ) AS decimal(18,4)) AS ma4, CAST(AVG(e.qty_week) OVER ( PARTITION BY e.sku_id ORDER BY e.week_start ROWS BETWEEN 12 PRECEDING AND 1 PRECEDING ) AS decimal(18,4)) AS ma12 FROM enriched e ) INSERT INTO analytics.sales_weekly_features ( sku_id, week_start, qty_week, availability_rate, year_num, month_num, iso_week, quarter_num, dow_monday1, category_l1, minAvailableQty, lag_w1, lag_w2, lag_w4, lag_w12, lag_w26, lag_w52, ma4, ma12 ) SELECT sku_id, week_start, qty_week, availability_rate, year_num, month_num, iso_week, quarter_num, dow_monday1, category_l1, minAvailableQty, lag_w1, lag_w2, lag_w4, lag_w12, lag_w26, lag_w52, ma4, ma12 FROM lags; CREATE INDEX IX_sales_weekly_features_sku ON analytics.sales_weekly_features(sku_id, week_start); CREATE INDEX IX_sales_weekly_features_cat ON analytics.sales_weekly_features(category_l1, week_start); END GO /****** Object: StoredProcedure [dbo].[Расчет себестоимости 1 этап] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [dbo].[Расчет себестоимости 1 этап] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here exec sebest.[Заполнить себестоимость закупкой] exec sebest.[Заполнить себестоимость начальным остатком] DELETE FROM [pbi].[СебестоимостьПродажи] WHERE 1=1 END GO /****** Object: StoredProcedure [pbi].[migrate_groups] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: миграция регистров ВыручкаИСебестоимость продаж из двух баз -- ============================================= CREATE PROCEDURE [pbi].[migrate_groups] AS BEGIN DROP TABLE [pbi].groups SELECT * INTO [pbi].groups FROM [mag_pbi].[pbi].[groups_view] CREATE NONCLUSTERED INDEX [NonClusteredIndex-20190906-120551] ON [pbi].[groups] ( [group_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) --GO ALTER TABLE [mag_pbi].[pbi].groups ADD [план] float NULL; ALTER TABLE [mag_pbi].[pbi].groups ADD [first group] NVARCHAR(36) NULL; UPDATE [mag_pbi].[pbi].groups set [first group] = (SELECT group_id FROM [mag_pbi].[pbi].groups gg WHERE gg.g = g.g and gg._ParentIDRRef = '00000000-0000-0000-0000-000000000000' ) FROM [mag_pbi].[pbi].groups g CREATE NONCLUSTERED INDEX IX_groups__g ON [pbi].[groups] ([g]) INCLUDE ([group_id]); --CREATE NONCLUSTERED INDEX [1c_group_index] --ON [pbi].[nomenclature] ([1c_group]) END GO /****** Object: StoredProcedure [pbi].[migrate_max_year_quantity] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [pbi].[migrate_max_year_quantity] as BEGIN -- ДЕЛАЕМ ДВА ПОЛЯ -- max_year_quantity -- max_quarter_quantity IF NOT EXISTS ( SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'nomenclature' AND TABLE_SCHEMA='pbi' AND COLUMN_NAME = 'max_year_quantity' ) BEGIN ALTER TABLE mag_pbi.pbi.nomenclature ADD max_year_quantity NUMERIC(38,3) NULL; END UPDATE n SET n.max_year_quantity = ( SELECT MAX(quantity) FROM pbi.[w_ostatok_da_net] o WHERE o._IDRREF = n.[1c_id] AND o.dt >= DATEADD(year, -1, CAST(GETDATE() AS date)) ) FROM mag_pbi.pbi.nomenclature n --Нужно обязательно добавить регистр закупки, т.к. прием на склад идет не всегда всей партией товара ;WITH YearlyQuantity AS ( SELECT analitikaUchetaNomenklaturi.[_Fld20498RRef] AS [1c_id], SUM( CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189, 0x000001D5, 0x000001B0) THEN CASE [_Fld16345RRef] WHEN 0x970191967A54A8814BA45C6234640F68 THEN -[_Fld16361] ELSE [_Fld16361] END WHEN r._RecorderTRef = 0x0000020D THEN 0 WHEN r._RecorderTRef = 0x000001A1 THEN 0 ELSE 0 END ) AS total_quantity FROM mag_2019.dbo._AccumRg16344 r -- Регистр накопления Закупки LEFT JOIN [MAG_2019].[dbo].[_Reference160] AS analitikaUchetaNomenklaturi ON analitikaUchetaNomenklaturi.[_IDRRef] = [_Fld16349RRef] WHERE DATEADD(year, -2000, _Period) >= DATEADD(YEAR, -1, GETDATE()) GROUP BY analitikaUchetaNomenklaturi.[_Fld20498RRef] ) UPDATE n SET n.[max_year_quantity] = CASE WHEN y.total_quantity > n.[max_year_quantity] THEN y.total_quantity ELSE n.[max_year_quantity] END FROM [mag_pbi].[pbi].[nomenclature] n JOIN YearlyQuantity y ON n.[1c_id] = y.[1c_id]; ------------------------------------------------------------------ -- max_quarter_quantity IF NOT EXISTS ( SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'nomenclature' AND TABLE_SCHEMA='pbi' AND COLUMN_NAME = 'max_quarter_quantity' ) BEGIN ALTER TABLE mag_pbi.pbi.nomenclature ADD max_quarter_quantity NUMERIC(38,3) NULL; END UPDATE n SET n.max_quarter_quantity = ( SELECT MAX(quantity) FROM pbi.[w_ostatok_da_net] o WHERE o._IDRREF = n.[1c_id] AND o.dt >= DATEADD(month, -3, CAST(GETDATE() AS date)) ) FROM mag_pbi.pbi.nomenclature n --Нужно обязательно добавить регистр закупки, т.к. прием на склад идет не всегда всей партией товара ;WITH QuarterlyQuantity AS ( SELECT analitikaUchetaNomenklaturi.[_Fld20498RRef] AS [1c_id], SUM( CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189, 0x000001D5, 0x000001B0) THEN CASE [_Fld16345RRef] WHEN 0x970191967A54A8814BA45C6234640F68 THEN -[_Fld16361] ELSE [_Fld16361] END WHEN r._RecorderTRef = 0x0000020D THEN 0 WHEN r._RecorderTRef = 0x000001A1 THEN 0 ELSE 0 END ) AS total_quantity FROM mag_2019.dbo._AccumRg16344 r -- Регистр накопления Закупки LEFT JOIN [MAG_2019].[dbo].[_Reference160] AS analitikaUchetaNomenklaturi ON analitikaUchetaNomenklaturi.[_IDRRef] = [_Fld16349RRef] WHERE DATEADD(year, -2000, _Period) >= DATEADD(MONTH, -3, GETDATE()) --AND analitikaUchetaNomenklaturi.[_Fld20498RRef] = 0x9989B49691D57EFD11EF3F6ADA21AED9 GROUP BY analitikaUchetaNomenklaturi.[_Fld20498RRef] ) UPDATE n SET n.max_quarter_quantity = CASE WHEN y.total_quantity > n.max_quarter_quantity THEN y.total_quantity ELSE n.max_quarter_quantity END FROM [mag_pbi].[pbi].[nomenclature] n JOIN QuarterlyQuantity y ON n.[1c_id] = y.[1c_id]; END GO /****** Object: StoredProcedure [pbi].[migrate_nomenclature] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: миграция регистров ВыручкаИСебестоимость продаж из двух баз -- ============================================= CREATE PROCEDURE [pbi].[migrate_nomenclature] AS BEGIN DROP TABLE IF EXISTS #dop SELECT * INTO #dop FROM( SELECT * FROM mag_pbi.pbi.[значения доп реквизитов номенклатуры] )as t CREATE NONCLUSTERED INDEX [NonClusteredIndex-1] ON #dop (_Reference188_IDRRef, _Fld21137RRef) DROP table IF EXISTS pbi.nomenclature SELECT * INTO pbi.nomenclature FROM( SELECT LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),5,12) ))as artic_id , n._IDRRef as '1c_id' , n._Code as code , CASE WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Рублевая' WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Валютная' ELSE 'Неопределено' END as cenovaya_gruppa , n._Description as description /*Наименование*/ , n._Fld21043 as artic /*Артикул*/ , n._Fld21053RRef as vid_nomen , cast( (SELECT _Description FROM [MAG_2019].[dbo].[_Reference260] pr WHERE pr._IDRRef = n._Fld21079RRef) as nvarchar(max)) as 'Производитель' , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),5,12) ))as group_id , n._ParentIDRRef as '1c_group' --, isnull(us._Description, 'Менеджер') as [manager] , qr._Fld27045 as 'card' , concat('https://media.magok.ru/', f._Fld21201) as 'photo' , 2019 as base , n._Fld21046 as [Знаменатель веса] , n._Fld21049 as [Числитель веса] , n._Fld21089 as [Знаменатель объема] , n._Fld21092 as [Числитель объема] , n._Fld33769 as [Количество упак в коробе] , n._Fld33771 as [Количество упак в кванте] , n._Fld33413 as [id magok] , (SELECT value FROM #dop where _Fld21137RRef = 0x810D0CC47A052DFD11E8C0B216664650 and _Reference188_IDRRef =n._IDRRef) as [Товарныйменеджера] , (SELECT value FROM #dop where _Fld21137RRef = 0xAEA2B496910DCFD611E9DAEF699391C4 and _Reference188_IDRRef =n._IDRRef) as [МенеджерПоЗакупкам2] , (SELECT value FROM #dop where _Fld21137RRef = 0xAEA2B496910DCFD611E9DAF2AF0FBF08 and _Reference188_IDRRef =n._IDRRef) as [РуководительНаправления] , (SELECT value FROM #dop where _Fld21137RRef = 0x9980B49691D57EFD11EDA7A875968BE2 and _Reference188_IDRRef =n._IDRRef) as [Менеджер OZON] , (SELECT value FROM #dop where _Fld21137RRef = 0xAEC4B496910DCFD611EC4E8357703C3A and _Reference188_IDRRef =n._IDRRef) as [Менеджер WB] , (SELECT value FROM #dop where _Fld21137RRef = 0xAEACB496910DCFD611EA4980351CDD01 and _Reference188_IDRRef =n._IDRRef) as [АБС статус] , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F011642C1217A0 and _Reference188_IDRRef =n._IDRRef) as [АБС план] , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F0C4629BFA88FF and _Reference188_IDRRef =n._IDRRef) as [ABC Парето] --, (SELECT value FROM #dop where _Fld21137RRef = 0x9987B49691D57EFD11EEFD8C032DF868 and _Reference188_IDRRef =n._IDRRef) as [АБС МП] --, (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F08C910065CAE0 and _Reference188_IDRRef =n._IDRRef) as [ABC статус 12м 08.25] --, (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F08C9141DE8102 and _Reference188_IDRRef =n._IDRRef) as [ABC статус 3м 08.25] , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F078456358DE9B and _Reference188_IDRRef =n._IDRRef) as [XYZ статус 12м] , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F0D41588B52E51 and _Reference188_IDRRef =n._IDRRef) as [Комментарий для матрицы] --, (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F078466D61B354 and _Reference188_IDRRef =n._IDRRef) as [XYZ статус 3м] , (SELECT value FROM #dop where _Fld21137RRef = 0x80C7305A3A00E12B11E5A300C980DC00 and _Reference188_IDRRef =n._IDRRef) as [Коллекция] , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F037A75A7E983E and _Reference188_IDRRef =n._IDRRef) as [Ценовой сегмент Магок] , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F037A7EA5402D7 and _Reference188_IDRRef =n._IDRRef) as [Ценовой сегмент МП] , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F037A7C791FA85 and _Reference188_IDRRef =n._IDRRef) as [Кол-во упак в заказе Магок] , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0x80F1305A3A00E12B11E63C4A303F49FB and _Reference188_IDRRef=n._IDRRef) as [Бренд] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5A30013708A94 and _Reference188_IDRRef=n._IDRRef) as [Тип товара] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80D00CC47A052DFD11E691F14188BF4D and _Reference188_IDRRef=n._IDRRef) as [Метка] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80E00CC47A052DFD11E7029264A93CF6 and _Reference188_IDRRef=n._IDRRef) as [Ширина, мм] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5A3008141292E and _Reference188_IDRRef=n._IDRRef) as [Цвет] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80E90CC47A052DFD11E72379276D8356 and _Reference188_IDRRef=n._IDRRef) as [Номер цвета] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0xAE9EB496910DCFD611E95F5710EB0448 and _Reference188_IDRRef=n._IDRRef) as [Тип шнура] --, (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0xAE9EB496910DCFD611E95F5783A48B03 and _Reference188_IDRRef=n._IDRRef) as [Наполнитель] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0xAE9EB496910DCFD611E95F572768CAA7 and _Reference188_IDRRef=n._IDRRef) as [Тип плетения] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5A2717FE9DE3A and _Reference188_IDRRef=n._IDRRef) as [Размер] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5A3001EDD22AF and _Reference188_IDRRef=n._IDRRef) as [Особенность] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5A300C980DC01 and _Reference188_IDRRef=n._IDRRef) as [Форма] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5A300E8BE58AC and _Reference188_IDRRef=n._IDRRef) as [Ширина] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x997DB49691D57EFD11EC7F7E661783C3 and _Reference188_IDRRef=n._IDRRef) as [Формат упаковки] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5BAD05261251C and _Reference188_IDRRef=n._IDRRef) as [Макс. запас] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5BAD0706896DA and _Reference188_IDRRef=n._IDRRef) as [Мин. запас] , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x998CB49691D57EFD11EF9202AB464430 and _Reference188_IDRRef=n._IDRRef) as [QTY PACKS] , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEA1B496910DCFD411E9B50C873C5A12 and _Reference188_IDRRef=n._IDRRef) as [Да/Нет Собственное пр-во] , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0x997DB49691D57EFD11EC9644B479DD39 and _Reference188_IDRRef=n._IDRRef) as [ID OZON] , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0x997DB49691D57EFD11EC8D98061ED9EB and _Reference188_IDRRef=n._IDRRef) as [ID WB] , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEC2B496910DCFD611EBE86B75A98522 and _Reference188_IDRRef=n._IDRRef) as [WB] , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEC3B496910DCFD611EC1BAAEA86F8FE and _Reference188_IDRRef=n._IDRRef) as [Ozon] --, (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEC2B496910DCFD611EBE86B6E01B921 and _Reference188_IDRRef=n._IDRRef) as [FBS] , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEC2B496910DCFD611EBE60A4FB56689 and _Reference188_IDRRef=n._IDRRef) as [СТМ] , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEC2B496910DCFD611EBDE53817D5CA3 and _Reference188_IDRRef=n._IDRRef) as [Выгружать на я.маркет] , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEC2B496910DCFD611EBF5E566B4B9C7 and _Reference188_IDRRef=n._IDRRef) as [Выгружать в Google Merchant] , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0x998BB49691D57EFD11EF646A898FFD9C and _Reference188_IDRRef=n._IDRRef) as [Товар МП] , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0x997DB49691D57EFD11EC96300ACEF865 and _Reference188_IDRRef=n._IDRRef) as [Неликвид] /* найти реквизит select * from ( SELECT _IDRref, _Fld17721 as _Description FROM [MAG_2019].[dbo].[_Chrc1109] --UNION ALL --SELECT _reference69_IDRRef, _Fld18673 as _Description FROM [MAG_2019].[dbo].[_Reference69_VT18669] ) as t where t._Description like '%ширина%' */ , (SELECT value FROM #dop r where r._Fld21137RRef = 0x80DB0CC47A052DFD11E6E88DD05808D1 and r._Reference188_IDRRef=n._IDRRef) as [Статус] , (SELECT value FROM #dop r where r._Fld21137RRef = 0xAEBFB496910DCFD611EB9209C2655457 and r._Reference188_IDRRef=n._IDRRef) as [Сквозной цвет] , (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE n._IDRRef = up._OwnerID_RRRef) as 'Базовая упаковка' , rating.ozon as 'Качество контента Ozon' , rating.wb as 'Качество контента WB' , rating.wb_by_ozon as 'Качество контента WB by Ozon' , rating.magok as 'Качество контента Magok' , (select r._Description from [MAG_2019].[dbo].[_Reference69] /*виды ном*/ r WHERE r._IDRRef = n._Fld21053RRef) as [Вид номенклатуры] from [mag_2019].[dbo]._Reference188X1 n /*номенклатура*/ LEFT JOIN [mag_pbi].[pbi].[content_rating] rating /* Качество контента */ ON rating.code = n._Code LEFT JOIN [mag_2019].[dbo].[_InfoRg27043X1] /* Регистр сведений QR коды */ qr ON qr._Fld27044RRef = n._IDRRef LEFT JOIN [mag_2019].[dbo]._Reference191X1 f /*номенклатураПрисоедФайлы*/ ON f._IDRRef = n._Fld21086RRef WHERE n._Folder = 1 ) as nom_2019 ALTER TABLE mag_pbi.pbi.nomenclature ADD max_year_quantity NUMERIC(38,3) NULL; ALTER TABLE mag_pbi.pbi.nomenclature ADD max_quarter_quantity NUMERIC(38,3) NULL; ALTER TABLE [mag_pbi].[pbi].[nomenclature] ADD [Цена учетная, руб] DECIMAL(18,7) NULL; ALTER TABLE [mag_pbi].[pbi].[nomenclature] ADD [Цена учетная, usd] DECIMAL(18,7) NULL; -- Шаг 1: CTE для отбора строк из 'Себестоимость' WITH Закупки AS ( SELECT CAST(s.[Период] AS DATE) AS [Период], s.[artic_id], s.[Количество] AS [Кол-во закупка], s.[Закупка] AS [Закуп.Закупка, руб], s.[Закупка, usd2] AS [Закуп.Закупка, usd2], s.[Доставка] AS [Закуп.Доставка, руб], s.[Таможня] AS [Закуп.Таможня, руб], s.[НДС] AS [Закуп.НДС, руб], s.[Производство] AS [Закуп.Производство, руб], s.[Доп расходы] AS [Закуп.Доп расходы, руб], s.[Курс usd2] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[Вид операции] = 'Приход' AND s.[Статья] IN ( 'Закупка', 'Ввод начальных остатков', 'Производство товара', 'Доставка контейнера ВЭД', 'НДС', 'Доп расходы' ) ), -- Шаг 2: Получить максимальную дату по каждому товару МаксДата AS ( SELECT z.artic_id, MAX(z.[Период]) AS LastKnowDate FROM Закупки z GROUP BY z.artic_id ), -- Шаг 3: Вычисление последней закупочной цены ПоследняяЦена AS ( SELECT TOP (1) WITH TIES z.artic_id, z.[Период], SUM(ISNULL(z.[Закуп.Закупка, руб],0) + ISNULL(z.[Закуп.Таможня, руб],0) + ISNULL(z.[Закуп.Доставка, руб],0) + ISNULL(z.[Закуп.НДС, руб],0) + ISNULL(z.[Закуп.Производство, руб],0) - ISNULL(z.[Закуп.Доп расходы, руб],0) ) AS [Сумма закупки, руб], SUM(ISNULL(z.[Закуп.Закупка, usd2],0) + ( ISNULL(z.[Закуп.Таможня, руб],0) + ISNULL(z.[Закуп.Доставка, руб],0) + ISNULL(z.[Закуп.НДС, руб],0) + ISNULL(z.[Закуп.Производство, руб],0) - ISNULL(z.[Закуп.Доп расходы, руб],0)) / z.[Курс usd2] ) AS [Сумма закупки, usd], SUM(z.[Кол-во закупка]) AS [Кол-во закупка] FROM Закупки z INNER JOIN МаксДата m ON z.artic_id = m.artic_id AND z.[Период] <= m.LastKnowDate GROUP BY z.artic_id, z.[Период] ORDER BY ROW_NUMBER() OVER (PARTITION BY z.artic_id ORDER BY z.[Период] DESC) ) -- Шаг 4: Обновление таблицы Номенклатура UPDATE n SET n.[Цена учетная, руб] = CASE WHEN p.[Кол-во закупка] = 0 THEN 0 ELSE p.[Сумма закупки, руб] * 1.0 / p.[Кол-во закупка] END, n.[Цена учетная, usd] = CASE WHEN p.[Кол-во закупка] = 0 THEN 0 ELSE p.[Сумма закупки, usd] * 1.0 / p.[Кол-во закупка] END FROM [mag_pbi].[pbi].[nomenclature] n INNER JOIN ПоследняяЦена p ON n.[artic_id] = p.artic_id ------------ Ср. кв. отклонение ---------------------- ALTER TABLE [mag_pbi].[pbi].[nomenclature] ADD СредниеМесячныеПродажи FLOAT, СКО_МесячныхПродаж FLOAT, --minAvailableQty10 decimal(18,4) NULL, /* минимальный остаток = 10% от СредниеМесячныеПродажи*/ minAvailableQty decimal(18,4) NULL; WITH MonthlySales AS ( SELECT [1c_id], DATEFROMPARTS(YEAR([Период]), MONTH([Период]), 1) AS Месяц, --FORMAT(Период, 'yyyy-MM') AS Месяц, /*этот код дает ошибку,делает дубли строк и дат внутри месяца, заменила*/ SUM(КоличествоУпаковок) AS СуммаПродаж FROM [pbiProd].[СводныйСебестоимость Для PBI] WHERE [Статья] = 'Реализация' AND [Вид операции] = 'Расход' AND [Период] >= DATEFROMPARTS(YEAR(DATEADD(MONTH, -12, GETDATE())), MONTH(DATEADD(MONTH, -12, GETDATE())), 1) AND [Период] < DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1) /*добавила, нам нужно 12 полных месяцев*/ GROUP BY [1c_id], DATEFROMPARTS(YEAR([Период]), MONTH([Период]), 1) --FORMAT(Период, 'yyyy-MM') ), Stats AS ( SELECT [1c_id], AVG(ISNULL(СуммаПродаж, 0)) AS СредниеМесячныеПродажи, STDEVP(ISNULL(СуммаПродаж, 0)) AS СКО_МесячныхПродаж FROM MonthlySales GROUP BY [1c_id] ) UPDATE n SET n.СредниеМесячныеПродажи = s.СредниеМесячныеПродажи, n.СКО_МесячныхПродаж = s.СКО_МесячныхПродаж, n.minAvailableQty = CASE WHEN s.СредниеМесячныеПродажи IS NULL OR s.СредниеМесячныеПродажи = 0 THEN 0.1 WHEN s.СредниеМесячныеПродажи >= 100 THEN 10 ELSE s.СредниеМесячныеПродажи * 0.1 END FROM [mag_pbi].[pbi].[nomenclature] n LEFT JOIN Stats s ON n.[1c_id] = s.[1c_id]; ------------------------------------------------------ /* старый расчет минимального остатка ----- Минимальный доступный остаток, используется для определения есть товар на складе или нет ------------ DECLARE @from_date date = '2024-01-01'; DECLARE @N_min int = 20; -- минимальное число строк продаж, чтобы доверять перцентилю SKU /* === 0) Добавим колонку minAvailableQty, если её нет === */ IF COL_LENGTH('[mag_pbi].[pbi].[nomenclature]', 'minAvailableQty') IS NULL BEGIN ALTER TABLE [mag_pbi].[pbi].[nomenclature] ADD minAvailableQty decimal(18,4) NULL; END /* === 1) Продажи: берём только фактический расход > 0 === */ IF OBJECT_ID('tempdb..#sales') IS NOT NULL DROP TABLE #sales; SELECT CAST(s.[Период] AS date) AS order_date, CAST(s.[КоличествоУпаковок] AS decimal(18,4)) AS qty, s.[1c_id] AS sku_id INTO #sales FROM [pbiProd].[СводныйСебестоимость Для PBI] s WHERE s.[Статья] = N'Реализация' AND s.[Вид операции] = N'Расход' AND s.[КоличествоУпаковок] > 0 AND s.[Период] >= @from_date; /* === 2) Перцентиль P20 по SKU === */ IF OBJECT_ID('tempdb..#sku_q') IS NOT NULL DROP TABLE #sku_q; WITH q AS ( SELECT sku_id, PERCENTILE_CONT(0.20) WITHIN GROUP (ORDER BY qty) OVER (PARTITION BY sku_id) AS q20_sku, COUNT(*) OVER (PARTITION BY sku_id) AS n_lines FROM #sales ) SELECT DISTINCT sku_id, q20_sku, n_lines, -- базовая нормализация: минимум 1 и округление вверх до целого CAST(CASE WHEN q20_sku IS NULL OR q20_sku < 1 THEN 1 ELSE CEILING(q20_sku) END AS decimal(18,4)) AS min_avail_sku INTO #sku_q FROM q; /* === 3) Категория 1-го уровня: берём 1-й сегмент из groups.path (без вьюх) === */ IF OBJECT_ID('tempdb..#sku_catL1') IS NOT NULL DROP TABLE #sku_catL1; SELECT n.[1c_id] AS sku_id, -- первый сегмент до ' | ' или весь path, если разделителя нет CAST(CASE WHEN CHARINDEX(N' | ', g.path) > 0 THEN LEFT(g.path, CHARINDEX(N' | ', g.path) - 1) ELSE g.path END AS nvarchar(200)) AS category_l1 INTO #sku_catL1 FROM [mag_pbi].[pbi].[nomenclature] n JOIN [mag_pbi].[pbi].[groups] g ON g.group_id = n.group_id; /* === 4) Перцентиль P20 по категории 1-го уровня (фолбэк) === */ IF OBJECT_ID('tempdb..#cat_q') IS NOT NULL DROP TABLE #cat_q; WITH sales_cat AS ( SELECT c.category_l1, s.qty FROM #sales s JOIN #sku_catL1 c ON c.sku_id = s.sku_id ), qcat AS ( SELECT category_l1, PERCENTILE_CONT(0.20) WITHIN GROUP (ORDER BY qty) OVER (PARTITION BY category_l1) AS q20_cat, COUNT(*) OVER (PARTITION BY category_l1) AS n_lines_cat FROM sales_cat ) SELECT DISTINCT category_l1, q20_cat, n_lines_cat, CAST(CASE WHEN q20_cat IS NULL OR q20_cat < 1 THEN 1 ELSE CEILING(q20_cat) END AS decimal(18,4)) AS min_avail_cat INTO #cat_q FROM qcat; /* === 5) Выбор порога: если по SKU достаточно строк — берём SKU, иначе — по категории === */ IF OBJECT_ID('tempdb..#final_min') IS NOT NULL DROP TABLE #final_min; SELECT n.[1c_id] AS sku_id, COALESCE( CASE WHEN q.n_lines >= @N_min AND q.min_avail_sku IS NOT NULL THEN q.min_avail_sku END, cq.min_avail_cat, -- фолбэк по категории CAST(1 AS decimal(18,4)) -- на крайний случай ) AS min_avail_final INTO #final_min FROM [mag_pbi].[pbi].[nomenclature] n LEFT JOIN #sku_q q ON q.sku_id = n.[1c_id] LEFT JOIN #sku_catL1 c ON c.sku_id = n.[1c_id] LEFT JOIN #cat_q cq ON cq.category_l1 = c.category_l1; /* === 6) Обновляем поле в номенклатуре === */ UPDATE n SET n.minAvailableQty = f.min_avail_final FROM [mag_pbi].[pbi].[nomenclature] n JOIN #final_min f ON f.sku_id = n.[1c_id]; */ ------------------------------------------- CREATE NONCLUSTERED INDEX [NonClusteredIndex-20190908-132726] ON [pbi].nomenclature ( [group_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) --GO CREATE NONCLUSTERED INDEX [NonClusteredIndex-20190908-132728] ON [pbi].nomenclature ( [code] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) --GO CREATE CLUSTERED INDEX [ClusteredIndex-20210315-180007] ON [pbi].[nomenclature] ( [1c_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] DROP TABLE IF EXISTS #dop END GO /****** Object: StoredProcedure [pbi].[migrate_ostatki] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [pbi].[migrate_ostatki] as BEGIN --DROP TABLE IF EXISTS mag_pbi.pbi.ostatki DELETE FROM mag_pbi.pbi.ostatki WHERE [date] >= '2025-01-01' INSERT INTO mag_pbi.pbi.ostatki ([artic_id],[1c_id],[Code],[sklad],[Категория склада],[upakovok],[quantity],[upakovka],[date],[upakovok_ship],[quantity_ship]) SELECT LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),5,12) )) as 'artic_id' , n._IDRRef as '1c_id' , n._Code as Code , s._Description as sklad , s.[Категория] as [Категория склада] , [_Fld17491]/(case (SELECT TOP 1 upakovka FROM mag_pbi.pbi.[БазоваяУпаковка] up WHERE n._IDRRef = up._OwnerID_RRRef) when 0 then 1 else (SELECT TOP 1 upakovka FROM mag_pbi.pbi.[БазоваяУпаковка] up WHERE n._IDRRef = up._OwnerID_RRRef) end)*(case _RecordKind when 0 then 1 when 1 then -1 end) as upakovok , [_Fld17491]*(case _RecordKind when 0 then 1 when 1 then -1 end) as quantity , (SELECT TOP 1 upakovka FROM mag_pbi.pbi.[БазоваяУпаковка] up WHERE n._IDRRef = up._OwnerID_RRRef) as upakovka /*, (SELECT top 1 [_Fld27138] / 1000 FROM [mag_2019].[dbo].[_InfoRg27129X1] ir WHERE ir._Fld27130RRef = n._IDRRef AND [_Fld27138] > 0 order by ir._period desc) as [Учетная цена, старое]*/ , DATEADD(year, -2000, t._Period) as [date] , [_Fld17492]/(case (SELECT TOP 1 upakovka FROM mag_pbi.pbi.[БазоваяУпаковка] up WHERE n._IDRRef = up._OwnerID_RRRef) when 0 then 1 else (SELECT TOP 1 upakovka FROM mag_pbi.pbi.[БазоваяУпаковка] up WHERE n._IDRRef = up._OwnerID_RRRef) end)*(case _RecordKind when 0 then 1 when 1 then -1 end) as [upakovok_ship] , [_Fld17492]*(case _RecordKind when 0 then 1 when 1 then -1 end) as [quantity_ship] FROM [mag_2019].[dbo].[_AccumRg17484] t /*регистр товары на складах*/ INNER JOIN [mag_2019].[dbo]._Reference188X1 n /*номенклатура*/ ON n._IDRRef = t._Fld17485RRef INNER JOIN [mag_pbi].[pbi].[sklad_2019] s /*склад*/ ON s._IDRRef = t._Fld17488RRef WHERE t._Period >='4025-01-01' --AND n._IDRRef=0x80F60CC47A052DFD11E7D04C512712B6 --DROP TABLE IF EXISTS mag_pbi.pbi.ostatki_short DELETE FROM mag_pbi.pbi.ostatki_short WHERE [date] >= '2025-01-01' -- добавляем остатки за период c 1 января 2025 года до последнего числа месяца, который был 3 месяца назад, свернутые по месяцам INSERT INTO mag_pbi.pbi.ostatki_short ([artic_id],[1c_id],[Code],[sklad],[Категория склада],[upakovok],[quantity], [upakovka],[date],[upakovok_ship],[quantity_ship]) SELECT [artic_id] ,[1c_id] ,[Code] ,[sklad] ,[Категория склада] ,sum([upakovok]) as [upakovok] ,sum([quantity]) as [quantity] ,avg([upakovka]) as [upakovka] --,CASE WHEN sum(quantity) <> 0 THEN sum([quantity]*[Учетная цена по себест])/sum(quantity) ELSE 0 END as [Учетная цена по себест] --,CASE WHEN sum(quantity) <> 0 THEN sum([quantity]*[Учетная цена по себест, usd2+2])/sum(quantity) ELSE 0 END as [Учетная цена по себест, usd2+2] --,avg(UchetnajaCena) as UchetnajaCena , DATEADD(mm, DATEDIFF(mm,0,[date]), 0) as [date] ,sum([upakovok_ship]) as [upakovok_ship] ,sum([quantity_ship]) as [quantity_ship] FROM mag_pbi.pbi.ostatki WHERE date BETWEEN '2025-01-01' AND DATEADD(SECOND, -1, CAST(DATEADD(DAY, 1, EOMONTH(DATEADD(MONTH, -3, GETDATE()))) AS DATETIME)) -- where [Категория склада]<>'Виртуальный' GROUP BY [artic_id], [1c_id], [Code], [sklad], [Категория склада], DATEADD(mm, DATEDIFF(mm,0,[date]), 0) -- добавляем остатки за 2 последних полных месяца и текущий месяц, развернутые по дням INSERT INTO mag_pbi.pbi.ostatki_short ([artic_id],[1c_id],[Code],[sklad],[Категория склада],[upakovok],[quantity], [upakovka],[date],[upakovok_ship],[quantity_ship]) SELECT [artic_id] ,[1c_id] ,[Code] ,[sklad] ,[Категория склада] ,[upakovok] ,[quantity] ,[upakovka] --,[Учетная цена по себест] --,[Учетная цена по себест, usd2+2] ,[date] ,[upakovok_ship] ,[quantity_ship] FROM mag_pbi.pbi.ostatki WHERE date BETWEEN CASE WHEN DATEADD(MONTH, -3, CAST(GETDATE() AS DATE)) < '2025-01-01' THEN '2025-01-01' ELSE DATEADD(DAY, -DAY(DATEADD(MONTH, -2, GETDATE())) + 1, CAST(DATEADD(MONTH, -2, GETDATE()) AS DATE )) END AND GETDATE() -- добавляем остатки нового дня на маркетах в накопительную таблицу [pbi].[ostatki_mp] INSERT INTO [mag_pbi].[pbi].[ostatki_mp] ([Дата],[Узел],[artic_id],[id_внешний],[Остаток МП, упак],[Доступно МП, упак], [Остаток МП, шт]) SELECT CAST(src.[Дата обновления] AS DATE) AS [Дата], src.[Узел], src.[artic_id], src.[id_внешний], SUM(src.[Количество]), SUM(src.[Доступное кол-во]), SUM(src.[Остаток МП, шт]) FROM [mag_pbi].[pbi].[Внешние остатки] AS src WHERE src.[Тип] = 'Остатки' AND CAST(src.[Дата обновления] AS DATE) > ISNULL( (SELECT MAX([Дата]) FROM [mag_pbi].[pbi].[ostatki_mp]), '2000-01-01' ) GROUP BY CAST(src.[Дата обновления] AS DATE), src.[Узел], src.[artic_id], src.[id_внешний]; /* ALTER TABLE mag_pbi.pbi.ostatki add [Учетная цена по себест] numeric(38,15) NULL default 0 ALTER TABLE mag_pbi.pbi.ostatki add [Учетная цена по себест, usd2+2] numeric(38,15) NULL default 0 ALTER TABLE mag_pbi.pbi.ostatki add [Учетная цена, старое] numeric(38,15) NULL default 0 */ -- добавляем учетную цену из таблицы [pbiProd].[СебестоимостьСводныйОт2022] /*UPDATE mag_pbi.pbi.ostatki SET [Учетная цена по себест] = ( SELECT TOP 1 s.[Учетная цена] FROM [pbiProd].[СебестоимостьСводныйОт2022] s --WHERE s. [Вид операции]='Продажа' AND s.artic_id=o.[artic_id] AND s.[Период]<=o.date AND s.[Учетная цена] <> 0 -- Такое сравнение даты использовано для скорости. Что делает? Приводит обе даты к началу месяца и берет в себестоимости более ранние или такие же даты, как в остатках WHERE [Статья]='Реализация' AND s.[1c_id]=o.[1c_id] AND s.[Период]<=o.date -- AND s.[Учетная цена] > 0 AND (YEAR(s.[Период]) * 100 + MONTH(s.[Период])) <= (YEAR(o.date) * 100 + MONTH(o.date)) ORDER BY s.[Период] DESC) , [Учетная цена по себест, usd2+2] = ( SELECT TOP 1 s.[Учетная цена USD2+2] FROM [pbiProd].[СебестоимостьСводныйОт2022] s --WHERE s. [Вид операции]='Продажа' AND s.artic_id=o.[artic_id] AND s.[Период]<=o.date AND s.[Учетная цена USD2+2] <> 0 WHERE [Статья]='Реализация' AND s.[1c_id]=o.[1c_id] AND s.[Период]<=o.date -- AND s.[Учетная цена USD2+2] > 0 AND (YEAR(s.[Период]) * 100 + MONTH(s.[Период])) <= (YEAR(o.date) * 100 + MONTH(o.date)) ORDER BY s.[Период] DESC ) FROM mag_pbi.pbi.ostatki o WHERE o.date >= '2025-01-01'*/ -- обновляем учетку по закупкам, тк в продажах не было /*UPDATE p SET [Учетная цена по себест] = ( SELECT top 1 s.[Учетная цена] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[1c_id]=p.[1c_id] AND s.[Статья]='Закупка' AND s.[Вид операции]='Приход' AND s.[Учетная цена] > 0 AND (YEAR(s.[Период]) * 100 + MONTH(s.[Период])) <= (YEAR(p.date) * 100 + MONTH(p.date)) -- AND s.[Период]<=p.date ORDER by s.Период DESC ), [Учетная цена по себест, usd2+2] = ( SELECT top 1 s.[Учетная цена USD2+2] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[1c_id]=p.[1c_id] AND s.[Статья]='Закупка' AND s.[Вид операции]='Приход' AND s.[Учетная цена USD2+2] > 0 AND (YEAR(s.[Период]) * 100 + MONTH(s.[Период])) <= (YEAR(p.date) * 100 + MONTH(p.date)) -- AND s.[Период]<=p.date ORDER by s.Период DESC) FROM mag_pbi.pbi.ostatki p WHERE p.[Учетная цена по себест] is null AND p.date >= '2025-01-01'*/ -- обновляем учетку по вводу начальных остатков /*UPDATE p SET [Учетная цена по себест] = ( SELECT top 1 s.[Учетная цена] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[1c_id]=p.[1c_id] AND s.[Статья]='Ввод начальных остатков' AND s.[Вид операции]='Приход' AND s.[Учетная цена] > 0 AND (YEAR(s.[Период]) * 100 + MONTH(s.[Период])) <= (YEAR(p.date) * 100 + MONTH(p.date)) -- AND s.[Период]<=p.date ORDER by s.Период DESC ), [Учетная цена по себест, usd2+2] = ( SELECT top 1 s.[Учетная цена USD2+2] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[1c_id]=p.[1c_id] AND s.[Статья]='Ввод начальных остатков' AND s.[Вид операции]='Приход' AND s.[Учетная цена USD2+2] > 0 AND (YEAR(s.[Период]) * 100 + MONTH(s.[Период])) <= (YEAR(p.date) * 100 + MONTH(p.date)) -- AND s.[Период]<=p.date ORDER by s.Период DESC) FROM mag_pbi.pbi.ostatki p WHERE p.[Учетная цена по себест] is null AND p.date >= '2025-01-01' UPDATE mag_pbi.pbi.ostatki SET [Учетная цена по себест] = 0 WHERE [Учетная цена по себест] is null UPDATE mag_pbi.pbi.ostatki SET [Учетная цена по себест, usd2+2] = 0 WHERE [Учетная цена по себест, usd2+2] is null*/ -- добавляем остатки за 2025 год, свернутые по месяцам /*SELECT [artic_id] ,[1c_id] ,[Code] ,[sklad] ,[Категория склада] ,sum([upakovok]) as [upakovok] ,sum([quantity]) as [quantity] ,avg([upakovka]) as [upakovka] ,CASE WHEN sum(quantity) <> 0 THEN sum([quantity]*[Учетная цена по себест])/sum(quantity) ELSE 0 END as [Учетная цена по себест] ,CASE WHEN sum(quantity) <> 0 THEN sum([quantity]*[Учетная цена по себест, usd2+2])/sum(quantity) ELSE 0 END as [Учетная цена по себест, usd2+2] --,avg(UchetnajaCena) as UchetnajaCena , DATEADD(mm, DATEDIFF(mm,0,[date]), 0) as [date] FROM mag_pbi.pbi.ostatki WHERE date>='2025-01-01' -- where [Категория склада]<>'Виртуальный' GROUP BY [artic_id], [1c_id], [Code], [sklad], [Категория склада], DATEADD(mm, DATEDIFF(mm,0,[date]), 0)*/ --ALTER TABLE mag_pbi.pbi.ostatki_short add [Учетная цена по себест] numeric(38,15) NULL default 0 --ALTER TABLE mag_pbi.pbi.ostatki_short add [Учетная цена по себест, usd2+2] numeric(38,15) NULL default 0 --ALTER TABLE mag_pbi.pbi.ostatki_short add [Учетная цена, старое] numeric(38,15) NULL default 0 /* CREATE NONCLUSTERED INDEX [NonClusteredIndex-2-1] ON [pbi].ostatki_short ( [artic_id] ASC, [date] ASC ) */ -------------------------------------------------------------- OLD /* UPDATE mag_pbi.pbi.ostatki_short SET [Учетная цена по себест] = ( SELECT TOP 1 s.[Учетная цена] FROM [pbiProd].[СебестоимостьСводныйОт2022] s --WHERE s. [Вид операции]='Продажа' AND s.artic_id=o.[artic_id] AND s.[Период]<=o.date AND s.[Учетная цена] <> 0 -- Такое сравнение даты использовано для скорости. Что делает? Приводит обе даты к началу месяца и берет в себестоимости более ранние или такие же даты, как в остатках WHERE [Статья]='Реализация' AND s.[1c_id]=o.[1c_id] AND s.[Период]<=o.date -- AND s.[Учетная цена] > 0 AND (YEAR(s.[Период]) * 100 + MONTH(s.[Период])) <= (YEAR(o.date) * 100 + MONTH(o.date)) ORDER BY s.[Период] DESC) , [Учетная цена по себест, usd2+2] = ( SELECT TOP 1 s.[Учетная цена USD2+2] FROM [pbiProd].[СебестоимостьСводныйОт2022] s --WHERE s. [Вид операции]='Продажа' AND s.artic_id=o.[artic_id] AND s.[Период]<=o.date AND s.[Учетная цена USD2+2] <> 0 WHERE [Статья]='Реализация' AND s.[1c_id]=o.[1c_id] AND s.[Период]<=o.date -- AND s.[Учетная цена USD2+2] > 0 AND (YEAR(s.[Период]) * 100 + MONTH(s.[Период])) <= (YEAR(o.date) * 100 + MONTH(o.date)) ORDER BY s.[Период] DESC ) FROM mag_pbi.pbi.ostatki_short o -- обновляем учетку по закупкам, тк в продажах не было UPDATE p SET [Учетная цена по себест] = ( SELECT top 1 s.[Учетная цена] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[1c_id]=p.[1c_id] AND s.[Статья]='Закупка' AND s.[Вид операции]='Приход' AND s.[Учетная цена] > 0 AND (YEAR(s.[Период]) * 100 + MONTH(s.[Период])) <= (YEAR(p.date) * 100 + MONTH(p.date)) -- AND s.[Период]<=p.date ORDER by s.Период DESC ), [Учетная цена по себест, usd2+2] = ( SELECT top 1 s.[Учетная цена USD2+2] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[1c_id]=p.[1c_id] AND s.[Статья]='Закупка' AND s.[Вид операции]='Приход' AND s.[Учетная цена USD2+2] > 0 AND (YEAR(s.[Период]) * 100 + MONTH(s.[Период])) <= (YEAR(p.date) * 100 + MONTH(p.date)) -- AND s.[Период]<=p.date ORDER by s.Период DESC) FROM mag_pbi.pbi.ostatki_short p WHERE p.[Учетная цена по себест] is null -- обновляем учетку по вводу начальных остатков UPDATE p SET [Учетная цена по себест] = ( SELECT top 1 s.[Учетная цена] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[1c_id]=p.[1c_id] AND s.[Статья]='Ввод начальных остатков' AND s.[Вид операции]='Приход' AND s.[Учетная цена] > 0 AND (YEAR(s.[Период]) * 100 + MONTH(s.[Период])) <= (YEAR(p.date) * 100 + MONTH(p.date)) -- AND s.[Период]<=p.date ORDER by s.Период DESC ), [Учетная цена по себест, usd2+2] = ( SELECT top 1 s.[Учетная цена USD2+2] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[1c_id]=p.[1c_id] AND s.[Статья]='Ввод начальных остатков' AND s.[Вид операции]='Приход' AND s.[Учетная цена USD2+2] > 0 AND (YEAR(s.[Период]) * 100 + MONTH(s.[Период])) <= (YEAR(p.date) * 100 + MONTH(p.date)) -- AND s.[Период]<=p.date ORDER by s.Период DESC) FROM mag_pbi.pbi.ostatki_short p WHERE p.[Учетная цена по себест] is null UPDATE mag_pbi.pbi.ostatki_short SET [Учетная цена по себест] = 0 WHERE [Учетная цена по себест] is null UPDATE mag_pbi.pbi.ostatki_short SET [Учетная цена по себест, usd2+2] = 0 WHERE [Учетная цена по себест, usd2+2] is null */ -- Тут старый код со старым регистром сведений /* UPDATE mag_pbi.pbi.ostatki_short SET [Учетная цена по себест] = isnull( (SELECT top 1 its.[_Fld27138] / 1000 FROM [mag_2019].[dbo].[_InfoRg27129X1] its -- РегистрСведений.ITS_ОсновнойОтчет WHERE its._Fld27130RRef = [1C_id] AND its.[_Fld27138] > 0 ORDER BY its._period desc) ,0 ) FROM mag_pbi.pbi.ostatki_short o WHERE [Учетная цена по себест] = 0 OR [Учетная цена по себест] is null UPDATE mag_pbi.pbi.ostatki_short SET [Учетная цена по себест, usd2+2] = isnull( (SELECT top 1 its.[_Fld27138] / 1000 / (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, _Period) <= o.date ORDER BY _Period desc) FROM [mag_2019].[dbo].[_InfoRg27129X1] its -- РегистрСведений.ITS_ОсновнойОтчет WHERE its._Fld27130RRef = [1C_id] AND its.[_Fld27138] > 0 ORDER BY its._period desc) ,0 ) FROM mag_pbi.pbi.ostatki_short o WHERE [Учетная цена по себест, usd2+2] = 0 OR [Учетная цена по себест, usd2+2] is null */ /* UPDATE mag_pbi.pbi.ostatki_short SET [Учетная цена по себест] = isnull( (SELECT TOP 1 s.[Учетная цена, новое] FROM [pbi].[Себестоимость] s WHERE s. [Вид операции]='продажа' AND s.artic_id=o.[artic_id] AND s.[Период]<=o.date --AND s.[Учетная цена, новое] <> 0 ORDER BY s.[Период] desc) , 0 ) FROM mag_pbi.pbi.ostatki_short o */ /* UPDATE mag_pbi.pbi.ostatki_short SET [Учетная цена по себест] = isnull( ( SELECT top 1 its.[_Fld27138] / 1000 FROM [mag_2019].[dbo].[_InfoRg27129X1] its -- РегистрСведений.ITS_ОсновнойОтчет WHERE its._Fld27130RRef = [1C_id] AND its.[_Fld27138] > 0 --and datediff(month, DATEADD(year, -2000, its._Period), date) >= 0 ORDER BY its._period desc) ,0 ) FROM mag_pbi.pbi.ostatki_short o WHERE [Учетная цена по себест] = 0 OR [Учетная цена по себест] is null */ /* UPDATE mag_pbi.pbi.ostatki SET [Учетная цена, старое] = isnull( ( SELECT top 1 its.[_Fld27138] / 1000 FROM [mag_2019].[dbo].[_InfoRg27129X1] its -- РегистрСведений.ITS_ОсновнойОтчет WHERE its._Fld27130RRef = [1C_id] AND its.[_Fld27138] > 0 and datediff(month, DATEADD(year, -2000, its._Period), date) >= 0 ORDER BY its._period desc) ,0 ) FROM mag_pbi.pbi.ostatki o */ /* UPDATE mag_pbi.pbi.ostatki_short SET [Учетная цена по себест] = isnull( (SELECT TOP 1 s.[Учетная цена, старое] FROM [pbi].[Себестоимость] s WHERE s. [Вид операции]='продажа' AND s.artic_id=o.[artic_id] AND s.[Период]<=o.date AND s.[Учетная цена, старое] > 0 ORDER BY s.[Период] desc) ,0) FROM mag_pbi.pbi.ostatki_short o WHERE [Учетная цена по себест] = 0 OR [Учетная цена по себест] is null */ END GO /****** Object: StoredProcedure [pbi].[migrate_ostatok_da_net] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [pbi].[migrate_ostatok_da_net] AS BEGIN SET NOCOUNT ON; DECLARE @Date1 DATE, @Date2 DATE SET @Date1 = '2024-01-01' SET @Date2 = CAST( GETDATE() AS Date ) drop table pbi.[w_ostatok_da_net] SELECT * INTO pbi.[w_ostatok_da_net] FROM ( SELECT DATEADD(DAY,number+1,@Date1) [dt] FROM master..spt_values WHERE type = 'P' AND DATEADD(DAY,number+1,@Date1) < @Date2 )as t1 cross join ( select [1c_id] as [_IDRREF] , [artic_id] , n.minAvailableQty --, n.minAvailableQty10 from pbi.nomenclature n --where [статус] in (/*'Выведен из ассортимента',*/ 'Основной', 'Базовый', 'Маркетплейс', 'Обособленное обеспечение', 'New') )as t2 ALTER TABLE pbi.[w_ostatok_da_net] ADD [ostatok] numeric (15,6) NULL; --ALTER TABLE pbi.[w_ostatok_da_net] ADD [ostatok10] numeric (15,6) NULL; ALTER TABLE pbi.[w_ostatok_da_net] ADD [quantity] numeric (15,6) NULL; ALTER TABLE pbi.[w_ostatok_da_net] ADD [upakovok] numeric (15,6) NULL; ALTER TABLE pbi.[w_ostatok_da_net] ADD sellable_stock decimal(18,6) NULL UPDATE pbi.[w_ostatok_da_net] set [quantity] = ( select sum(o.[quantity])-- >= n.minAvailableQty then sum(o.[quantity]) else 0 end FROM [mag_pbi].[pbi].[ostatki_short] o WHERE o.[1c_id]=n.[_IDRREF] AND ([Категория склада] IN ('Хранение', 'Розничная точка', 'Фасовка')) AND o.date <= n.[dt] ) FROM pbi.[w_ostatok_da_net] n UPDATE pbi.[w_ostatok_da_net] set [upakovok] = ( select sum(o.[upakovok])-- >= n.minAvailableQty then sum(o.[quantity]) else 0 end FROM [mag_pbi].[pbi].[ostatki_short] o WHERE o.[1c_id]=n.[_IDRREF] AND ([Категория склада] IN ('Хранение', 'Розничная точка', 'Фасовка')) AND o.date <= n.[dt] ) FROM pbi.[w_ostatok_da_net] n UPDATE pbi.[w_ostatok_da_net] set [ostatok] = case when [upakovok] >= minAvailableQty then 1 else 0 end --UPDATE pbi.[w_ostatok_da_net] set [ostatok10] = case when [upakovok] >= minAvailableQty10 then 1 else 0 end --Добавляем остатки МП, если они еще не заполнены. Проверяем последние 3 дня ALTER TABLE pbi.[w_ostatok_da_net] ADD [quantity_mp] numeric (15,6) NULL; ALTER TABLE pbi.[w_ostatok_da_net] ADD [upakovok_mp] numeric (15,6) NULL; ALTER TABLE pbi.[w_ostatok_da_net] ADD [dostupno_upakovok_mp] numeric (15,6) NULL; ALTER TABLE pbi.[w_ostatok_da_net] ADD [ostatok_mp] numeric (15,6) NULL; ALTER TABLE pbi.[w_ostatok_da_net] ADD [ostatok_all] numeric (15,6) NULL; DECLARE @DaysBack INT = 3, @StartTime DATETIME = SYSDATETIME(), @RowCount INT; WITH agg AS ( SELECT CAST(src.[Дата] AS DATE) AS [Дата], src.[artic_id], SUM(src.[Остаток МП, шт]) AS sum_quantity_mp, SUM(src.[Остаток МП, упак]) AS sum_upakovok_mp, SUM(src.[Доступно МП, упак]) AS sum_dostupno_upakovok_mp FROM [mag_pbi].[pbi].[ostatki_mp] AS src WHERE CAST(src.[Дата] AS DATE) >= DATEADD(DAY, -@DaysBack, CAST(GETDATE() AS DATE)) GROUP BY CAST(src.[Дата] AS DATE),src.[artic_id] ) UPDATE tgt SET tgt.[quantity_mp] = ISNULL(tgt.[quantity_mp], agg.sum_quantity_mp), tgt.[upakovok_mp] = ISNULL(tgt.[upakovok_mp], agg.sum_upakovok_mp), tgt.[dostupno_upakovok_mp] = ISNULL(tgt.[dostupno_upakovok_mp], agg.sum_dostupno_upakovok_mp) FROM [mag_pbi].[pbi].[w_ostatok_da_net] AS tgt INNER JOIN agg ON tgt.[artic_id] = agg.[artic_id] AND CAST(tgt.[dt] AS DATE) = agg.[Дата] WHERE CAST(tgt.[dt] AS DATE) >= DATEADD(DAY, -@DaysBack, CAST(GETDATE() AS DATE)) AND ( tgt.[quantity_mp] IS NULL OR tgt.[upakovok_mp] IS NULL OR tgt.[dostupno_upakovok_mp] IS NULL ); -- логирование результата BEGIN TRY INSERT INTO [analytics].[load_log_w_ostatok_da_net] ([load_time], [days_back], [rows_updated], [duration_sec]) VALUES ( @StartTime, @DaysBack, @RowCount, DATEDIFF(SECOND, @StartTime, SYSDATETIME()) ); END TRY BEGIN CATCH PRINT '⚠ Ошибка при записи в таблицу лога.'; END CATCH; UPDATE pbi.[w_ostatok_da_net] set [ostatok_mp] = case when [upakovok_mp] >= minAvailableQty then 1 else 0 end UPDATE pbi.[w_ostatok_da_net] set [ostatok_all] = case when [upakovok] >= minAvailableQty OR [upakovok_mp] >= minAvailableQty then 1 else 0 end --Удаляем нулевые значения DELETE FROM [mag_pbi].[pbi].[w_ostatok_da_net] WHERE [ostatok_all] < 1 CREATE NONCLUSTERED INDEX IX_w_ostatok__id_dt_desc__incl_qty ON [pbi].[w_ostatok_da_net] ([_IDRREF], [dt] DESC) INCLUDE ([quantity]); CREATE NONCLUSTERED INDEX IX_w_ostatok__dt_id__incl_qty ON [pbi].[w_ostatok_da_net] ([dt], [_IDRREF]) INCLUDE ([quantity]); SET NOCOUNT OFF; END GO /****** Object: StoredProcedure [pbi].[migrate_pricelist] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [pbi].[migrate_pricelist] AS BEGIN DROP TABLE [pbi].[pricelist] SELECT * INTO [pbi].[pricelist] FROM( SELECT [_Fld15493] as Цена , (SELECT _Description FROM MAG_2019.[dbo].[_Reference78] r WHERE r._IDRRef = i.[_Fld15492RRef]) as [Вид цены] , i._Fld15490RRef as [1c_id] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), i._Fld15490RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), i._Fld15490RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), i._Fld15490RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), i._Fld15490RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), i._Fld15490RRef, 2),5,12) ))as artic_id , DATEADD(year, -2000, i._Period) as [Дата] , _Period FROM [MAG_2019].[dbo].[_InfoRg15489] i /*РегистрСведений.ЦеныНоменклатуры*/ ) as pricelist CREATE NONCLUSTERED INDEX [NonClusteredIndex-20220325-100926] ON [pbi].[pricelist] ( [1c_id] ASC, [Вид цены] ASC, [_Period] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] END GO /****** Object: StoredProcedure [pbi].[migrate_stock_balance] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [pbi].[migrate_stock_balance] AS BEGIN SET NOCOUNT ON; DROP TABLE IF EXISTS mag_pbi.analytics.stock_balance; IF NOT EXISTS ( SELECT 1 FROM sys.indexes i INNER JOIN sys.objects o ON i.object_id = o.object_id WHERE i.name = N'N2' AND o.name = N'nomenclature' AND SCHEMA_NAME(o.schema_id) = N'pbi' ) BEGIN CREATE NONCLUSTERED INDEX [N2] ON [pbi].[nomenclature] ([artic_id]) INCLUDE ([Знаменатель объема],[Числитель объема],[Цена учетная, руб]); END ;WITH Calendar AS ( SELECT CAST(GETDATE() AS DATE) AS DateValue UNION ALL SELECT DATEADD(DAY, 1, DateValue) FROM Calendar WHERE DateValue < CAST(GETDATE() AS DATE) ), -- 2. Фильтруем таблицу остатков Ostatki AS ( SELECT DATEADD(year, -2000, t._Period) as [date], LOWER(CONCAT( SUBSTRING ( CONVERT(nvarchar(36), n._IDRRef, 2), 25,8),'-', SUBSTRING ( CONVERT(nvarchar(36), n._IDRRef, 2),21,4),'-', SUBSTRING ( CONVERT(nvarchar(36), n._IDRRef, 2),17,4),'-', SUBSTRING ( CONVERT(nvarchar(36), n._IDRRef, 2), 1,4),'-', SUBSTRING ( CONVERT(nvarchar(36), n._IDRRef, 2), 5,12) )) as artic_id, n._IDRRef as [1c_id], n._Code as code, (SELECT TOP 1 upakovka FROM mag_pbi.pbi.[БазоваяУпаковка] up WHERE t._Fld17485RRef = up._OwnerID_RRRef) as upakovka, [_Fld17491] / NULLIF( (SELECT TOP 1 upakovka FROM mag_pbi.pbi.[БазоваяУпаковка] up WHERE t._Fld17485RRef = up._OwnerID_RRRef), 0 ) * (CASE _RecordKind WHEN 0 THEN 1 WHEN 1 THEN -1 END) as upakovok, [_Fld17491] * (CASE _RecordKind WHEN 0 THEN 1 WHEN 1 THEN -1 END) as quantity FROM [MAG_2019].[dbo].[_AccumRg17484] t /*Регистр ТоварыНаСкладах*/ INNER JOIN [mag_pbi].[pbi].[sklad_2019] s ON s._IDRRef = t._Fld17488RRef FULL OUTER JOIN [mag_2019].[dbo]._Reference188X1 n ON t._Fld17485RRef = n._IDRRef WHERE s.[Категория] <> 'Виртуальный' ), -- 3. Накопительный итог по каждому артикулу и дате CumulativeStock AS ( SELECT c.DateValue AS [Дата], o.artic_id, o.[1c_id], o.code, SUM(ISNULL(o.quantity, 0)) AS [Остаток склад шт], SUM(ISNULL(o.upakovok, 0)) AS [Остаток склад упак], /* рассчитывается далее */ CAST(NULL AS NUMERIC(26,7)) AS [Остаток склад руб], CAST(NULL AS NUMERIC(26,7)) AS [Остаток склад м3], /* новые колонки по МП */ CAST(NULL AS NUMERIC(26,7)) AS [Остаток МП, шт], CAST(NULL AS NUMERIC(26,7)) AS [Остаток МП, руб], CAST(NULL AS NUMERIC(26,7)) AS [Остаток склад + МП, шт], CAST(NULL AS NUMERIC(26,7)) AS [Остаток склад + МП, руб], /* уже существующие комбинированные показатели */ CAST(NULL AS NUMERIC(26,7)) AS [Остаток склад + в пути + произв., упак], CAST(NULL AS NUMERIC(26,7)) AS [Остаток склад + в пути + произв., руб], CAST(NULL AS NUMERIC(26,7)) AS [Остаток склад + МП + в пути + произв., упак], CAST(NULL AS NUMERIC(26,7)) AS [Остаток склад + МП + в пути + произв., руб] FROM Calendar c JOIN Ostatki o ON o.[date] <= c.DateValue GROUP BY c.DateValue, o.artic_id, o.[1c_id], o.code ) -- 4. Результат в таблицу SELECT * INTO mag_pbi.analytics.stock_balance FROM CumulativeStock ORDER BY [Дата]; -- Остаток на складе: руб и м3 UPDATE sb SET [Остаток склад м3] = sb.[Остаток склад шт] * ISNULL(n.[Числитель объема], 0) / NULLIF(ISNULL(n.[Знаменатель объема], 1), 0), [Остаток склад руб] = sb.[Остаток склад шт] * ISNULL(n.[Цена учетная, руб], 0) FROM mag_pbi.analytics.stock_balance sb LEFT JOIN mag_pbi.pbi.nomenclature n ON sb.artic_id = n.artic_id; -- Добавляем остаток "в пути" и "в производстве" ;WITH Aggregated AS ( SELECT sb.artic_id, sb.[Дата], sb.[Остаток склад руб], sb.[Остаток склад упак], SUM(ISNULL(z.[Сумма в руб.], 0)) AS [В пути и произв., руб], SUM(ISNULL(z.[Кол. упаковок], 0)) AS [В пути и произв., упак] FROM mag_pbi.analytics.stock_balance sb LEFT JOIN mag_pbi.analytics.Заказы z ON z.artic_id = sb.artic_id AND z.[Дата заказа поставщику] <= sb.[Дата] AND z.[Статус] IN ('В пути', 'В производстве') GROUP BY sb.artic_id, sb.Дата, sb.[Остаток склад руб], sb.[Остаток склад упак] ) UPDATE sb SET [Остаток склад + в пути + произв., упак] = a.[Остаток склад упак] + ISNULL(a.[В пути и произв., упак], 0), [Остаток склад + в пути + произв., руб] = a.[Остаток склад руб] + ISNULL(a.[В пути и произв., руб], 0) FROM mag_pbi.analytics.stock_balance sb LEFT JOIN Aggregated a ON sb.artic_id = a.artic_id AND sb.Дата = a.Дата; -- Добавляем остаток МП за последнюю дату обновления из регистра сведений ;WITH AggregMarketplace AS ( SELECT DATEADD(YEAR, -2000, ost._Fld33596) AS [Дата обновления], LOWER(CONCAT( SUBSTRING ( CONVERT(nvarchar(36), ost.[_Fld28683RRef], 2), 25,8),'-', SUBSTRING ( CONVERT(nvarchar(36), ost.[_Fld28683RRef], 2), 21,4),'-', SUBSTRING ( CONVERT(nvarchar(36), ost.[_Fld28683RRef], 2), 17,4),'-', SUBSTRING ( CONVERT(nvarchar(36), ost.[_Fld28683RRef], 2), 1,4),'-', SUBSTRING ( CONVERT(nvarchar(36), ost.[_Fld28683RRef], 2), 5,12) )) AS artic_id, SUM(ISNULL(ost._Fld33602, 0)) AS [Остаток МП упак] FROM [MAG_2019].[dbo].[_InfoRg28682X1] AS ost /* РегистрСведений.ОстаткиТоваровВоВнешнихСистемах */ WHERE ost._Fld33596 = ( SELECT TOP (1) _Fld33596 FROM [MAG_2019].[dbo].[_InfoRg28682X1] ORDER BY _Fld33596 DESC ) GROUP BY ost._Fld28683RRef, ost._Fld33596 ) -- Обновляем МП и комбинированные колонки UPDATE sb SET /* МП → шт и руб */ [Остаток МП, шт] = ISNULL(mp.[Остаток МП упак], 0) * NULLIF(ISNULL(n.[Базовая упаковка], 1), 0), [Остаток МП, руб] = ( ISNULL(mp.[Остаток МП упак], 0) * NULLIF(ISNULL(n.[Базовая упаковка], 1), 0) ) * ISNULL(n.[Цена учетная, руб], 0), /* Склад + МП */ [Остаток склад + МП, шт] = sb.[Остаток склад шт] + ( ISNULL(mp.[Остаток МП упак], 0) * NULLIF(ISNULL(n.[Базовая упаковка], 1), 0) ), [Остаток склад + МП, руб] = sb.[Остаток склад руб] + ( ISNULL(mp.[Остаток МП упак], 0) * NULLIF(ISNULL(n.[Базовая упаковка], 1), 0) * ISNULL(n.[Цена учетная, руб], 0) ), /* Склад + МП + в пути + произв. (как было) */ [Остаток склад + МП + в пути + произв., упак] = sb.[Остаток склад + в пути + произв., упак] + ISNULL(mp.[Остаток МП упак], 0), [Остаток склад + МП + в пути + произв., руб] = sb.[Остаток склад + в пути + произв., руб] + ( ISNULL(mp.[Остаток МП упак], 0) * ISNULL(n.[Цена учетная, руб], 0) * NULLIF(ISNULL(n.[Базовая упаковка], 1), 0) ) FROM mag_pbi.analytics.stock_balance sb LEFT JOIN mag_pbi.pbi.nomenclature n ON sb.artic_id = n.artic_id LEFT JOIN AggregMarketplace mp ON sb.artic_id = mp.artic_id AND sb.Дата = mp.[Дата обновления]; --OPTION (MAXRECURSION 0); -- при необходимости для Calendar END GO /****** Object: StoredProcedure [pbi].[migrate_uchet_summa] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [pbi].[migrate_uchet_summa] AS BEGIN DROP TABLE [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] SELECT s.* INTO [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s INNER JOIN [mag_2019].[dbo]._Reference188X1 n /*номенклатура*/ ON n._IDRRef = s.[1c_id] INNER JOIN [mag_pbi].[pbi].[groups] g ON n._ParentIDRRef = g.[1c_id] WHERE g.g <> '*Внутренняя' /*ALTER TABLE [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] DROP COLUMN [Учетная сумма, руб]*/ /*ALTER TABLE [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] DROP COLUMN [Учетная сумма, usd]*/ ALTER TABLE [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] ADD [Учетная сумма, руб] DECIMAL(21, 9) NULL ALTER TABLE [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] ADD [Учетная сумма, usd] DECIMAL(21, 9) NULL ALTER TABLE [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] ADD [Источник заказа] NVARCHAR(50) NULL UPDATE s SET s.[Учетная сумма, руб] = v.[Учетная сумма, руб] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] s LEFT JOIN [mag_pbi].[pbi].[УчетнаяСуммаДляPBI] v ON s.[Период] = v.[Период] AND s.[artic_id] = v.[artic_id] AND s.[1c_document_id] = v.[1c_document_id] AND s.[Количество] = v.[Количество] AND [Статья] = 'Реализация' UPDATE s SET s.[Учетная сумма, usd] = v.[Учетная сумма, usd] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] s LEFT JOIN [mag_pbi].[pbi].[УчетнаяСуммаДляPBI] v ON s.[Период] = v.[Период] AND s.[artic_id] = v.[artic_id] AND s.[1c_document_id] = v.[1c_document_id] AND s.[Количество] = v.[Количество] AND [Статья] = 'Реализация' UPDATE s SET s.[Источник заказа] = ord.[source] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] s LEFT JOIN [mag_pbi].[dbo].[order_source] ord ON s.[Номер заказа] = ord.order_id END GO /****** Object: StoredProcedure [pbi].[sp_nomenclature_full_page] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [pbi].[sp_nomenclature_full_page] @OffsetRows int = 0, @FetchRows int = 1000 AS BEGIN SET NOCOUNT ON; ;WITH page AS ( SELECT nom.code, nom.[1c_group], -- === nom: оставил все поля как в твоей вьюхе === nom.artic_id, nom.[1c_id], nom.cenovaya_gruppa, nom.description, nom.artic, nom.vid_nomen, nom.Производитель, nom.group_id, nom.card, nom.photo, nom.base, nom.[Знаменатель веса], nom.[Числитель веса], nom.[Знаменатель объема], nom.[Числитель объема], nom.[Количество упак в коробе], nom.[Количество упак в кванте], nom.[id magok], nom.Товарныйменеджера, nom.МенеджерПоЗакупкам2, nom.РуководительНаправления, nom.[Менеджер OZON], nom.[Менеджер WB], nom.[АБС статус], nom.[АБС план], nom.[ABC Парето], nom.[XYZ статус 12м], nom.[Комментарий для матрицы], nom.Коллекция, nom.[Ценовой сегмент Магок], nom.[Ценовой сегмент МП], nom.[Кол-во упак в заказе Магок], nom.Бренд, nom.[Тип товара], nom.Метка, nom.[Ширина, мм], nom.Цвет, nom.[Номер цвета], nom.[Тип шнура], nom.[Тип плетения], nom.Размер, nom.Особенность, nom.Форма, nom.Ширина, nom.[Формат упаковки], nom.[Макс. запас], nom.[Мин. запас], nom.[QTY PACKS], nom.[Да/Нет Собственное пр-во], nom.[ID OZON], nom.[ID WB], nom.WB, nom.Ozon, nom.СТМ, nom.[Выгружать на я.маркет], nom.[Выгружать в Google Merchant], nom.[Товар МП], nom.Неликвид, nom.Статус, nom.[Сквозной цвет], nom.[Базовая упаковка], nom.[Качество контента Ozon], nom.[Качество контента WB], nom.[Качество контента WB by Ozon], nom.[Качество контента Magok], nom.[Вид номенклатуры], nom.max_year_quantity, nom.max_quarter_quantity, nom.[Цена учетная, руб], nom.[Цена учетная, usd], nom.СредниеМесячныеПродажи, nom.СКО_МесячныхПродаж, nom.minAvailableQty FROM pbi.nomenclature AS nom ORDER BY nom.code OFFSET @OffsetRows ROWS FETCH NEXT @FetchRows ROWS ONLY ), -- ограничиваем ref188 только кодами из page ref188 AS ( SELECT n._Code, n._IDRRef, n._Fld28142 FROM MAG_2019.dbo._Reference188X1 AS n INNER JOIN (SELECT DISTINCT code FROM page) p ON p.code = n._Code WHERE n._Fld21101RRef IN ( 0x80C5305A3A00E12B11E5845202CA01FB, 0x80C5305A3A00E12B11E584520AEC30EC ) ), up_min AS ( SELECT a._OwnerID_RRRef, a._Fld24768 AS upakovka, a._Fld24761 AS [Вес], a._Fld24763 AS [Высота], a._Fld24765 AS [Глубина], a._Fld24775 AS [Ширина], a._Fld24771 AS [Объем] FROM MAG_2019.dbo._Reference347X1 AS a LEFT JOIN MAG_2019.dbo._Reference347X1 AS b ON b._OwnerID_RRRef = a._OwnerID_RRRef AND a._Fld24768 > b._Fld24768 AND a._Marked = 0x00 AND b._Marked = 0x00 INNER JOIN ref188 AS r ON r._IDRRef = a._OwnerID_RRRef AND r._Fld28142 = 0 WHERE b._Fld24768 IS NULL AND a._Marked = 0x00 ), up_max AS ( SELECT a._OwnerID_RRRef, a._Fld24768 AS upakovka, a._Fld24761 AS [Вес], a._Fld24763 AS [Высота], a._Fld24765 AS [Глубина], a._Fld24775 AS [Ширина], a._Fld24771 AS [Объем] FROM MAG_2019.dbo._Reference347X1 AS a LEFT JOIN MAG_2019.dbo._Reference347X1 AS b ON b._OwnerID_RRRef = a._OwnerID_RRRef AND a._Fld24768 < b._Fld24768 AND a._Marked = 0x00 AND b._Marked = 0x00 INNER JOIN ref188 AS r ON r._IDRRef = a._OwnerID_RRRef AND r._Fld28142 <> 0 WHERE b._Fld24768 IS NULL AND a._Marked = 0x00 ), up AS ( SELECT * FROM up_min UNION ALL SELECT * FROM up_max ), ref1c AS ( SELECT r._Code AS code, r._IDRRef, up._OwnerID_RRRef, LOWER( SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 25, 8) + N'-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 21, 4) + N'-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 17, 4) + N'-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 1, 4) + N'-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 5, 12) ) AS artic_id, up.upakovka, up.[Вес], up.[Высота], up.[Глубина], up.[Ширина], up.[Объем] FROM ref188 AS r LEFT JOIN up ON up._OwnerID_RRRef = r._IDRRef ), bc AS ( SELECT x._Fld15521RRef AS _IDRRef, STRING_AGG(x.barcode, N'; ') AS barcodes FROM ( SELECT DISTINCT i._Fld15521RRef, CONVERT(nvarchar(64), i._Fld15520) AS barcode FROM MAG_2019.dbo._InfoRg15519 AS i INNER JOIN ref188 AS r ON r._IDRRef = i._Fld15521RRef ) AS x GROUP BY x._Fld15521RRef ) SELECT p.*, g._Description AS group__Description, g.g, g.g1, g.g2, g.g3, g.group_id AS group__group_id, g._ParentIDRRef AS group__ParentIDRRef, g.lvl AS group__lvl, g.path AS group__path, g.code AS group__code, g.[1c_id] AS group__1c_id, g.план AS group__план, g.[first group] AS group__first_group, ref1c._IDRRef AS ref_1c__IDRRef, ref1c._OwnerID_RRRef AS ref_1c__OwnerID_RRRef, ref1c.artic_id AS ref_1c__artic_id, ref1c.upakovka AS ref_1c__upakovka, ref1c.[Вес] AS ref_1c__Вес, ref1c.[Высота] AS ref_1c__Высота, ref1c.[Глубина] AS ref_1c__Глубина, ref1c.[Ширина] AS ref_1c__Ширина, ref1c.[Объем] AS ref_1c__Объем, bc.barcodes AS ref_1c__barcodes FROM page AS p LEFT JOIN pbi.groups AS g ON g.[1c_id] = p.[1c_group] LEFT JOIN ref1c ON ref1c.code = p.code LEFT JOIN bc ON bc._IDRRef = ref1c._IDRRef ORDER BY p.code OPTION (RECOMPILE); -- чтобы план подстраивался под offset/fetch END GO /****** Object: StoredProcedure [pbi].[sp_nomenclature_full_page_v] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [pbi].[sp_nomenclature_full_page_v] @OffsetRows int = 0, @FetchRows int = 1000 AS BEGIN SET NOCOUNT ON; ;WITH page AS ( SELECT nom.artic_id, nom.[1c_id], nom.code, nom.cenovaya_gruppa, nom.description, nom.artic, nom.vid_nomen, nom.Производитель, nom.group_id, nom.[1c_group], nom.card, nom.photo, nom.base, nom.[Знаменатель веса], nom.[Числитель веса], nom.[Знаменатель объема], nom.[Числитель объема], nom.[Количество упак в коробе], nom.[Количество упак в кванте], nom.[id magok], nom.Товарныйменеджера, nom.МенеджерПоЗакупкам2, nom.РуководительНаправления, nom.[Менеджер OZON], nom.[Менеджер WB], nom.[АБС статус], nom.[АБС план], nom.[ABC Парето], nom.[XYZ статус 12м], nom.[Комментарий для матрицы], nom.Коллекция, nom.[Ценовой сегмент Магок], nom.[Ценовой сегмент МП], nom.[Кол-во упак в заказе Магок], nom.Бренд, nom.[Тип товара], nom.Метка, nom.[Ширина, мм], nom.Цвет, nom.[Номер цвета], nom.[Тип шнура], nom.[Тип плетения], nom.Размер, nom.Особенность, nom.Форма, nom.Ширина, nom.[Формат упаковки], nom.[Макс. запас], nom.[Мин. запас], nom.[QTY PACKS], nom.[Да/Нет Собственное пр-во], nom.[ID OZON], nom.[ID WB], nom.WB, nom.Ozon, nom.СТМ, nom.[Выгружать на я.маркет], nom.[Выгружать в Google Merchant], nom.[Товар МП], nom.Неликвид, nom.Статус, nom.[Сквозной цвет], nom.[Базовая упаковка], nom.[Качество контента Ozon], nom.[Качество контента WB], nom.[Качество контента WB by Ozon], nom.[Качество контента Magok], nom.[Вид номенклатуры], nom.max_year_quantity, nom.max_quarter_quantity, nom.[Цена учетная, руб], nom.[Цена учетная, usd], nom.СредниеМесячныеПродажи, nom.СКО_МесячныхПродаж, nom.minAvailableQty FROM pbi.nomenclature AS nom ORDER BY nom.code OFFSET @OffsetRows ROWS FETCH NEXT @FetchRows ROWS ONLY ), ref188 AS ( SELECT n._Code, n._IDRRef, n._Fld28142 FROM MAG_2019.dbo._Reference188X1 AS n INNER JOIN (SELECT DISTINCT code FROM page) p ON p.code = n._Code WHERE n._Fld21101RRef IN ( 0x80C5305A3A00E12B11E5845202CA01FB, 0x80C5305A3A00E12B11E584520AEC30EC ) ), up_min AS ( SELECT a._OwnerID_RRRef, a._Fld24768 AS upakovka, a._Fld24761 AS [Вес], a._Fld24763 AS [Высота], a._Fld24765 AS [Глубина], a._Fld24775 AS [Ширина], a._Fld24771 AS [Объем] FROM MAG_2019.dbo._Reference347X1 AS a LEFT JOIN MAG_2019.dbo._Reference347X1 AS b ON b._OwnerID_RRRef = a._OwnerID_RRRef AND a._Fld24768 > b._Fld24768 AND a._Marked = 0x00 AND b._Marked = 0x00 INNER JOIN ref188 AS r ON r._IDRRef = a._OwnerID_RRRef AND r._Fld28142 = 0 WHERE b._Fld24768 IS NULL AND a._Marked = 0x00 ), up_max AS ( SELECT a._OwnerID_RRRef, a._Fld24768 AS upakovka, a._Fld24761 AS [Вес], a._Fld24763 AS [Высота], a._Fld24765 AS [Глубина], a._Fld24775 AS [Ширина], a._Fld24771 AS [Объем] FROM MAG_2019.dbo._Reference347X1 AS a LEFT JOIN MAG_2019.dbo._Reference347X1 AS b ON b._OwnerID_RRRef = a._OwnerID_RRRef AND a._Fld24768 < b._Fld24768 AND a._Marked = 0x00 AND b._Marked = 0x00 INNER JOIN ref188 AS r ON r._IDRRef = a._OwnerID_RRRef AND r._Fld28142 <> 0 WHERE b._Fld24768 IS NULL AND a._Marked = 0x00 ), up AS ( SELECT * FROM up_min UNION ALL SELECT * FROM up_max ), ref1c AS ( SELECT r._Code AS code, r._IDRRef, r._IDRRef AS _OwnerID_RRRef, -- чтобы сохранить имя ref_1c__OwnerID_RRRef как раньше (если нужно) LOWER( SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 25, 8) + N'-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 21, 4) + N'-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 17, 4) + N'-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 1, 4) + N'-' + SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 5, 12) ) AS artic_id, up.upakovka, up.[Вес], up.[Высота], up.[Глубина], up.[Ширина], up.[Объем] FROM ref188 AS r LEFT JOIN up ON up._OwnerID_RRRef = r._IDRRef ), bc AS ( SELECT x._Fld15521RRef AS _IDRRef, STRING_AGG(x.barcode, N'; ') AS barcodes FROM ( SELECT DISTINCT i._Fld15521RRef, CONVERT(nvarchar(64), i._Fld15520) AS barcode FROM MAG_2019.dbo._InfoRg15519 AS i INNER JOIN ref188 r ON r._IDRRef = i._Fld15521RRef ) AS x GROUP BY x._Fld15521RRef ) SELECT -- === все поля как ты ожидаешь от v.[...] === p.[artic_id], p.[1c_id], p.[code], p.[cenovaya_gruppa], p.[description], p.[artic], p.[vid_nomen], p.[Производитель], p.[group_id], p.[1c_group], p.[card], p.[photo], p.[base], p.[Знаменатель веса], p.[Числитель веса], p.[Знаменатель объема], p.[Числитель объема], p.[Количество упак в коробе], p.[Количество упак в кванте], p.[id magok], p.[Товарныйменеджера], p.[МенеджерПоЗакупкам2], p.[РуководительНаправления], p.[Менеджер OZON], p.[Менеджер WB], p.[АБС статус], p.[АБС план], p.[ABC Парето], p.[XYZ статус 12м], p.[Комментарий для матрицы], p.[Коллекция], p.[Ценовой сегмент Магок], p.[Ценовой сегмент МП], p.[Кол-во упак в заказе Магок], p.[Бренд], p.[Тип товара], p.[Метка], p.[Ширина, мм], p.[Цвет], p.[Номер цвета], p.[Тип шнура], p.[Тип плетения], p.[Размер], p.[Особенность], p.[Форма], p.[Ширина], p.[Формат упаковки], p.[Макс. запас], p.[Мин. запас], p.[QTY PACKS], p.[Да/Нет Собственное пр-во], p.[ID OZON], p.[ID WB], p.[WB], p.[Ozon], p.[СТМ], p.[Выгружать на я.маркет], p.[Выгружать в Google Merchant], p.[Товар МП], p.[Неликвид], p.[Статус], p.[Сквозной цвет], p.[Базовая упаковка], p.[Качество контента Ozon], p.[Качество контента WB], p.[Качество контента WB by Ozon], p.[Качество контента Magok], p.[Вид номенклатуры], p.[max_year_quantity], p.[max_quarter_quantity], p.[Цена учетная, руб], p.[Цена учетная, usd], p.[СредниеМесячныеПродажи], p.[СКО_МесячныхПродаж], p.[minAvailableQty], -- === упаковки/габариты/штрихкоды как ты хочешь в конце === ref1c.upakovka AS [upakovka], ref1c.[Вес] AS [вес], ref1c.[Высота] AS [Высота], ref1c.[Глубина] AS [Глубина], ref1c.[Ширина] AS [Ширина], ref1c.[Объем] AS [Объем], bc.barcodes AS [barcodes] FROM page AS p LEFT JOIN pbi.groups AS g ON g.[1c_id] = p.[1c_group] LEFT JOIN ref1c ON ref1c.code = p.code LEFT JOIN bc ON bc._IDRRef = ref1c._IDRRef ORDER BY p.code OPTION (RECOMPILE); END GO /****** Object: StoredProcedure [pbi].[Заполнить себестоимостьОт2022(закупки+продажи)] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbi].[Заполнить себестоимостьОт2022(закупки+продажи)] @dt datetime2 = '4022-01-01' AS BEGIN /*r._RecorderTRef: 0x000001A1 Заявление о ввозе товаров из ЕАЭС 0x000001E3 ПТУ 0x00000189 Возврат товаров поставщику 0x000001D5 Передача товаров 0x000001B0 Корректировка приобретения 0x0000020D Таможенная декларация на импорт закупка: (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) ЕАЭС: 0x000001A1 Таможня: 0x0000020D */ /* 0x80CD002590EC174111E581505088A8D5 USD 0x80D40CC47A052DFD11E6B6DD1820D178 Eur 0x80E90CC47A052DFD11E7145927CEFC24 Cny 0xAE9DB496910DCFD611E94F10743DE3FF USD2 0xAE9EB496910DCFD611E95C66B5DE3AFA USD2+2 */ DELETE FROM mag_pbi.pbiProd.[СебестоимостьОт2022] WHERE 1=1 DBCC CHECKIDENT ('[pbiProd].[СебестоимостьОт2022]', RESEED, 0); DECLARE @dtStart dateTime2; DECLARE @dtEnd datetime2; SET @dtStart = '2022-01-01' SET @dtEnd= '2025-01-01' -- выберем валюту рубль сразу ... DECLARE @CurrencyRubRRef UNIQUEIDENTIFIER; SELECT TOP (1) @CurrencyRubRRef = [_IDRRef] FROM [MAG_2019].[dbo].[_Reference50] WHERE _Code = '643'; INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] --INSERT INTO mag_pbi.[pbi].[Себестоимость2023] --INSERT INTO mag_pbi.[pbi].[Себестоимость2024] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Сборка], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Сборка USD2+2] ) SELECT --TOP (5000) -- это финальная выборка, её не корректировать(можно только комменить поля которые не нужны к выводу), менять всё во вложенных запросах ... [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , [Валюта документа] , [Ценовая группа] , [1c_document_id] , [Организация] , [Партнер] , [PartnerId] , [Контрагент] , [Менеджер] , [1c_id] , [artic_id] , [Курс usd] , [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] , [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Сборка] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , [Доставка USD2+2] , [НДС USD2+2] , [Таможня USD2+2] , [Сборка USD2+2] FROM ( SELECT [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , [Валюта документа] , [Ценовая группа] , [1c_document_id] , [Организация] , [Партнер] , PartnerId , [Контрагент] , [Менеджер] , [1c_id] , [artic_id] , [Курс usd] , [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] --, CASE WHEN [Валюта документа] = 'руб.' THEN -- [Закупка] / [Курс usd2] -- ELSE -- [Закупка, usd2] -- END as [Закупка, usd2] , [Закупка] / [Курс usd2] as [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Сборка] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , [Доставка] / [Курс usd2] as [Доставка USD2+2] , [НДС] / [Курс usd2] as [НДС USD2+2] , [Таможня] / [Курс usd2] as [Таможня USD2+2] , [Сборка] / [Курс usd2] as [Сборка USD2+2] FROM ( -- \\\\\\\\\\\\\\\\\\\\\\\\\\\\ ЗАКУПКИ \\\\\\\\\\\\\\\\ select --top (1) DATEADD(year, -2000, _Period) as [Период] , case WHEN r._RecorderTRef=0x000001A1 or r._RecorderTRef=0x0000020D THEN 'НДС' --WHEN r._RecorderTRef=0x000001A1 THEN 'ЕАЭС' --WHEN r._RecorderTRef=0x0000020D THEN 'Таможня' ELSE 'Закупка' END as [Статья] , 'Приход' as [Вид операции] , h.value as [Хоз операция] , case r._RecorderTRef WHEN 0x000001A1 then 'Заявление о ввозе товаров из ЕАЭС' WHEN 0x00000189 then 'Возврат товаров поставщику' WHEN 0x000001E3 then 'ПТУ' WHEN 0x000001D5 then 'Передача товаров' WHEN 0x000001B0 then 'Корректировка ' WHEN 0x0000020D then 'Таможенная декларация на импорт' ELSE 'Неизвестный тип' END as [тип документа] , '-' as [Номер документа] , '-' as [Номер заказа] , val._Description as [Валюта документа] ,CASE WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' WHEN r._RecorderTRef = 0x0000020D THEN 'Руб' ELSE 'Неопределено' END as [Ценовая группа] , r._RecorderRRef as [1c_document_id] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = r._Fld16346RRef ) as [Организация] , (SELECT TOP(1) _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = r.[_Fld16353RRef]) as [Партнер] --, r.[_Fld16353RRef] as PartnerId , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),5,12) ))as PartnerId , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = r._Fld16354_RRRef) as [Контрагент] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = [_Fld16348RRef]) as [Менеджер] , analitikaUchetaNomenklaturi.[_Fld20498RRef] as [1c_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),5,12))) as [artic_id] ,CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка THEN case [_Fld16345RRef] when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16361] ELSE [_Fld16361] END --WHEN r._RecorderTRef = 0x0000020D THEN customDeclaration._Fld8943 WHEN r._RecorderTRef = 0x0000020D THEN 0 --WHEN r._RecorderTRef=0x000001A1 THEN docEAS.[_Fld4052] WHEN r._RecorderTRef=0x000001A1 THEN 0 ELSE 0 END as [Количество] , [_Fld16362] / 1000 as [Сумма] , [_Fld16363] / 1000 as [СуммаБезНДС] ,0 as [СуммаРучнойСкидки] ,0 as [СуммаАвтоСкидки] , CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка THEN case [_Fld16345RRef] when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16362] / 1000 ELSE [_Fld16362] / 1000 END ELSE 0 END AS [Закупка] , CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка поле "сумма в валюте документа" THEN case [_Fld16345RRef] when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16373] / 1000 ELSE [_Fld16373] / 1000 END ELSE 0 END as [Закупка, usd2] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют --WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, r._Period) ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 --WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, r._Period) ORDER BY _Period desc ) as [Курс usd2] /*, CASE WHEN r._RecorderTRef=0x0000020D THEN [_Fld16369] / 1000 ELSE 0 END as [Таможня] , CASE WHEN r._RecorderTRef=0x000001A1 THEN [_Fld16369] / 1000 ELSE 0 END as [ЕАЭС] */ , CASE WHEN r._RecorderTRef=0x0000020D THEN [_Fld16369] / 1000 END as [Таможня] , 0 as [ЕАЭС] , 0 as [Маркетинг] -- маркетинг , 0 as [Доставка] -- доставка , 0 as [Сборка]-- Сборка , 0 as [ЗатратыМП] -- Затраты МП ,CASE WHEN LEFT(n._Code, 2) = '00' -- только для вида операция закупка THEN '9' + CONVERT(nvarchar(15), TRIM('-' FROM TRIM ( '00' FROM n._Code))) ELSE '8' + TRIM ( 'УТ-' FROM n._Code) END as [CodeUT] , CASE WHEN r._RecorderTRef=0x000001A1 THEN ([_Fld16362] - [_Fld16363]) / 1000 WHEN r._RecorderTRef=0x0000020D THEN ([_Fld16362] - [_Fld16363]) / 1000 ELSE 0 END as [НДС] , 0 as [ЗатратыСкладХранение] -- Затраты cклад хранение , 0 as [ЗатратыСкладЗарплата]-- Затраты cклад зарплаты , 0 as [Приемка] , 0 as [АтсМаркировка] , 0 as [ВремяВыполненияМинут] , 0 as [СборкаЗаказа] --,RIGHT(n._Code, LEN(n._Code) - DATALENGTH(CONVERT(VARCHAR(100),'УТ-'))) as [CodeUT] from mag_2019.dbo._AccumRg16344 r-- Регистр накопления Закупки LEFT JOIN [MAG_2019].[dbo].[_Reference160] as analitikaUchetaNomenklaturi on analitikaUchetaNomenklaturi.[_IDRRef] = [_Fld16349RRef] left join MAG_2019.dbo._Reference188X1 as N on analitikaUchetaNomenklaturi.[_Fld20498RRef] = N._IDRRef LEFT JOIN [mag_reports].[dbo].[enums] h ON h._IDRref = r._Fld16345RRef LEFT JOIN MAG_2019.dbo._reference50 val ON val._IDRRef = r._Fld16372RRef LEFT JOIN [MAG_2019].[dbo].[_Document525_VT8936] as customDeclaration ON customDeclaration.[_Document525_IDRRef] = [r]._RecorderRRef and analitikaUchetaNomenklaturi.[_Fld20498RRef] = customDeclaration._Fld8939RRef LEFT JOIN [MAG_2019].[dbo].[_Document417_VT4034] as docEAS ON docEAS.[_Document417_IDRRef] = [r]._RecorderRRef and [_Fld16349RRef] = docEAS.[_Fld4037RRef] ) tabZakupki UNION ALL SELECT -- top (1000) DATEADD(year, -2000, date) -- период ,SR -- Статья расходов , ВидОперации -- Вид операции , '' -- хоз операция , typeReg -- Тип документа , НомерДокумента -- Номер документа , [Номер заказа] -- Номер заказа клиента для РТУ , val._Description -- Валюта документа , CASE WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' ELSE 'Неопределено' END -- Ценовая группа , Регистратор -- Ссылка на документ , refOrganizaciya.[_Description] -- Организация , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = Партнер) -- Партнер , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [Партнер], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [Партнер], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [Партнер], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [Партнер], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), [Партнер], 2),5,12) ))as PartnerId , (SELECT _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = Контрагент) -- Контрагент , (SELECT _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = Менеджер) -- Менеджер , onec_id -- 1с id , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), onec_id, 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), onec_id, 2),21,4),'-',SUBSTRING(convert(nvarchar(36), onec_id, 2),17,4),'-',SUBSTRING(convert(nvarchar(36), onec_id, 2),1,4),'-',SUBSTRING(convert(nvarchar(36), onec_id, 2),5,12))) -- arctic id , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, date) ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, date) ORDER BY _Period desc ) as [Курс usd2] , kolvo -- количество , [Сумма] / 1000 , [СуммаБезНДС] / 1000 , [СуммаРучнойСкидки] / 1000 , [СуммаАвтоСкидки] / 1000 , [Закупка] -- закупка , [Закупка, usd2] -- закупка usd2 , 0 -- Таможня , 0 --ЕАЭС -- , marketing / 1000 -- маркетинг , delivery / 1000 -- доставка , [Сборка] / 1000 as [Сборка]-- Сборка , [ЗатратыМП] / 1000 -- Затраты МП --,CASE WHEN LEFT(refNomenclatura._Code, 2) = '00' -- только для вида операция закупка -- THEN '9' + CONVERT(nvarchar(15), TRIM('-' FROM TRIM ( '00' FROM refNomenclatura._Code))) -- ELSE '8' + TRIM ( 'УТ-' FROM refNomenclatura._Code) -- END --as [CodeUT] , 0 -- НДС , [ЗатратыСкладХранение] -- Затраты cклад хранение , [ЗатратыСкладЗарплата]-- Затраты cклад зарплаты , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , delivery / 1000 / (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, date) ORDER BY _Period desc ) as [Доставка USD2+2] , 0 as [НДС USD2+2] , 0 as [Таможня USD2+2] , [Сборка] / 1000 / (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, date) ORDER BY _Period desc ) as [Сборка USD2+2] -- ,RIGHT(refNomenclatura._Code, LEN(refNomenclatura._Code) - DATALENGTH(CONVERT(VARCHAR(100),'УТ-'))) as [CodeUT] FROM ( -- \\\\\\\\\\\\\\\\\\\\\\\\\\\\ ДОСТАВКА \\\\\\\\\\\\\\\\ SELECT --TOP (1) refPTU.[_Date_Time] as date -- дата , 'Доставка контейнера ВЭД' as SR , 'Приход' as ВидОперации , [_Fld33630RRef] as Регистратор -- регистратор , '-' as НомерДокумента -- Номер документа , '-' [Номер заказа] , 'ПТУ' as typeReg -- типРегистратора , refPTU.[_Fld7121RRef] as Организация -- Организация , refPTU.[_Fld7060RRef] as Партнер -- партнер , refPTU.[_Fld7064RRef] as Контрагент -- контрагент , refPTU.[_Fld7067RRef] as Менеджер -- Менеджер , [_Fld33631RRef] as onec_id -- Номенклатура --,refPtuNomen.[_Fld7134] as kolvo -- Количество , 0 as kolvo -- Количество --, [_Fld33633] as [Сумма] , 0 as [Сумма] , 0 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] , 0 as [Закупка] , 0 as [Закупка, usd2] , refPTU.[_Fld7059RRef] as ВалютаДокумента -- Валюта документа , [_Fld33632RRef] -- ППУ , 0 as marketing -- маркетинг , [_Fld33633] as delivery -- доставка , 0 as [Сборка]-- Сборка , 0 as [ЗатратыМП]-- Затраты мп , 0 as [ЗатратыСкладХранение]-- Затраты cклад хранение , 0 as [ЗатратыСкладЗарплата]-- Затраты cклад зарплаты , 0 as [Приемка] -- Приемка , 0 as [АтсМаркировка] , 0 as [ВремяВыполненияМинут] , 0 as [СборкаЗаказа] FROM [MAG_2019].[dbo].[_InfoRg33629] LEFT JOIN [MAG_2019].[dbo].[_Document483X1] as refPTU ON refPTU.[_IDRRef] = [_Fld33630RRef] LEFT JOIN [MAG_2019].[dbo].[_Document483_VT7128X1] as refPtuNomen ON refPtuNomen.[_Document483_IDRRef] = refPTU.[_IDRRef] AND refPtuNomen.[_Fld7130RRef] = [_Fld33631RRef] where [_Fld33634_RRRef] = 0x997EB49691D57EFD11ECE1AC556F9FF0 UNION ALL -- \\\\\\\\\\\\ МАРКЕТИНГ \\\\\\\\\\\\\\\ SELECT --TOP (1) refPTU.[_Date_Time] , 'Маркетинг' , 'Приход' , [_Fld33630RRef] -- регистратор , '-' -- Номер документа , '-' -- Номер заказа , 'ПТУ' , refPTU.[_Fld7121RRef] -- Организация , refPTU.[_Fld7060RRef] as Партнер -- партнер , refPTU.[_Fld7064RRef] as Контрагент -- контрагент , refPTU.[_Fld7067RRef] as Менеджер -- Менеджер , [_Fld33631RRef] -- Номенклатура , 0 -- Количество , 0 as [Сумма] , 0 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] , 0 as [Закупка] , 0 as [Закупка, usd2] , refPTU.[_Fld7059RRef] -- Валюта документа , [_Fld33632RRef] -- ППУ , [_Fld33633] -- маркетинг , 0 -- доставка , 0 -- Сборка , 0 -- Затраты мп , 0 -- Затраты cклад хранение , 0 -- Затраты cклад зарплата , 0 -- Приемка , 0 -- [АтсМаркировка] , 0 -- [ВремяВыполненияМинут] , 0 -- [СборкаЗаказа] FROM [MAG_2019].[dbo].[_InfoRg33629] LEFT JOIN [MAG_2019].[dbo].[_Document483X1] as refPTU ON refPTU.[_IDRRef] = [_Fld33630RRef] where [_Fld33634_RRRef] = 0x9981B49691D57EFD11EDCE203CED30C4 UNION ALL -- ///////////////// ПРОДАЖИ //////////////// SELECT --TOP (1) [_Period] ,'Реализация' ,'Расход' ,[_RecorderRRef] -- регистратор ,docRTU.[_Number] -- Номер документа , orders.[_Number] -- Номер заказа ,case [_RecorderTRef] WHEN 0x000001F4 then 'РТУ' ELSE 'Неизвестный тип' END , AnalitikaUchetaPartner.[_Fld20514RRef] -- Организация , AnalitikaUchetaPartner.[_Fld20513RRef] -- партнер , AnalitikaUchetaPartner.[_Fld20515_RRRef] -- контрагент , [_Fld15559RRef] as Менеджер -- Менеджер , analitikaUchetaNomenklaturi.[_Fld20498RRef] -- Номенклатура , [_Fld15567] -- количество , [_Fld15568] as [Сумма] , 0 as [СуммаБезНДС] , [_Fld15595] as [СуммаРучнойСкидки] , [_Fld15596] as [СуммаАвтоСкидки] , 0 as [Закупка] , 0 as [Закупка, usd2] , CASE WHEN [_Fld15601RRef] IS NULL THEN 'руб.' -- Валюта документа ELSE [_Fld15601RRef] END AS [Валюта документа] , '' -- ППУ , 0 -- маректинг , 0 -- Доставка , 0 -- Сборка , 0 -- Затраты мп , 0 -- Затраты cклад хранение , 0 -- Затраты cклад зарплаты , 0 -- Приемка , 0 -- [АтсМаркировка] , 0 -- [ВремяВыполненияМинут] , 0 -- [СборкаЗаказа] FROM [MAG_2019].[dbo].[_AccumRg15547] LEFT JOIN [MAG_2019].[dbo].[_Reference160] as analitikaUchetaNomenklaturi on analitikaUchetaNomenklaturi.[_IDRRef] = [_Fld15548RRef] LEFT JOIN [MAG_2019].[dbo].[_Reference162] as AnalitikaUchetaPartner on AnalitikaUchetaPartner.[_IDRRef] = [_Fld15550RRef] LEFT JOIN [MAG_2019].[dbo].[_Document500X1] as docRTU on docRTU.[_IDRRef] = [_RecorderRRef] LEFT JOIN (SELECT [_Document500_IDRRef] as _IDRRef ,MIN([_Fld7990_RRRef]) as orderRTU FROM [MAG_2019].[dbo].[_Document500_VT7967X1] GROUP BY [_Document500_IDRRef]) as ordersRTU ON ordersRTU._IDRRef = [_RecorderRRef] LEFT JOIN [MAG_2019].[dbo].[_Document404X1] as orders ON orders.[_IDRRef] = ordersRTU.orderRTU UNION ALL -- \\\\\\\\\\\\\\\\ СБОРКА РАСХОД БЕЗ ЗАТРАТ НА СБОРКУ\\\\\\\\\\\\\\\\ SELECT --TOP (1000) znS.[_Date_Time] as per , 'Сборка' , 'Расход' , TabGoods.[_Document407_IDRRef] -- регистратор , '-' -- Номер документа , '-' -- Номер заказа ,'Заказ на сборку' , ZnS.[_Fld3348RRef] -- Организация , Kontr.[_Fld20612RRef] -- партнер , ZnS.[_Fld27876RRef] -- контрагент , ZnS.[_Fld28230RRef] -- Менеджер , [_Fld3381RRef] as nom -- Номенклатура , [_Fld3385] as kolvo -- Количество --, tabset.[_Fld28063] , 0 as [Сумма] , 0 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] , (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] WHERE [Вид цены] = 'Учетная цена (руб)' AND [Дата] <= znS.[_Date_Time] and [_Fld3381RRef] = [1c_id] ORDER BY Дата desc ) / 1000 * [_Fld3385] * -1 as [Закупка] , (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] WHERE [Вид цены] = 'Учетная цена (руб)' AND [Дата] <= znS.[_Date_Time] and [_Fld3381RRef] = [1c_id] ORDER BY Дата desc ) / 1000 * [_Fld3385] * -1 / (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, znS.[_Date_Time]) ORDER BY _Period desc ) as [Закупка, usd2] , currency._IDRRef -- Валюта документа , '' -- ППУ , 0 -- маректинг , 0 -- Доставка , 0 -- сборка , 0 -- Затраты мп , 0 -- Затраты cклад хранение , 0 -- Затраты cклад зарплата , 0 -- Приемка , 0 -- [АтсМаркировка] , 0 -- [ВремяВыполненияМинут] , 0 -- [СборкаЗаказа] FROM [MAG_2019].[dbo].[_Document407_VT3379] as TabGoods INNER JOIN [MAG_2019].[dbo].[_Document407] as ZnS -- Заказ на сборку on ZnS._IDRRef = [_Document407_IDRRef] and _Posted = 0x01 -- проведен -- and [_Number] = 'АНУТ-010680' -- номер дока для проверки and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт LEFT JOIN [MAG_2019].[dbo].[_Reference168] as Kontr ON Kontr.[_IDRRef] = ZnS.[_Fld27876RRef] LEFT JOIN (SELECT TOP (1) [_IDRRef] FROM [MAG_2019].[dbo].[_Reference50] where _code = '643') as currency on 1 = 1 UNION ALL -- \\\\\\\\\\\\\\\\ СБОРКА ПРИХОД + ЗАТРАТЫ НА СБОРКУ \\\\\\\\\\\\\\\\ SELECT --TOP (333) znS.[_Date_Time] , 'Сборка' , 'Приход' , TabGoods.[_Document407_IDRRef] -- регистратор , '-' -- Номер документа , '-' -- Номер заказа ,'Заказ на сборку' , ZnS.[_Fld3348RRef] -- Организация , Kontr.[_Fld20612RRef] -- партнер , ZnS.[_Fld27876RRef] -- контрагент , ZnS.[_Fld28230RRef] -- Менеджер , tabSet.[_Fld28059RRef] -- Номенклатура --, [_Fld3385] -- Количество , tabset.[_Fld28063] , 0 as [Сумма] , 0 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] --, CASE WHEN tabSetPrices.[SumSebes] IS NULL THEN 0 -- ELSE tabSetPrices.[SumSebes] / 1000 * tabset.[_Fld28063] -- end as [Закупка] , (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] WHERE [Вид цены] = 'Учетная цена (руб)' AND [дата] <= znS.[_Date_Time] and [_Fld3381RRef] = [1c_id] ORDER BY Дата desc ) / 1000 * [_Fld3385] as [SumSebes] , (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] WHERE [Вид цены] = 'Учетная цена (руб)' AND [дата] <= znS.[_Date_Time] and [_Fld3381RRef] = [1c_id] ORDER BY Дата desc ) / 1000 * [_Fld3385] / (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, znS.[_Date_Time]) ORDER BY _Period desc ) as [Закупка, usd2] , currency._IDRRef -- Валюта документа , '' -- ППУ , 0 -- маректинг , 0 -- Доставка , TabZatratiSborka.sborka as sborka -- сборка , 0 -- Затраты мп , 0 -- Затраты cклад хранение , 0 -- Затраты cклад зарплата , 0 -- Приемка , 0 -- [АтсМаркировка] , 0 -- [ВремяВыполненияМинут] , 0 -- [СборкаЗаказа] FROM [MAG_2019].[dbo].[_Document407_VT3379] as TabGoods INNER JOIN [MAG_2019].[dbo].[_Document407] as ZnS -- Заказ на сборку on ZnS._IDRRef = [_Document407_IDRRef] and _Posted = 0x01 -- проведен --and [_Number] = 'АНУТ-010680' -- номер дока для проверки and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт LEFT JOIN [MAG_2019].[dbo]._Document407_VT28057 as tabSet -- тч комплекты, тут связь было-стало on tabSet.[_Fld28070] = [_Fld28055] and tabSet._Document407_IDRRef = TabGoods._Document407_IDRRef LEFT JOIN [MAG_2019].[dbo].[_Reference168] as Kontr ON Kontr.[_IDRRef] = ZnS.[_Fld27876RRef] LEFT JOIN (SELECT TOP (1) [_IDRRef] FROM [MAG_2019].[dbo].[_Reference50] where _code = '643') as currency on 1 = 1 LEFT JOIN (SELECT --TOP (1000) [_RecorderRRef] -- регистратор , [_Fld33653RRef] -- Номенклатура , SUM([_Fld33658]) / 1000 as sborka -- сборка FROM [MAG_2019].[dbo].[_AccumRg33652] -- рн работы where [_RecorderTRef] = 0x00000197 group by [_RecorderRRef] , [_Fld33653RRef] -- Номенклатура ) as TabZatratiSborka ON TabZatratiSborka.[_RecorderRRef] = TabGoods.[_Document407_IDRRef] and TabZatratiSborka.[_Fld33653RRef] = tabSet.[_Fld28059RRef] where [_Fld3392] = 0x00 -- отменено ложь UNION ALL -- \\\\\\\\\\\\\\\\\\\\ ЗАТРАТЫ МП \\\\\\\\\\\\\\\ SELECT -- TOP (1000) [_Period] ,'Затраты МП' ,'Приход' , [_RecorderRRef] -- Регистратор отчет комиссионера , '-' -- Номер документа , '-' -- Номер заказа , 'Отчет комиссионера' , otchetKommissionera.[_Fld5484RRef] -- Организация , otchetKommissionera.[_Fld5485RRef] -- партнер , otchetKommissionera.[_Fld5486RRef] -- контрагент , otchetKommissionera.[_Fld5492RRef] -- Менеджер , [_Fld33391RRef] -- номенклатура --,otchetKommissioneraTabTovari.[_Fld5531] -- Количество , 0 -- Количество , 0 as [Сумма] --,[_Fld33394] as [Сумма] , 0 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] , 0 as [Закупка] , 0 as [Закупка, usd2] , currency._IDRRef -- Валюта документа , '' -- ППУ , 0 -- маректинг , 0 -- Доставка , 0 -- сборка , [_Fld33394] -- Затраты МП , 0 -- Затраты cклад хранение , 0 -- Затраты cклад зарплата , 0 -- Приемка , 0 -- [АтсМаркировка] , 0 -- [ВремяВыполненияМинут] , 0 -- [СборкаЗаказа] FROM [MAG_2019].[dbo].[_AccumRg33390] LEFT JOIN [MAG_2019].[dbo].[_Document458_VT5524] as otchetKommissioneraTabTovari on otchetKommissioneraTabTovari.[_Fld5526RRef] = [_Fld33391RRef] AND otchetKommissioneraTabTovari.[_Document458_IDRRef] = [_RecorderRRef] LEFT JOIN [MAG_2019].[dbo].[_Document458] as otchetKommissionera ON otchetKommissionera.[_IDRRef] = otchetKommissioneraTabTovari.[_Document458_IDRRef] LEFT JOIN (SELECT TOP (1) [_IDRRef] FROM [MAG_2019].[dbo].[_Reference50] where _code = '643') as currency on 1 = 1 ) as tabMain LEFT JOIN [MAG_2019].[dbo].[_Reference188X1] as refNomenclatura ON refNomenclatura.[_IDRRef] = tabMain.onec_id LEFT JOIN [MAG_2019].[dbo].[_Document483X1] as refPTU ON refPTU.[_IDRRef] = tabMain.Регистратор LEFT JOIN [MAG_2019].[dbo].[_Document484] as refPPU ON refPPU.[_IDRRef] = tabMain.Регистратор LEFT JOIN [MAG_2019].[dbo].[_Reference198X1] as refOrganizaciya on refOrganizaciya._IDRRef = tabMain.Организация LEFT JOIN MAG_2019.dbo._reference50 val ON val._IDRRef = tabMain.ВалютаДокумента UNION ALL -- \\\\\\\\\\\\\\\\\\\\ ПРИЕМКА, АТС МАРКИРОВКА \\\\\\\\\\\\\\\ SELECT -- TOP (5000) DATEADD(year, -2000, [Период]) as [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , val.[_Description] as [Валюта документа] , [Ценовая группа] , [1c_document_id] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = [Организация] ) as [Организация] , (SELECT TOP(1)_description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = [Партнер]) as [Партнер] , [PartnerId] , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = Контрагент) as [Контрагент] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = Менеджер) as [Менеджер] , [1c_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [1c_id], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [1c_id], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [1c_id], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [1c_id], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [1c_id], 2),5,12))) as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, [Период]) ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, [Период]) ORDER BY _Period desc ) as [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] , [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Сборка] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , 0 as [Доставка USD2+2] , 0 as [НДС USD2+2] , 0 as [Таможня USD2+2] , 0 as [Сборка USD2+2] FROM ( -- \\\\\\\\\\\\\\\\\\\\ ПРИЕМКА \\\\\\\\\\\\\\\ SELECT --top 1000 docOtbor._Date_Time as [Период] , 'Приемка товара' as [Статья] , 'Приход' as [Вид операции] , 'Закупка' as [Хоз операция] , 'Отбор (размещение) товара' as [тип документа] , docOtbor._Number as [Номер документа] , zakasPostavshiku._Number as [Номер заказа] , @CurrencyRubRRef as [Валюта документа] -- Валюта документа , 'Руб' as [Ценовая группа] , docOtbor._IDRRef as [1c_document_id] , zakasPostavshiku._Fld3411RRef as [Организация] -- Организация , zakasPostavshiku._Fld3409RRef as [Партнер] -- партнер , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2),5,12) )) as [PartnerId] , zakasPostavshiku._Fld3410RRef as [Контрагент] -- контрагент , zakasPostavshiku._Fld3415RRef as [Менеджер] -- Менеджер , otborTabRazmeshenie._Fld5347RRef as [1c_id] -- Номенклатура , '' as [artic_id] , '' as [Курс usd] , '' as [Курс usd2] , CAST(otborTabRazmeshenie._Fld5346 / ISNULL(upackovka.chislitel, 1) as decimal(10,3)) as [Количество] -- Количество , 0 as [Сумма] , 0 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] , 0 as [Закупка] , 0 as [Закупка, usd2] , 0 as [Таможня] , 0 as [ЕАЭС] , 0 as [Доставка] -- доставка , 0 as [Сборка] -- Сборка , 0 as [ЗатратыМП] -- Затраты мп , 0 as [НДС] , 0 as [ЗатратыСкладХранение] -- Затраты склад хранение , 0 as [ЗатратыСкладЗарплата] -- Затраты склад зарплата , ((CASE WHEN DAY(docOtbor._Fld5324) <> DAY(docOtbor._Fld5325) THEN ((20 - DATEPART(HOUR, docOtbor._Fld5324)) * 60 - DATEPART(MINUTE, docOtbor._Fld5324) - DATEPART(SECOND, docOtbor._Fld5324) / 60.0) + ((DATEDIFF(DAY, docOtbor._Fld5324, docOtbor._Fld5325) - 1) * 12 * 60) + ((DATEPART(HOUR, docOtbor._Fld5325) - 8) * 60 + DATEPART(MINUTE, docOtbor._Fld5325) + DATEPART(SECOND, docOtbor._Fld5325) / 60.0) ELSE DATEDIFF(SECOND, docOtbor._Fld5324, docOtbor._Fld5325) / 60.0 END * 3 / SUM(otborTabRazmeshenie._Fld5346 / ISNULL(upackovka.chislitel, 1)) over (partition by docOtbor._IDRRef) * otborTabRazmeshenie._Fld5346 / ISNULL(upackovka.chislitel, 1)) + ((COUNT(*) over (partition by docOtbor._IDRRef) / 3000 + otborTabRazmeshenie._Fld5346 / ISNULL(upackovka.chislitel, 1) / 50000 + (upackovka.ves * otborTabRazmeshenie._Fld5346 / ISNULL(upackovka.chislitel, 1) / 15000)) / 3 * 20000)) / 1000 AS [Приемка] , 0 as [АтсМаркировка] , 0 as [ВремяВыполненияМинут] , 0 as [СборкаЗаказа] FROM [MAG_2019].[dbo].[_Document453_VT5341X1] AS otborTabRazmeshenie INNER JOIN [MAG_2019].[dbo].[_Document453X1] AS docOtbor ON docOtbor._IDRRef = otborTabRazmeshenie._Document453_IDRRef and docOtbor._Fld5316_RTRef = 0x000001E6 -- Фильтрация по псо and docOtbor._Fld5325 >= @dtStart and docOtbor._Fld5324 >= @dtStart and docOtbor._Posted = 0x01 INNER JOIN [MAG_2019].[dbo].[_Document486] as docPSO on docPSO._Fld7346_RTRef = 0x00000198 -- фильтрация по заказу поставщика and docOtbor._Fld5316_RRRef = docPSO._IDRRef LEFT JOIN [MAG_2019].[dbo].[_Document408X1] as zakasPostavshiku on docPSO._Fld7346_RRRef = zakasPostavshiku._IDRRef LEFT JOIN ( SELECT upackovka._OwnerID_RRRef AS vladelec, -- Владелец CASE WHEN upackovka._Fld24768 = 0 THEN 1 ELSE ISNULL(upackovka._Fld24768, 1) END AS chislitel, -- Числитель upackovka._Fld24769 AS znamenatel, -- Знаменатель CAST(CASE WHEN 1 = 1 -- ВесИспользовать AND upackovka._Fld24769 <> 0 -- Знаменатель THEN upackovka._Fld24768 / upackovka._Fld24769 ELSE 0 END AS DECIMAL(15, 3)) AS ves FROM [MAG_2019].[dbo].[_Reference347X1] AS upackovka WHERE upackovka._Marked = 0 -- ПометкаУдаления ) AS upackovka ON upackovka.vladelec = otborTabRazmeshenie._Fld5347RRef -- Сопоставление Номенклатуры и Владелец WHERE 1=1 and ISNULL(otborTabRazmeshenie._Fld5346, 0) > 0 UNION ALL -- \\\\\\\\\\\\\\\\\\\\ АТС МАРКИРОВКА \\\\\\\\\\\\\\\ SELECT -- TOP (1000) tabAts.[Период] as [Период] , 'Атс маркировка' as [Статья] , 'Приход' as [Вид операции] , 'Закупка' as [Хоз операция] , 'Атс Маркировка товара' as [тип документа] , AtsMark._Number as [Номер документа] , '' as [Номер заказа] , @CurrencyRubRRef as [Валюта документа] -- Валюта документа , 'Руб' as [Ценовая группа] , tabAts.atsRef as [1c_document_id] , '' as [Организация] -- Организация , '' as [Партнер] -- партнер , '' as [PartnerId] , '' as [Контрагент] -- контрагент , '' as [Менеджер] -- Менеджер , tabAts.nom AS Номенклатура -- Номенклатура , '' as [artic_id] , '' as [Курс usd] , '' as [Курс usd2] , CAST(tabAts._Fld33656 as decimal(10,3)) as [Количество] -- Количество , 0 as [Сумма] , 0 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] , 0 as [Закупка] , 0 as [Закупка, usd2] , 0 as [Таможня] , 0 as [ЕАЭС] , 0 as [Доставка] -- доставка , 0 as [Сборка] -- Сборка , 0 as [ЗатратыМП] -- Затраты мп , 0 as [НДС] , 0 as [ЗатратыСкладХранение] -- Затраты склад хранение , 0 as [ЗатратыСкладЗарплата] -- Затраты склад зарплата , 0 AS Приемка , tabAts.АтсМаркировка / 1000 AS [АтсМаркировка] , CASE WHEN DAY(AtsMark._Fld27693) <> DAY(AtsMark._Fld27694) THEN (((20 - DATEPART(HOUR, AtsMark._Fld27693)) * 60 - DATEPART(MINUTE, AtsMark._Fld27693) - DATEPART(SECOND, AtsMark._Fld27693) / 60.0) + ((DATEDIFF(DAY, AtsMark._Fld27693, AtsMark._Fld27694) - 1) * 12 * 60) + ((DATEPART(HOUR, AtsMark._Fld27694) - 8) * 60 + DATEPART(MINUTE, AtsMark._Fld27694) + DATEPART(SECOND, AtsMark._Fld27694) / 60.0)) / SUM(tabAts._Fld33656) OVER (PARTITION BY tabAts.atsRef) * tabAts._Fld33656 ELSE (DATEDIFF(MINUTE, AtsMark._Fld27693, AtsMark._Fld27694)) / SUM(tabAts._Fld33656) OVER (PARTITION BY tabAts.atsRef) * tabAts._Fld33656 END AS [ВремяВыполненияМинут] , 0 AS [СборкаЗаказа] FROM ( SELECT rnRaboti.[_Period] AS [Период], rnRaboti.[_RecorderRRef] AS atsRef, rnRaboti.[_Fld33653RRef] AS nom, -- Номенклатура SUM(rnRaboti.[_Fld33658]) / 1000 AS [АтсМаркировка], SUM(rnRaboti._Fld33656) AS [_Fld33656] FROM [MAG_2019].[dbo].[_AccumRg33652] AS rnRaboti WHERE 1 = 1 AND rnRaboti.[_RecorderTRef] = 0x00006C28 GROUP BY rnRaboti.[_Period], rnRaboti.[_RecorderRRef], rnRaboti.[_Fld33653RRef] ) AS tabAts INNER JOIN [MAG_2019].[dbo].[_Document27688] AS AtsMark ON AtsMark.[_IDRRef] = tabAts.atsRef AND AtsMark._Posted = 0x01 AND AtsMark._Fld27694 >= @dtStart WHERE 1 = 1 --UNION ALL -- -- \\\\\\\\\\\\\\\\\\\\ СБОРКА ЗАКАЗА КЛИЕНТА \\\\\\\\\\\\\\\ -- SELECT -- TOP (1000) --docOtbor._Date_Time as [Период] --, 'Закупка' as [Статья] --, 'Сборка заказа' as [Вид операции] --, 'Закупка' as [Хоз операция] --, 'Отбор (отбор) товара' as [тип документа] --, docOtbor._Number as [Номер документа] --, docZakazKlienta._Number as [Номер заказа] --, @CurrencyRubRRef as [Валюта документа] -- Валюта документа --, 'Руб' as [Ценовая группа] --, docOtbor._IDRRef as [1c_document_id] --, docZakazKlienta._Fld3129RRef as [Организация] -- Организация --, docZakazKlienta._Fld3127RRef as [Партнер] -- партнер --, LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2),5,12) )) as [PartnerId] --, docZakazKlienta._Fld3128RRef as [Контрагент] -- контрагент --, docZakazKlienta._Fld3138RRef as [Менеджер] -- Менеджер -- , [_Fld5332RRef] as [1c_id] -- Номенклатура --, '' as [artic_id] --, '' as [Курс usd] --, '' as [Курс usd2] --, CAST([_Fld5330] as decimal(10, 3)) as [Количество] -- Количество --, 0 as [Сумма] --, 0 as [СуммаБезНДС] --, 0 as [СуммаРучнойСкидки] --, 0 as [СуммаАвтоСкидки] --, 0 as [Закупка] --, 0 as [Закупка, usd2] --, 0 as [Таможня] --, 0 as [ЕАЭС] -- , 0 as [Доставка] -- доставка --, 0 as [Сборка] -- Сборка --, 0 as [ЗатратыМП] -- Затраты мп --, 0 as [НДС] --, 0 as [ЗатратыСкладХранение] -- Затраты склад хранение --, 0 as [ЗатратыСкладЗарплата] -- Затраты склад зарплата --, 0 as [Приемка] --, 0 as [АтсМаркировка] -- , CASE -- WHEN DAY(docOtbor.[_Fld5324]) <> DAY(docOtbor.[_Fld5325]) THEN -- (((20 - DATEPART(HOUR, docOtbor.[_Fld5324])) * 60 - DATEPART(MINUTE, docOtbor.[_Fld5324]) - DATEPART(SECOND, docOtbor.[_Fld5324]) / 60.0) + -- ((DATEDIFF(DAY, docOtbor.[_Fld5324], docOtbor.[_Fld5325]) - 1) * 12 * 60) + -- ((DATEPART(HOUR, docOtbor.[_Fld5325]) - 8) * 60 + DATEPART(MINUTE, docOtbor.[_Fld5325]) + DATEPART(SECOND, docOtbor.[_Fld5325]) / 60.0)) / SUM([_Fld5330]) over (partition by [_Document453_IDRRef]) * [_Fld5330] -- ELSE -- (DATEDIFF(SECOND, docOtbor.[_Fld5324], docOtbor.[_Fld5325]) / 60.0) / SUM([_Fld5330]) over (partition by [_Document453_IDRRef]) * [_Fld5330] -- END as [ВремяВыполненияМинут] --,((SUM(1) over (partition by [_Document453_IDRRef]) / 5000 + [_Fld5330] / 20000)/2*30000) / 1000 as СборкаЗаказа -- FROM [MAG_2019].[dbo].[_Document453_VT5326X1] as OtborTabOtbor -- INNER JOIN [MAG_2019].[dbo].[_Document453X1] as docOtbor -- ON docOtbor.[_IDRRef] = [_Document453_IDRRef] -- and docOtbor._Posted = 0x01 -- and docOtbor._Fld5325 >= @dtStart -- and docOtbor._Fld5324 >= @dtStart -- and docOtbor.[_Fld5316_RTRef] = 0x000001F0 -- RSO -- INNER JOIN [MAG_2019].[dbo].[_Document496X1] as docRSO -- on docOtbor._Fld5316_RRRef = docRSO._IDRRef -- and docRSO.[_Fld27744_RTRef] = 0x00000194 -- zakaz klienta -- LEFT JOIN [MAG_2019].[dbo].[_Document404X1] as docZakazKlienta -- on docRSO.[_Fld27744_RRRef] = docZakazKlienta._IDRRef -- WHERE 1=1 ) as tabItogovoya LEFT JOIN MAG_2019.dbo._reference50 as val ON val._IDRRef = tabItogovoya.[Валюта документа] WHERE DATEADD(year, -2000, [Период]) BETWEEN @dtStart and @dtEnd ) tabItog WHERE 1=1 and [Период] BETWEEN @dtStart and @dtEnd --AND [Период] < @dtEnd --and [artic_id] = 'cdb37c08-84c6-11e5-80c5-305a3a00e12b' END GO /****** Object: StoredProcedure [pbi].[Заполнить себестоимостьОт2022(СкладХранение)] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbi].[Заполнить себестоимостьОт2022(СкладХранение)] AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- выберем вылуту рубль сразу ... DECLARE @CurrencyRubRRef UNIQUEIDENTIFIER; SELECT TOP (1) @CurrencyRubRRef = [_IDRRef] FROM [MAG_2019].[dbo].[_Reference50] WHERE _Code = '643'; -- \\\\\\\\\\\\\\\\\\\\ ЗАТРАТЫ СКЛАД ХРАНЕНИЕ \\\\\\\\\\\\\\\ SELECT --TOP (1) [Период] , 'Склад хранение' ,'Закупка' , null -- регистратор , '-' -- Номер документа , '-' -- Номер заказа , 'Склад хранение' , '' -- Организация , null as Партнер -- партнер , null as Контрагент -- контрагент , null as Менеджер -- Менеджер , [1c_id] -- Номенклатура , 0 -- Количество , 0 as [Сумма] , 0 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] , 0 as [Закупка] , 0 as [Закупка, usd2] , @CurrencyRubRRef -- Валюта документа , '' -- ППУ , 0 -- маркетинг , 0 -- доставка , 0 -- Сборка , 0 -- Затраты мп , 20000000 / 30 * ([volume] / [totalVolume]) / 1000 as [ЗатратыСкладХранение] -- Затраты склад хранение , 200000 * ([volume] / [totalVolume]) / 1000 as [ЗатратыСкладЗарплата] -- Затраты склад зарплата , 0 -- Приемка , 0 -- [АтсМаркировка] , 0 -- [ВремяВыполненияМинут] , 0 -- [СборкаЗаказа] --,[_Fld33634_RRRef] -- статья расходов FROM [mag_pbi].[pbi].[nomenclatureVolumeStorehouse] where YEAR([Период]) >= 2024 END GO /****** Object: StoredProcedure [pbi].[Обновить себестоимость] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbi].[Обновить себестоимость] @full_update bit = 0 AS BEGIN -- DECLARE @full_update bit = 1 DECLARE @dt datetime2 = '2015-01-01' DECLARE @full_update_local_var bit = 0 --полностью обновляем таблицу в воскресенье IF ( SELECT DATEPART(WEEKDAY, GETDATE()) )= 7 OR @full_update = 1 OR format(getdate(), 'yyyy-MM-dd') = '2023-07-29'--( SELECT DAY(CURRENT_TIMESTAMP) )= 1 OR @full_update = 1 SET @full_update_local_var = 1 SELECT @full_update_local_var IF @full_update_local_var = 1 BEGIN DROP TABLE IF EXISTS pbi.[Себестоимость] --таблицу удаляем, чтобы удалить индексы. так быстрее вставлять большие массивы данных EXEC [sebest].[Создать таблицу] END ELSE BEGIN SET @dt = (select DATEADD(MONTH, -1, GETDATE())) END --В этой процедуре создается таблица, в ней же очищается таблица себестоимость начиная с даты @dt exec sebest.[Заполнить себестоимость закупкой] @dt-- Добавляем закупку exec sebest.[Заполнить себестоимость начальным остатком] @dt-- Добавляем начальные остатки /* поменял процедуру только на копирование регистра Выручка и Себестоимость продаж */ exec sebest.[Заполнить себестоимость продажей] @dt -- Добавляем продажи exec [sebest].[Заполнить себестоимость комплектующими] @dt exec sebest.[Заполнить себестоимость комплектами] @dt -- Добавляем все движения по фасовке IF @full_update_local_var = 1--( SELECT DAY(CURRENT_TIMESTAMP) )= 1 OR @full_update = 1 exec sebest.[Создать индексы] --Записываем две колонки с курсом usd2+2 и usd UPDATE mag_pbi.pbi.[Себестоимость] SET [Курс usd2] = ( SELECT TOP 1 _Fld13220/_Fld13221 FROM [mag_2019].[dbo].[_InfoRg13218] k--РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, k._Period) <= [Период] ORDER BY k._Period desc) , [Курс usd] = ( SELECT TOP 1 _Fld13220/_Fld13221 FROM [mag_2019].[dbo].[_InfoRg13218] k--РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND DATEADD(year, -2000, k._Period) <= [Период] ORDER BY k._Period desc) WHERE [Период]>=@dt --записываем закупочную цену в usd2 из рублей, кроме тех, у кого валюта документа usd2 UPDATE mag_pbi.pbi.[Себестоимость] SET [Закупка, usd2] = [Закупка]/[Курс usd2] WHERE [Валюта документа]<>'USD2' AND [Статья] = 'Закупка' AND [Вид операции]<>'Продажа' AND [Период]>=@dt /* это главная процедура расчета себестоимости. Выполняется очень долго, каждое вс пересчитывает полностью весь регистр, каждый день считает только посл. 1 месяц*/ exec [sebest].[Расчет себестомисти] @dt, 0 -- запуск не для коплектов, только комплектующие --exec [sebest].[Проставить стоимость комплектов] @dt --exec [sebest].[Расчет себестомисти] @dt, 1 -- второй проход для комплектующих UPDATE mag_pbi.pbi.[Себестоимость] SET [Учетная цена, новое] = CASE WHEN [Количество] <> 0 THEN [закупка] / [Количество] ELSE 0 END WHERE 1=1--[Статья] = 'Закупка' AND [Вид операции]='Продажа' AND [Период]>=@dt --exec sebest.[Заполнить себестоимость курсовой разницей] -- Добавляем курсовую разницу /* 0x80CD002590EC174111E581505088A8D5 USD 0x80D40CC47A052DFD11E6B6DD1820D178 Eur 0x80E90CC47A052DFD11E7145927CEFC24 Cny 0xAE9DB496910DCFD611E94F10743DE3FF USD2 0xAE9EB496910DCFD611E95C66B5DE3AFA USD2+2 */ END /* -- Продажу считаем по внутреннему курсу /*UPDATE mag_pbi.pbi.[Себестоимость] SET [Курс usd2] = ( SELECT TOP 1 _Fld13220 FROM [mag_2019].[dbo].[_InfoRg13218] k--РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND DATEADD(year, -2000, k._Period) <= [Период] ORDER BY k._Period desc) WHERE [Статья] = 'Закупка' AND [Вид операции]='Продажа' AND [Период]>=@dt */ --DECLARE @dt datetime2 = '2015-01-01' --подставляем старое значение учетной цены UPDATE mag_pbi.pbi.[Себестоимость] SET [Учетная цена, старое] = ( isnull( (SELECT top 1 its.[_Fld27138] / 1000 FROM [mag_2019].[dbo].[_InfoRg27129X1] its -- РегистрСведений.ITS_ОсновнойОтчет WHERE its._Fld27130RRef = [1C_id] AND its.[_Fld27138] > 0 and datediff(month, DATEADD(year, -2000, its._Period), [Период]) >= 0 ORDER BY its._period desc) , (SELECT TOP (1) [Цена]/1000 FROM [mag_reports].[sales].[pricelist] p where p.[1c_id] = [1c_id] and [Вид цены] = 'Учетная цена (руб)' ORDER BY _Period desc) ) ) WHERE [Статья] = 'Закупка' AND [Вид операции]='Продажа' AND [Период]>=@dt */ GO /****** Object: StoredProcedure [pbi].[РасчетСебестоимостиОт2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbi].[РасчетСебестоимостиОт2022] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here exec [sebest].[Заполнить себестоимостьОт2022(закупки+продажи)] END GO /****** Object: StoredProcedure [pbi].[создание среза учетных цен] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [pbi].[создание среза учетных цен] as BEGIN --DROP TABlE analytics.[срез учетных цен] INSERT INTO analytics.[срез учетных цен] SELECT [1c_id] ,[artic_id] , null as [Учетная цена] , null as [Учетная цена USD2+2] , format(GETDATE(), 'yyyy-MM-dd') as [Период] , null as [Количество] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] seb group by [1c_id] ,[artic_id] UPDATE srez SET [Учетная цена] = ( SELECT sum(Закупка)+sum(НДС)+sum(Доставка)+sum(Таможня) FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] ss where Статья in ('Ввод начальных остатков', 'Закупка', 'Реализация', 'НДС', 'Доставка контейнера ВЭД', 'Производство товара') AND ss.[1c_id]=srez.[1c_id] ) FROM analytics.[срез учетных цен] srez WHERE /* [Учетная цена] is null AND*/ [Период] = format(GETDATE(), 'yyyy-MM-dd') UPDATE srez SET [Количество] = ( SELECT sum([Количество]) FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] ss where Статья in ('Ввод начальных остатков', 'Закупка', 'Реализация', 'НДС', 'Доставка контейнера ВЭД', 'Производство товара') AND ss.[1c_id]=srez.[1c_id] ) FROM analytics.[срез учетных цен] srez WHERE /*[Количество] is null AND */[Период] = format(GETDATE(), 'yyyy-MM-dd') UPDATE srez SET [Учетная цена USD2+2] = ( SELECT sum([Закупка, usd2])+sum(НДС/[Курс usd2])+sum(Доставка/[Курс usd2])+sum(Таможня/[Курс usd2]) FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] ss where Статья in ('Ввод начальных остатков', 'Закупка', 'Реализация', 'НДС', 'Доставка контейнера ВЭД', 'Производство товара') AND ss.[1c_id]=srez.[1c_id] ) FROM analytics.[срез учетных цен] srez WHERE /*[Учетная цена USD2+2] is null AND*/ [Период] = format(GETDATE(), 'yyyy-MM-dd') UPDATE analytics.[срез учетных цен] SET [Учетная цена] = [Учетная цена] / [Количество] WHERE [Период] = format(GETDATE(), 'yyyy-MM-dd') AND [Количество]>0 UPDATE analytics.[срез учетных цен] SET [Учетная цена USD2+2] = [Учетная цена USD2+2] / [Количество] WHERE [Период] = format(GETDATE(), 'yyyy-MM-dd') AND [Количество]>0 UPDATE analytics.[срез учетных цен] SET [Учетная цена USD2+2] = null WHERE [Период] = format(GETDATE(), 'yyyy-MM-dd') --AND [Количество]>0 -- обновляем учетку по закупкам, тк в продажах не было /* UPDATE p SET [Учетная цена] = ( SELECT top 1 s.[Учетная цена] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[1c_id]=p.[1c_id] AND s.[Статья]='Закупка' AND s.[Вид операции]='Приход' AND s.[Учетная цена] > 0 ORDER by s.Период DESC ), [Учетная цена USD2+2] = ( SELECT top 1 s.[Учетная цена USD2+2] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[1c_id]=p.[1c_id] AND s.[Статья]='Закупка' AND s.[Вид операции]='Приход' AND s.[Учетная цена USD2+2] > 0 ORDER by s.Период DESC) FROM analytics.[срез учетных цен] p WHERE [Учетная цена] is null -- обновляем учетку по вводу начальных остатков UPDATE p SET [Учетная цена] = ( SELECT top 1 s.[Учетная цена] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[1c_id]=p.[1c_id] AND s.[Статья]='Ввод начальных остатков' AND s.[Вид операции]='Приход' AND s.[Учетная цена] > 0 ORDER by s.Период DESC ), [Учетная цена USD2+2] = ( SELECT top 1 s.[Учетная цена USD2+2] FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s WHERE s.[1c_id]=p.[1c_id] AND s.[Статья]='Ввод начальных остатков' AND s.[Вид операции]='Приход' AND s.[Учетная цена USD2+2] > 0 ORDER by s.Период DESC) FROM analytics.[срез учетных цен] p WHERE [Учетная цена] is null */ END GO /****** Object: StoredProcedure [pbiProd].[ЗаполнитьСебестоимостьСводныйОт2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[ЗаполнитьСебестоимостьСводныйОт2022] -- Add the parameters for the stored procedure here AS BEGIN DELETE FROM mag_pbi.[pbiProd].[СебестоимостьСводныйОт2022] WHERE 1=1 DBCC CHECKIDENT ('[pbiProd].[СебестоимостьСводныйОт2022]', RESEED, 0); INSERT INTO mag_pbi.[pbiProd].[СебестоимостьСводныйОт2022] ( [Период] ,[Статья] ,[Вид операции] ,[Хоз операция] ,[Организация] ,[Партнер] ,[PartnerId] ,[Контрагент] ,[Менеджер] ,[Тип документа] ,[Номер документа] ,[Валюта документа] ,[Ценовая группа] ,[1c_document_id] ,[1c_id] ,[artic_id] ,[Количество] ,[Сумма] ,[СуммаБезНДС] ,[СуммаРучнойСкидки] ,[СуммаАвтоСкидки] ,[Закупка] ,[Закупка, usd2] ,[Курс usd2] ,[Курс usd] ,[Таможня] ,[Учетная цена] ,[Учетная цена USD2+2] ,[Учетная стоимость] ,[Учетная стоимость USD2+2] ,[Заказ закрыт] ,[Номер заказа] ,[Доставка] ,[НДС] ,[Производство] ,[Code] ,[ЗатратыСкладХранение] ,[Приемка] ,[АтсМаркировка] ,[ВремяВыполненияМинут] ,[СборкаЗаказа] ,[КоличествоУпаковок] ,[Сумма скидки] ,[Сумма скидки USD2+2] ,[Доп расходы] ,[Доп расходы USD2+2] ) SELECT -- TOP (100) [Период] ,[Статья] ,[Вид операции] ,[Хоз операция] ,[Организация] ,[Партнер] ,[PartnerId] ,[Контрагент] ,[Менеджер] ,[Тип документа] ,[Номер документа] ,[Валюта документа] ,[Ценовая группа] ,[1c_document_id] ,ss.[1c_id] ,ss.[artic_id] ,[Количество] ,[Сумма] ,[СуммаБезНДС] ,[СуммаРучнойСкидки] ,[СуммаАвтоСкидки] ,[Закупка] ,[Закупка, usd2] ,[Курс usd2] ,[Курс usd] ,[Таможня] ,[Учетная цена] ,[Учетная цена USD2+2] ,[Учетная стоимость] ,[Учетная стоимость USD2+2] ,[Заказ закрыт] ,[Номер заказа] ,[Доставка] ,[НДС] ,[Производство] ,nom.[code] ,[ЗатратыСкладХранение] ,[Приемка] ,[АтсМаркировка] ,[ВремяВыполненияМинут] ,[СборкаЗаказа] ,[Количество] / CASE WHEN ISNULL(nom.[Базовая упаковка], 1) = 0 THEN 1 else ISNULL(nom.[Базовая упаковка], 1) END as [КоличествоУпаковок] , [СуммаРучнойСкидки] + [СуммаАвтоСкидки] as [Сумма скидки] , ([СуммаРучнойСкидки] + [СуммаАвтоСкидки]) / [Курс usd2] as [Сумма скидки USD2+2] ,[Доп расходы] ,[Доп расходы USD2+2] FROM [mag_pbi].[pbiProd].[СводныйСебестоимость] as ss LEFT JOIN [mag_pbi].[pbi].[nomenclature] as nom on nom.artic_id = ss.artic_id END GO /****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(АтсМаркировка)] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(АтсМаркировка)] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @dtStart dateTime2; DECLARE @dtEnd datetime2; DECLARE @dtSqlStart dateTime2; DECLARE @dtSqlEnd datetime2; SET @dtStart = '2022-01-01' SET @dtEnd= '2030-01-01' SET @dtSqlStart = '4022-01-01' SET @dtSqlEnd= '4030-01-01' INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] , [Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] ) SELECT -- top (1000) [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , [Валюта документа] , [Ценовая группа] , [1c_document_id] , [Организация] , [Партнер] , [PartnerId] , [Контрагент] , [Менеджер] , [1c_id] , [artic_id] , [Курс usd] , [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] , [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Производство] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , [Доставка USD2+2] , [НДС USD2+2] , [Таможня USD2+2] , [Производство USD2+2] FROM ( -- \\\\\\\\\\\\\\\\\\\\ АТС МАРКИРОВКА \\\\\\\\\\\\\\\ SELECT -- TOP (1000) DATEADD(year, -2000, tabAts.[Период]) as [Период] , 'Атс маркировка' as [Статья] , 'Приход' as [Вид операции] , Null as [Хоз операция] , 'Атс Маркировка товара' as [тип документа] , AtsMark._Number as [Номер документа] , '' as [Номер заказа] , 'Руб' as [Валюта документа] -- Валюта документа , 'Руб' as [Ценовая группа] , tabAts.atsRef as [1c_document_id] , Null as [Организация] -- Организация , Null as [Партнер] -- партнер , Null as [PartnerId] , Null as [Контрагент] -- контрагент , Null as [Менеджер] -- Менеджер , tabAts.nom AS [1c_id] -- Номенклатура , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), tabAts.nom, 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), tabAts.nom, 2),21,4),'-',SUBSTRING(convert(nvarchar(36), tabAts.nom, 2),17,4),'-',SUBSTRING(convert(nvarchar(36), tabAts.nom, 2),1,4),'-',SUBSTRING(convert(nvarchar(36), tabAts.nom, 2),5,12))) as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= tabAts.[Период] ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= tabAts.[Период] ORDER BY _Period desc ) as [Курс usd2] , CAST(tabAts._Fld33656 as decimal(10,3)) as [Количество] -- Количество , Null as [Сумма] , Null as [СуммаБезНДС] , Null as [СуммаРучнойСкидки] , Null as [СуммаАвтоСкидки] , Null as [Закупка] , Null as [Закупка, usd2] , Null as [Таможня] , Null as [ЕАЭС] , Null as [Доставка] -- доставка , Null as [Производство] -- Сборка , Null as [ЗатратыМП] -- Затраты мп , Null as [НДС] , Null as [ЗатратыСкладХранение] -- Затраты склад хранение , Null as [ЗатратыСкладЗарплата] -- Затраты склад зарплата , Null as Приемка , tabAts.АтсМаркировка / 1000 AS [АтсМаркировка] , CASE WHEN DAY(AtsMark._Fld27693) <> DAY(AtsMark._Fld27694) THEN (((20 - DATEPART(HOUR, AtsMark._Fld27693)) * 60 - DATEPART(MINUTE, AtsMark._Fld27693) - DATEPART(SECOND, AtsMark._Fld27693) / 60.0) + ((DATEDIFF(DAY, AtsMark._Fld27693, AtsMark._Fld27694) - 1) * 12 * 60) + ((DATEPART(HOUR, AtsMark._Fld27694) - 8) * 60 + DATEPART(MINUTE, AtsMark._Fld27694) + DATEPART(SECOND, AtsMark._Fld27694) / 60.0)) / SUM(tabAts._Fld33656) OVER (PARTITION BY tabAts.atsRef) * tabAts._Fld33656 ELSE (DATEDIFF(MINUTE, AtsMark._Fld27693, AtsMark._Fld27694)) / SUM(tabAts._Fld33656) OVER (PARTITION BY tabAts.atsRef) * tabAts._Fld33656 END as [ВремяВыполненияМинут] , Null as [СборкаЗаказа] , Null as [Доставка USD2+2] , Null as [НДС USD2+2] , Null as [Таможня USD2+2] , Null as [Производство USD2+2] FROM ( SELECT rnRaboti.[_Period] AS [Период], rnRaboti.[_RecorderRRef] AS atsRef, rnRaboti.[_Fld33653RRef] AS nom, -- Номенклатура SUM(rnRaboti.[_Fld33658]) / 1000 AS [АтсМаркировка], SUM(rnRaboti._Fld33656) AS [_Fld33656] FROM [MAG_2019].[dbo].[_AccumRg33652] AS rnRaboti WHERE 1 = 1 AND rnRaboti.[_RecorderTRef] = 0x00006C28 GROUP BY rnRaboti.[_Period], rnRaboti.[_RecorderRRef], rnRaboti.[_Fld33653RRef] ) AS tabAts INNER JOIN [MAG_2019].[dbo].[_Document27688] AS AtsMark ON AtsMark.[_IDRRef] = tabAts.atsRef AND AtsMark._Posted = 0x01 AND AtsMark._Fld27694 >= @dtStart WHERE 1 = 1 and tabAts.[Период] >= @dtSqlStart ) as tabPriemka END GO /****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(ДопРасходы)] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(ДопРасходы)] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @dtStart dateTime2; DECLARE @dtEnd datetime2; DECLARE @dtSqlStart dateTime2; DECLARE @dtSqlEnd datetime2; SET @dtStart = '2022-01-01' SET @dtEnd= '2030-01-01' SET @dtSqlStart = '4022-01-01' SET @dtSqlEnd= '4030-01-01' INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] , [Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] , [Доп расходы], [Доп расходы USD2+2] ) SELECT -- top (1000) [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , [Валюта документа] , [Ценовая группа] , [1c_document_id] , [Организация] , [Партнер] , [PartnerId] , [Контрагент] , [Менеджер] , [1c_id] , [artic_id] , [Курс usd] , [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] , [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Производство] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , [Доставка USD2+2] , [НДС USD2+2] , [Таможня USD2+2] , [Производство USD2+2] , [Доп расходы] as [Доп расходы] , [Доп расходы] / [Курс usd2] as [Доп расходы USD2+2] FROM ( -- \\\\\\\\\\\\\\\\\\\\\\\\\\\\ ДОП РАСХОДЫ \\\\\\\\\\\\\\\\ SELECT --TOP (1) DATEADD(year, -2000, refPTU.[_Date_Time]) as [Период] , 'Доп расходы' as [Статья] , 'Приход' as [Вид операции] , Null as [Хоз операция] , 'ПТУ' as [тип документа] , Null as [Номер документа] , Null as [Номер заказа] , val._Description as [Валюта документа] , CASE WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' ELSE 'Неопределено' END as [Ценовая группа] , _Fld33630RRef as [1c_document_id] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = refPTU.[_Fld7121RRef] ) as [Организация] , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = refPTU.[_Fld7060RRef]) as [Партнер] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),5,12) ))as PartnerId , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = refPTU.[_Fld7064RRef]) as [Контрагент] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = refPTU.[_Fld7067RRef]) as [Менеджер] , [_Fld33631RRef] as [1c_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),5,12))) as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= refPTU.[_Date_Time] ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= refPTU.[_Date_Time] ORDER BY _Period desc ) as [Курс usd2] , Null as [Количество] , Null as [Сумма] , Null as [СуммаБезНДС] , Null as [СуммаРучнойСкидки] , Null as [СуммаАвтоСкидки] , Null as [Закупка] , Null as [Закупка, usd2] , Null as [Таможня] , Null as [ЕАЭС] , Null as [Доставка] , Null as [Производство] , Null as [ЗатратыМП] , Null as [НДС] , Null as [ЗатратыСкладХранение] , Null as [ЗатратыСкладЗарплата] , Null as [Приемка] , Null as [АтсМаркировка] , Null as [ВремяВыполненияМинут] , Null as [СборкаЗаказа] , Null as [Доставка USD2+2] , Null as [НДС USD2+2] , Null as [Таможня USD2+2] , Null as [Производство USD2+2] , [_Fld33633] / 1000 as [Доп расходы] , 0 as [Доп расходы USD2+2] FROM [MAG_2019].[dbo].[_InfoRg33629] LEFT JOIN [MAG_2019].[dbo].[_Document483X1] as refPTU ON refPTU.[_IDRRef] = [_Fld33630RRef] -- LEFT JOIN [MAG_2019].[dbo].[_Document483_VT7128X1] as refPtuNomen --ON refPtuNomen.[_Document483_IDRRef] = refPTU.[_IDRRef] -- AND refPtuNomen.[_Fld7130RRef] = [_Fld33631RRef] LEFT JOIN MAG_2019.dbo._reference50 val ON val._IDRRef = refPTU.[_Fld7059RRef] LEFT JOIN [MAG_2019].[dbo].[_Reference188X1] as refNomenclatura ON refNomenclatura.[_IDRRef] = [_Fld33631RRef] where [_Fld33634_RRRef] = 0x998DB49691D57EFD11F0366B9FA43F0B and refPTU.[_Date_Time] >= @dtSqlStart ) as tabDopRashod END GO /****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Доставка)] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Доставка)] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @dtStart dateTime2; DECLARE @dtEnd datetime2; DECLARE @dtSqlStart dateTime2; DECLARE @dtSqlEnd datetime2; SET @dtStart = '2022-01-01' SET @dtEnd= '2030-01-01' SET @dtSqlStart = '4022-01-01' SET @dtSqlEnd= '4030-01-01' INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] , [Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] ) SELECT -- top (1000) [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , [Валюта документа] , [Ценовая группа] , [1c_document_id] , [Организация] , [Партнер] , [PartnerId] , [Контрагент] , [Менеджер] , [1c_id] , [artic_id] , [Курс usd] , [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] , [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Производство] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , [Доставка] / [Курс usd2] as [Доставка USD2+2] , [НДС USD2+2] , [Таможня USD2+2] , [Производство USD2+2] FROM ( -- \\\\\\\\\\\\\\\\\\\\\\\\\\\\ ДОСТАВКА \\\\\\\\\\\\\\\\ SELECT --TOP (1) DATEADD(year, -2000, refPTU.[_Date_Time]) as [Период] , 'Доставка контейнера ВЭД' as [Статья] , 'Приход' as [Вид операции] , Null as [Хоз операция] , 'ПТУ' as [тип документа] , Null as [Номер документа] , Null as [Номер заказа] , val._Description as [Валюта документа] , CASE WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' ELSE 'Неопределено' END as [Ценовая группа] , _Fld33630RRef as [1c_document_id] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = refPTU.[_Fld7121RRef] ) as [Организация] , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = refPTU.[_Fld7060RRef]) as [Партнер] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),5,12) ))as PartnerId , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = refPTU.[_Fld7064RRef]) as [Контрагент] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = refPTU.[_Fld7067RRef]) as [Менеджер] , [_Fld33631RRef] as [1c_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),5,12))) as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= refPTU.[_Date_Time] ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= refPTU.[_Date_Time] ORDER BY _Period desc ) as [Курс usd2] , Null as [Количество] , Null as [Сумма] , Null as [СуммаБезНДС] , Null as [СуммаРучнойСкидки] , Null as [СуммаАвтоСкидки] , Null as [Закупка] , Null as [Закупка, usd2] , Null as [Таможня] , Null as [ЕАЭС] , [_Fld33633] / 1000 as [Доставка] , Null as [Производство] , Null as [ЗатратыМП] , Null as [НДС] , Null as [ЗатратыСкладХранение] , Null as [ЗатратыСкладЗарплата] , Null as [Приемка] , Null as [АтсМаркировка] , Null as [ВремяВыполненияМинут] , Null as [СборкаЗаказа] , Null as [Доставка USD2+2] , Null as [НДС USD2+2] , Null as [Таможня USD2+2] , Null as [Производство USD2+2] FROM [MAG_2019].[dbo].[_InfoRg33629] LEFT JOIN [MAG_2019].[dbo].[_Document483X1] as refPTU ON refPTU.[_IDRRef] = [_Fld33630RRef] -- LEFT JOIN [MAG_2019].[dbo].[_Document483_VT7128X1] as refPtuNomen --ON refPtuNomen.[_Document483_IDRRef] = refPTU.[_IDRRef] -- AND refPtuNomen.[_Fld7130RRef] = [_Fld33631RRef] LEFT JOIN MAG_2019.dbo._reference50 val ON val._IDRRef = refPTU.[_Fld7059RRef] LEFT JOIN [MAG_2019].[dbo].[_Reference188X1] as refNomenclatura ON refNomenclatura.[_IDRRef] = [_Fld33631RRef] where [_Fld33634_RRRef] = 0x997EB49691D57EFD11ECE1AC556F9FF0 and refPTU.[_Date_Time] >= @dtSqlStart ) as tabDostavka END GO /****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Закупка)] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Закупка)] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @dtStart dateTime2; DECLARE @dtEnd datetime2; DECLARE @dtSqlStart dateTime2; DECLARE @dtSqlEnd datetime2; SET @dtStart = '2022-01-01' SET @dtEnd= '2030-01-01' SET @dtSqlStart = '4022-01-01' SET @dtSqlEnd= '4030-01-01' INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Производство] , [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] ) SELECT --top 1000 [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , [Валюта документа] , [Ценовая группа] , [1c_document_id] , [Организация] , [Партнер] , [PartnerId] , [Контрагент] , [Менеджер] , [1c_id] , [artic_id] , [Курс usd] , [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] , [Закупка] / [Курс usd2] as [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Производство] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , [Доставка] / [Курс usd2] as [Доставка USD2+2] , [НДС] / [Курс usd2] as [НДС USD2+2] , [Таможня] / [Курс usd2] as [Таможня USD2+2] , [Производство] / [Курс usd2] as [Производство USD2+2] FROM ( -- \\\\\\\\\\\\\\\\\\\\\\\\\\\\ ЗАКУПКИ \\\\\\\\\\\\\\\\ select --top (1) DATEADD(year, -2000, _Period) as [Период] , case WHEN r._RecorderTRef=0x000001A1 or r._RecorderTRef=0x0000020D THEN 'НДС' --WHEN r._RecorderTRef=0x000001A1 THEN 'ЕАЭС' --WHEN r._RecorderTRef=0x0000020D THEN 'Таможня' ELSE 'Закупка' END as [Статья] , 'Приход' as [Вид операции] , Null as [Хоз операция] , case r._RecorderTRef WHEN 0x000001A1 then 'Заявление о ввозе товаров из ЕАЭС' WHEN 0x00000189 then 'Возврат товаров поставщику' WHEN 0x000001E3 then 'ПТУ' WHEN 0x000001D5 then 'Передача товаров' WHEN 0x000001B0 then 'Корректировка ' WHEN 0x0000020D then 'Таможенная декларация на импорт' ELSE 'Неизвестный тип' END as [тип документа] , Null as [Номер документа] , Null as [Номер заказа] , val._Description as [Валюта документа] , CASE WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' WHEN r._RecorderTRef = 0x0000020D THEN 'Руб' ELSE 'Неопределено' END as [Ценовая группа] , r._RecorderRRef as [1c_document_id] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = r._Fld16346RRef ) as [Организация] , (SELECT TOP(1) _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = r.[_Fld16353RRef]) as [Партнер] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),5,12) ))as PartnerId , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = r._Fld16354_RRRef) as [Контрагент] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = [_Fld16348RRef]) as [Менеджер] , analitikaUchetaNomenklaturi.[_Fld20498RRef] as [1c_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),5,12))) as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют --WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= r._Period ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 --WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= r._Period ORDER BY _Period desc ) as [Курс usd2] , CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка THEN case [_Fld16345RRef] when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16361] ELSE [_Fld16361] END --WHEN r._RecorderTRef = 0x0000020D THEN customDeclaration._Fld8943 WHEN r._RecorderTRef = 0x0000020D THEN 0 --WHEN r._RecorderTRef=0x000001A1 THEN docEAS.[_Fld4052] WHEN r._RecorderTRef=0x000001A1 THEN 0 ELSE 0 END as [Количество] , [_Fld16362] / 1000 as [Сумма] , [_Fld16363] / 1000 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] , CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка THEN case [_Fld16345RRef] when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16362] / 1000 ELSE [_Fld16362] / 1000 END ELSE 0 END AS [Закупка] , CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка поле "сумма в валюте документа" THEN case [_Fld16345RRef] when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16373] / 1000 ELSE [_Fld16373] / 1000 END ELSE 0 END as [Закупка, usd2] , CASE WHEN r._RecorderTRef=0x0000020D THEN [_Fld16369] / 1000 END as [Таможня] , Null as [ЕАЭС] , Null as [Доставка] -- доставка , Null as [Производство] -- [Производство] , Null as [ЗатратыМП] -- Затраты МП , CASE WHEN r._RecorderTRef=0x000001A1 or r._RecorderTRef=0x0000020D THEN ([_Fld16362] - [_Fld16363]) / 1000 ELSE Null END as [НДС] , Null as [ЗатратыСкладХранение] -- Затраты cклад хранение , Null as [ЗатратыСкладЗарплата]-- Затраты cклад зарплаты , Null as [Приемка] , Null as [АтсМаркировка] , Null as [ВремяВыполненияМинут] , Null as [СборкаЗаказа] from mag_2019.dbo._AccumRg16344 r-- Регистр накопления Закупки LEFT JOIN [MAG_2019].[dbo].[_Reference160] as analitikaUchetaNomenklaturi on analitikaUchetaNomenklaturi.[_IDRRef] = [_Fld16349RRef] LEFT JOIN MAG_2019.dbo._Reference188X1 as N on analitikaUchetaNomenklaturi.[_Fld20498RRef] = N._IDRRef LEFT JOIN MAG_2019.dbo._reference50 val ON val._IDRRef = r._Fld16372RRef LEFT JOIN [MAG_2019].[dbo].[_Document525_VT8936] as customDeclaration ON customDeclaration.[_Document525_IDRRef] = [r]._RecorderRRef and analitikaUchetaNomenklaturi.[_Fld20498RRef] = customDeclaration._Fld8939RRef LEFT JOIN [MAG_2019].[dbo].[_Document417_VT4034] as docEAS ON docEAS.[_Document417_IDRRef] = [r]._RecorderRRef and [_Fld16349RRef] = docEAS.[_Fld4037RRef] where _Period >= @dtSqlStart ) tabZakupki END GO /****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(ЗатратыМП)] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(ЗатратыМП)] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @dtStart dateTime2; DECLARE @dtEnd datetime2; DECLARE @dtSqlStart dateTime2; DECLARE @dtSqlEnd datetime2; SET @dtStart = '2022-01-01' SET @dtEnd= '2030-01-01' SET @dtSqlStart = '4022-01-01' SET @dtSqlEnd= '4030-01-01' INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Производство] , [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] ) SELECT -- top (1000) [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , [Валюта документа] , [Ценовая группа] , [1c_document_id] , [Организация] , [Партнер] , [PartnerId] , [Контрагент] , [Менеджер] , [1c_id] , [artic_id] , [Курс usd] , [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] , [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Производство] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , [Доставка USD2+2] , [НДС USD2+2] , [Таможня USD2+2] , [Производство USD2+2] FROM ( -- \\\\\\\\\\\\\\\\\\\\ ЗАТРАТЫ МП \\\\\\\\\\\\\\\ SELECT -- TOP (1000) DATEADD(year, -2000, [_Period]) as [Период] , 'Затраты МП' as [Статья] , 'Приход' as [Вид операции] , Null as [Хоз операция] , 'Отчет комиссионера' as [тип документа] , Null as [Номер документа] , Null as [Номер заказа] , 'Руб' as [Валюта документа] , 'Руб' as [Ценовая группа] , [_RecorderRRef] as [1c_document_id] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = otchetKommissionera.[_Fld5484RRef]) as [Организация] , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = otchetKommissionera.[_Fld5485RRef] ) as [Партнер] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), otchetKommissionera.[_Fld5485RRef] , 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), otchetKommissionera.[_Fld5485RRef] , 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), otchetKommissionera.[_Fld5485RRef] , 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), otchetKommissionera.[_Fld5485RRef] , 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), otchetKommissionera.[_Fld5485RRef] , 2),5,12) ))as PartnerId , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = otchetKommissionera.[_Fld5486RRef]) as [Контрагент] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = otchetKommissionera.[_Fld5492RRef]) as [Менеджер] , [_Fld33391RRef] as [1c_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [_Fld33391RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [_Fld33391RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33391RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33391RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33391RRef], 2),5,12))) as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= r.[_Period] ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= r.[_Period] ORDER BY _Period desc ) as [Курс usd2] , Null as [Количество] , Null as [Сумма] , Null as [СуммаБезНДС] , Null as [СуммаРучнойСкидки] , Null as [СуммаАвтоСкидки] , Null as [Закупка] , Null as [Закупка, usd2] , Null as [Таможня] , Null as [ЕАЭС] , Null as [Доставка] , Null as [Производство] , [_Fld33394] / 1000 as [ЗатратыМП] , Null as [НДС] , Null as [ЗатратыСкладХранение] , Null as [ЗатратыСкладЗарплата] , Null as [Приемка] , Null as [АтсМаркировка] , Null as [ВремяВыполненияМинут] , Null as [СборкаЗаказа] , Null as [Доставка USD2+2] , Null as [НДС USD2+2] , Null as [Таможня USD2+2] , Null as [Производство USD2+2] FROM [MAG_2019].[dbo].[_AccumRg33390] as r LEFT JOIN [MAG_2019].[dbo].[_Document458_VT5524] as otchetKommissioneraTabTovari on otchetKommissioneraTabTovari.[_Fld5526RRef] = [_Fld33391RRef] AND otchetKommissioneraTabTovari.[_Document458_IDRRef] = [_RecorderRRef] LEFT JOIN [MAG_2019].[dbo].[_Document458] as otchetKommissionera ON otchetKommissionera.[_IDRRef] = otchetKommissioneraTabTovari.[_Document458_IDRRef] where [_Period] >= @dtSqlStart ) as tabZatratiMP END GO /****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Перерасчет)] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Перерасчет)] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @dtStart dateTime2; DECLARE @dtEnd datetime2; DECLARE @dtSqlStart dateTime2; DECLARE @dtSqlEnd datetime2; SET @dtStart = '2022-01-01' SET @dtEnd= '2030-01-01' SET @dtSqlStart = '4022-01-01' SET @dtSqlEnd= '4030-01-01' INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] , [Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] ) SELECT --top (1000) [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , [Валюта документа] , [Ценовая группа] , [1c_document_id] , [Организация] , [Партнер] , [PartnerId] , [Контрагент] , [Менеджер] , [1c_id] , [artic_id] , [Курс usd] , [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] , [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Производство] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , [Доставка USD2+2] , [НДС USD2+2] , [Таможня USD2+2] , [Производство USD2+2] FROM ( -- \\\\\\\\\\\\\\\\\\\\ СПИСАНИЕ ТОВАРОВ \\\\\\\\\\\\\\\ SELECT --top (555) DATEADD(year, -2000, refSpisNedTov._Date_Time) as [Период] , 'Списание товара' as [Статья] , 'Расход' as [Вид операции] , Null as [Хоз операция] , 'Списание недостач' as [тип документа] , refSpisNedTov._Number as [Номер документа] , '' as [Номер заказа] , 'Руб' as [Валюта документа] -- Валюта документа , 'Руб' as [Ценовая группа] , refSpisNedTov._IDRRef as [1c_document_id] , Null as [Организация] -- Организация , Null as [Партнер] -- партнер , Null as [PartnerId] , Null as [Контрагент] -- контрагент , Null as [Менеджер] -- Менеджер , tabSpisNedTov.[_Fld8532RRef] AS [1c_id] -- Номенклатура , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), tabSpisNedTov.[_Fld8532RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), tabSpisNedTov.[_Fld8532RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), tabSpisNedTov.[_Fld8532RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), tabSpisNedTov.[_Fld8532RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), tabSpisNedTov.[_Fld8532RRef], 2),5,12))) as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= refSpisNedTov._Date_Time ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= refSpisNedTov._Date_Time ORDER BY _Period desc ) as [Курс usd2] , CAST(tabSpisNedTov.[_Fld8535] as decimal(15,3)) as [Количество] -- Количество , Null as [Сумма] , Null as [СуммаБезНДС] , Null as [СуммаРучнойСкидки] , Null as [СуммаАвтоСкидки] , Null as [Закупка] , Null as [Закупка, usd2] , Null as [Таможня] , Null as [ЕАЭС] , Null as [Доставка] -- доставка , Null as [Производство] -- Сборка , Null as [ЗатратыМП] -- Затраты мп , Null as [НДС] , Null as [ЗатратыСкладХранение] -- Затраты склад хранение , Null as [ЗатратыСкладЗарплата] -- Затраты склад зарплата , Null as Приемка , Null as [АтсМаркировка] , Null as [ВремяВыполненияМинут] , Null as [СборкаЗаказа] , Null as [Доставка USD2+2] , Null as [НДС USD2+2] , Null as [Таможня USD2+2] , Null as [Производство USD2+2] FROM [MAG_2019].[dbo].[_Document512_VT8530] as tabSpisNedTov INNER JOIN [MAG_2019].[dbo].[_Document512] as refSpisNedTov on refSpisNedTov._IDRRef = tabSpisNedTov._Document512_IDRRef and refSpisNedTov._Posted = 1 -- \\\\\\\\\\\\\\\\\\\\ ОПРИХОДОВАНИЕ ИЗЛИШКОВ ТОВАРОВ \\\\\\\\\\\\\\\ UNION ALL SELECT --top (1000) DATEADD(year, -2000, refOprixTov._Date_Time) as [Период] , 'Оприходование излишков товара' as [Статья] , 'Приход' as [Вид операции] , Null as [Хоз операция] , 'Оприходование излишков' as [тип документа] , refOprixTov._Number as [Номер документа] , '' as [Номер заказа] , 'Руб' as [Валюта документа] -- Валюта документа , 'Руб' as [Ценовая группа] , refOprixTov._IDRRef as [1c_document_id] , Null as [Организация] -- Организация , Null as [Партнер] -- партнер , Null as [PartnerId] , Null as [Контрагент] -- контрагент , Null as [Менеджер] -- Менеджер , tabOprixTov.[_Fld5171RRef] AS [1c_id] -- Номенклатура , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), tabOprixTov.[_Fld5171RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), tabOprixTov.[_Fld5171RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), tabOprixTov.[_Fld5171RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), tabOprixTov.[_Fld5171RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), tabOprixTov.[_Fld5171RRef], 2),5,12))) as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= refOprixTov._Date_Time ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= refOprixTov._Date_Time ORDER BY _Period desc ) as [Курс usd2] , CAST(tabOprixTov.[_Fld5174] as decimal(15,3)) as [Количество] -- Количество , Null as [Сумма] , Null as [СуммаБезНДС] , Null as [СуммаРучнойСкидки] , Null as [СуммаАвтоСкидки] , Null as [Закупка] , Null as [Закупка, usd2] , Null as [Таможня] , Null as [ЕАЭС] , Null as [Доставка] -- доставка , Null as [Производство] -- Сборка , Null as [ЗатратыМП] -- Затраты мп , Null as [НДС] , Null as [ЗатратыСкладХранение] -- Затраты склад хранение , Null as [ЗатратыСкладЗарплата] -- Затраты склад зарплата , Null as Приемка , Null as [АтсМаркировка] , Null as [ВремяВыполненияМинут] , Null as [СборкаЗаказа] , Null as [Доставка USD2+2] , Null as [НДС USD2+2] , Null as [Таможня USD2+2] , Null as [Производство USD2+2] FROM [MAG_2019].[dbo].[_Document446_VT5169] as tabOprixTov INNER JOIN [MAG_2019].[dbo].[_Document446] as refOprixTov on refOprixTov._IDRRef = tabOprixTov.[_Document446_IDRRef] and refOprixTov._Posted = 1 ) as tabPereschet END GO /****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(ПерерасчетСкладскойКонтур)] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(ПерерасчетСкладскойКонтур)] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @dtStart dateTime2; DECLARE @dtEnd datetime2; DECLARE @dtSqlStart dateTime2; DECLARE @dtSqlEnd datetime2; SET @dtStart = '2022-01-01' SET @dtEnd= '2030-01-01' SET @dtSqlStart = '4022-01-01' SET @dtSqlEnd= '4030-01-01' INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] , [Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] ) SELECT --top (1000) [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , [Валюта документа] , [Ценовая группа] , [1c_document_id] , [Организация] , [Партнер] , [PartnerId] , [Контрагент] , [Менеджер] , [1c_id] , [artic_id] , [Курс usd] , [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] , [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Производство] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , [Доставка USD2+2] , [НДС USD2+2] , [Таможня USD2+2] , [Производство USD2+2] FROM ( -- \\\\\\\\\\\\\\\\\\\\ СПИСАНИЕ ТОВАРОВ \\\\\\\\\\\\\\\ SELECT --top (555) DATEADD(year, -2000, RNtovariNaSkladah.[_Period]) as [Период] , 'Пересчет товара' as [Статья] , CASE WHEN [_RecordKind] = 1 THEN 'Расход' ELSE 'Приход' END as [Вид операции] , Null as [Хоз операция] , 'Списание недостач' as [тип документа] , dokPereschet._Number as [Номер документа] , '' as [Номер заказа] , 'Руб' as [Валюта документа] -- Валюта документа , 'Руб' as [Ценовая группа] , [_RecorderRRef] as [1c_document_id] , Null as [Организация] -- Организация , Null as [Партнер] -- партнер , Null as [PartnerId] , Null as [Контрагент] -- контрагент , Null as [Менеджер] -- Менеджер , [_Fld17485RRef] AS [1c_id] -- Номенклатура , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [_Fld17485RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [_Fld17485RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld17485RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld17485RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld17485RRef], 2),5,12))) as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= RNtovariNaSkladah.[_Period] ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= RNtovariNaSkladah.[_Period] ORDER BY _Period desc ) as [Курс usd2] , CASE WHEN [_RecordKind] = 1 THEN [_Fld17491] * -1 ELSE [_Fld17491] END as [Количество] -- Количество , Null as [Сумма] , Null as [СуммаБезНДС] , Null as [СуммаРучнойСкидки] , Null as [СуммаАвтоСкидки] , Null as [Закупка] , Null as [Закупка, usd2] , Null as [Таможня] , Null as [ЕАЭС] , Null as [Доставка] -- доставка , Null as [Производство] -- Сборка , Null as [ЗатратыМП] -- Затраты мп , Null as [НДС] , Null as [ЗатратыСкладХранение] -- Затраты склад хранение , Null as [ЗатратыСкладЗарплата] -- Затраты склад зарплата , Null as Приемка , Null as [АтсМаркировка] , Null as [ВремяВыполненияМинут] , Null as [СборкаЗаказа] , Null as [Доставка USD2+2] , Null as [НДС USD2+2] , Null as [Таможня USD2+2] , Null as [Производство USD2+2] FROM [MAG_2019].[dbo].[_AccumRg17484] as RNtovariNaSkladah LEFT JOIN [MAG_2019].[dbo].[_Document473X1] as dokPereschet on dokPereschet._IDRRef = [_RecorderRRef] where [_RecorderTRef] = 0x000001D9 -- Документ пересчет and [_Period] > @dtSqlStart ) as tabPereschet END GO /****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Приемка)] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Приемка)] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @dtStart dateTime2; DECLARE @dtEnd datetime2; DECLARE @dtSqlStart dateTime2; DECLARE @dtSqlEnd datetime2; SET @dtStart = '2022-01-01' SET @dtEnd= '2030-01-01' SET @dtSqlStart = '4022-01-01' SET @dtSqlEnd= '4030-01-01' INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] ) SELECT -- top (1000) [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , [Валюта документа] , [Ценовая группа] , [1c_document_id] , [Организация] , [Партнер] , [PartnerId] , [Контрагент] , [Менеджер] , [1c_id] , [artic_id] , [Курс usd] , [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] , [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Производство] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , [Доставка USD2+2] , [НДС USD2+2] , [Таможня USD2+2] , [Производство USD2+2] FROM ( -- \\\\\\\\\\\\\\\\\\\\ ПРИЕМКА \\\\\\\\\\\\\\\ SELECT --top 1000 DATEADD(year, -2000, docOtbor._Date_Time) as [Период] , 'Приемка товара' as [Статья] , 'Приход' as [Вид операции] , Null as [Хоз операция] , 'Отбор (размещение) товара' as [тип документа] , docOtbor._Number as [Номер документа] , zakasPostavshiku._Number as [Номер заказа] , 'Руб' as [Валюта документа] -- Валюта документа , 'Руб' as [Ценовая группа] , docOtbor._IDRRef as [1c_document_id] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = zakasPostavshiku._Fld3411RRef ) as [Организация] , (SELECT TOP(1) _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = zakasPostavshiku._Fld3409RRef) as [Партнер] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2),5,12) )) as [PartnerId] , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = zakasPostavshiku._Fld3410RRef) as [Контрагент] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = zakasPostavshiku._Fld3415RRef) as [Менеджер] , otborTabRazmeshenie._Fld5347RRef as [1c_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), otborTabRazmeshenie._Fld5347RRef, 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), otborTabRazmeshenie._Fld5347RRef, 2),21,4),'-',SUBSTRING(convert(nvarchar(36), otborTabRazmeshenie._Fld5347RRef, 2),17,4),'-',SUBSTRING(convert(nvarchar(36), otborTabRazmeshenie._Fld5347RRef, 2),1,4),'-',SUBSTRING(convert(nvarchar(36), otborTabRazmeshenie._Fld5347RRef, 2),5,12))) as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= docOtbor._Date_Time ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= docOtbor._Date_Time ORDER BY _Period desc ) as [Курс usd2] , Null as [Количество] -- Количество , Null as [Сумма] , Null as [СуммаБезНДС] , Null as [СуммаРучнойСкидки] , Null as [СуммаАвтоСкидки] , Null as [Закупка] , Null as [Закупка, usd2] , Null as [Таможня] , Null as [ЕАЭС] , Null as [Доставка] -- доставка , Null as [Производство] -- Производство \\\ Сборка , Null as [ЗатратыМП] -- Затраты мп , Null as [НДС] , Null as [ЗатратыСкладХранение] -- Затраты склад хранение , Null as [ЗатратыСкладЗарплата] -- Затраты склад зарплата , ((CASE WHEN DAY(docOtbor._Fld5324) <> DAY(docOtbor._Fld5325) THEN ((20 - DATEPART(HOUR, docOtbor._Fld5324)) * 60 - DATEPART(MINUTE, docOtbor._Fld5324) - DATEPART(SECOND, docOtbor._Fld5324) / 60.0) + ((DATEDIFF(DAY, docOtbor._Fld5324, docOtbor._Fld5325) - 1) * 12 * 60) + ((DATEPART(HOUR, docOtbor._Fld5325) - 8) * 60 + DATEPART(MINUTE, docOtbor._Fld5325) + DATEPART(SECOND, docOtbor._Fld5325) / 60.0) ELSE DATEDIFF(SECOND, docOtbor._Fld5324, docOtbor._Fld5325) / 60.0 END * 3 / SUM(otborTabRazmeshenie._Fld5346 / ISNULL(upackovka.chislitel, 1)) over (partition by docOtbor._IDRRef) * otborTabRazmeshenie._Fld5346 / ISNULL(upackovka.chislitel, 1)) + ((COUNT(*) over (partition by docOtbor._IDRRef) / 3000 + otborTabRazmeshenie._Fld5346 / ISNULL(upackovka.chislitel, 1) / 50000 + (upackovka.ves * otborTabRazmeshenie._Fld5346 / ISNULL(upackovka.chislitel, 1) / 15000)) / 3 * 20000)) / 1000 AS [Приемка] , Null as [АтсМаркировка] , Null as [ВремяВыполненияМинут] , Null as [СборкаЗаказа] , Null as [Доставка USD2+2] , Null as [НДС USD2+2] , Null as [Таможня USD2+2] , Null as [Производство USD2+2] FROM [MAG_2019].[dbo].[_Document453_VT5341X1] AS otborTabRazmeshenie INNER JOIN [MAG_2019].[dbo].[_Document453X1] AS docOtbor ON docOtbor._IDRRef = otborTabRazmeshenie._Document453_IDRRef and docOtbor._Fld5316_RTRef = 0x000001E6 -- Фильтрация по псо and docOtbor._Fld5325 >= @dtStart and docOtbor._Fld5324 >= @dtStart and docOtbor._Posted = 0x01 INNER JOIN [MAG_2019].[dbo].[_Document486] as docPSO on docPSO._Fld7346_RTRef = 0x00000198 -- фильтрация по заказу поставщика and docOtbor._Fld5316_RRRef = docPSO._IDRRef LEFT JOIN [MAG_2019].[dbo].[_Document408X1] as zakasPostavshiku on docPSO._Fld7346_RRRef = zakasPostavshiku._IDRRef LEFT JOIN ( SELECT upackovka._OwnerID_RRRef AS vladelec, -- Владелец CASE WHEN upackovka._Fld24768 = 0 THEN 1 ELSE ISNULL(upackovka._Fld24768, 1) END AS chislitel, -- Числитель upackovka._Fld24769 AS znamenatel, -- Знаменатель CAST(CASE WHEN 1 = 1 -- ВесИспользовать AND upackovka._Fld24769 <> 0 -- Знаменатель THEN upackovka._Fld24768 / upackovka._Fld24769 ELSE 0 END AS DECIMAL(15, 3)) AS ves FROM [MAG_2019].[dbo].[_Reference347X1] AS upackovka WHERE upackovka._Marked = 0 -- ПометкаУдаления ) AS upackovka ON upackovka.vladelec = otborTabRazmeshenie._Fld5347RRef -- Сопоставление Номенклатуры и Владелец WHERE 1=1 and ISNULL(otborTabRazmeshenie._Fld5346, 0) > 0 and docOtbor._Date_Time >= @dtSqlStart ) as tabPriemka END GO /****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Продажи)] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Продажи)] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @dtStart dateTime2; DECLARE @dtEnd datetime2; DECLARE @dtSqlStart dateTime2; DECLARE @dtSqlEnd datetime2; SET @dtStart = '2022-01-01' SET @dtEnd= '2030-01-01' SET @dtSqlStart = '4022-01-01' SET @dtSqlEnd= '4030-01-01' INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2], [Заказ закрыт] ) SELECT --top (1000) [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , [Валюта документа] , [Ценовая группа] , [1c_document_id] , [Организация] , [Партнер] , [PartnerId] , [Контрагент] , [Менеджер] , [1c_id] , [artic_id] , [Курс usd] , [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] , [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Производство] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , [Доставка] / [Курс usd2] as [Доставка USD2+2] , [НДС USD2+2] , [Таможня USD2+2] , [Производство USD2+2] , [Заказ закрыт] FROM ( -- ///////////////// ПРОДАЖИ //////////////// SELECT --TOP (1) DATEADD(year, -2000, [_Period]) as [Период] , 'Реализация' as [Статья] , 'Расход' as [Вид операции] , Null as [Хоз операция] , case [_RecorderTRef] WHEN 0x000001F4 then 'РТУ' ELSE 'Неизвестный тип' END [тип документа] , docRTU.[_Number] as [Номер документа] , orders.[_Number] as [Номер заказа] , val._Description as [Валюта документа] , CASE WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' ELSE 'Неопределено' END as [Ценовая группа] , [_RecorderRRef] as [1c_document_id] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = AnalitikaUchetaPartner.[_Fld20514RRef] ) as [Организация] , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = AnalitikaUchetaPartner.[_Fld20513RRef]) as [Партнер] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), AnalitikaUchetaPartner.[_Fld20513RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), AnalitikaUchetaPartner.[_Fld20513RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), AnalitikaUchetaPartner.[_Fld20513RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), AnalitikaUchetaPartner.[_Fld20513RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), AnalitikaUchetaPartner.[_Fld20513RRef], 2),5,12) ))as PartnerId , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = AnalitikaUchetaPartner.[_Fld20515_RRRef]) as [Контрагент] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = orders._Fld3138RRef) as [Менеджер] , analitikaUchetaNomenklaturi.[_Fld20498RRef] as [1c_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),21,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),17,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),1,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),5,12))) as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= r.[_Period] ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= r.[_Period] ORDER BY _Period desc ) as [Курс usd2] , [_Fld15567] as [Количество] , [_Fld15568] / 1000 as [Сумма] , Null as [СуммаБезНДС] , [_Fld15595] / 1000 as [СуммаРучнойСкидки] , [_Fld15596] / 1000 as [СуммаАвтоСкидки] , Null as [Закупка] , Null as [Закупка, usd2] , Null as [Таможня] , Null as [ЕАЭС] , Null as [Доставка] , Null as [Производство] , Null as [ЗатратыМП] , Null as [НДС] , Null as [ЗатратыСкладХранение] , Null as [ЗатратыСкладЗарплата] , Null as [Приемка] , Null as [АтсМаркировка] , Null as [ВремяВыполненияМинут] , Null as [СборкаЗаказа] , Null as [Доставка USD2+2] , Null as [НДС USD2+2] , Null as [Таможня USD2+2] , Null as [Производство USD2+2] , DATEADD(year, -2000, SostZakazaClienta.DateClose) as [Заказ закрыт] FROM [MAG_2019].[dbo].[_AccumRg15547] as r LEFT JOIN [MAG_2019].[dbo].[_Reference160] as analitikaUchetaNomenklaturi on analitikaUchetaNomenklaturi.[_IDRRef] = [_Fld15548RRef] LEFT JOIN [MAG_2019].[dbo].[_Reference162] as AnalitikaUchetaPartner on AnalitikaUchetaPartner.[_IDRRef] = [_Fld15550RRef] LEFT JOIN [MAG_2019].[dbo].[_Document500X1] as docRTU on docRTU.[_IDRRef] = [_RecorderRRef] LEFT JOIN (SELECT [_Document500_IDRRef] as _IDRRef ,MIN([_Fld7990_RRRef]) as orderRTU FROM [MAG_2019].[dbo].[_Document500_VT7967X1] GROUP BY [_Document500_IDRRef]) as ordersRTU ON ordersRTU._IDRRef = [_RecorderRRef] LEFT JOIN [MAG_2019].[dbo].[_Document404X1] as orders ON orders.[_IDRRef] = ordersRTU.orderRTU LEFT JOIN (SELECT --TOP (1000) MIN([_Period]) as DateClose ,[_Fld28369_RRRef] as zakazrref FROM [MAG_2019].[dbo].[_InfoRg28368] where [_Fld28370_RRRef] = 0x9AE0BC17F922537141FF55A099D7C9C4 GROUP BY [_Fld28369_RRRef]) as SostZakazaClienta ON SostZakazaClienta.zakazrref = orders.[_IDRRef] LEFT JOIN [MAG_2019].[dbo].[_Reference188X1] as refNomenclatura ON refNomenclatura.[_IDRRef] = analitikaUchetaNomenklaturi.[_Fld20498RRef] LEFT JOIN MAG_2019.dbo._reference50 val ON val._IDRRef = [_Fld15601RRef] where r.[_Period] >= @dtSqlStart ) as tabProdaji END GO /****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Производство)] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Производство)] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @dtStart dateTime2; DECLARE @dtEnd datetime2; DECLARE @dtSqlStart dateTime2; DECLARE @dtSqlEnd datetime2; SET @dtStart = '2022-01-01' SET @dtEnd= '2030-01-01' SET @dtSqlStart = '4022-01-01' SET @dtSqlEnd= '4030-01-01' INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] ) SELECT -- top (1000) [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , [Валюта документа] , [Ценовая группа] , [1c_document_id] , [Организация] , [Партнер] , [PartnerId] , [Контрагент] , [Менеджер] , [1c_id] , [artic_id] , [Курс usd] , [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] , [Закупка] / [Курс usd2] as [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Производство] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , [Доставка USD2+2] , [НДС USD2+2] , [Таможня USD2+2] , [Производство] / [Курс usd2] as [Производство USD2+2] FROM ( -- \\\\\\\\\\\\\\\\ СБОРКА РАСХОД БЕЗ ЗАТРАТ НА СБОРКУ\\\\\\\\\\\\\\\\ SELECT --TOP (1000) DATEADD(year, -2000, znS.[_Date_Time]) as [Период] , 'Производство товара' as [Статья] , 'Расход' as [Вид операции] , Null as [Хоз операция] , 'Заказ на сборку' as [тип документа] , Null as [Номер документа] , Null as [Номер заказа] , 'Руб' as [Валюта документа] , 'Руб' as [Ценовая группа] , TabGoods.[_Document407_IDRRef] as [1c_document_id] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = ZnS.[_Fld3348RRef] ) as [Организация] , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = Kontr.[_Fld20612RRef]) as [Партнер] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),5,12) ))as PartnerId , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = ZnS.[_Fld27876RRef]) as [Контрагент] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = ZnS.[_Fld28230RRef]) as [Менеджер] , [_Fld3381RRef] as [1c_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [_Fld3381RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [_Fld3381RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld3381RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld3381RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld3381RRef], 2),5,12))) as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= znS.[_Date_Time] ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= znS.[_Date_Time] ORDER BY _Period desc ) as [Курс usd2] , [_Fld3385] as [Количество] , Null as [Сумма] , Null as [СуммаБезНДС] , Null as [СуммаРучнойСкидки] , Null as [СуммаАвтоСкидки] --, (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] -- WHERE [Вид цены] = 'Учетная цена (руб)' -- AND [Дата] <= znS.[_Date_Time] -- and [_Fld3381RRef] = [1c_id] -- ORDER BY Дата desc ) / 1000 * [_Fld3385] * -1 , Null as [Закупка] , Null as [Закупка, usd2] , Null as [Таможня] , Null as [ЕАЭС] , Null as [Доставка] , Null as [Производство] , Null as [ЗатратыМП] , Null as [НДС] , Null as [ЗатратыСкладХранение] , Null as [ЗатратыСкладЗарплата] , Null as [Приемка] , Null as [АтсМаркировка] , Null as [ВремяВыполненияМинут] , Null as [СборкаЗаказа] , Null as [Доставка USD2+2] , Null as [НДС USD2+2] , Null as [Таможня USD2+2] , Null as [Производство USD2+2] FROM [MAG_2019].[dbo].[_Document407_VT3379X1] as TabGoods INNER JOIN [MAG_2019].[dbo].[_Document407X1] as ZnS -- Заказ на сборку on ZnS._IDRRef = [_Document407_IDRRef] and _Posted = 0x01 -- проведен -- and [_Number] = 'АНУТ-010680' -- номер дока для проверки and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт LEFT JOIN [MAG_2019].[dbo].[_Reference168] as Kontr ON Kontr.[_IDRRef] = ZnS.[_Fld27876RRef] where znS.[_Date_Time] >= @dtSqlStart and TabGoods.[_Fld3392] = 0x00 -- отменено ложь UNION ALL -- \\\\\\\\\\\\\\\\ СБОРКА ПРИХОД + ЗАТРАТЫ НА СБОРКУ \\\\\\\\\\\\\\\\ SELECT -- top 1000 DATEADD(year, -2000, znS.[_Date_Time]) as [Период] , 'Производство товара' as [Статья] , 'Приход' as [Вид операции] , Null as [Хоз операция] , 'Заказ на сборку' as [тип документа] , Null as [Номер документа] , ZnS._Number as [Номер заказа] , 'Руб' as [Валюта документа] , 'Руб' as [Ценовая группа] , [табКомплекты].[_Document407_IDRRef] as [1c_document_id] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = ZnS.[_Fld3348RRef] ) as [Организация] , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = Kontr.[_Fld20612RRef]) as [Партнер] , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),5,12) ))as PartnerId , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = ZnS.[_Fld27876RRef]) as [Контрагент] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = ZnS.[_Fld28230RRef]) as [Менеджер] , [табКомплекты].[_Fld28059RRef] as [1c_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [табКомплекты].[_Fld28059RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [табКомплекты].[_Fld28059RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [табКомплекты].[_Fld28059RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [табКомплекты].[_Fld28059RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [табКомплекты].[_Fld28059RRef], 2),5,12))) as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= znS.[_Date_Time] ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND _Period <= znS.[_Date_Time] ORDER BY _Period desc ) as [Курс usd2] , [табКомплекты].[_Fld28063] as [Количество] , Null as [Сумма] , Null as [СуммаБезНДС] , Null as [СуммаРучнойСкидки] , Null as [СуммаАвтоСкидки] , [табКомплектующие].Закупка as Закупка -- Новый не костыль , Null as [Закупка, usd2] , Null as [Таможня] , Null as [ЕАЭС] , Null as [Доставка] , TabZatratiSborka.sborka / 1000 as [Производство] , Null as [ЗатратыМП] , Null as [НДС] , Null as [ЗатратыСкладХранение] , Null as [ЗатратыСкладЗарплата] , Null as [Приемка] , Null as [АтсМаркировка] , Null as [ВремяВыполненияМинут] , Null as [СборкаЗаказа] , Null as [Доставка USD2+2] , Null as [НДС USD2+2] , Null as [Таможня USD2+2] , Null as [Производство USD2+2] FROM [MAG_2019].[dbo]._Document407_VT28057X1 as [табКомплекты] -- список товаров к поступлению ... INNER JOIN [MAG_2019].[dbo].[_Document407X1] as ZnS -- Заказ на сборку on ZnS._IDRRef = [табКомплекты].[_Document407_IDRRef] and _Posted = 0x01 -- проведен and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт LEFT JOIN (SELECT --top 500 SUM(tabItog.[Закупка]) as [Закупка] , tabItog.[КодСтрокиКомплекта] , [ZnSRref] as [ZnSRref] FROM ( SELECT (SELECT TOP 1 [Учетная цена] FROM [mag_pbi].[pbiProd].[СебестоимостьПроизводствоОт2022] WHERE [Период] <= znS.[_Date_Time] and [1c_id] = [табКомплектующие]._Fld3381RRef ORDER BY [Период] desc ) * [_Fld3385] as [Закупка] ,[табКомплектующие].[_Fld28055] as [КодСтрокиКомплекта] , ZnS._IDRRef as [ZnSRref] FROM [MAG_2019].[dbo].[_Document407_VT3379X1] as [табКомплектующие] -- в конфе это тч Товары, здесь лежит список товаров на ВХОД и Вариант комплектации ... --ON [табКомплектующие]._Document407_IDRRef = [табКомплекты].[_Document407_IDRRef] --and [табКомплектующие] INNER JOIN [MAG_2019].[dbo].[_Document407X1] as ZnS -- Заказ на сборку on ZnS._IDRRef = [табКомплектующие].[_Document407_IDRRef] and _Posted = 0x01 -- проведен and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт ) as tabItog GROUP BY tabItog.[КодСтрокиКомплекта] , [ZnSRref] ) as [табКомплектующие] -- в конфе это тч Товары, здесь лежит список товаров на ВХОД и Вариант комплектации ... ON [табКомплектующие].КодСтрокиКомплекта = [табКомплекты].[_Fld28070] and [табКомплектующие].ZnSRref = [табКомплекты].[_Document407_IDRRef] LEFT JOIN [MAG_2019].[dbo].[_Reference168] as Kontr ON Kontr.[_IDRRef] = ZnS.[_Fld27876RRef] LEFT JOIN (SELECT --TOP (1000) [_RecorderRRef] -- регистратор , [_Fld33653RRef] -- Номенклатура , SUM([_Fld33658]) / 1000 as sborka -- сборка FROM [MAG_2019].[dbo].[_AccumRg33652] -- рн работы where [_RecorderTRef] = 0x00000197 group by [_RecorderRRef] , [_Fld33653RRef] -- Номенклатура ) as TabZatratiSborka ON TabZatratiSborka.[_RecorderRRef] = [табКомплекты].[_Document407_IDRRef] and TabZatratiSborka.[_Fld33653RRef] = [табКомплекты].[_Fld28059RRef] where 1=1 and [табКомплекты].[_Fld28152] = 0x00 -- отменено ложь and znS.[_Date_Time] >= @dtSqlStart --and tabSet.[_Fld28059RRef] = 0x9987B49691D57EFD11EEE1296BB584D6 --and ZnS._Number = 'АНУТ-007990' --and znS.[_Date_Time] >= @dtSqlStart ) as tabProizvodstvo END GO /****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Сборка)] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Сборка)] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @dtStart dateTime2; DECLARE @dtEnd datetime2; DECLARE @dtSqlStart dateTime2; DECLARE @dtSqlEnd datetime2; SET @dtStart = '2022-01-01' SET @dtEnd= '2030-01-01' SET @dtSqlStart = '4022-01-01' SET @dtSqlEnd= '4030-01-01' INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] ) SELECT -- top (1000) [Период] , [Статья] , [Вид операции] , [Хоз операция] , [тип документа] , [Номер документа] , [Номер заказа] , [Валюта документа] , [Ценовая группа] , [1c_document_id] , [Организация] , [Партнер] , [PartnerId] , [Контрагент] , [Менеджер] , [1c_id] , [artic_id] , [Курс usd] , [Курс usd2] , [Количество] , [Сумма] , [СуммаБезНДС] , [СуммаРучнойСкидки] , [СуммаАвтоСкидки] , [Закупка] , [Закупка, usd2] , [Таможня] , [ЕАЭС] , [Доставка] , [Производство] , [ЗатратыМП] , [НДС] , [ЗатратыСкладХранение] , [ЗатратыСкладЗарплата] , [Приемка] , [АтсМаркировка] , [ВремяВыполненияМинут] , [СборкаЗаказа] , [Доставка USD2+2] as [Доставка USD2+2] , [НДС USD2+2] , [Таможня USD2+2] , [Производство] / [Курс usd2] as [Производство USD2+2] FROM ( -- \\\\\\\\\\\\\\\\\\\\ СБОРКА ЗАКАЗА КЛИЕНТА \\\\\\\\\\\\\\\ SELECT --TOP (100000) DATEADD(year, -2000, docOtbor._Date_Time) as [Период] , 'Сборка заказа' as [Статья] , 'Приход' as [Вид операции] , Null as [Хоз операция] , 'Отбор (отбор) товара' as [тип документа] , docOtbor._Number as [Номер документа] , docZakazKlienta._Number as [Номер заказа] , 'Руб' as [Валюта документа] -- Валюта документа , 'Руб' as [Ценовая группа] , docOtbor._IDRRef as [1c_document_id] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = docZakazKlienta._Fld3129RRef ) as [Организация] , (SELECT TOP(1)_description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = docZakazKlienta._Fld3127RRef) as [Партнер] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2),5,12) )) as [PartnerId] , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = docZakazKlienta._Fld3128RRef) as [Контрагент] , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = docZakazKlienta._Fld3138RRef) as [Менеджер] , [_Fld5332RRef] as [1c_id] -- Номенклатура , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [_Fld5332RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [_Fld5332RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld5332RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld5332RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld5332RRef], 2),5,12))) as [artic_id] --, '' as [artic_id] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют --WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= docOtbor._Date_Time ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 --WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND _Period <= docOtbor._Date_Time ORDER BY _Period desc ) as [Курс usd2] , CAST([_Fld5330] as decimal(10,3)) as [Количество] -- Количество , Null as [Сумма] , Null as [СуммаБезНДС] , Null as [СуммаРучнойСкидки] , Null as [СуммаАвтоСкидки] , Null as [Закупка] , Null as [Закупка, usd2] , Null as [Таможня] , Null as [ЕАЭС] , Null as [Доставка] -- доставка , Null as [Производство] -- Сборка , Null as [ЗатратыМП] -- Затраты мп , Null as [НДС] , Null as [ЗатратыСкладХранение] -- Затраты склад хранение , Null as [ЗатратыСкладЗарплата] -- Затраты склад зарплата , Null as [Приемка] , Null as [АтсМаркировка] , CASE WHEN DAY(docOtbor.[_Fld5324]) <> DAY(docOtbor.[_Fld5325]) THEN (((20 - DATEPART(HOUR, docOtbor.[_Fld5324])) * 60 - DATEPART(MINUTE, docOtbor.[_Fld5324]) - DATEPART(SECOND, docOtbor.[_Fld5324]) / 60.0) + ((DATEDIFF(DAY, docOtbor.[_Fld5324], docOtbor.[_Fld5325]) - 1) * 12 * 60) + ((DATEPART(HOUR, docOtbor.[_Fld5325]) - 8) * 60 + DATEPART(MINUTE, docOtbor.[_Fld5325]) + DATEPART(SECOND, docOtbor.[_Fld5325]) / 60.0)) / SUM([_Fld5330]) over (partition by [_Document453_IDRRef]) * [_Fld5330] ELSE (DATEDIFF(SECOND, docOtbor.[_Fld5324], docOtbor.[_Fld5325]) / 60.0) / SUM([_Fld5330]) over (partition by [_Document453_IDRRef]) * [_Fld5330] END as [ВремяВыполненияМинут] , ((SUM(1) over (partition by [_Document453_IDRRef]) / 5000 + [_Fld5330] / 20000)/2*30000) / 1000 as СборкаЗаказа , Null as [Доставка USD2+2] , Null as [НДС USD2+2] , Null as [Таможня USD2+2] , Null as [Производство USD2+2] FROM [MAG_2019].[dbo].[_Document453_VT5326X1] as OtborTabOtbor INNER JOIN [MAG_2019].[dbo].[_Document453X1] as docOtbor ON docOtbor.[_IDRRef] = [_Document453_IDRRef] and docOtbor._Posted = 0x01 and docOtbor._Fld5325 >= @dtStart and docOtbor._Fld5324 >= @dtStart and docOtbor.[_Fld5316_RTRef] = 0x000001F0 -- RSO INNER JOIN [MAG_2019].[dbo].[_Document496X1] as docRSO on docOtbor._Fld5316_RRRef = docRSO._IDRRef and docRSO.[_Fld27744_RTRef] = 0x00000194 -- zakaz klienta LEFT JOIN [MAG_2019].[dbo].[_Document404X1] as docZakazKlienta on docRSO.[_Fld27744_RRRef] = docZakazKlienta._IDRRef WHERE 1=1 and docOtbor._Date_Time >= @dtSqlStart ) as tabSborka END GO /****** Object: StoredProcedure [pbiProd].[Пакетное: Подготовка таблицы СебестоимостьОт2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Пакетное: Подготовка таблицы СебестоимостьОт2022] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DELETE FROM mag_pbi.pbiProd.[СебестоимостьОт2022] WHERE 1=1 DBCC CHECKIDENT ('[pbiProd].[СебестоимостьОт2022]', RESEED, 0); END GO /****** Object: StoredProcedure [pbiProd].[Подготовка Производство: Дозаполнить уровни по ЗНС Приход] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Подготовка Производство: Дозаполнить уровни по ЗНС Приход] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; INSERT INTO mag_pbi.[pbiProd].[НоменклатураВПроизводствеПоУровням] ([1c_id], [УровеньПроизводства]) SELECT tabNomLVL.[1c_id] as [1c_id] , ISNULL(tabZNS.[УровеньПроизводства], 1) as [УровеньПроизводства] FROM ( SELECT _OwnerIDRRef as [1c_id] FROM [MAG_2019].[dbo].[_Reference54] LEFT JOIN [mag_pbi].[pbiProd].[НоменклатураВПроизводствеПоУровням] as NomLvl on NomLvl.[1c_id] = _OwnerIDRRef WHERE NomLvl.[УровеньПроизводства] IS NULL) as tabNomLVL LEFT JOIN ( SELECT TabGoods.[_Fld3381RRef] as [1c_id] , 2 as [УровеньПроизводства] FROM [MAG_2019].[dbo].[_Document407_VT3379] as TabGoods --INNER JOIN [MAG_2019].[dbo].[_Document407] as ZnS -- Заказ на сборку -- on ZnS._IDRRef = [_Document407_IDRRef] -- and _Posted = 0x01 -- проведен -- and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт where [_Fld3392] = 0x00 -- отменено ложь GROUP BY TabGoods.[_Fld3381RRef] ) as tabZNS ON 1=1 and tabZNS.[1c_id] = tabNomLVL.[1c_id] END GO /****** Object: StoredProcedure [pbiProd].[Подготовка Производство: Дозаполнить уровни по ЗНС Расход] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Подготовка Производство: Дозаполнить уровни по ЗНС Расход] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; INSERT INTO mag_pbi.[pbiProd].[НоменклатураВПроизводствеПоУровням] ([1c_id], [УровеньПроизводства]) SELECT DISTINCT [_Fld3381RRef] as [1c_id] , 0 as [УровеньПроизводства] FROM [MAG_2019].[dbo].[_Document407_VT3379] as TabGoods WHERE [_Fld3381RRef] NOT IN ( SELECT NomLVL.[1c_id] FROM [mag_pbi].[pbiProd].[НоменклатураВПроизводствеПоУровням] as NomLVL) END GO /****** Object: StoredProcedure [pbiProd].[Подготовка Производство: единая процедура для подготовки] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Подготовка Производство: единая процедура для подготовки] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DELETE FROM [pbiProd].[СебестоимостьПроизводствоОт2022] WHERE 1=1 DELETE FROM [pbiProd].[НоменклатураВПроизводствеПоУровням] WHERE 1=1 exec [pbiProd].[Подготовка Производство: Заполнить уровень 0] exec [pbiProd].[Подготовка Производство: Заполнить уровень 1] exec [pbiProd].[Подготовка Производство: Заполнить уровень 2] exec [pbiProd].[Подготовка Производство: Заполнить уровень 3] exec [pbiProd].[Подготовка Производство: Дозаполнить уровни по ЗНС Расход] exec [pbiProd].[Подготовка Производство: Дозаполнить уровни по ЗНС Приход]; WITH CTE AS ( SELECT *, ROW_NUMBER() OVER ( PARTITION BY УровеньПроизводства ORDER BY ID -- или другая логика сортировки внутри группы ) AS RowNumNew FROM [pbiProd].[НоменклатураВПроизводствеПоУровням] ) UPDATE CTE SET RowNum = RowNumNew END GO /****** Object: StoredProcedure [pbiProd].[Подготовка Производство: Заполнить уровень 0] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Подготовка Производство: Заполнить уровень 0] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; INSERT INTO mag_pbi.[pbiProd].[НоменклатураВПроизводствеПоУровням] ([1c_id], [УровеньПроизводства]) SELECT DISTINCT--TOP (1000) [_Fld18241RRef] as [1c_id] , 0 as [УровеньПроизводства] FROM [MAG_2019].[dbo].[_Reference54_VT18239] where [_Fld18241RRef] NOT IN (SELECT [_OwnerIDRRef] FROM [MAG_2019].[dbo].[_Reference54]) END GO /****** Object: StoredProcedure [pbiProd].[Подготовка Производство: Заполнить уровень 1] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Подготовка Производство: Заполнить уровень 1] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; INSERT INTO mag_pbi.[pbiProd].[НоменклатураВПроизводствеПоУровням] ([1c_id], [УровеньПроизводства]) SELECT tabItog.nomVlad as [1c_id] , 1 as [УровеньПроизводства] FROM ( SELECT DISTINCT refKomplekt._OwnerIDRRef as nomVlad , MAX(ISNULL(NomLvl.[УровеньПроизводства], 99)) as [УровеньПроизводства] FROM [MAG_2019].[dbo].[_Reference54_VT18239] LEFT JOIN [mag_pbi].[pbiProd].[НоменклатураВПроизводствеПоУровням] as NomLvl on NomLvl.[1c_id] = _Fld18241RRef and NomLvl.УровеньПроизводства = 0 LEFT JOIN [MAG_2019].[dbo].[_Reference54] as refKomplekt on refKomplekt._IDRRef = [_Reference54_IDRRef] GROUP BY refKomplekt._OwnerIDRRef HAVING MAX(ISNULL(NomLvl.[УровеньПроизводства], 99)) = 0) as tabItog END GO /****** Object: StoredProcedure [pbiProd].[Подготовка Производство: Заполнить уровень 2] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Подготовка Производство: Заполнить уровень 2] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; INSERT INTO mag_pbi.[pbiProd].[НоменклатураВПроизводствеПоУровням] ([1c_id], [УровеньПроизводства]) SELECT tabItog.nomVlad , 2 as [УровеньПроизводства] FROM ( SELECT refKomplekt._OwnerIDRRef as nomVlad , MAX(ISNULL(NomLvl.[УровеньПроизводства], 99)) as [УровеньПроизводства] FROM [MAG_2019].[dbo].[_Reference54_VT18239] LEFT JOIN [mag_pbi].[pbiProd].[НоменклатураВПроизводствеПоУровням] as NomLvl on NomLvl.[1c_id] = _Fld18241RRef LEFT JOIN [MAG_2019].[dbo].[_Reference54] as refKomplekt on refKomplekt._IDRRef = [_Reference54_IDRRef] GROUP BY refKomplekt._OwnerIDRRef HAVING MAX(ISNULL(NomLvl.[УровеньПроизводства], 99)) = 1 ) as tabItog END GO /****** Object: StoredProcedure [pbiProd].[Подготовка Производство: Заполнить уровень 3] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Подготовка Производство: Заполнить уровень 3] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; INSERT INTO mag_pbi.[pbiProd].[НоменклатураВПроизводствеПоУровням] ([1c_id], [УровеньПроизводства]) SELECT tabItog.nomVlad , 3 as [УровеньПроизводства] FROM ( SELECT refKomplekt._OwnerIDRRef as nomVlad , MAX(ISNULL(NomLvl.[УровеньПроизводства], 99)) as [УровеньПроизводства] FROM [MAG_2019].[dbo].[_Reference54_VT18239] LEFT JOIN [mag_pbi].[pbiProd].[НоменклатураВПроизводствеПоУровням] as NomLvl on NomLvl.[1c_id] = _Fld18241RRef LEFT JOIN [MAG_2019].[dbo].[_Reference54] as refKomplekt on refKomplekt._IDRRef = [_Reference54_IDRRef] GROUP BY refKomplekt._OwnerIDRRef HAVING MAX(ISNULL(NomLvl.[УровеньПроизводства], 99)) = 2 ) as tabItog END GO /****** Object: StoredProcedure [pbiProd].[Подготовка: Заполнить группы номенклатуры для расчета] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Подготовка: Заполнить группы номенклатуры для расчета] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; BEGIN DELETE FROM mag_pbi.pbiProd.GroupsOfNomenclature INSERT INTO mag_pbi.pbiProd.GroupsOfNomenclature (artic_id) SELECT --TOP (1000) [artic_id] FROM [mag_pbi].[pbi].[nomenclature] DECLARE @articid nchar(36) DECLARE @2k int DECLARE @4k int DECLARE @6k int DECLARE @8k int DECLARE @10k int DECLARE @15k int DECLARE @20k int DECLARE @Counter2k int DECLARE @Counter4k int DECLARE @Counter6k int DECLARE @Counter8k int DECLARE @Counter10k int DECLARE @Counter15k int DECLARE @Counter20k int DECLARE @counter int SET @2k = 1 SET @4k = 1 SET @6k = 1 SET @8k = 1 SET @10k = 1 SET @15k = 1 SET @20k = 1 SET @counter = 1 SET @Counter2k = 1 SET @Counter4k = 1 SET @Counter6k = 1 SET @Counter8k = 1 SET @Counter10k = 1 SET @Counter15k = 1 SET @Counter20k = 1 DECLARE itterate CURSOR FOR SELECT [artic_id] FROM mag_pbi.[pbiProd].[GroupsOfNomenclature] as s order by [artic_id] OPEN itterate FETCH NEXT FROM itterate INTO @articid WHILE @@FETCH_STATUS = 0 BEGIN if @Counter2k <= 2000 begin SET @Counter2k = @Counter2k + 1 end else begin SET @Counter2k = 0 SET @2k = @2k + 1 end if @Counter4k <= 4000 begin SET @Counter4k = @Counter4k + 1 end else begin SET @Counter4k = 0 SET @4k = @4k + 1 end if @Counter6k <= 6000 begin SET @Counter6k = @Counter6k + 1 end else begin SET @Counter6k = 0 SET @6k = @6k + 1 end if @Counter8k <= 8000 begin SET @Counter8k = @Counter8k + 1 end else begin SET @Counter8k = 0 SET @8k = @8k + 1 end if @Counter10k <= 10000 begin SET @Counter10k = @Counter10k + 1 end else begin SET @Counter10k = 0 SET @10k = @10k + 1 end if @Counter15k <= 15000 begin SET @Counter15k = @Counter15k + 1 end else begin SET @Counter15k = 0 SET @15k = @15k + 1 end if @Counter20k <= 20000 begin SET @Counter20k = @Counter20k + 1 end else begin SET @Counter20k = 0 SET @20k = @20k + 1 end UPDATE mag_pbi.[pbiProd].[GroupsOfNomenclature] SET [2k] = @2k ,[4k] = @4k ,[6k] = @6k ,[8k] = @8k ,[10k] = @10k ,[15k] = @15k ,[20k] = @20k WHERE [artic_id]= @articid FETCH NEXT FROM itterate INTO @articid END CLOSE itterate DEALLOCATE itterate END END GO /****** Object: StoredProcedure [pbiProd].[Производство: Заполнить 1сid для СебестоимостьПроизводствоОт2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [pbiProd].[Производство: Заполнить 1сid для СебестоимостьПроизводствоОт2022] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; UPDATE [pbiProd].[СебестоимостьПроизводствоОт2022] SET [pbiProd].[СебестоимостьПроизводствоОт2022].[1c_id] = nom.[1c_id] FROM [pbiProd].[СебестоимостьПроизводствоОт2022] ss LEFT JOIN [mag_pbi].[pbi].[nomenclature] as nom ON ss.artic_id = nom.artic_id WHERE ss.[1c_id] IS NULL; END GO /****** Object: StoredProcedure [sebest].[ComputeStorehouseVolume] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [sebest].[ComputeStorehouseVolume] -- Add the parameters for the stored procedure here AS BEGIN DELETE FROM [pbi].[nomenclatureVolumeStorehouse] WHERE 1=1 ; WITH calendar AS ( SELECT [_Fld13119] AS date -- date FROM [MAG_2019].[dbo].[_InfoRg13116] WHERE [_Fld13117RRef] = 0x80CD002590EC174111E58150B83C760D -- calendar AND [_Fld13118] > 2018 -- year ), GoodsInStorehousesTurnover AS ( SELECT GoodsInStorehousesTurnover.period AS period, GoodsInStorehousesTurnover.nomenclature AS nomenclature, GoodsInStorehousesTurnover.storehouse as storehouse, SUM(GoodsInStorehousesTurnover.Turnover) OVER (PARTITION BY storehouse, nomenclature ORDER BY period) AS balance FROM ( SELECT period, nomenclature, storehouse, SUM(Turnover) as Turnover FROM (SELECT --Top (1000) [_Period] AS period, [_Fld17485RRef] AS nomenclature, [_Fld17488RRef] AS storehouse, CASE WHEN [_RecordKind] = 0 THEN [_Fld17491] ELSE -[_Fld17491] END AS Turnover FROM [MAG_2019].[dbo].[_AccumRg17484] WHERE 1=1 --and [_Fld17485RRef] = 0x80C5305A3A00E12B11E585239E47A898 -- nom AND [_Fld17488RRef] = 0x80D70CC47A052DFD11E6C841742D2F2C -- storehouse дед-2 ) as tabTurnover GROUP BY period, nomenclature, storehouse) AS GoodsInStorehousesTurnover ) INSERT INTO [pbi].[nomenclatureVolumeStorehouse] ([Период], [balance], [1c_id], [storehouse], [volume], [totalVolume]) SELECT --top (10000) calendar_date as [Период], GoodsInStorehousesTurnover.balance as balance, GoodsInStorehousesTurnover.nomenclature as [1c_id], GoodsInStorehousesTurnover.storehouse as storehouse, GoodsInStorehousesTurnover.balance * tabVolume.volume as volume, SUM(GoodsInStorehousesTurnover.balance * tabVolume.volume) OVER (PARTITION BY GoodsInStorehousesTurnover.storehouse, calendar_date) as totalVolume FROM ( SELECT calendar.date AS calendar_date, MAX(GoodsInStorehousesTurnover.period) AS turnover_period, GoodsInStorehousesTurnover.nomenclature AS nomenclature, GoodsInStorehousesTurnover.storehouse as storehouse FROM calendar LEFT JOIN GoodsInStorehousesTurnover ON calendar.date >= GoodsInStorehousesTurnover.period GROUP BY calendar.date, GoodsInStorehousesTurnover.nomenclature, GoodsInStorehousesTurnover.storehouse ) AS tabBalancePeriodMax LEFT JOIN GoodsInStorehousesTurnover ON GoodsInStorehousesTurnover.nomenclature = tabBalancePeriodMax.nomenclature AND GoodsInStorehousesTurnover.period = tabBalancePeriodMax.turnover_period LEFT JOIN (SELECT --top (1000) _OwnerID_RRRef as [1c_id] ,case when _Fld24768 = 0 then 0 else _Fld24771 / _Fld24768 end as volume FROM [MAG_2019].dbo._Reference347X1 u INNER JOIN [mag_2019].dbo._Reference188X1 nn ON nn._IDRRef = u._OwnerID_RRRef INNER JOIN [mag_pbi].[pbi].[nomenclature] nom on nom.[1c_id] = u._OwnerID_RRRef and nom.[Статус] <> 'Не для продажи' where u.[_Marked] = 0x00) as tabVolume on tabVolume.[1c_id] = tabBalancePeriodMax.nomenclature where YEAR(calendar_date) >= 4024 and GoodsInStorehousesTurnover.balance <> 0 and DATEADD(YEAR, -2000, calendar_date) <= GETDATE() ORDER BY calendar_date; END GO /****** Object: StoredProcedure [sebest].[Заполнить итоги до 2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [sebest].[Заполнить итоги до 2022] -- Add the parameters for the stored procedure here AS BEGIN DELETE FROM [pbi].[СебестоимостьИтогиДо2022] WHERE 1=1 INSERT INTO mag_pbi.pbi.[СебестоимостьИтогиДо2022] ( [artic_id], [Количество], [Закупка], [Таможня], [ЕАЭС], [Доставка], [НДС], [Сборка], [Учетная цена]) SELECT --TOP (5000) -- это финальная выборка, её не корректировать(можно только комменить поля которые не нужны к выводу), менять всё во вложенных запросах ... [artic_id] ,[Количество] ,[Закупка] ,[Таможня] ,[ЕАЭС] ,[Доставка] ,[НДС] ,[Сборка] ,case when [Количество] = 0 then 0 else ([Закупка] + [Таможня] + [ЕАЭС] + [Доставка] + [НДС] + [Сборка]) / [Количество] end as [Учетная цена] FROM (SELECT [artic_id] ,SUM([Количество]) as [Количество] ,SUM([Закупка]) as [Закупка] ,SUM([Таможня]) as [Таможня] ,SUM([ЕАЭС]) as [ЕАЭС] ,SUM([Доставка]) as [Доставка] ,SUM([НДС]) as [НДС] ,SUM([Сборка]) as [Сборка] FROM (SELECT [artic_id] ,CASE WHEN [Вид операции] = 'Продажа' THEN -SUM([Количество]) else SUM([Количество]) end as [Количество] ,SUM([Закупка]) as [Закупка] ,SUM([Таможня]) as [Таможня] ,SUM([ЕАЭС]) as [ЕАЭС] ,SUM([Доставка]) as [Доставка] ,SUM([НДС]) as [НДС] ,SUM([Сборка]) as [Сборка] FROM [mag_pbi].[pbi].[СебестоимостьДо2022] -- where [artic_id] = '25c0d4a5-00dc-11e8-80f7-0cc47a052dfd' group by [Вид операции] ,[artic_id] ) as tabMain GROUP BY [artic_id]) tabItog --WHERE YEAR([Период]) < 2022 --and [artic_id] = 'cdb37c08-84c6-11e5-80c5-305a3a00e12b' END GO /****** Object: StoredProcedure [sebest].[Заполнить себестоимость до 2022] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [sebest].[Заполнить себестоимость до 2022] -- Add the parameters for the stored procedure here AS BEGIN DELETE FROM [pbi].[СебестоимостьДо2022] WHERE 1=1 INSERT INTO mag_pbi.pbi.[СебестоимостьДо2022] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня], [Доставка] ,[Сборка], [НДС] ,[Учетная стоимость] ,[Учетная стоимость USD2+2] ,[Учетная цена] ,[Учетная цена USD2+2] --, [CodeUT] /*[Сумма], [Сумма Без НДС], [Валютная сумма], [Валютная сумма Без НДС] */) SELECT --TOP (5000) -- это финальная выборка, её не корректировать(можно только комменить поля которые не нужны к выводу), менять всё во вложенных запросах ... [Период] ,[Статья] ,[Вид операции] ,[Хоз операция] ,[тип документа] ,[Номер документа] ,[Номер заказа] ,[Валюта документа] ,[Ценовая группа] ,[1c_document_id] ,[Организация] ,[Партнер] ,[PartnerId] ,[Контрагент] ,[Менеджер] ,[1c_id] ,[artic_id] ,[Курс usd] ,[Курс usd2] ,[Количество] ,[Сумма] ,[СуммаБезНДС] ,[СуммаРучнойСкидки] ,[СуммаАвтоСкидки] ,[Закупка] ,[Закупка, usd2] ,[Таможня] --,[ЕАЭС] --,[Маркетинг] ,[Доставка] ,[Сборка] --, [ЗатратыМП] --,[CodeUT] , [НДС] ,[Учетная стоимость] ,[Учетная стоимость USD2+2] ,[Учетная цена] ,[Учетная цена USD2+2] FROM ( SELECT -- TOP (1000) [id] ,[Период] ,[Статья] ,[Вид операции] ,[Хоз операция] ,[Организация] ,[Партнер] ,[PartnerId] ,[Контрагент] ,[Менеджер] ,[Тип документа] ,[Номер документа] ,[Валюта документа] ,[Ценовая группа] ,[1c_document_id] ,[1c_id] ,[artic_id] ,[Количество] ,[Сумма] ,[СуммаБезНДС] ,[СуммаРучнойСкидки] ,[СуммаАвтоСкидки] ,[Закупка] ,[Закупка, usd2] ,[Курс usd2] ,[Курс usd] ,[Таможня] ,[Учетная цена] ,[Учетная цена USD2+2] ,[Учетная стоимость] ,[Учетная стоимость USD2+2] ,[Заказ закрыт] ,[Номер заказа] ,[Доставка] ,[НДС] ,[Сборка] ,[PriceListPrice] FROM [mag_pbi].[pbi].[Себестоимость+СебестоимостьПродаж] ) tabItog WHERE YEAR([Период]) < 2022 --and [artic_id] = 'cdb37c08-84c6-11e5-80c5-305a3a00e12b' END GO /****** Object: StoredProcedure [sebest].[Заполнить себестоимость закупкой] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [sebest].[Заполнить себестоимость закупкой] @dt datetime2 = '2015-01-01' AS BEGIN /*r._RecorderTRef: 0x000001A1 Заявление о ввозе товаров из ЕАЭС 0x000001E3 ПТУ 0x00000189 Возврат товаров поставщику 0x000001D5 Передача товаров 0x000001B0 Корректировка приобретения 0x0000020D Таможенная декларация на импорт закупка: (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) ЕАЭС: 0x000001A1 Таможня: 0x0000020D */ /* 0x80CD002590EC174111E581505088A8D5 USD 0x80D40CC47A052DFD11E6B6DD1820D178 Eur 0x80E90CC47A052DFD11E7145927CEFC24 Cny 0xAE9DB496910DCFD611E94F10743DE3FF USD2 0xAE9EB496910DCFD611E95C66B5DE3AFA USD2+2 */ DELETE FROM mag_pbi.pbi.[Себестоимость] WHERE [Период]>@dt DBCC CHECKIDENT ('[pbi].[Себестоимость]', RESEED, 0); INSERT INTO mag_pbi.pbi.[Себестоимость] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Сборка], [ЗатратыМП], [НДС] --, [CodeUT] /*[Сумма], [Сумма Без НДС], [Валютная сумма], [Валютная сумма Без НДС] */) SELECT --TOP (5000) -- это финальная выборка, её не корректировать(можно только комменить поля которые не нужны к выводу), менять всё во вложенных запросах ... [Период] ,[Статья] ,[Вид операции] ,[Хоз операция] ,[тип документа] ,[Номер документа] ,[Номер заказа] ,[Валюта документа] ,[Ценовая группа] ,[1c_document_id] ,[Организация] ,[Партнер] ,[PartnerId] ,[Контрагент] ,[Менеджер] ,[1c_id] ,[artic_id] ,[Курс usd] ,[Курс usd2] ,[Количество] ,[Сумма] ,[СуммаБезНДС] ,[СуммаРучнойСкидки] ,[СуммаАвтоСкидки] , CASE WHEN YEAR([Период]) <= 2021 and ([Партнер] = 'КИТАЙ' or [Партнер] = 'Luca-S') and [Валюта документа] <> 'руб.' Then [Закупка] * 1.42 ELSE [Закупка] END as [Закупка] , CASE WHEN YEAR([Период]) <= 2021 and ([Партнер] = 'КИТАЙ' or [Партнер] = 'Luca-S') and [Валюта документа] <> 'руб.' Then [Закупка, usd2] * 1.42 ELSE [Закупка, usd2] END as [Закупка, usd2] ,[Таможня] ,[ЕАЭС] --,[Маркетинг] ,[Доставка] ,[Сборка] , [ЗатратыМП] --,[CodeUT] , [НДС] FROM ( select --top (1) DATEADD(year, -2000, _Period) as [Период] , case WHEN r._RecorderTRef=0x000001A1 or r._RecorderTRef=0x0000020D THEN 'НДС' --WHEN r._RecorderTRef=0x000001A1 THEN 'ЕАЭС' --WHEN r._RecorderTRef=0x0000020D THEN 'Таможня' ELSE 'Закупка' END as [Статья] , 'Закупка' as [Вид операции] , h.value as [Хоз операция] , case r._RecorderTRef WHEN 0x000001A1 then 'Заявление о ввозе товаров из ЕАЭС' WHEN 0x00000189 then 'Возврат товаров поставщику' WHEN 0x000001E3 then 'ПТУ' WHEN 0x000001D5 then 'Передача товаров' WHEN 0x000001B0 then 'Корректировка ' WHEN 0x0000020D then 'Таможенная декларация на импорт' ELSE 'Неизвестный тип' END as [тип документа] , '-' as [Номер документа] , '-' as [Номер заказа] , val._Description as [Валюта документа] ,CASE WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' WHEN r._RecorderTRef = 0x0000020D THEN 'Руб' ELSE 'Неопределено' END as [Ценовая группа] , r._RecorderRRef as [1c_document_id] , (SELECT _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = r._Fld16346RRef ) as [Организация] , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = r.[_Fld16353RRef]) as [Партнер] --, r.[_Fld16353RRef] as PartnerId , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),5,12) ))as PartnerId , (SELECT _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = r._Fld16354_RRRef) as [Контрагент] , (SELECT _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = [_Fld16348RRef]) as [Менеджер] , analitikaUchetaNomenklaturi.[_Fld20498RRef] as [1c_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),5,12))) as [artic_id] ,CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка THEN case [_Fld16345RRef] when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16361] ELSE [_Fld16361] END --WHEN r._RecorderTRef = 0x0000020D THEN customDeclaration._Fld8943 WHEN r._RecorderTRef = 0x0000020D THEN 0 --WHEN r._RecorderTRef=0x000001A1 THEN docEAS.[_Fld4052] WHEN r._RecorderTRef=0x000001A1 THEN 0 ELSE 0 END as [Количество] , [_Fld16362] / 1000 as [Сумма] , [_Fld16363] / 1000 as [СуммаБезНДС] ,0 as [СуммаРучнойСкидки] ,0 as [СуммаАвтоСкидки] , CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка THEN case [_Fld16345RRef] when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16362] / 1000 ELSE [_Fld16362] / 1000 END ELSE 0 END AS [Закупка] , CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка поле "сумма в валюте документа" THEN case [_Fld16345RRef] when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16373] / 1000 ELSE [_Fld16373] / 1000 END ELSE 0 END as [Закупка, usd2] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют --WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, r._Period) ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 --WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, r._Period) ORDER BY _Period desc ) as [Курс usd2] /*, CASE WHEN r._RecorderTRef=0x0000020D THEN [_Fld16369] / 1000 ELSE 0 END as [Таможня] , CASE WHEN r._RecorderTRef=0x000001A1 THEN [_Fld16369] / 1000 ELSE 0 END as [ЕАЭС] */ , CASE WHEN r._RecorderTRef=0x0000020D THEN [_Fld16369] / 1000 END as [Таможня] , 0 as [ЕАЭС] , 0 as [Маркетинг] -- маркетинг , 0 as [Доставка] -- доставка , 0 as [Сборка]-- Сборка , 0 as [ЗатратыМП] -- Затраты МП ,CASE WHEN LEFT(n._Code, 2) = '00' -- только для вида операция закупка THEN '9' + CONVERT(nvarchar(15), TRIM('-' FROM TRIM ( '00' FROM n._Code))) ELSE '8' + TRIM ( 'УТ-' FROM n._Code) END as [CodeUT] , CASE WHEN r._RecorderTRef=0x000001A1 THEN ([_Fld16362] - [_Fld16363]) / 1000 WHEN r._RecorderTRef=0x0000020D THEN ([_Fld16362] - [_Fld16363]) / 1000 ELSE 0 END as [НДС] --,RIGHT(n._Code, LEN(n._Code) - DATALENGTH(CONVERT(VARCHAR(100),'УТ-'))) as [CodeUT] from mag_2019.dbo._AccumRg16344 r-- Регистр накопления Закупки LEFT JOIN [MAG_2019].[dbo].[_Reference160] as analitikaUchetaNomenklaturi on analitikaUchetaNomenklaturi.[_IDRRef] = [_Fld16349RRef] left join MAG_2019.dbo._Reference188X1 as N on analitikaUchetaNomenklaturi.[_Fld20498RRef] = N._IDRRef LEFT JOIN [mag_reports].[dbo].[enums] h ON h._IDRref = r._Fld16345RRef LEFT JOIN MAG_2019.dbo._reference50 val ON val._IDRRef = r._Fld16372RRef LEFT JOIN [MAG_2019].[dbo].[_Document525_VT8936] as customDeclaration ON customDeclaration.[_Document525_IDRRef] = [r]._RecorderRRef and analitikaUchetaNomenklaturi.[_Fld20498RRef] = customDeclaration._Fld8939RRef LEFT JOIN [MAG_2019].[dbo].[_Document417_VT4034] as docEAS ON docEAS.[_Document417_IDRRef] = [r]._RecorderRRef and [_Fld16349RRef] = docEAS.[_Fld4037RRef] -- WHERE DATEADD(year, -2000, _Period) > @dt UNION ALL SELECT -- top (1000) DATEADD(year, -2000, date) -- период ,SR -- Статья расходов , ВидОперации -- Вид операции , '' -- хоз операция , typeReg -- Тип документа , НомерДокумента -- Номер документа , [Номер заказа] -- Номер заказа клиента для РТУ , val._Description -- Валюта документа , CASE WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' ELSE 'Неопределено' END -- Ценовая группа , Регистратор -- Ссылка на документ , refOrganizaciya.[_Description] -- Организация , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = Партнер) -- Партнер -- , [Партнер] as PartnerId , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [Партнер], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [Партнер], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [Партнер], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [Партнер], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), [Партнер], 2),5,12) ))as PartnerId , (SELECT _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = Контрагент) -- Контрагент , (SELECT _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = Менеджер) -- Менеджер , onec_id -- 1с id , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), onec_id, 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), onec_id, 2),21,4),'-',SUBSTRING(convert(nvarchar(36), onec_id, 2),17,4),'-',SUBSTRING(convert(nvarchar(36), onec_id, 2),1,4),'-',SUBSTRING(convert(nvarchar(36), onec_id, 2),5,12))) -- arctic id , kolvo -- количество , [Сумма] / 1000 , [СуммаБезНДС] / 1000 , [СуммаРучнойСкидки] / 1000 , [СуммаАвтоСкидки] / 1000 , [Закупка] -- закупка , [Закупка, usd2] -- закупка usd2 , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, date) ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, date) ORDER BY _Period desc ) as [Курс usd2] , 0 -- Таможня , 0 --ЕАЭС , marketing / 1000 -- маркетинг , delivery / 1000 -- доставка , [Сборка] / 1000 as [Сборка]-- Сборка , [ЗатратыМП] / 1000 -- Затраты МП ,CASE WHEN LEFT(refNomenclatura._Code, 2) = '00' -- только для вида операция закупка THEN '9' + CONVERT(nvarchar(15), TRIM('-' FROM TRIM ( '00' FROM refNomenclatura._Code))) ELSE '8' + TRIM ( 'УТ-' FROM refNomenclatura._Code) END as [CodeUT] , 0 -- НДС -- ,RIGHT(refNomenclatura._Code, LEN(refNomenclatura._Code) - DATALENGTH(CONVERT(VARCHAR(100),'УТ-'))) as [CodeUT] FROM ( -- \\\\\\\\\\\\\\\\\\\\\\\\\\\\ ДОСТАВКА \\\\\\\\\\\\\\\\ SELECT --TOP (1) refPTU.[_Date_Time] as date -- дата , 'Доставка контейнера ВЭД' as SR ,'Закупка' as ВидОперации ,[_Fld33630RRef] as Регистратор -- регистратор , '-' as НомерДокумента -- Номер документа , '-' [Номер заказа] ,'ПТУ' as typeReg -- типРегистратора ,refPTU.[_Fld7121RRef] as Организация -- Организация ,refPTU.[_Fld7060RRef] as Партнер -- партнер ,refPTU.[_Fld7064RRef] as Контрагент -- контрагент ,refPTU.[_Fld7067RRef] as Менеджер -- Менеджер ,[_Fld33631RRef] as onec_id -- Номенклатура --,refPtuNomen.[_Fld7134] as kolvo -- Количество , 0 as kolvo -- Количество --, [_Fld33633] as [Сумма] , 0 as [Сумма] , 0 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] , 0 as [Закупка] , 0 as [Закупка, usd2] ,refPTU.[_Fld7059RRef] as ВалютаДокумента -- Валюта документа ,[_Fld33632RRef] -- ППУ ,0 as marketing -- маркетинг ,[_Fld33633] as delivery -- доставка ,0 as [Сборка]-- Сборка , 0 as [ЗатратыМП]-- Затраты мп -- ,[_Fld33634_RRRef] -- статья расходов FROM [MAG_2019].[dbo].[_InfoRg33629] LEFT JOIN [MAG_2019].[dbo].[_Document483X1] as refPTU ON refPTU.[_IDRRef] = [_Fld33630RRef] LEFT JOIN [MAG_2019].[dbo].[_Document483_VT7128X1] as refPtuNomen ON refPtuNomen.[_Document483_IDRRef] = refPTU.[_IDRRef] AND refPtuNomen.[_Fld7130RRef] = [_Fld33631RRef] where [_Fld33634_RRRef] = 0x997EB49691D57EFD11ECE1AC556F9FF0 UNION ALL -- \\\\\\\\\\\\ МАРКЕТИНГ \\\\\\\\\\\\\\\ SELECT --TOP (1) refPTU.[_Date_Time] , 'Маркетинг' ,'Закупка' ,[_Fld33630RRef] -- регистратор , '-' -- Номер документа , '-' -- Номер заказа ,'ПТУ' ,refPTU.[_Fld7121RRef] -- Организация ,refPTU.[_Fld7060RRef] as Партнер -- партнер ,refPTU.[_Fld7064RRef] as Контрагент -- контрагент ,refPTU.[_Fld7067RRef] as Менеджер -- Менеджер ,[_Fld33631RRef] -- Номенклатура , 0 -- Количество , 0 as [Сумма] , 0 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] , 0 as [Закупка] , 0 as [Закупка, usd2] , refPTU.[_Fld7059RRef] -- Валюта документа ,[_Fld33632RRef] -- ППУ ,[_Fld33633] -- маркетинг , 0 -- доставка ,0 -- Сборка , 0 -- Затраты мп --,[_Fld33634_RRRef] -- статья расходов FROM [MAG_2019].[dbo].[_InfoRg33629] LEFT JOIN [MAG_2019].[dbo].[_Document483X1] as refPTU ON refPTU.[_IDRRef] = [_Fld33630RRef] where [_Fld33634_RRRef] = 0x9981B49691D57EFD11EDCE203CED30C4 UNION ALL -- ///////////////// ПРОДАЖИ //////////////// SELECT --TOP (1) [_Period] ,'Реализация' ,'Продажа' ,[_RecorderRRef] -- регистратор ,docRTU.[_Number] -- Номер документа , orders.[_Number] -- Номер заказа ,case [_RecorderTRef] WHEN 0x000001F4 then 'РТУ' ELSE 'Неизвестный тип' END , AnalitikaUchetaPartner.[_Fld20514RRef] -- Организация , AnalitikaUchetaPartner.[_Fld20513RRef] -- партнер , AnalitikaUchetaPartner.[_Fld20515_RRRef] -- контрагент , [_Fld15559RRef] as Менеджер -- Менеджер , analitikaUchetaNomenklaturi.[_Fld20498RRef] -- Номенклатура , [_Fld15567] -- количество , [_Fld15568] as [Сумма] , 0 as [СуммаБезНДС] , [_Fld15595] as [СуммаРучнойСкидки] , [_Fld15596] as [СуммаАвтоСкидки] , 0 as [Закупка] , 0 as [Закупка, usd2] ,CASE WHEN [_Fld15601RRef] IS NULL THEN 'руб.' -- Валюта документа ELSE [_Fld15601RRef] END AS [Валюта документа] , '' -- ППУ ,0 -- маректинг ,0 -- Доставка ,0 -- Сборка , 0 -- Затраты мп FROM [MAG_2019].[dbo].[_AccumRg15547] LEFT JOIN [MAG_2019].[dbo].[_Reference160] as analitikaUchetaNomenklaturi on analitikaUchetaNomenklaturi.[_IDRRef] = [_Fld15548RRef] LEFT JOIN [MAG_2019].[dbo].[_Reference162] as AnalitikaUchetaPartner on AnalitikaUchetaPartner.[_IDRRef] = [_Fld15550RRef] LEFT JOIN [MAG_2019].[dbo].[_Document500X1] as docRTU on docRTU.[_IDRRef] = [_RecorderRRef] LEFT JOIN (SELECT [_Document500_IDRRef] as _IDRRef ,MIN([_Fld7990_RRRef]) as orderRTU FROM [MAG_2019].[dbo].[_Document500_VT7967X1] GROUP BY [_Document500_IDRRef]) as ordersRTU ON ordersRTU._IDRRef = [_RecorderRRef] LEFT JOIN [MAG_2019].[dbo].[_Document404X1] as orders ON orders.[_IDRRef] = ordersRTU.orderRTU UNION ALL -- \\\\\\\\\\\\\\\\ СБОРКА РАСХОД БЕЗ ЗАТРАТ НА СБОРКУ\\\\\\\\\\\\\\\\ SELECT TOP (1000) znS.[_Date_Time] as per , 'Сборка' , 'Продажа' , TabGoods.[_Document407_IDRRef] -- регистратор , '-' -- Номер документа , '-' -- Номер заказа ,'Заказ на сборку' , ZnS.[_Fld3348RRef] -- Организация , Kontr.[_Fld20612RRef] -- партнер , ZnS.[_Fld27876RRef] -- контрагент , ZnS.[_Fld28230RRef] -- Менеджер , [_Fld3381RRef] as nom -- Номенклатура , [_Fld3385] as kolvo -- Количество --, tabset.[_Fld28063] , 0 as [Сумма] , 0 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] , (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] WHERE [Вид цены] = 'Учетная цена (руб)' AND [Дата] <= znS.[_Date_Time] and [_Fld3381RRef] = [1c_id] ORDER BY Дата desc ) / 1000 * [_Fld3385] * -1 as [Закупка] , 0 as [Закупка, usd2] , currency._IDRRef -- Валюта документа , '' -- ППУ , 0 -- маректинг , 0 -- Доставка , 0 -- сборка , 0 -- Затраты мп FROM [MAG_2019].[dbo].[_Document407_VT3379] as TabGoods INNER JOIN [MAG_2019].[dbo].[_Document407] as ZnS -- Заказ на сборку on ZnS._IDRRef = [_Document407_IDRRef] and _Posted = 0x01 -- проведен --and [_Number] = 'АНУТ-010680' -- номер дока для проверки and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт LEFT JOIN [MAG_2019].[dbo].[_Reference168] as Kontr ON Kontr.[_IDRRef] = ZnS.[_Fld27876RRef] LEFT JOIN (SELECT TOP (1) [_IDRRef] FROM [MAG_2019].[dbo].[_Reference50] where _code = '643') as currency on 1 = 1 UNION ALL -- \\\\\\\\\\\\\\\\ СБОРКА ПРИХОД + ЗАТРАТЫ НА СБОРКУ \\\\\\\\\\\\\\\\ SELECT TOP (333) znS.[_Date_Time] , 'Сборка' , 'Закупка' , TabGoods.[_Document407_IDRRef] -- регистратор , '-' -- Номер документа , '-' -- Номер заказа ,'Заказ на сборку' , ZnS.[_Fld3348RRef] -- Организация , Kontr.[_Fld20612RRef] -- партнер , ZnS.[_Fld27876RRef] -- контрагент , ZnS.[_Fld28230RRef] -- Менеджер , tabSet.[_Fld28059RRef] -- Номенклатура --, [_Fld3385] -- Количество , tabset.[_Fld28063] , 0 as [Сумма] , 0 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] --, CASE WHEN tabSetPrices.[SumSebes] IS NULL THEN 0 -- ELSE tabSetPrices.[SumSebes] / 1000 * tabset.[_Fld28063] -- end as [Закупка] ,(SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] WHERE [Вид цены] = 'Учетная цена (руб)' AND [дата] <= znS.[_Date_Time] and [_Fld3381RRef] = [1c_id] ORDER BY Дата desc ) / 1000 * [_Fld3385] as [SumSebes] , 0 as [Закупка, usd2] , currency._IDRRef -- Валюта документа , '' -- ППУ , 0 -- маректинг , 0 -- Доставка , TabZatratiSborka.sborka as sborka -- сборка , 0 -- Затраты мп FROM [MAG_2019].[dbo].[_Document407_VT3379] as TabGoods INNER JOIN [MAG_2019].[dbo].[_Document407] as ZnS -- Заказ на сборку on ZnS._IDRRef = [_Document407_IDRRef] and _Posted = 0x01 -- проведен -- and [_Number] = 'АНУТ-010680' -- номер дока для проверки and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт LEFT JOIN [MAG_2019].[dbo]._Document407_VT28057 as tabSet -- тч комплекты, тут связь было-стало on tabSet.[_Fld28070] = [_Fld28055] and tabSet._Document407_IDRRef = TabGoods._Document407_IDRRef LEFT JOIN [MAG_2019].[dbo].[_Reference168] as Kontr ON Kontr.[_IDRRef] = ZnS.[_Fld27876RRef] LEFT JOIN (SELECT TOP (1) [_IDRRef] FROM [MAG_2019].[dbo].[_Reference50] where _code = '643') as currency on 1 = 1 LEFT JOIN (SELECT --TOP (1000) [_RecorderRRef] -- регистратор , [_Fld33653RRef] -- Номенклатура , SUM([_Fld33658]) / 1000 as sborka -- сборка FROM [MAG_2019].[dbo].[_AccumRg33652] -- рн работы where [_RecorderTRef] = 0x00000197 group by [_RecorderRRef] , [_Fld33653RRef] -- Номенклатура ) as TabZatratiSborka ON TabZatratiSborka.[_RecorderRRef] = TabGoods.[_Document407_IDRRef] and TabZatratiSborka.[_Fld33653RRef] = tabSet.[_Fld28059RRef] where [_Fld3392] = 0x00 -- отменено ложь UNION ALL -- \\\\\\\\\\\\\\\\\\\\ ЗАТРАТЫ МП \\\\\\\\\\\\\\\ SELECT -- TOP (1000) [_Period] ,'Затраты МП' ,'Закупка' ,[_RecorderRRef] -- Регистратор отчет комиссионера , '-' -- Номер документа , '-' -- Номер заказа , 'Отчет комиссионера' , otchetKommissionera.[_Fld5484RRef] -- Организация , otchetKommissionera.[_Fld5485RRef] -- партнер , otchetKommissionera.[_Fld5486RRef] -- контрагент , otchetKommissionera.[_Fld5492RRef] -- Менеджер ,[_Fld33391RRef] -- номенклатура --,otchetKommissioneraTabTovari.[_Fld5531] -- Количество ,0 -- Количество ,0 as [Сумма] --,[_Fld33394] as [Сумма] , 0 as [СуммаБезНДС] , 0 as [СуммаРучнойСкидки] , 0 as [СуммаАвтоСкидки] , 0 as [Закупка] , 0 as [Закупка, usd2] , currency._IDRRef -- Валюта документа , '' -- ППУ , 0 -- маректинг , 0 -- Доставка , 0 -- сборка , [_Fld33394] -- Затраты МП FROM [MAG_2019].[dbo].[_AccumRg33390] LEFT JOIN [MAG_2019].[dbo].[_Document458_VT5524] as otchetKommissioneraTabTovari on otchetKommissioneraTabTovari.[_Fld5526RRef] = [_Fld33391RRef] AND otchetKommissioneraTabTovari.[_Document458_IDRRef] = [_RecorderRRef] LEFT JOIN [MAG_2019].[dbo].[_Document458] as otchetKommissionera ON otchetKommissionera.[_IDRRef] = otchetKommissioneraTabTovari.[_Document458_IDRRef] LEFT JOIN (SELECT TOP (1) [_IDRRef] FROM [MAG_2019].[dbo].[_Reference50] where _code = '643') as currency on 1 = 1 ) as tabMain LEFT JOIN [MAG_2019].[dbo].[_Reference188X1] as refNomenclatura ON refNomenclatura.[_IDRRef] = tabMain.onec_id LEFT JOIN [MAG_2019].[dbo].[_Document483X1] as refPTU ON refPTU.[_IDRRef] = tabMain.Регистратор LEFT JOIN [MAG_2019].[dbo].[_Document484] as refPPU ON refPPU.[_IDRRef] = tabMain.Регистратор LEFT JOIN [MAG_2019].[dbo].[_Reference198X1] as refOrganizaciya on refOrganizaciya._IDRRef = tabMain.Организация LEFT JOIN MAG_2019.dbo._reference50 val ON val._IDRRef = tabMain.ВалютаДокумента ) tabItog WHERE [Период] > @dt --and [artic_id] = 'cdb37c08-84c6-11e5-80c5-305a3a00e12b' END GO /****** Object: StoredProcedure [sebest].[Заполнить себестоимость комплектами] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [sebest].[Заполнить себестоимость комплектами] -- Add the parameters for the stored procedure here @dt datetime2 = '2015-01-01' AS BEGIN insert into pbi.[Себестоимость]([Период], [Статья], [Вид операции],[Номер документа],[Тип документа], [1c_id], [artic_id], [Количество], [Ценовая группа]) select k.[Период] , 'Закупка' as [Статья] , 'Фасовка_Комплекты' as [Вид операции] , [Номер документа] , 'Заказ на сборку' as [Тип документа] , [1c_id] , [artic_id] , [Количество] , [Ценовая группа] FROM pbi.[сборки_комплекты] k WHERE [Период] > @dt END GO /****** Object: StoredProcedure [sebest].[Заполнить себестоимость комплектующими] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [sebest].[Заполнить себестоимость комплектующими] -- Add the parameters for the stored procedure here @dt datetime2 = '2015-01-01' AS BEGIN insert into pbi.[Себестоимость]([Период], [Статья], [Вид операции],[Номер документа],[Тип документа], [1c_id], [artic_id], [Количество], [Ценовая группа]) select k.[Период] , 'Закупка' as [Статья] , 'Фасовка_Комплектующие' as [Вид операции] , [Номер документа] , 'Заказ на сборку' as [Тип документа] , [1c_id] , [artic_id] , [Количество] , [Ценовая группа] FROM pbi.[сборки_комплектующие] k WHERE [Период] > @dt END GO /****** Object: StoredProcedure [sebest].[Заполнить себестоимость курсовой разницей] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [sebest].[Заполнить себестоимость курсовой разницей] -- Add the parameters for the stored procedure here AS BEGIN insert into pbi.[Себестоимость] ([Период], [Статья], [Вид операции], [1c_id], [artic_id], [Количество], [Сумма], [Сумма Без НДС], [Валютная сумма], [Валютная сумма Без НДС]) SELECT --TOP (1000) [Период] , 'Курсовая разница' as [Статья] ,[Вид операции] ,[1c_id] ,[artic_id] , 0 as [Количество] , isnull([Валютная сумма] * (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND DATEADD(year, -2000, _Period) <= [Период] ORDER BY _Period desc) - [Сумма], 0) as [Сумма] , 0 as [Сумма Без НДС] , 0 as [Валютная сумма] , 0 as [Валютная сумма Без НДС] FROM mag_pbi.pbi.[Себестоимость] where [Вид операции] = 'Продажа' and [Статья] = 'Закупка' and [Валютная сумма] <> 0 and isnull([Валютная сумма] * (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND DATEADD(year, -2000, _Period) <= [Период] ORDER BY _Period desc) - [Сумма], 0) <> 0 END GO /****** Object: StoredProcedure [sebest].[Заполнить себестоимость начальным остатком] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [sebest].[Заполнить себестоимость начальным остатком] -- Add the parameters for the stored procedure here @dt datetime2 = '2015-01-01' AS BEGIN /* 0x80CD002590EC174111E581505088A8D5 USD 0x80D40CC47A052DFD11E6B6DD1820D178 Eur 0x80E90CC47A052DFD11E7145927CEFC24 Cny 0xAE9DB496910DCFD611E94F10743DE3FF USD2 0xAE9EB496910DCFD611E95C66B5DE3AFA USD2+2 */ insert into pbi.[Себестоимость]([Период], [Статья], [Вид операции],[Хоз операция],[Организация],[Тип документа],[Номер документа],[Валюта документа],[Ценовая группа],[1c_document_id], [1c_id], [artic_id], [Количество], [Закупка], [Закупка, usd2], [Курс usd], [Курс usd2]/*, [Курс usd2], [Сумма Без НДС], [Валютная сумма], [Валютная сумма Без НДС] */) SELECT tabItog.[Период], tabItog.[Статья], tabItog.[Вид операции], tabItog.[Хоз операция], tabItog.[Организация], tabItog.[Тип документа], tabItog.[Номер документа], tabItog.[Валюта документа], tabItog.[Ценовая группа], tabItog.[1c_document_id], tabItog.[1c_id], tabItog.[artic_id], tabItog.[Количество], tabItog.[Закупка], tabItog.[Закупка] / tabItog.[Курс usd2] as [Закупка, usd2], tabItog.[Курс usd], tabItog.[Курс usd2] FROM (select DATEADD(year, -2000, _Date_Time) as [Период] , 'Ввод начальных остатков' as [Статья] , 'Закупка' as [Вид операции] , 'Ввод остатков' as [Хоз операция] , (SELECT _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = d._Fld1778RRef ) as [Организация] , 'Ввод остатков' as [Тип документа] , D._Number as [Номер документа] , 'руб.' as [Валюта документа] , 'Руб' as [Ценовая группа] , D._IDRRef as [1c_document_id] , _Fld1811RRef as [1c_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), _Fld1811RRef, 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), _Fld1811RRef, 2),21,4),'-',SUBSTRING(convert(nvarchar(36), _Fld1811RRef, 2),17,4),'-',SUBSTRING(convert(nvarchar(36), _Fld1811RRef, 2),1,4),'-',SUBSTRING(convert(nvarchar(36), _Fld1811RRef, 2),5,12))) as [artic_id] , _Fld1816 as [Количество] , _Fld1816 * isnull((SELECT TOP (1) [Цена] / 1000 FROM [mag_reports].[sales].[pricelist] pl where [1c_id] = _Fld1811RRef and [Вид цены] = 'Учетная цена (руб)' --and pl._Period <= _Date_Time ORDER BY _Period), 0) as [Закупка] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, _Date_Time) ORDER BY _Period desc ) as [Курс usd] , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, _Date_Time) ORDER BY _Period desc ) as [Курс usd2] from mag_2019.dbo._Document385 as D-- Документ Ввод остатков inner join mag_2019.dbo._Document385_VT1809 as Tov-- Документ Ввод остатков.Товары on D._IDRRef = Tov._Document385_IDRRef inner join MAG_2019.dbo._Reference188X1 as N on Tov._Fld1811RRef = N._IDRRef where D._Posted = 0x01 and d._Fld1777RRef = 0x8EADCC7BFE3B43C24D37E47DE504409F -- Тип операции = Собственные товары AND DATEADD(year, -2000, d._Date_Time) > '2012') as tabItog END GO /****** Object: StoredProcedure [sebest].[Заполнить себестоимость продажей] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [sebest].[Заполнить себестоимость продажей] -- Add the parameters for the stored procedure here @dt datetime2 = '2015-01-01' AS BEGIN /* Вставить все продажи в таблицу себестоимости */ /* UPDATE для каждой строки в отдельной процедуре */ insert into pbi.[Себестоимость]([Период], [Статья], [Вид операции],[Организация],[Партнер],[Менеджер],[Номер документа],[Тип документа], [1c_id], [artic_id] , [Количество],[Сумма],[СуммаБезНДС],[СуммаРучнойСкидки],[СуммаАвтоСкидки],[Номер заказа],[Заказ закрыт], [Ценовая группа] ) select --top 100 DATEADD(year, -2000, r._Period) as [Период] , 'Закупка' as [Статья] , 'Продажа' as [Вид операции] , (SELECT _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = anp._Fld20514RRef ) as [Организация] , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = anp._Fld20513RRef) as [Партнер] , (SELECT _description FROM [mag_2019].[dbo].[_Reference228X1] WHERE _IDRRef = z._Fld3138RRef) as [Менеджер] , CASE _RecorderTRef WHEN 0x000001F4 THEN (SELECT _Number FROM MAG_2019.dbo._Document500X1 d WHERE d._IDRRef = r._RecorderRRef) WHEN 0x00000188 THEN (SELECT _Number FROM MAG_2019.dbo._Document392 d WHERE d._IDRRef = r._RecorderRRef) WHEN 0x000001B1 THEN (SELECT _Number FROM MAG_2019.dbo._Document433 d WHERE d._IDRRef = r._RecorderRRef) WHEN 0x000001CA THEN (SELECT _Number FROM MAG_2019.dbo._Document458 d WHERE d._IDRRef = r._RecorderRRef) WHEN 0x000001E4 THEN (SELECT _Number FROM MAG_2019.dbo._Document484 d WHERE d._IDRRef = r._RecorderRRef) WHEN 0x000001D5 THEN (SELECT _Number FROM MAG_2019.dbo._Document469 d WHERE d._IDRRef = r._RecorderRRef) WHEN 0x00000178 THEN (SELECT _Number FROM MAG_2019.dbo._Document376 d WHERE d._IDRRef = r._RecorderRRef) END as [Номер документа] , CASE _RecorderTRef WHEN 0x000001F4 THEN 'Реализация' WHEN 0x00000188 THEN 'Возврат' WHEN 0x000001B1 THEN 'Корректировка реализации' WHEN 0x000001CA THEN 'Отчет комиссионера' WHEN 0x000001E4 THEN 'Приобретение Услуг и прочих активов' WHEN 0x000001D5 THEN 'Передача Товаров между организаций' WHEN 0x00000178 THEN 'Акт выполненных работ' END as [Тип документа] , n._IDRRef as [1c_id] , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), n._IDRRef, 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),21,4),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),17,4),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),1,4),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),5,12))) as [artic_id] , -1 * r._Fld15567 as [Количество] , r._Fld15568 / 1000 as 'sum' , r._Fld15569 / 1000 as 'СуммаБезНДС' , r._Fld15595 / 1000 as 'СуммаРучнойСкидки' , r._Fld15596 / 1000 as 'СуммаАвтоСкидки' , z._Number as [Номер заказа] , (SELECT top 1 convert(datetime, DATEADD(year, -2000, l._Period), 104) from [pbi].[ЛогЗаказов] l where l.status = 'Закрыт' and l.zakazNum = z._IDRRef) as [Заказ закрыт] , CASE WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' ELSE 'Неопределено' END as [Ценовая группа] from mag_2019.dbo._AccumRg15547 r-- Регистр накопления Выручка и себестоимость продаж /*LEFT JOIN [MAG_2019].[dbo]._InfoRg12119 an-- Регистр сведений Аналитика учета номенклатуры on r._Fld15548RRef = an._Fld12126RRef */ INNER JOIN [mag_2019].[dbo]._Reference160 an /*ключ аналитики номенклатуры*/ ON r._Fld15548RRef = an._IDRRef INNER JOIN [mag_2019].[dbo]._Reference188X1 n /*номенклатура*/ ON n._IDRRef = an._Fld20498RRef LEFT JOIN [MAG_2019].[dbo].[_Document404X1] z /* заказ клиента */ ON z._IDRRef = r._Fld15549_RRRef --LEFT JOIN [mag_2019].[dbo]._Document500X1 rlz /*документ реализации*/ ON r._RecorderRRef = rlz._IDRRef INNER JOIN [mag_2019].[dbo]._Reference162 anp /*Ключ аналитики партнера*/ ON r._Fld15550RRef = anp._IDRRef where 1=1 AND DATEADD(year, -2000, r._Period)> @dt END GO /****** Object: StoredProcedure [sebest].[Заполнить СебестоимостьСебестоимостьПродажиРезультат] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [sebest].[Заполнить СебестоимостьСебестоимостьПродажиРезультат] AS BEGIN /*r._RecorderTRef: 0x000001A1 Заявление о ввозе товаров из ЕАЭС 0x000001E3 ПТУ 0x00000189 Возврат товаров поставщику 0x000001D5 Передача товаров 0x000001B0 Корректировка приобретения 0x0000020D Таможенная декларация на импорт закупка: (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) ЕАЭС: 0x000001A1 Таможня: 0x0000020D */ /* 0x80CD002590EC174111E581505088A8D5 USD 0x80D40CC47A052DFD11E6B6DD1820D178 Eur 0x80E90CC47A052DFD11E7145927CEFC24 Cny 0xAE9DB496910DCFD611E94F10743DE3FF USD2 0xAE9EB496910DCFD611E95C66B5DE3AFA USD2+2 */ DELETE FROM mag_pbi.pbi.[СебестоимостьСебестоимостьПродажиРезультат] WHERE 1=1 INSERT INTO mag_pbi.pbi.[СебестоимостьСебестоимостьПродажиРезультат] ([Период], [Статья], [Вид операции], [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], [Закупка],[Закупка, usd2], [Таможня], [Доставка] ,[Сборка], [НДС], [code], [Учетная цена] ,[Учетная цена USD2+2] ,[Учетная стоимость] ,[Учетная стоимость USD2+2] --, [CodeUT] /*[Сумма], [Сумма Без НДС], [Валютная сумма], [Валютная сумма Без НДС] */) SELECT --TOP (5000) -- это финальная выборка, её не корректировать(можно только комменить поля которые не нужны к выводу), менять всё во вложенных запросах ... [Период] ,[Статья] ,[Вид операции] ,[Хоз операция] ,[тип документа] ,[Номер документа] ,[Номер заказа] ,[Валюта документа] ,[Ценовая группа] ,[1c_document_id] ,[Организация] ,[Партнер] ,[PartnerId] ,[Контрагент] ,[Менеджер] ,[1c_id] ,[artic_id] ,[Курс usd] ,[Курс usd2] ,[Количество] ,[Сумма] ,[СуммаБезНДС] ,[СуммаРучнойСкидки] ,[СуммаАвтоСкидки] ,[Закупка] ,[Закупка, usd2] ,[Таможня] ,[Доставка] ,[Сборка] ,[НДС] ,[code] ,[Учетная цена] ,[Учетная цена USD2+2] ,[Учетная стоимость] ,[Учетная стоимость USD2+2] FROM ( SELECT -- TOP (1000) [Период] ,[Статья] ,[Вид операции] ,[Хоз операция] ,[Тип документа] ,[Номер документа] ,[Номер заказа] ,[Валюта документа] ,[Ценовая группа] ,[1c_document_id] ,[Организация] ,[Партнер] ,[PartnerId] ,[Контрагент] ,[Менеджер] ,tabMain.[1c_id] ,tabMain.[artic_id] ,[Курс usd] ,[Курс usd2] ,[Количество] ,[Сумма] ,[СуммаБезНДС] ,[СуммаРучнойСкидки] ,[СуммаАвтоСкидки] ,[Закупка] ,[Закупка, usd2] ,[Таможня] ,[Доставка] ,[Сборка] ,[НДС] , tabNom.[code] ,[Учетная цена] ,[Учетная цена USD2+2] ,[Учетная стоимость] ,[Учетная стоимость USD2+2] FROM [mag_pbi].[pbi].[Себестоимость+СебестоимостьПродажОт2022] as tabMain LEFT JOIN [mag_pbi].[pbi].[nomenclature] as tabNom on tabNom.[artic_id] = tabMain.[artic_id] ) tabItog WHERE 1=1 --and [artic_id] = 'cdb37c08-84c6-11e5-80c5-305a3a00e12b' END GO /****** Object: StoredProcedure [sebest].[Проставить стоимость комплектов] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [sebest].[Проставить стоимость комплектов] @dt datetime2(0) = '2015' AS BEGIN UPDATE [pbi].[Себестоимость] SET [Закупка] = ( SELECT -1*SUM(Закупка) FROM [pbi].[Себестоимость] ss INNER JOIN [pbi].[Сборки] sb ON sb.[Дата документа] = ss.Период AND sb.[Номер документа] = ss.[Номер документа] WHERE sb.[ИД номенклатура комплекта] = k.[1c_id] --0x80C5305A3A00E12B11E584C1000D5AA5 ), [Закупка, usd2] = ( SELECT -1*SUM([Закупка, usd2]) FROM [pbi].[Себестоимость] ss INNER JOIN [pbi].[Сборки] sb ON sb.[Дата документа] = ss.Период AND sb.[Номер документа] = ss.[Номер документа] WHERE sb.[ИД номенклатура комплекта] = k.[1c_id] --0x80C5305A3A00E12B11E584C1000D5AA5 ), [Таможня] = ( SELECT -1*SUM([Таможня]) FROM [pbi].[Себестоимость] ss INNER JOIN [pbi].[Сборки] sb ON sb.[Дата документа] = ss.Период AND sb.[Номер документа] = ss.[Номер документа] WHERE sb.[ИД номенклатура комплекта] = k.[1c_id] --0x80C5305A3A00E12B11E584C1000D5AA5 ), [ЕАЭС] = ( SELECT -1*SUM([ЕАЭС]) FROM [pbi].[Себестоимость] ss INNER JOIN [pbi].[Сборки] sb ON sb.[Дата документа] = ss.Период AND sb.[Номер документа] = ss.[Номер документа] WHERE sb.[ИД номенклатура комплекта] = k.[1c_id] --0x80C5305A3A00E12B11E584C1000D5AA5 ) FROM [pbi].[Себестоимость] k WHERE k. [Статья]='Закупка' AND k.[Вид операции] = 'Фасовка_Комплекты' AND [Период] > @dt END GO /****** Object: StoredProcedure [sebest].[Расчет себестомисти] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [sebest].[Расчет себестомисти] @date datetime2(0) = '2018', @complekty bit = 0 as BEGIN DECLARE @uid binary(16) DECLARE @q numeric(15,3) DECLARE @dt datetime2(0) DECLARE @id INT DECLARE @vid varchar(255) DECLARE @cenovaya_gruppa varchar(12) DECLARE @zakupka numeric(38,15) DECLARE @zakupka_usd2 numeric(38,15) DECLARE @kurs_usd2 numeric(15, 3) DECLARE @kurs_usd numeric(15, 3) DECLARE @kolich numeric(15,3) DECLARE @eaes numeric(38,15) DECLARE @tamoznia numeric(38,15) DECLARE db_cursor CURSOR FOR SELECT id , s.[1c_id] , [количество] , [Период] , [Вид операции] , CASE WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Валютная' --WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Рублевая' ELSE 'Рублевая' END as cenovaya_gruppa , s.[Курс usd2] , s.[Курс usd] FROM mag_pbi.pbi.[Себестоимость] s INNER JOIN MAG_2019.dbo._Reference188X1 n--mag_reports.sales.w_nomenclature n ON n._IDRRef=s.[1c_id] WHERE 1=1 and [Статья]='Закупка' AND ([Вид операции] IN ('Продажа'/*, 'Фасовка_Комплектующие', 'Фасовка_Комплекты'*/)) AND [Период] > @date /*AND ( @complekty=0 AND n._IDRRef not in (SELECT [1c_id] FROM [pbi].[Сборки_комплекты]) OR @complekty=1 AND n._IDRRef in (SELECT [1c_id] FROM [pbi].[Сборки_комплекты]) ) */ --and n.[1c_id]=0x80F1305A3A00E12B11E63D0035692388 --and n.[1c_id]=0xAEC4B496910DCFD611EC421521579D74 --AND n.code = 'УТ-00039503' ORDER BY [Период] ASC OPEN db_cursor FETCH NEXT FROM db_cursor INTO @id, @uid, @q, @dt, @vid, @cenovaya_gruppa, @kurs_usd2, @kurs_usd WHILE @@FETCH_STATUS = 0 BEGIN --IF @vid = 'Продажа' OR @vid = 'Фасовка_Комплектующие' BEGIN /* расчет статьи себестоимости Закупка, вид операции Продажа */ SET @kolich = ISNULL((SELECT sum([Количество]) FROM mag_pbi.pbi.[Себестоимость] WHERE [1c_id] = @uid AND [Статья] = 'Закупка' AND ([Вид операции] IN ('Закупка', 'Продажа'/*, 'Фасовка_Комплектующие', 'Фасовка_Комплекты'*/) ) AND [Период] < @dt ),0) IF @cenovaya_gruppa = 'Рублевая' BEGIN SET @zakupka = ISNULL((SELECT sum([Закупка]) FROM mag_pbi.pbi.[Себестоимость] WHERE [1c_id] = @uid AND [Статья] = 'Закупка' AND ([Вид операции] IN ('Закупка', 'Продажа'/*, 'Фасовка_Комплектующие', 'Фасовка_Комплекты'*/) ) AND [Период] < @dt ),0) SET @zakupka = ( -- сумма всего / кол всего * кол CASE WHEN @kolich <= 0 THEN 0 ELSE CASE WHEN -@zakupka > @zakupka/@kolich * @q THEN -@zakupka ELSE @zakupka/@kolich * @q END END ) SET @zakupka_usd2 = @zakupka / @kurs_usd2 END ELSE BEGIN SET @zakupka_usd2 = ISNULL((SELECT sum([Закупка, usd2]) FROM mag_pbi.pbi.[Себестоимость] WHERE [1c_id] = @uid AND [Статья] = 'Закупка' AND ([Вид операции] IN ('Закупка', 'Продажа'/*, 'Фасовка_Комплектующие', 'Фасовка_Комплекты'*/)) AND [Период] < @dt ),0) --select @zakupka_usd2 SET @zakupka_usd2 = ( -- сумма всего / кол всего * кол CASE WHEN @kolich <= 0 THEN 0 ELSE CASE WHEN -@zakupka_usd2 > @zakupka_usd2/@kolich * @q THEN -@zakupka_usd2 ELSE @zakupka_usd2/@kolich * @q END END ) --select @zakupka_usd2 SET @zakupka = @zakupka_usd2 * @kurs_usd2 --select @kurs_usd2 END SET @eaes = ISNULL((SELECT sum([ЕАЭС]) FROM mag_pbi.pbi.[Себестоимость] WHERE [1c_id] = @uid AND [Статья] = 'Закупка' AND [Вид операции]='ЕАЭС' AND [Период] < @dt ),0) SET @tamoznia = ISNULL((SELECT sum([Таможня]) FROM mag_pbi.pbi.[Себестоимость] WHERE [1c_id] = @uid AND [Статья] = 'Закупка' AND [Вид операции]='Таможня' AND [Период] < @dt ),0) UPDATE mag_pbi.pbi.[Себестоимость] SET [Закупка] = @zakupka , [Закупка, usd2] = @zakupka_usd2 , [ЕАЭС] = ( -- сумма всего / кол всего * кол CASE WHEN @kolich <= 0 THEN 0 ELSE CASE WHEN -@eaes > @eaes/@kolich * @q THEN -@eaes ELSE @eaes/@kolich * @q END END ) , [Таможня] = ( -- сумма всего / кол всего * кол CASE WHEN @kolich <= 0 THEN 0 ELSE CASE WHEN -@tamoznia > @tamoznia/@kolich * @q THEN -@tamoznia ELSE @tamoznia/@kolich * @q END END ) WHERE id=@id --END --@vid = 'Продажа' FETCH NEXT FROM db_cursor INTO @id, @uid, @q, @dt, @vid, @cenovaya_gruppa, @kurs_usd2, @kurs_usd END CLOSE db_cursor DEALLOCATE db_cursor END /* ELSE if @vid = 'Фасовка_Комплекты' UPDATE [mag_reports].[sebest].[Себестоимость] SET [Сумма] = ( -- сумма всех комплектующих SELECT sum(-[Сумма]) FROM [mag_reports].[sebest].[Себестоимость] WHERE [Комплект] = @uid AND [Статья] = 'Закупка' AND [Период] = dateadd(second, -1, @dt) AND [Сумма]<>0 and [Вид операции] = 'Фасовка_Комплектующие') , [Валютная сумма] = ( -- сумма всех комплектующих SELECT sum(-[Валютная сумма]) FROM [mag_reports].[sebest].[Себестоимость] WHERE [Комплект] = @uid AND [Статья] = 'Закупка' AND [Период] = dateadd(second, -1, @dt) AND [Валютная сумма]<>0 and [Вид операции] = 'Фасовка_Комплектующие') WHERE id=@id */ --расчет по учетной цене /*UPDATE [sebest].[Себестоимость] SET [Учетная цена]= /* --первый вариант учетной цены - по учетной цене руб (SELECT TOP (1) [Цена] / 1000 FROM [mag_reports].[sales].[pricelist] pl where pl.[1c_id] = @uid and [Вид цены] = 'Учетная цена (руб)' AND DATEADD(year, -2000, pl._Period) <= @dt ORDER BY pl._Period desc) */ --второй вариант учетной цены - для вал товара пересчитываем уч цену через курс (CASE WHEN (SELECT _Fld21101RRef FROM MAG_2019.dbo._Reference188X1 WHERE _IDRRef = @uid) = 0x80C5305A3A00E12B11E584520AEC30EC THEN --'Валютная' -- Если валютная ценовая группа, то берем учетную цену (вал) (SELECT TOP (1) [Цена] / 1000 FROM [mag_reports].[sales].[pricelist] pl where pl.[1c_id] = @uid and [Вид цены] = 'Учетная цена (вал)' AND DATEADD(year, -2000, pl._Period) <= @dt ORDER BY pl._Period desc) * (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] rg --РегистрСведений.КурсыВалют WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 AND DATEADD(year, -2000, rg._Period)<= @dt ORDER BY rg._Period desc) ELSE --WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN --'Рублевая' (SELECT TOP (1) [Цена] / 1000 FROM [mag_reports].[sales].[pricelist] pl where pl.[1c_id] = @uid and [Вид цены] = 'Учетная цена (руб)' AND DATEADD(year, -2000, pl._Period) <= @dt ORDER BY pl._Period desc) END ) WHERE id=@id*/ /* ЗДЕСЬ ВСТАВЛЯЕМ РАСЧЕТ ДРУГИХ СТАТЕЙ СЕБЕСТОИМОСТИ ПРИ ПРОДАЖЕ */ /*if @vid = 'Фасовка_Комплекты' insert into [sebest].[Себестоимость] ([Период], [Статья], [Вид операции], [1c_id], [artic_id], [Количество], [Сумма], [Сумма Без НДС], [Валютная сумма], [Валютная сумма Без НДС]) select @dt as [Период] , [Статья] , @vid as [Вид операции] , @uid as [1c_id] , @ar as [artic_id] , 0 as [Количество] , sum([Сумма]) as [Сумма] , 0 as [Сумма Без НДС] , sum([Валютная сумма]) as [Валютная сумма] , 0 as [Валютная сумма Без НДС] FROM [mag_reports].[sebest].[Себестоимость] WHERE [Комплект] = @uid AND not [Статья] = 'Закупка' AND [Период] = dateadd(second, -1, @dt) and [Вид операции] = 'Фасовка_Комплектующие' group by [Статья] else insert into [sebest].[Себестоимость] ([Период], [Статья], [Вид операции], [1c_id], [artic_id], [Комплект], [Количество], [Сумма], [Сумма Без НДС], [Валютная сумма], [Валютная сумма Без НДС]) select @dt as [Период] , [Статья] , @vid as [Вид операции] , @uid as [1c_id] , @ar as [artic_id] , @kom as [Комплект] , 0 as [Количество] , @q * (sum([Сумма]) / (select sum([Количество]) FROM [mag_reports].[sebest].[Себестоимость] WHERE [1c_id] = @uid AND [Статья] = 'Закупка' AND [Период] < @dt)) as [Сумма] , 0 as [Сумма Без НДС] , @q * (sum([Валютная сумма]) / (select sum([Количество]) FROM [mag_reports].[sebest].[Себестоимость] WHERE [1c_id] = @uid AND [Статья] = 'Закупка' AND [Период] < @dt)) as [Валютная сумма] , 0 as [Валютная сумма Без НДС] FROM [mag_reports].[sebest].[Себестоимость] WHERE [1c_id] = @uid AND not [Статья] = 'Закупка' AND [Период] < @dt group by [Статья] */ GO /****** Object: StoredProcedure [sebest].[Создать индексы] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /* */ CREATE PROCEDURE [sebest].[Создать индексы] as BEGIN CREATE NONCLUSTERED INDEX [NonClusteredIndex-20220320-182545] ON [pbi].[Себестоимость] ( [1c_id] ASC, [Период] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] CREATE NONCLUSTERED INDEX [NonClusteredIndex-1] ON [pbi].[Себестоимость] ([Статья],[Вид операции],[Период]) INCLUDE ([1c_id],[Количество]) CREATE NONCLUSTERED INDEX [NonClusteredIndex-2] ON [pbi].[Себестоимость] ( [1c_id] ASC, [Статья] ASC, [Период] ASC ) CREATE NONCLUSTERED INDEX [NonClusteredIndex-2-1] ON [pbi].[Себестоимость] ( [Партнер] ASC, [Период] ASC ) CREATE NONCLUSTERED INDEX [NonClusteredIndex-3] ON [pbi].[Себестоимость] ( [1c_id] ASC, [Статья] ASC, [Вид операции] ASC, [Период] ASC ) INCLUDE([Закупка],[ЕАЭС],[Таможня],[Количество])WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] CREATE NONCLUSTERED INDEX [NonClusteredIndex-4] ON [pbi].[Себестоимость] ([Период],[Статья],[Вид операции],[1c_id],[Количество]) CREATE NONCLUSTERED INDEX [NonClusteredIndex-5] ON [pbi].[Себестоимость] ([Статья],[1c_id],[Период]) CREATE NONCLUSTERED INDEX [NonClusteredIndex-6] ON [pbi].[Себестоимость] ([Статья],[Вид операции],[1c_id],[Период]) END GO /****** Object: StoredProcedure [sebest].[Создать таблицу] Script Date: 17.02.2026 14:26:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Object: Table [sebest].[Себестоимость] Script Date: 10.04.2022 8:42:54 ******/ CREATE procedure [sebest].[Создать таблицу] as BEGIN CREATE TABLE [pbi].[Себестоимость]( id INT NOT NULL IDENTITY(1,1) PRIMARY KEY, [Период] [datetime2](0) NULL, [Статья] [varchar](255) NOT NULL, [Вид операции] [varchar](255) NOT NULL default '', [Хоз операция] [varchar](255) NOT NULL default '', [Организация] [varchar](255) NULL default '', [Партнер] [varchar](255) NULL default '', [Контрагент] [varchar](255) NULL default '', [Менеджер] [varchar](255) NULL default '', [Тип документа] [varchar](255) NULL default '', [Номер документа] [varchar](255) NULL default '', [Валюта документа] [varchar](255) NULL default '', [Ценовая группа] [varchar](255) NULL default '', [1c_document_id] [binary](16) NULL, [1c_id] [binary](16) NULL, [artic_id] [nvarchar](36) NULL, [Количество] [numeric](15, 3) NULL default 0, [Сумма] numeric(38,15) NULL default 0, [СуммаБезНДС] numeric(38,15) NULL default 0, [СуммаРучнойСкидки] numeric(38,15) NULL default 0, [СуммаАвтоСкидки] numeric(38,15) NULL default 0, [Закупка] numeric(38,15) NULL default 0, [Закупка, usd2] numeric(38,15) NULL default 0, [Курс usd2] [numeric](15, 3) NULL default 0, [Курс usd] [numeric](15, 3) NULL default 0, [Таможня] numeric(38,15) NULL default 0, [ЕАЭС] numeric(38,15) NULL default 0, [Учетная цена] numeric(38,15) NULL default 0, [Учетная цена USD2+2] numeric(38,15) NULL default 0, [Заказ закрыт] datetime NULL, [Номер заказа] nchar(11) NULL, [Маркетинг] numeric(38,15) NULL default 0, [Доставка] numeric(38,15) NULL default 0, [НДС] numeric(38,15) NULL default 0, [Сборка] numeric(38,15) NULL default 0, [ЗатратыМП] numeric(38,15) NULL default 0, [PartnerId] [nvarchar](36) NULL, [Учетная стоимость] numeric(38,15) NULL default 0, [Учетная стоимость USD2+2] numeric(38,15) NULL default 0 ) ON [PRIMARY] END GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane1', @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] Begin DesignProperties = Begin PaneConfigurations = Begin PaneConfiguration = 0 NumPanes = 4 Configuration = "(H (1[40] 4[20] 2[20] 3) )" End Begin PaneConfiguration = 1 NumPanes = 3 Configuration = "(H (1 [50] 4 [25] 3))" End Begin PaneConfiguration = 2 NumPanes = 3 Configuration = "(H (1 [50] 2 [25] 3))" End Begin PaneConfiguration = 3 NumPanes = 3 Configuration = "(H (4 [30] 2 [40] 3))" End Begin PaneConfiguration = 4 NumPanes = 2 Configuration = "(H (1 [56] 3))" End Begin PaneConfiguration = 5 NumPanes = 2 Configuration = "(H (2 [66] 3))" End Begin PaneConfiguration = 6 NumPanes = 2 Configuration = "(H (4 [50] 3))" End Begin PaneConfiguration = 7 NumPanes = 1 Configuration = "(V (3))" End Begin PaneConfiguration = 8 NumPanes = 3 Configuration = "(H (1[56] 4[18] 2) )" End Begin PaneConfiguration = 9 NumPanes = 2 Configuration = "(H (1 [75] 4))" End Begin PaneConfiguration = 10 NumPanes = 2 Configuration = "(H (1[66] 2) )" End Begin PaneConfiguration = 11 NumPanes = 2 Configuration = "(H (4 [60] 2))" End Begin PaneConfiguration = 12 NumPanes = 1 Configuration = "(H (1) )" End Begin PaneConfiguration = 13 NumPanes = 1 Configuration = "(V (4))" End Begin PaneConfiguration = 14 NumPanes = 1 Configuration = "(V (2))" End ActivePaneConfig = 0 End Begin DiagramPane = Begin Origin = Top = -96 Left = 0 End Begin Tables = Begin Table = "a" Begin Extent = Top = 6 Left = 38 Bottom = 136 Right = 292 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "n" Begin Extent = Top = 138 Left = 38 Bottom = 268 Right = 297 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "g" Begin Extent = Top = 270 Left = 38 Bottom = 400 Right = 212 End DisplayFlags = 280 TopColumn = 0 End End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End End Begin CriteriaPane = Begin ColumnWidths = 11 Column = 1440 Alias = 900 Table = 1170 Output = 720 Append = 1400 NewValue = 1170 SortType = 1350 SortOrder = 1410 GroupBy = 1350 Filter = 1350 Or = 1350 Or = 1350 Or = 1350 End End End ' , @level0type=N'SCHEMA',@level0name=N'analytics', @level1type=N'VIEW',@level1name=N'get_analytics_by_group' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=1 , @level0type=N'SCHEMA',@level0name=N'analytics', @level1type=N'VIEW',@level1name=N'get_analytics_by_group' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane1', @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] Begin DesignProperties = Begin PaneConfigurations = Begin PaneConfiguration = 0 NumPanes = 4 Configuration = "(H (1[40] 4[20] 2[20] 3) )" End Begin PaneConfiguration = 1 NumPanes = 3 Configuration = "(H (1 [50] 4 [25] 3))" End Begin PaneConfiguration = 2 NumPanes = 3 Configuration = "(H (1 [50] 2 [25] 3))" End Begin PaneConfiguration = 3 NumPanes = 3 Configuration = "(H (4 [30] 2 [40] 3))" End Begin PaneConfiguration = 4 NumPanes = 2 Configuration = "(H (1 [56] 3))" End Begin PaneConfiguration = 5 NumPanes = 2 Configuration = "(H (2 [66] 3))" End Begin PaneConfiguration = 6 NumPanes = 2 Configuration = "(H (4 [50] 3))" End Begin PaneConfiguration = 7 NumPanes = 1 Configuration = "(V (3))" End Begin PaneConfiguration = 8 NumPanes = 3 Configuration = "(H (1[56] 4[18] 2) )" End Begin PaneConfiguration = 9 NumPanes = 2 Configuration = "(H (1 [75] 4))" End Begin PaneConfiguration = 10 NumPanes = 2 Configuration = "(H (1[66] 2) )" End Begin PaneConfiguration = 11 NumPanes = 2 Configuration = "(H (4 [60] 2))" End Begin PaneConfiguration = 12 NumPanes = 1 Configuration = "(H (1) )" End Begin PaneConfiguration = 13 NumPanes = 1 Configuration = "(V (4))" End Begin PaneConfiguration = 14 NumPanes = 1 Configuration = "(V (2))" End ActivePaneConfig = 0 End Begin DiagramPane = Begin Origin = Top = 0 Left = 0 End Begin Tables = Begin Table = "ostatki" Begin Extent = Top = 6 Left = 38 Bottom = 136 Right = 228 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "tabznach" Begin Extent = Top = 0 Left = 527 Bottom = 130 Right = 717 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "DopRekv" Begin Extent = Top = 3 Left = 256 Bottom = 99 Right = 476 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "photo" Begin Extent = Top = 155 Left = 422 Bottom = 251 Right = 612 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "price" Begin Extent = Top = 102 Left = 920 Bottom = 198 Right = 1110 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "IdMP" Begin Extent = Top = 221 Left = 198 Bottom = 317 Right = 390 End DisplayFlags = 280 TopColumn = 0 End End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End End Begin CriteriaPane = Begin ColumnWidths = 12 Column = 1440 Alias = 900 ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'tovar_bez_kontenta' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane2', @value=N' Table = 1170 Output = 720 Append = 1400 NewValue = 1170 SortType = 1350 SortOrder = 1410 GroupBy = 1350 Filter = 1350 Or = 1350 Or = 1350 Or = 1350 End End End ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'tovar_bez_kontenta' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=2 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'tovar_bez_kontenta' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane1', @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] Begin DesignProperties = Begin PaneConfigurations = Begin PaneConfiguration = 0 NumPanes = 4 Configuration = "(H (1[40] 4[20] 2[20] 3) )" End Begin PaneConfiguration = 1 NumPanes = 3 Configuration = "(H (1 [50] 4 [25] 3))" End Begin PaneConfiguration = 2 NumPanes = 3 Configuration = "(H (1 [50] 2 [25] 3))" End Begin PaneConfiguration = 3 NumPanes = 3 Configuration = "(H (4 [30] 2 [40] 3))" End Begin PaneConfiguration = 4 NumPanes = 2 Configuration = "(H (1 [56] 3))" End Begin PaneConfiguration = 5 NumPanes = 2 Configuration = "(H (2 [66] 3))" End Begin PaneConfiguration = 6 NumPanes = 2 Configuration = "(H (4 [50] 3))" End Begin PaneConfiguration = 7 NumPanes = 1 Configuration = "(V (3))" End Begin PaneConfiguration = 8 NumPanes = 3 Configuration = "(H (1[56] 4[18] 2) )" End Begin PaneConfiguration = 9 NumPanes = 2 Configuration = "(H (1 [75] 4))" End Begin PaneConfiguration = 10 NumPanes = 2 Configuration = "(H (1[66] 2) )" End Begin PaneConfiguration = 11 NumPanes = 2 Configuration = "(H (4 [60] 2))" End Begin PaneConfiguration = 12 NumPanes = 1 Configuration = "(H (1) )" End Begin PaneConfiguration = 13 NumPanes = 1 Configuration = "(V (4))" End Begin PaneConfiguration = 14 NumPanes = 1 Configuration = "(V (2))" End ActivePaneConfig = 0 End Begin DiagramPane = Begin Origin = Top = 0 Left = 0 End Begin Tables = End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End End Begin CriteriaPane = Begin ColumnWidths = 11 Column = 1440 Alias = 900 Table = 1170 Output = 720 Append = 1400 NewValue = 1170 SortType = 1350 SortOrder = 1410 GroupBy = 1350 Filter = 1350 Or = 1350 Or = 1350 Or = 1350 End End End ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'СтоимостьОпераций_Отбор' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'СтоимостьОпераций_Отбор' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane1', @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] Begin DesignProperties = Begin PaneConfigurations = Begin PaneConfiguration = 0 NumPanes = 4 Configuration = "(H (1[40] 4[20] 2[20] 3) )" End Begin PaneConfiguration = 1 NumPanes = 3 Configuration = "(H (1 [50] 4 [25] 3))" End Begin PaneConfiguration = 2 NumPanes = 3 Configuration = "(H (1 [50] 2 [25] 3))" End Begin PaneConfiguration = 3 NumPanes = 3 Configuration = "(H (4 [30] 2 [40] 3))" End Begin PaneConfiguration = 4 NumPanes = 2 Configuration = "(H (1 [56] 3))" End Begin PaneConfiguration = 5 NumPanes = 2 Configuration = "(H (2 [66] 3))" End Begin PaneConfiguration = 6 NumPanes = 2 Configuration = "(H (4 [50] 3))" End Begin PaneConfiguration = 7 NumPanes = 1 Configuration = "(V (3))" End Begin PaneConfiguration = 8 NumPanes = 3 Configuration = "(H (1[56] 4[18] 2) )" End Begin PaneConfiguration = 9 NumPanes = 2 Configuration = "(H (1 [75] 4))" End Begin PaneConfiguration = 10 NumPanes = 2 Configuration = "(H (1[66] 2) )" End Begin PaneConfiguration = 11 NumPanes = 2 Configuration = "(H (4 [60] 2))" End Begin PaneConfiguration = 12 NumPanes = 1 Configuration = "(H (1) )" End Begin PaneConfiguration = 13 NumPanes = 1 Configuration = "(V (4))" End Begin PaneConfiguration = 14 NumPanes = 1 Configuration = "(V (2))" End ActivePaneConfig = 0 End Begin DiagramPane = Begin Origin = Top = 0 Left = 0 End Begin Tables = Begin Table = "_AccumRg33652 (MAG_2019.dbo)" Begin Extent = Top = 6 Left = 38 Bottom = 136 Right = 212 End DisplayFlags = 280 TopColumn = 0 End End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End End Begin CriteriaPane = Begin ColumnWidths = 11 Column = 1440 Alias = 900 Table = 1170 Output = 720 Append = 1400 NewValue = 1170 SortType = 1350 SortOrder = 1410 GroupBy = 1350 Filter = 1350 Or = 1350 Or = 1350 Or = 1350 End End End ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'СтоимостьОпераций_Фасовка' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'СтоимостьОпераций_Фасовка' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane1', @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] Begin DesignProperties = Begin PaneConfigurations = Begin PaneConfiguration = 0 NumPanes = 4 Configuration = "(H (1[40] 4[20] 2[20] 3) )" End Begin PaneConfiguration = 1 NumPanes = 3 Configuration = "(H (1 [50] 4 [25] 3))" End Begin PaneConfiguration = 2 NumPanes = 3 Configuration = "(H (1 [50] 2 [25] 3))" End Begin PaneConfiguration = 3 NumPanes = 3 Configuration = "(H (4 [30] 2 [40] 3))" End Begin PaneConfiguration = 4 NumPanes = 2 Configuration = "(H (1 [56] 3))" End Begin PaneConfiguration = 5 NumPanes = 2 Configuration = "(H (2 [66] 3))" End Begin PaneConfiguration = 6 NumPanes = 2 Configuration = "(H (4 [50] 3))" End Begin PaneConfiguration = 7 NumPanes = 1 Configuration = "(V (3))" End Begin PaneConfiguration = 8 NumPanes = 3 Configuration = "(H (1[56] 4[18] 2) )" End Begin PaneConfiguration = 9 NumPanes = 2 Configuration = "(H (1 [75] 4))" End Begin PaneConfiguration = 10 NumPanes = 2 Configuration = "(H (1[66] 2) )" End Begin PaneConfiguration = 11 NumPanes = 2 Configuration = "(H (4 [60] 2))" End Begin PaneConfiguration = 12 NumPanes = 1 Configuration = "(H (1) )" End Begin PaneConfiguration = 13 NumPanes = 1 Configuration = "(V (4))" End Begin PaneConfiguration = 14 NumPanes = 1 Configuration = "(V (2))" End ActivePaneConfig = 0 End Begin DiagramPane = Begin Origin = Top = 0 Left = 0 End Begin Tables = Begin Table = "ost" Begin Extent = Top = 6 Left = 266 Bottom = 136 Right = 456 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "nom" Begin Extent = Top = 120 Left = 38 Bottom = 250 Right = 230 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "free" Begin Extent = Top = 252 Left = 38 Bottom = 382 Right = 256 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "uzel" Begin Extent = Top = 138 Left = 268 Bottom = 268 Right = 458 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "tm" Begin Extent = Top = 6 Left = 38 Bottom = 119 Right = 228 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "rekv" Begin Extent = Top = 6 Left = 494 Bottom = 85 Right = 714 End DisplayFlags = 280 TopColumn = 0 End End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End End Begin CriteriaPane = Begin ColumnWidths = 12 Column = 1440 Alias = 900 Table = 1' , @level0type=N'SCHEMA',@level0name=N'ostatki', @level1type=N'VIEW',@level1name=N'OstatkiMarketSklad' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane2', @value=N'170 Output = 720 Append = 1400 NewValue = 1170 SortType = 1350 SortOrder = 1410 GroupBy = 1350 Filter = 1350 Or = 1350 Or = 1350 Or = 1350 End End End ' , @level0type=N'SCHEMA',@level0name=N'ostatki', @level1type=N'VIEW',@level1name=N'OstatkiMarketSklad' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=2 , @level0type=N'SCHEMA',@level0name=N'ostatki', @level1type=N'VIEW',@level1name=N'OstatkiMarketSklad' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane1', @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] Begin DesignProperties = Begin PaneConfigurations = Begin PaneConfiguration = 0 NumPanes = 4 Configuration = "(H (1[40] 4[20] 2[20] 3) )" End Begin PaneConfiguration = 1 NumPanes = 3 Configuration = "(H (1 [50] 4 [25] 3))" End Begin PaneConfiguration = 2 NumPanes = 3 Configuration = "(H (1 [50] 2 [25] 3))" End Begin PaneConfiguration = 3 NumPanes = 3 Configuration = "(H (4 [30] 2 [40] 3))" End Begin PaneConfiguration = 4 NumPanes = 2 Configuration = "(H (1 [56] 3))" End Begin PaneConfiguration = 5 NumPanes = 2 Configuration = "(H (2 [66] 3))" End Begin PaneConfiguration = 6 NumPanes = 2 Configuration = "(H (4 [50] 3))" End Begin PaneConfiguration = 7 NumPanes = 1 Configuration = "(V (3))" End Begin PaneConfiguration = 8 NumPanes = 3 Configuration = "(H (1[56] 4[18] 2) )" End Begin PaneConfiguration = 9 NumPanes = 2 Configuration = "(H (1 [75] 4))" End Begin PaneConfiguration = 10 NumPanes = 2 Configuration = "(H (1[66] 2) )" End Begin PaneConfiguration = 11 NumPanes = 2 Configuration = "(H (4 [60] 2))" End Begin PaneConfiguration = 12 NumPanes = 1 Configuration = "(H (1) )" End Begin PaneConfiguration = 13 NumPanes = 1 Configuration = "(V (4))" End Begin PaneConfiguration = 14 NumPanes = 1 Configuration = "(V (2))" End ActivePaneConfig = 0 End Begin DiagramPane = Begin Origin = Top = 0 Left = 0 End Begin Tables = Begin Table = "sebes" Begin Extent = Top = 7 Left = 48 Bottom = 170 Right = 291 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "sebesSales" Begin Extent = Top = 7 Left = 339 Bottom = 170 Right = 533 End DisplayFlags = 280 TopColumn = 0 End End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End End Begin CriteriaPane = Begin ColumnWidths = 11 Column = 1440 Alias = 900 Table = 1176 Output = 720 Append = 1400 NewValue = 1170 SortType = 1356 SortOrder = 1416 GroupBy = 1350 Filter = 1356 Or = 1350 Or = 1350 Or = 1350 End End End ' , @level0type=N'SCHEMA',@level0name=N'pbi', @level1type=N'VIEW',@level1name=N'Себестоимость+СебестоимостьПродаж' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=1 , @level0type=N'SCHEMA',@level0name=N'pbi', @level1type=N'VIEW',@level1name=N'Себестоимость+СебестоимостьПродаж' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane1', @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] Begin DesignProperties = Begin PaneConfigurations = Begin PaneConfiguration = 0 NumPanes = 4 Configuration = "(H (1[40] 4[20] 2[20] 3) )" End Begin PaneConfiguration = 1 NumPanes = 3 Configuration = "(H (1 [50] 4 [25] 3))" End Begin PaneConfiguration = 2 NumPanes = 3 Configuration = "(H (1 [50] 2 [25] 3))" End Begin PaneConfiguration = 3 NumPanes = 3 Configuration = "(H (4 [30] 2 [40] 3))" End Begin PaneConfiguration = 4 NumPanes = 2 Configuration = "(H (1 [56] 3))" End Begin PaneConfiguration = 5 NumPanes = 2 Configuration = "(H (2 [66] 3))" End Begin PaneConfiguration = 6 NumPanes = 2 Configuration = "(H (4 [50] 3))" End Begin PaneConfiguration = 7 NumPanes = 1 Configuration = "(V (3))" End Begin PaneConfiguration = 8 NumPanes = 3 Configuration = "(H (1[56] 4[18] 2) )" End Begin PaneConfiguration = 9 NumPanes = 2 Configuration = "(H (1 [75] 4))" End Begin PaneConfiguration = 10 NumPanes = 2 Configuration = "(H (1[66] 2) )" End Begin PaneConfiguration = 11 NumPanes = 2 Configuration = "(H (4 [60] 2))" End Begin PaneConfiguration = 12 NumPanes = 1 Configuration = "(H (1) )" End Begin PaneConfiguration = 13 NumPanes = 1 Configuration = "(V (4))" End Begin PaneConfiguration = 14 NumPanes = 1 Configuration = "(V (2))" End ActivePaneConfig = 0 End Begin DiagramPane = Begin Origin = Top = 0 Left = 0 End Begin Tables = Begin Table = "sebes" Begin Extent = Top = 7 Left = 48 Bottom = 170 Right = 291 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "sebesSales" Begin Extent = Top = 7 Left = 339 Bottom = 170 Right = 533 End DisplayFlags = 280 TopColumn = 0 End End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End End Begin CriteriaPane = Begin ColumnWidths = 11 Column = 1440 Alias = 900 Table = 1176 Output = 720 Append = 1400 NewValue = 1170 SortType = 1356 SortOrder = 1416 GroupBy = 1350 Filter = 1356 Or = 1350 Or = 1350 Or = 1350 End End End ' , @level0type=N'SCHEMA',@level0name=N'pbi', @level1type=N'VIEW',@level1name=N'Себестоимость+СебестоимостьПродажОт2022' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=1 , @level0type=N'SCHEMA',@level0name=N'pbi', @level1type=N'VIEW',@level1name=N'Себестоимость+СебестоимостьПродажОт2022' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane1', @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] Begin DesignProperties = Begin PaneConfigurations = Begin PaneConfiguration = 0 NumPanes = 4 Configuration = "(H (1[40] 4[20] 2[20] 3) )" End Begin PaneConfiguration = 1 NumPanes = 3 Configuration = "(H (1 [50] 4 [25] 3))" End Begin PaneConfiguration = 2 NumPanes = 3 Configuration = "(H (1 [50] 2 [25] 3))" End Begin PaneConfiguration = 3 NumPanes = 3 Configuration = "(H (4 [30] 2 [40] 3))" End Begin PaneConfiguration = 4 NumPanes = 2 Configuration = "(H (1 [56] 3))" End Begin PaneConfiguration = 5 NumPanes = 2 Configuration = "(H (2 [66] 3))" End Begin PaneConfiguration = 6 NumPanes = 2 Configuration = "(H (4 [50] 3))" End Begin PaneConfiguration = 7 NumPanes = 1 Configuration = "(V (3))" End Begin PaneConfiguration = 8 NumPanes = 3 Configuration = "(H (1[56] 4[18] 2) )" End Begin PaneConfiguration = 9 NumPanes = 2 Configuration = "(H (1 [75] 4))" End Begin PaneConfiguration = 10 NumPanes = 2 Configuration = "(H (1[66] 2) )" End Begin PaneConfiguration = 11 NumPanes = 2 Configuration = "(H (4 [60] 2))" End Begin PaneConfiguration = 12 NumPanes = 1 Configuration = "(H (1) )" End Begin PaneConfiguration = 13 NumPanes = 1 Configuration = "(V (4))" End Begin PaneConfiguration = 14 NumPanes = 1 Configuration = "(V (2))" End ActivePaneConfig = 0 End Begin DiagramPane = Begin Origin = Top = 0 Left = 0 End Begin Tables = Begin Table = "sebes" Begin Extent = Top = 7 Left = 48 Bottom = 170 Right = 291 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "sebesSales" Begin Extent = Top = 7 Left = 339 Bottom = 170 Right = 533 End DisplayFlags = 280 TopColumn = 0 End End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End End Begin CriteriaPane = Begin ColumnWidths = 11 Column = 1440 Alias = 900 Table = 1176 Output = 720 Append = 1400 NewValue = 1170 SortType = 1356 SortOrder = 1416 GroupBy = 1350 Filter = 1356 Or = 1350 Or = 1350 Or = 1350 End End End ' , @level0type=N'SCHEMA',@level0name=N'pbi', @level1type=N'VIEW',@level1name=N'Себестоимость+СебестоимостьПродажТестовая' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=1 , @level0type=N'SCHEMA',@level0name=N'pbi', @level1type=N'VIEW',@level1name=N'Себестоимость+СебестоимостьПродажТестовая' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane1', @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] Begin DesignProperties = Begin PaneConfigurations = Begin PaneConfiguration = 0 NumPanes = 4 Configuration = "(H (1[40] 4[20] 2[20] 3) )" End Begin PaneConfiguration = 1 NumPanes = 3 Configuration = "(H (1 [50] 4 [25] 3))" End Begin PaneConfiguration = 2 NumPanes = 3 Configuration = "(H (1 [50] 2 [25] 3))" End Begin PaneConfiguration = 3 NumPanes = 3 Configuration = "(H (4 [30] 2 [40] 3))" End Begin PaneConfiguration = 4 NumPanes = 2 Configuration = "(H (1 [56] 3))" End Begin PaneConfiguration = 5 NumPanes = 2 Configuration = "(H (2 [66] 3))" End Begin PaneConfiguration = 6 NumPanes = 2 Configuration = "(H (4 [50] 3))" End Begin PaneConfiguration = 7 NumPanes = 1 Configuration = "(V (3))" End Begin PaneConfiguration = 8 NumPanes = 3 Configuration = "(H (1[56] 4[18] 2) )" End Begin PaneConfiguration = 9 NumPanes = 2 Configuration = "(H (1 [75] 4))" End Begin PaneConfiguration = 10 NumPanes = 2 Configuration = "(H (1[66] 2) )" End Begin PaneConfiguration = 11 NumPanes = 2 Configuration = "(H (4 [60] 2))" End Begin PaneConfiguration = 12 NumPanes = 1 Configuration = "(H (1) )" End Begin PaneConfiguration = 13 NumPanes = 1 Configuration = "(V (4))" End Begin PaneConfiguration = 14 NumPanes = 1 Configuration = "(V (2))" End ActivePaneConfig = 0 End Begin DiagramPane = Begin Origin = Top = 0 Left = 0 End Begin Tables = Begin Table = "mainTab" Begin Extent = Top = 6 Left = 38 Bottom = 136 Right = 277 End DisplayFlags = 280 TopColumn = 0 End End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End End Begin CriteriaPane = Begin ColumnWidths = 11 Column = 1440 Alias = 900 Table = 1170 Output = 720 Append = 1400 NewValue = 1170 SortType = 1350 SortOrder = 1410 GroupBy = 1350 Filter = 1350 Or = 1350 Or = 1350 Or = 1350 End End End ' , @level0type=N'SCHEMA',@level0name=N'pbiProd', @level1type=N'VIEW',@level1name=N'ИтогСебестоимостьПродажОт2022' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=1 , @level0type=N'SCHEMA',@level0name=N'pbiProd', @level1type=N'VIEW',@level1name=N'ИтогСебестоимостьПродажОт2022' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane1', @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] Begin DesignProperties = Begin PaneConfigurations = Begin PaneConfiguration = 0 NumPanes = 4 Configuration = "(H (1[40] 4[20] 2[20] 3) )" End Begin PaneConfiguration = 1 NumPanes = 3 Configuration = "(H (1 [50] 4 [25] 3))" End Begin PaneConfiguration = 2 NumPanes = 3 Configuration = "(H (1 [50] 2 [25] 3))" End Begin PaneConfiguration = 3 NumPanes = 3 Configuration = "(H (4 [30] 2 [40] 3))" End Begin PaneConfiguration = 4 NumPanes = 2 Configuration = "(H (1 [56] 3))" End Begin PaneConfiguration = 5 NumPanes = 2 Configuration = "(H (2 [66] 3))" End Begin PaneConfiguration = 6 NumPanes = 2 Configuration = "(H (4 [50] 3))" End Begin PaneConfiguration = 7 NumPanes = 1 Configuration = "(V (3))" End Begin PaneConfiguration = 8 NumPanes = 3 Configuration = "(H (1[56] 4[18] 2) )" End Begin PaneConfiguration = 9 NumPanes = 2 Configuration = "(H (1 [75] 4))" End Begin PaneConfiguration = 10 NumPanes = 2 Configuration = "(H (1[66] 2) )" End Begin PaneConfiguration = 11 NumPanes = 2 Configuration = "(H (4 [60] 2))" End Begin PaneConfiguration = 12 NumPanes = 1 Configuration = "(H (1) )" End Begin PaneConfiguration = 13 NumPanes = 1 Configuration = "(V (4))" End Begin PaneConfiguration = 14 NumPanes = 1 Configuration = "(V (2))" End ActivePaneConfig = 0 End Begin DiagramPane = Begin Origin = Top = 0 Left = 0 End Begin Tables = End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End End Begin CriteriaPane = Begin ColumnWidths = 11 Column = 1440 Alias = 900 Table = 1170 Output = 720 Append = 1400 NewValue = 1170 SortType = 1350 SortOrder = 1410 GroupBy = 1350 Filter = 1350 Or = 1350 Or = 1350 Or = 1350 End End End ' , @level0type=N'SCHEMA',@level0name=N'pbiProd', @level1type=N'VIEW',@level1name=N'СводныйСебестоимость' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=1 , @level0type=N'SCHEMA',@level0name=N'pbiProd', @level1type=N'VIEW',@level1name=N'СводныйСебестоимость' GO