20717 lines
1.4 MiB
Transact-SQL
20717 lines
1.4 MiB
Transact-SQL
USE [mag_pbi]
|
||
GO
|
||
/****** Object: Schema [analytics] Script Date: 18.02.2026 14:56:02 ******/
|
||
CREATE SCHEMA [analytics]
|
||
GO
|
||
/****** Object: Schema [artem] Script Date: 18.02.2026 14:56:02 ******/
|
||
CREATE SCHEMA [artem]
|
||
GO
|
||
/****** Object: Schema [ostatki] Script Date: 18.02.2026 14:56:02 ******/
|
||
CREATE SCHEMA [ostatki]
|
||
GO
|
||
/****** Object: Schema [pbi] Script Date: 18.02.2026 14:56:02 ******/
|
||
CREATE SCHEMA [pbi]
|
||
GO
|
||
/****** Object: Schema [pbiProd] Script Date: 18.02.2026 14:56:02 ******/
|
||
CREATE SCHEMA [pbiProd]
|
||
GO
|
||
/****** Object: Schema [sebest] Script Date: 18.02.2026 14:56:02 ******/
|
||
CREATE SCHEMA [sebest]
|
||
GO
|
||
/****** Object: Schema [stg] Script Date: 18.02.2026 14:56:02 ******/
|
||
CREATE SCHEMA [stg]
|
||
GO
|
||
/****** Object: Table [pbi].[pricelist] Script Date: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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].[СебестоимостьПродажи] Script Date: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: Table [analytics].[manufacturers] Script Date: 18.02.2026 14:56:02 ******/
|
||
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,
|
||
[days_of_sales] [int] NOT NULL,
|
||
[logistics_days] [int] NOT NULL,
|
||
[roic_norm] [decimal](12, 4) 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_payment_stage] Script Date: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
CREATE TABLE [analytics].[manufacturer_payment_stage](
|
||
[id] [int] IDENTITY(1,1) NOT NULL,
|
||
[manufacturer_id] [int] NOT NULL,
|
||
[name] [nvarchar](255) NOT NULL,
|
||
[days] [int] NOT NULL,
|
||
[percent] [decimal](9, 4) NOT NULL,
|
||
[sort_order] [int] NOT NULL,
|
||
CONSTRAINT [PK_manufacturer_payment_stage] 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].[v_manufacturers_roi_compat] Script Date: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
CREATE VIEW [analytics].[v_manufacturers_roi_compat] AS
|
||
SELECT
|
||
man.id,
|
||
man.manufacturer,
|
||
man.roic_norm AS ROI_norm,
|
||
n_stage.[percent] / 100.0 AS n_percent,
|
||
n_stage.[days] AS n_days,
|
||
m_stage.[percent] / 100.0 AS m_percent,
|
||
m_stage.[days] AS m_days
|
||
FROM [analytics].[manufacturers] man
|
||
LEFT JOIN (
|
||
SELECT manufacturer_id, [percent], [days],
|
||
ROW_NUMBER() OVER (PARTITION BY manufacturer_id ORDER BY sort_order, [days]) AS rn
|
||
FROM [analytics].[manufacturer_payment_stage]
|
||
) n_stage ON n_stage.manufacturer_id = man.id AND n_stage.rn = 1
|
||
LEFT JOIN (
|
||
SELECT manufacturer_id, [percent], [days],
|
||
ROW_NUMBER() OVER (PARTITION BY manufacturer_id ORDER BY sort_order, [days]) AS rn
|
||
FROM [analytics].[manufacturer_payment_stage]
|
||
) m_stage ON m_stage.manufacturer_id = man.id AND m_stage.rn = 2;
|
||
GO
|
||
/****** Object: View [pbi].[УчетнаяСуммаДляPBI] Script Date: 18.02.2026 14:56:02 ******/
|
||
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: Table [pbi].[nomenclature] Script Date: 18.02.2026 14:56:02 ******/
|
||
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: View [pbi].[Стоимость обработки заказа] Script Date: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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].[groups] Script Date: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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].[v_contractors] Script Date: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
-- -----------------------------------------------------------------------------
|
||
-- 1. Представления для списков из 1С
|
||
-- -----------------------------------------------------------------------------
|
||
|
||
-- Контрагенты: [pbi].[ПартнерыКонтрагенты] уже существует (из _Reference168)
|
||
-- Для удобства создаём представление analytics.v_contractors с search-friendly полями
|
||
|
||
CREATE VIEW [analytics].[v_contractors] AS
|
||
|
||
SELECT
|
||
c._IDRRef AS contractor_1c_id, -- бинарный ключ 1С
|
||
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 contractor_id, -- строковый id для API/поиска
|
||
c._Description AS contractor_name
|
||
FROM [MAG_2019].[dbo].[_Reference168] c
|
||
WHERE c._Marked = 0;
|
||
GO
|
||
/****** Object: View [analytics].[v_producers] Script Date: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
-- Производители из справочника 1С _Reference260
|
||
CREATE VIEW [analytics].[v_producers] AS
|
||
SELECT
|
||
pr._IDRRef AS producer_1c_id, -- бинарный ключ 1С
|
||
LOWER(CONCAT(
|
||
SUBSTRING(CONVERT(nvarchar(36), pr._IDRRef, 2), 25, 8), '-',
|
||
SUBSTRING(CONVERT(nvarchar(36), pr._IDRRef, 2), 21, 4), '-',
|
||
SUBSTRING(CONVERT(nvarchar(36), pr._IDRRef, 2), 17, 4), '-',
|
||
SUBSTRING(CONVERT(nvarchar(36), pr._IDRRef, 2), 1, 4), '-',
|
||
SUBSTRING(CONVERT(nvarchar(36), pr._IDRRef, 2), 5, 12)
|
||
)) AS producer_id, -- строковый id для API/поиска
|
||
pr._Description AS producer_name
|
||
FROM [MAG_2019].[dbo].[_Reference260] pr
|
||
WHERE pr._Marked = 0;
|
||
GO
|
||
/****** Object: Table [analytics].[manufacturer_counterparty_map] Script Date: 18.02.2026 14:56:02 ******/
|
||
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,
|
||
[contractor_1c_id] [binary](16) 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_contractor] UNIQUE NONCLUSTERED
|
||
(
|
||
[contractor_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],
|
||
CONSTRAINT [UQ_mcm_pair] UNIQUE NONCLUSTERED
|
||
(
|
||
[manufacturer_id] ASC,
|
||
[contractor_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: View [analytics].[v_manufacturer_counterparty_mapping] Script Date: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
-- Представление для API: map + manufacturer + contractor/producer (из 1С)
|
||
CREATE VIEW [analytics].[v_manufacturer_counterparty_mapping] AS
|
||
SELECT
|
||
mcm.id,
|
||
mcm.manufacturer_id,
|
||
p.producer_id,
|
||
man.manufacturer AS manufacturer_name,
|
||
mcm.contractor_1c_id,
|
||
c.contractor_id,
|
||
c.contractor_name AS contractor_name,
|
||
man.days_of_sales,
|
||
man.logistics_days,
|
||
man.roic_norm
|
||
FROM [analytics].[manufacturer_counterparty_map] mcm
|
||
LEFT JOIN [analytics].[manufacturers] man ON man.id = mcm.manufacturer_id
|
||
LEFT JOIN [analytics].[v_contractors] c ON c.contractor_1c_id = mcm.contractor_1c_id
|
||
LEFT JOIN [analytics].[v_producers] p ON LTRIM(RTRIM(p.producer_name)) = LTRIM(RTRIM(man.manufacturer));
|
||
GO
|
||
/****** Object: Table [analytics].[аналитика за 365 дн.] Script Date: 18.02.2026 14:56:02 ******/
|
||
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 [analytics].[Заказы] Script Date: 18.02.2026 14:56:02 ******/
|
||
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_list] Script Date: 18.02.2026 14:56:02 ******/
|
||
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 [Номер заказа поставщику],
|
||
|
||
p._Description AS [Партнер],
|
||
r._Description AS [Контрагент],
|
||
|
||
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 0xB2A33CF1C728AF3463F20D54AE5A0BC THEN N'Заявка в процессе'
|
||
ELSE N'Неизвестно'
|
||
END AS [Статус],
|
||
|
||
v._Description AS [Валюта],
|
||
z._Fld3418 AS [Сумма],
|
||
|
||
CASE v._Description
|
||
WHEN 'USD' THEN z._Fld3418 * (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency='USD2')
|
||
ELSE z._Fld3418 * (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency=v._Description)
|
||
END AS [Сумма в руб],
|
||
|
||
ISNULL(man.[manufacturer], N'Не найдено') AS manufacturer,
|
||
ISNULL(man.[ROI_norm], 136) / 100 AS roi_year_normalized,
|
||
man.[n_percent],
|
||
man.[n_days],
|
||
man.[m_percent],
|
||
man.[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].[manufacturer_counterparty_map] map ON map.contractor_1c_id = r._IDRRef
|
||
LEFT JOIN [analytics].[v_manufacturers_roi_compat] 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: View [analytics].[get_orders_by_group] Script Date: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: View [pbi].[nomeclature_for_pbi] Script Date: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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 [pbi].[СебестоимостьПродажиТест] Script Date: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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].[manufacturer_payment_stage] ADD DEFAULT ((0)) FOR [sort_order]
|
||
GO
|
||
ALTER TABLE [analytics].[manufacturers] ADD DEFAULT ((180)) FOR [days_of_sales]
|
||
GO
|
||
ALTER TABLE [analytics].[manufacturers] ADD DEFAULT ((120)) FOR [logistics_days]
|
||
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
|
||
ALTER TABLE [analytics].[manufacturer_payment_stage] WITH CHECK ADD CONSTRAINT [FK_manufacturer_payment_stage] FOREIGN KEY([manufacturer_id])
|
||
REFERENCES [analytics].[manufacturers] ([id])
|
||
ON DELETE CASCADE
|
||
GO
|
||
ALTER TABLE [analytics].[manufacturer_payment_stage] CHECK CONSTRAINT [FK_manufacturer_payment_stage]
|
||
GO
|
||
/****** Object: StoredProcedure [analytics].[create_forecast_loop] Script Date: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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_recalc_roic] Script Date: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
CREATE PROCEDURE [analytics].[sp_recalc_roic]
|
||
@manufacturer_id INT = NULL
|
||
AS
|
||
SET NOCOUNT ON;
|
||
|
||
;WITH stage_agg AS (
|
||
SELECT
|
||
manufacturer_id,
|
||
SUM([percent] / 100.0 * [days]) AS effective_deferral_days,
|
||
SUM([percent] / 100.0) AS total_percent
|
||
FROM [analytics].[manufacturer_payment_stage]
|
||
WHERE @manufacturer_id IS NULL OR manufacturer_id = @manufacturer_id
|
||
GROUP BY manufacturer_id
|
||
),
|
||
calc AS (
|
||
SELECT
|
||
man.id,
|
||
man.days_of_sales,
|
||
man.logistics_days,
|
||
COALESCE(s.effective_deferral_days, 0) AS effective_deferral_days,
|
||
COALESCE(s.total_percent, 0) AS total_percent,
|
||
(ISNULL(man.logistics_days, 120) + ISNULL(man.days_of_sales, 180) / 2.0) AS avg_return_day
|
||
FROM [analytics].[manufacturers] man
|
||
LEFT JOIN stage_agg s ON s.manufacturer_id = man.id
|
||
WHERE @manufacturer_id IS NULL OR man.id = @manufacturer_id
|
||
),
|
||
roic_calc AS (
|
||
SELECT
|
||
id,
|
||
CASE
|
||
WHEN total_percent <= 0 THEN NULL
|
||
WHEN (avg_return_day - effective_deferral_days) <= 0 THEN NULL
|
||
ELSE ROUND(12.0 / ((avg_return_day - effective_deferral_days) / 30.0) * 100.0, 2)
|
||
END AS new_roic
|
||
FROM calc
|
||
)
|
||
UPDATE man
|
||
SET man.roic_norm = r.new_roic
|
||
FROM [analytics].[manufacturers] man
|
||
JOIN roic_calc r ON r.id = man.id;
|
||
|
||
SELECT @@ROWCOUNT AS updated_count;
|
||
GO
|
||
/****** Object: StoredProcedure [analytics].[sp_report_ROI] Script Date: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
-- =============================================
|
||
-- Author: <Author,,Name>
|
||
-- Create date: <Create Date,,>
|
||
-- Description: <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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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: 18.02.2026 14:56:02 ******/
|
||
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
|