From daeafa1cdacbabdb3e2bd273e79ca7746aebcb8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=9B=D0=B5=D0=B1?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=D0=B2?= Date: Mon, 2 Mar 2026 14:46:41 +0000 Subject: [PATCH] Update SQL schema from mag_pbi --- sql_db_mag_pbi/mag_pbi_procedures.sql | 8140 ++++++++++++++++++++++++- sql_db_mag_pbi/mag_pbi_tables.sql | 152 +- sql_db_mag_pbi/mag_pbi_views.sql | 3382 +++++++++- 3 files changed, 11542 insertions(+), 132 deletions(-) diff --git a/sql_db_mag_pbi/mag_pbi_procedures.sql b/sql_db_mag_pbi/mag_pbi_procedures.sql index a679a9f..4630bad 100644 --- a/sql_db_mag_pbi/mag_pbi_procedures.sql +++ b/sql_db_mag_pbi/mag_pbi_procedures.sql @@ -1,7 +1,7 @@ USE [mag_pbi] GO -/****** Object: StoredProcedure [analytics].[create_forecast_loop] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[create_forecast_loop] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -58,7 +58,7 @@ CREATE procedure [analytics].[create_forecast_loop] as begin END GO -/****** Object: StoredProcedure [analytics].[create_seasonality_groups] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[create_seasonality_groups] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -176,7 +176,7 @@ BEGIN END GO -/****** Object: StoredProcedure [analytics].[sp_build_deficit_proposal] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[sp_build_deficit_proposal] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -608,7 +608,7 @@ BEGIN END GO -/****** Object: StoredProcedure [analytics].[sp_build_forecast_s4_by_group] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[sp_build_forecast_s4_by_group] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -787,7 +787,7 @@ BEGIN END GO -/****** Object: StoredProcedure [analytics].[sp_create_analytics_365] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[sp_create_analytics_365] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1587,7 +1587,7 @@ BEGIN END GO -/****** Object: StoredProcedure [analytics].[sp_fill_deficit_money_request] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[sp_fill_deficit_money_request] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1673,7 +1673,7 @@ DECLARE @rows INT = @@ROWCOUNT; PRINT CONCAT(N'analytics.sp_fill_deficit_money_request: внесено ', @rows, N' записей для scenario_id=', @scenario); GO -/****** Object: StoredProcedure [analytics].[sp_fill_seasonality_groups_summ_1] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[sp_fill_seasonality_groups_summ_1] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1772,7 +1772,7 @@ BEGIN END GO -/****** Object: StoredProcedure [analytics].[sp_load_koef_groups] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[sp_load_koef_groups] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1931,7 +1931,7 @@ ORDER BY END GO -/****** Object: StoredProcedure [analytics].[sp_rebuild_stock_plan_by_arrival] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[sp_rebuild_stock_plan_by_arrival] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -2101,7 +2101,7 @@ BEGIN END GO -/****** Object: StoredProcedure [analytics].[sp_recalc_roic] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[sp_recalc_roic] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -2150,7 +2150,7 @@ JOIN roic_calc r ON r.id = man.id; SELECT @@ROWCOUNT AS updated_count; GO -/****** Object: StoredProcedure [analytics].[sp_report_ROI] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[sp_report_ROI] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -2313,7 +2313,7 @@ BEGIN END GO -/****** Object: StoredProcedure [analytics].[sp_report_ROI_подробно] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[sp_report_ROI_подробно] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -2984,7 +2984,7 @@ SELECT * FROM #future_plan ORDER BY PeriodStart; END GO -/****** Object: StoredProcedure [analytics].[sp_run_deficit_all_skus] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[sp_run_deficit_all_skus] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -3005,7 +3005,7 @@ CREATE PROCEDURE [analytics].[sp_run_deficit_all_skus] END GO -/****** Object: StoredProcedure [analytics].[sp_загрузка_прогноза_закупки] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[sp_загрузка_прогноза_закупки] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -3145,7 +3145,7 @@ CREATE PROCEDURE [analytics].[sp_загрузка_прогноза_закупк END GO -/****** Object: StoredProcedure [analytics].[usp_CreateForecastBasesKs] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[usp_CreateForecastBasesKs] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -3331,7 +3331,7 @@ BEGIN END; GO -/****** Object: StoredProcedure [analytics].[usp_InsertForecasts] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[usp_InsertForecasts] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -3424,7 +3424,7 @@ BEGIN END; GO -/****** Object: StoredProcedure [analytics].[Подготовка таблицы продаж к прогнозу] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: StoredProcedure [analytics].[Подготовка таблицы продаж к прогнозу] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -3643,3 +3643,8109 @@ BEGIN CREATE INDEX IX_sales_weekly_features_cat ON analytics.sales_weekly_features(category_l1, week_start); END GO + +/****** Object: StoredProcedure [dbo].[sp_create_forecast_deficit_money_request_scenario_4] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE PROCEDURE sp_create_forecast_deficit_money_request_scenario_4 AS + BEGIN + --запускать только при изменении дат внутри процедуры + --EXEC [analytics].[sp_fill_seasonality_groups_summ_1]; + + DELETE FROM [mag_pbi].[analytics].[forecast] WHERE scenario_id = 4 + SELECT count(*) FROM [mag_pbi].[analytics].[forecast] WHERE scenario_id = 4 + + EXEC [analytics].[sp_fill_seasonality_groups_summ_1]; + EXEC [analytics].[create_forecast_loop] + SELECT count(*) FROM [mag_pbi].[analytics].[forecast] WHERE scenario_id = 4 + + EXEC [analytics].[sp_run_deficit_all_skus] @scenario_id = 4; + EXEC [analytics].[sp_fill_deficit_money_request] @scenario_id = 4; + END +GO + +/****** Object: StoredProcedure [dbo].[Расчет себестоимости 1 этап] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [dbo].[Расчет себестоимости 1 этап] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + -- Insert statements for procedure here + + exec sebest.[Заполнить себестоимость закупкой] + exec sebest.[Заполнить себестоимость начальным остатком] + + DELETE FROM [pbi].[СебестоимостьПродажи] + WHERE 1=1 + + + +END +GO + +/****** Object: StoredProcedure [pbi].[migrate_groups] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: миграция регистров ВыручкаИСебестоимость продаж из двух баз +-- ============================================= +CREATE PROCEDURE [pbi].[migrate_groups] +AS +BEGIN + DROP TABLE [pbi].groups + + + SELECT + * + INTO [pbi].groups + FROM [mag_pbi].[pbi].[groups_view] + + CREATE NONCLUSTERED INDEX [NonClusteredIndex-20190906-120551] ON [pbi].[groups] + ( + [group_id] ASC + )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + --GO + ALTER TABLE [mag_pbi].[pbi].groups ADD [план] float NULL; + ALTER TABLE [mag_pbi].[pbi].groups ADD [first group] NVARCHAR(36) NULL; + + UPDATE [mag_pbi].[pbi].groups set [first group] = + (SELECT group_id FROM [mag_pbi].[pbi].groups gg WHERE gg.g = g.g and gg._ParentIDRRef = '00000000-0000-0000-0000-000000000000' ) + FROM [mag_pbi].[pbi].groups g + + CREATE NONCLUSTERED INDEX IX_groups__g + ON [pbi].[groups] ([g]) + INCLUDE ([group_id]); + + --CREATE NONCLUSTERED INDEX [1c_group_index] + --ON [pbi].[nomenclature] ([1c_group]) + +END +GO + +/****** Object: StoredProcedure [pbi].[migrate_max_year_quantity] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: миграция регистров ВыручкаИСебестоимость продаж из двух баз +-- ============================================= +CREATE PROCEDURE [pbi].[migrate_nomenclature] +AS +BEGIN + + DROP TABLE IF EXISTS #dop + SELECT * INTO #dop + FROM( + SELECT * FROM mag_pbi.pbi.[значения доп реквизитов номенклатуры] + )as t + + CREATE NONCLUSTERED INDEX [NonClusteredIndex-1] ON #dop + (_Reference188_IDRRef, _Fld21137RRef) + + DROP table IF EXISTS pbi.nomenclature + SELECT * + INTO pbi.nomenclature + FROM( + + SELECT + LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),5,12) ))as artic_id + , n._IDRRef as '1c_id' + , n._Code as code + , CASE + WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Рублевая' + WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Валютная' + ELSE 'Неопределено' + END as cenovaya_gruppa + + , n._Description as description /*Наименование*/ + , n._Fld21043 as artic /*Артикул*/ + , n._Fld21053RRef as vid_nomen + , cast( (SELECT _Description FROM [MAG_2019].[dbo].[_Reference260] pr WHERE pr._IDRRef = n._Fld21079RRef) as nvarchar(max)) as 'Производитель' + , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),5,12) ))as group_id + + , n._ParentIDRRef as '1c_group' + --, isnull(us._Description, 'Менеджер') as [manager] + + , qr._Fld27045 as 'card' + , concat('https://media.magok.ru/', f._Fld21201) as 'photo' + , 2019 as base + , n._Fld21046 as [Знаменатель веса] + , n._Fld21049 as [Числитель веса] + , n._Fld21089 as [Знаменатель объема] + , n._Fld21092 as [Числитель объема] + , n._Fld33769 as [Количество упак в коробе] + , n._Fld33771 as [Количество упак в кванте] + , n._Fld33413 as [id magok] + + , (SELECT value FROM #dop where _Fld21137RRef = 0x810D0CC47A052DFD11E8C0B216664650 and _Reference188_IDRRef =n._IDRRef) as [Товарныйменеджера] + , (SELECT value FROM #dop where _Fld21137RRef = 0xAEA2B496910DCFD611E9DAEF699391C4 and _Reference188_IDRRef =n._IDRRef) as [МенеджерПоЗакупкам2] + , (SELECT value FROM #dop where _Fld21137RRef = 0xAEA2B496910DCFD611E9DAF2AF0FBF08 and _Reference188_IDRRef =n._IDRRef) as [РуководительНаправления] + , (SELECT value FROM #dop where _Fld21137RRef = 0x9980B49691D57EFD11EDA7A875968BE2 and _Reference188_IDRRef =n._IDRRef) as [Менеджер OZON] + , (SELECT value FROM #dop where _Fld21137RRef = 0xAEC4B496910DCFD611EC4E8357703C3A and _Reference188_IDRRef =n._IDRRef) as [Менеджер WB] + , (SELECT value FROM #dop where _Fld21137RRef = 0xAEACB496910DCFD611EA4980351CDD01 and _Reference188_IDRRef =n._IDRRef) as [АБС статус] + , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F011642C1217A0 and _Reference188_IDRRef =n._IDRRef) as [АБС план] + , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F0C4629BFA88FF and _Reference188_IDRRef =n._IDRRef) as [ABC Парето] + --, (SELECT value FROM #dop where _Fld21137RRef = 0x9987B49691D57EFD11EEFD8C032DF868 and _Reference188_IDRRef =n._IDRRef) as [АБС МП] + --, (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F08C910065CAE0 and _Reference188_IDRRef =n._IDRRef) as [ABC статус 12м 08.25] + --, (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F08C9141DE8102 and _Reference188_IDRRef =n._IDRRef) as [ABC статус 3м 08.25] + , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F078456358DE9B and _Reference188_IDRRef =n._IDRRef) as [XYZ статус 12м] + , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F0D41588B52E51 and _Reference188_IDRRef =n._IDRRef) as [Комментарий для матрицы] + --, (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F078466D61B354 and _Reference188_IDRRef =n._IDRRef) as [XYZ статус 3м] + , (SELECT value FROM #dop where _Fld21137RRef = 0x80C7305A3A00E12B11E5A300C980DC00 and _Reference188_IDRRef =n._IDRRef) as [Коллекция] + , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F037A75A7E983E and _Reference188_IDRRef =n._IDRRef) as [Ценовой сегмент Магок] + , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F037A7EA5402D7 and _Reference188_IDRRef =n._IDRRef) as [Ценовой сегмент МП] + , (SELECT value FROM #dop where _Fld21137RRef = 0x998DB49691D57EFD11F037A7C791FA85 and _Reference188_IDRRef =n._IDRRef) as [Кол-во упак в заказе Магок] + , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0x80F1305A3A00E12B11E63C4A303F49FB and _Reference188_IDRRef=n._IDRRef) as [Бренд] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5A30013708A94 and _Reference188_IDRRef=n._IDRRef) as [Тип товара] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80D00CC47A052DFD11E691F14188BF4D and _Reference188_IDRRef=n._IDRRef) as [Метка] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80E00CC47A052DFD11E7029264A93CF6 and _Reference188_IDRRef=n._IDRRef) as [Ширина, мм] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5A3008141292E and _Reference188_IDRRef=n._IDRRef) as [Цвет] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80E90CC47A052DFD11E72379276D8356 and _Reference188_IDRRef=n._IDRRef) as [Номер цвета] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0xAE9EB496910DCFD611E95F5710EB0448 and _Reference188_IDRRef=n._IDRRef) as [Тип шнура] + --, (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0xAE9EB496910DCFD611E95F5783A48B03 and _Reference188_IDRRef=n._IDRRef) as [Наполнитель] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0xAE9EB496910DCFD611E95F572768CAA7 and _Reference188_IDRRef=n._IDRRef) as [Тип плетения] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5A2717FE9DE3A and _Reference188_IDRRef=n._IDRRef) as [Размер] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5A3001EDD22AF and _Reference188_IDRRef=n._IDRRef) as [Особенность] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5A300C980DC01 and _Reference188_IDRRef=n._IDRRef) as [Форма] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5A300E8BE58AC and _Reference188_IDRRef=n._IDRRef) as [Ширина] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x997DB49691D57EFD11EC7F7E661783C3 and _Reference188_IDRRef=n._IDRRef) as [Формат упаковки] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5BAD05261251C and _Reference188_IDRRef=n._IDRRef) as [Макс. запас] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x80C7305A3A00E12B11E5BAD0706896DA and _Reference188_IDRRef=n._IDRRef) as [Мин. запас] + , (SELECT value FROM #dop r1 where r1._Fld21137RRef = 0x998CB49691D57EFD11EF9202AB464430 and _Reference188_IDRRef=n._IDRRef) as [QTY PACKS] + , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEA1B496910DCFD411E9B50C873C5A12 and _Reference188_IDRRef=n._IDRRef) as [Да/Нет Собственное пр-во] + , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0x997DB49691D57EFD11EC9644B479DD39 and _Reference188_IDRRef=n._IDRRef) as [ID OZON] + , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0x997DB49691D57EFD11EC8D98061ED9EB and _Reference188_IDRRef=n._IDRRef) as [ID WB] + , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEC2B496910DCFD611EBE86B75A98522 and _Reference188_IDRRef=n._IDRRef) as [WB] + , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEC3B496910DCFD611EC1BAAEA86F8FE and _Reference188_IDRRef=n._IDRRef) as [Ozon] + --, (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEC2B496910DCFD611EBE86B6E01B921 and _Reference188_IDRRef=n._IDRRef) as [FBS] + , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEC2B496910DCFD611EBE60A4FB56689 and _Reference188_IDRRef=n._IDRRef) as [СТМ] + , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEC2B496910DCFD611EBDE53817D5CA3 and _Reference188_IDRRef=n._IDRRef) as [Выгружать на я.маркет] + , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0xAEC2B496910DCFD611EBF5E566B4B9C7 and _Reference188_IDRRef=n._IDRRef) as [Выгружать в Google Merchant] + , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0x998BB49691D57EFD11EF646A898FFD9C and _Reference188_IDRRef=n._IDRRef) as [Товар МП] + , (SELECT value FROM #dop r2 where r2._Fld21137RRef = 0x997DB49691D57EFD11EC96300ACEF865 and _Reference188_IDRRef=n._IDRRef) as [Неликвид] + + + /* найти реквизит + select * from ( + SELECT _IDRref, _Fld17721 as _Description FROM [MAG_2019].[dbo].[_Chrc1109] + --UNION ALL + --SELECT _reference69_IDRRef, _Fld18673 as _Description FROM [MAG_2019].[dbo].[_Reference69_VT18669] + ) as t + where t._Description like '%ширина%' + */ + , (SELECT value FROM #dop r where r._Fld21137RRef = 0x80DB0CC47A052DFD11E6E88DD05808D1 and r._Reference188_IDRRef=n._IDRRef) as [Статус] + , (SELECT value FROM #dop r where r._Fld21137RRef = 0xAEBFB496910DCFD611EB9209C2655457 and r._Reference188_IDRRef=n._IDRRef) as [Сквозной цвет] + , (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE n._IDRRef = up._OwnerID_RRRef) as 'Базовая упаковка' + , rating.ozon as 'Качество контента Ozon' + , rating.wb as 'Качество контента WB' + , rating.wb_by_ozon as 'Качество контента WB by Ozon' + , rating.magok as 'Качество контента Magok' + , (select r._Description from [MAG_2019].[dbo].[_Reference69] /*виды ном*/ r WHERE r._IDRRef = n._Fld21053RRef) as [Вид номенклатуры] + + from + [mag_2019].[dbo]._Reference188X1 n /*номенклатура*/ + LEFT JOIN [mag_pbi].[pbi].[content_rating] rating /* Качество контента */ ON rating.code = n._Code + LEFT JOIN [mag_2019].[dbo].[_InfoRg27043X1] /* Регистр сведений QR коды */ qr ON qr._Fld27044RRef = n._IDRRef + LEFT JOIN [mag_2019].[dbo]._Reference191X1 f /*номенклатураПрисоедФайлы*/ + ON f._IDRRef = n._Fld21086RRef + WHERE n._Folder = 1 + + ) as nom_2019 + + ALTER TABLE mag_pbi.pbi.nomenclature + ADD max_year_quantity NUMERIC(38,3) NULL; + + ALTER TABLE mag_pbi.pbi.nomenclature + ADD max_quarter_quantity NUMERIC(38,3) NULL; + + ALTER TABLE [mag_pbi].[pbi].[nomenclature] ADD [Цена учетная, руб] DECIMAL(18,7) NULL; + ALTER TABLE [mag_pbi].[pbi].[nomenclature] ADD [Цена учетная, usd] DECIMAL(18,7) NULL; + + -- Шаг 1: CTE для отбора строк из 'Себестоимость' + WITH Закупки AS ( + SELECT + CAST(s.[Период] AS DATE) AS [Период], + s.[artic_id], + s.[Количество] AS [Кол-во закупка], + s.[Закупка] AS [Закуп.Закупка, руб], + s.[Закупка, usd2] AS [Закуп.Закупка, usd2], + s.[Доставка] AS [Закуп.Доставка, руб], + s.[Таможня] AS [Закуп.Таможня, руб], + s.[НДС] AS [Закуп.НДС, руб], + s.[Производство] AS [Закуп.Производство, руб], + s.[Доп расходы] AS [Закуп.Доп расходы, руб], + s.[Курс usd2] + FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s + WHERE s.[Вид операции] = 'Приход' + AND s.[Статья] IN ( + 'Закупка', + 'Ввод начальных остатков', + 'Производство товара', + 'Доставка контейнера ВЭД', + 'НДС', + 'Доп расходы' + ) + ), + + -- Шаг 2: Получить максимальную дату по каждому товару + МаксДата AS ( + SELECT + z.artic_id, + MAX(z.[Период]) AS LastKnowDate + FROM Закупки z + GROUP BY z.artic_id + ), + + -- Шаг 3: Вычисление последней закупочной цены + ПоследняяЦена AS ( + SELECT TOP (1) WITH TIES + z.artic_id, + z.[Период], + SUM(ISNULL(z.[Закуп.Закупка, руб],0) + ISNULL(z.[Закуп.Таможня, руб],0) + ISNULL(z.[Закуп.Доставка, руб],0) + + ISNULL(z.[Закуп.НДС, руб],0) + ISNULL(z.[Закуп.Производство, руб],0) - ISNULL(z.[Закуп.Доп расходы, руб],0) + ) AS [Сумма закупки, руб], + + SUM(ISNULL(z.[Закуп.Закупка, usd2],0) + ( + ISNULL(z.[Закуп.Таможня, руб],0) + ISNULL(z.[Закуп.Доставка, руб],0) + + ISNULL(z.[Закуп.НДС, руб],0) + ISNULL(z.[Закуп.Производство, руб],0) - + ISNULL(z.[Закуп.Доп расходы, руб],0)) / z.[Курс usd2] + ) AS [Сумма закупки, usd], + + SUM(z.[Кол-во закупка]) AS [Кол-во закупка] + + FROM Закупки z + INNER JOIN МаксДата m ON z.artic_id = m.artic_id AND z.[Период] <= m.LastKnowDate + GROUP BY z.artic_id, z.[Период] + ORDER BY ROW_NUMBER() OVER (PARTITION BY z.artic_id ORDER BY z.[Период] DESC) + ) + + -- Шаг 4: Обновление таблицы Номенклатура + UPDATE n + SET + n.[Цена учетная, руб] = + CASE + WHEN p.[Кол-во закупка] = 0 THEN 0 + ELSE p.[Сумма закупки, руб] * 1.0 / p.[Кол-во закупка] + END, + + n.[Цена учетная, usd] = + CASE + WHEN p.[Кол-во закупка] = 0 THEN 0 + ELSE p.[Сумма закупки, usd] * 1.0 / p.[Кол-во закупка] + END + + FROM [mag_pbi].[pbi].[nomenclature] n + INNER JOIN ПоследняяЦена p ON n.[artic_id] = p.artic_id + + + + + ------------ Ср. кв. отклонение ---------------------- + ALTER TABLE [mag_pbi].[pbi].[nomenclature] + ADD СредниеМесячныеПродажи FLOAT, + СКО_МесячныхПродаж FLOAT, + --minAvailableQty10 decimal(18,4) NULL, /* минимальный остаток = 10% от СредниеМесячныеПродажи*/ + minAvailableQty decimal(18,4) NULL; + + WITH MonthlySales AS ( + SELECT + [1c_id], + DATEFROMPARTS(YEAR([Период]), MONTH([Период]), 1) AS Месяц, + --FORMAT(Период, 'yyyy-MM') AS Месяц, /*этот код дает ошибку,делает дубли строк и дат внутри месяца, заменила*/ + SUM(КоличествоУпаковок) AS СуммаПродаж + FROM [pbiProd].[СводныйСебестоимость Для PBI] + WHERE + [Статья] = 'Реализация' + AND [Вид операции] = 'Расход' + AND [Период] >= DATEFROMPARTS(YEAR(DATEADD(MONTH, -12, GETDATE())), MONTH(DATEADD(MONTH, -12, GETDATE())), 1) + AND [Период] < DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1) /*добавила, нам нужно 12 полных месяцев*/ + GROUP BY [1c_id], DATEFROMPARTS(YEAR([Период]), MONTH([Период]), 1) --FORMAT(Период, 'yyyy-MM') + ), + Stats AS ( + SELECT + [1c_id], + AVG(ISNULL(СуммаПродаж, 0)) AS СредниеМесячныеПродажи, + STDEVP(ISNULL(СуммаПродаж, 0)) AS СКО_МесячныхПродаж + FROM MonthlySales + GROUP BY [1c_id] + ) + UPDATE n + SET + n.СредниеМесячныеПродажи = s.СредниеМесячныеПродажи, + n.СКО_МесячныхПродаж = s.СКО_МесячныхПродаж, + n.minAvailableQty = + CASE + WHEN s.СредниеМесячныеПродажи IS NULL + OR s.СредниеМесячныеПродажи = 0 + THEN 0.1 + WHEN s.СредниеМесячныеПродажи >= 100 + THEN 10 + ELSE s.СредниеМесячныеПродажи * 0.1 + END + + FROM [mag_pbi].[pbi].[nomenclature] n + LEFT JOIN Stats s ON n.[1c_id] = s.[1c_id]; + ------------------------------------------------------ +/* старый расчет минимального остатка + + ----- Минимальный доступный остаток, используется для определения есть товар на складе или нет ------------ + DECLARE @from_date date = '2024-01-01'; + DECLARE @N_min int = 20; -- минимальное число строк продаж, чтобы доверять перцентилю SKU + + /* === 0) Добавим колонку minAvailableQty, если её нет === */ + IF COL_LENGTH('[mag_pbi].[pbi].[nomenclature]', 'minAvailableQty') IS NULL + BEGIN + ALTER TABLE [mag_pbi].[pbi].[nomenclature] + ADD minAvailableQty decimal(18,4) NULL; + END + + /* === 1) Продажи: берём только фактический расход > 0 === */ + IF OBJECT_ID('tempdb..#sales') IS NOT NULL DROP TABLE #sales; + + SELECT + CAST(s.[Период] AS date) AS order_date, + CAST(s.[КоличествоУпаковок] AS decimal(18,4)) AS qty, + s.[1c_id] AS sku_id + INTO #sales + FROM [pbiProd].[СводныйСебестоимость Для PBI] s + WHERE + s.[Статья] = N'Реализация' + AND s.[Вид операции] = N'Расход' + AND s.[КоличествоУпаковок] > 0 + AND s.[Период] >= @from_date; + + /* === 2) Перцентиль P20 по SKU === */ + IF OBJECT_ID('tempdb..#sku_q') IS NOT NULL DROP TABLE #sku_q; + + WITH q AS ( + SELECT + sku_id, + PERCENTILE_CONT(0.20) WITHIN GROUP (ORDER BY qty) + OVER (PARTITION BY sku_id) AS q20_sku, + COUNT(*) OVER (PARTITION BY sku_id) AS n_lines + FROM #sales + ) + SELECT DISTINCT + sku_id, + q20_sku, + n_lines, + -- базовая нормализация: минимум 1 и округление вверх до целого + CAST(CASE + WHEN q20_sku IS NULL OR q20_sku < 1 THEN 1 + ELSE CEILING(q20_sku) + END AS decimal(18,4)) AS min_avail_sku + INTO #sku_q + FROM q; + + /* === 3) Категория 1-го уровня: берём 1-й сегмент из groups.path (без вьюх) === */ + IF OBJECT_ID('tempdb..#sku_catL1') IS NOT NULL DROP TABLE #sku_catL1; + + SELECT + n.[1c_id] AS sku_id, + -- первый сегмент до ' | ' или весь path, если разделителя нет + CAST(CASE + WHEN CHARINDEX(N' | ', g.path) > 0 + THEN LEFT(g.path, CHARINDEX(N' | ', g.path) - 1) + ELSE g.path + END AS nvarchar(200)) AS category_l1 + INTO #sku_catL1 + FROM [mag_pbi].[pbi].[nomenclature] n + JOIN [mag_pbi].[pbi].[groups] g + ON g.group_id = n.group_id; + + /* === 4) Перцентиль P20 по категории 1-го уровня (фолбэк) === */ + IF OBJECT_ID('tempdb..#cat_q') IS NOT NULL DROP TABLE #cat_q; + + WITH sales_cat AS ( + SELECT + c.category_l1, + s.qty + FROM #sales s + JOIN #sku_catL1 c + ON c.sku_id = s.sku_id + ), + qcat AS ( + SELECT + category_l1, + PERCENTILE_CONT(0.20) WITHIN GROUP (ORDER BY qty) + OVER (PARTITION BY category_l1) AS q20_cat, + COUNT(*) OVER (PARTITION BY category_l1) AS n_lines_cat + FROM sales_cat + ) + SELECT DISTINCT + category_l1, + q20_cat, + n_lines_cat, + CAST(CASE + WHEN q20_cat IS NULL OR q20_cat < 1 THEN 1 + ELSE CEILING(q20_cat) + END AS decimal(18,4)) AS min_avail_cat + INTO #cat_q + FROM qcat; + + /* === 5) Выбор порога: если по SKU достаточно строк — берём SKU, иначе — по категории === */ + IF OBJECT_ID('tempdb..#final_min') IS NOT NULL DROP TABLE #final_min; + + SELECT + n.[1c_id] AS sku_id, + COALESCE( + CASE WHEN q.n_lines >= @N_min AND q.min_avail_sku IS NOT NULL + THEN q.min_avail_sku END, + cq.min_avail_cat, -- фолбэк по категории + CAST(1 AS decimal(18,4)) -- на крайний случай + ) AS min_avail_final + INTO #final_min + FROM [mag_pbi].[pbi].[nomenclature] n + LEFT JOIN #sku_q q + ON q.sku_id = n.[1c_id] + LEFT JOIN #sku_catL1 c + ON c.sku_id = n.[1c_id] + LEFT JOIN #cat_q cq + ON cq.category_l1 = c.category_l1; + + /* === 6) Обновляем поле в номенклатуре === */ + UPDATE n + SET n.minAvailableQty = f.min_avail_final + FROM [mag_pbi].[pbi].[nomenclature] n + JOIN #final_min f + ON f.sku_id = n.[1c_id]; */ + + + ------------------------------------------- + + + + CREATE NONCLUSTERED INDEX [NonClusteredIndex-20190908-132726] ON [pbi].nomenclature + ( + [group_id] ASC + )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + --GO + + CREATE NONCLUSTERED INDEX [NonClusteredIndex-20190908-132728] ON [pbi].nomenclature + ( + [code] ASC + )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + --GO + + CREATE CLUSTERED INDEX [ClusteredIndex-20210315-180007] ON [pbi].[nomenclature] + ( + [1c_id] ASC + )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + + + DROP TABLE IF EXISTS #dop + +END +GO + +/****** Object: StoredProcedure [pbi].[migrate_ostatki] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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_calc_ostatki_mp_2025] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE PROCEDURE [pbi].[sp_calc_ostatki_mp_2025] +AS +BEGIN + SET NOCOUNT ON; + + ------------------------------------------------------------------------- + -- 1. Очистка таблицы + TRUNCATE TABLE pbi.ostatki_mp_2025_interpolated; + + ------------------------------------------------------------------------- + -- 2. Удаляем старые индексы + IF EXISTS (SELECT 1 FROM sys.indexes + WHERE name = 'IX_ostatki_mp_daily_artic_date' + AND object_id = OBJECT_ID('pbi.ostatki_mp_2025_interpolated')) + DROP INDEX IX_ostatki_mp_daily_artic_date ON pbi.ostatki_mp_2025_interpolated; + + IF EXISTS (SELECT 1 FROM sys.indexes + WHERE name = 'IX_ostatki_mp_daily_uzel_date' + AND object_id = OBJECT_ID('pbi.ostatki_mp_2025_interpolated')) + DROP INDEX IX_ostatki_mp_daily_uzel_date ON pbi.ostatki_mp_2025_interpolated; + + ------------------------------------------------------------------------- + -- 3. Интерполяция Январь–Октябрь + ;WITH BaseData AS ( + SELECT + CAST(DATEADD(YEAR,-2000, ost._Fld33596) AS DATE) AS Дата, + nod._Description AS Узел, + ost._Fld33595 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, + ost._Fld33599 AS id_внешний, + ost._Fld33602 AS Qty, + ost._Fld33603 AS AvailQty, + ISNULL(up.upakovka,1) AS upakovka + FROM [MAG_2019].[dbo].[_InfoRg28682X1] ost + LEFT JOIN [MAG_2019].[dbo].[_Node28072X1] nod + ON nod._IDRRef = ost._Fld28684RRef + LEFT JOIN ( + SELECT _OwnerID_RRRef, MAX(upakovka) AS upakovka + FROM mag_pbi.pbi.[БазоваяУпаковка] + GROUP BY _OwnerID_RRRef + ) up + ON up._OwnerID_RRRef = ost._Fld28683RRef + WHERE CAST(DATEADD(YEAR,-2000, ost._Fld33596) AS DATE) + BETWEEN '2025-01-01' AND '2025-10-31' +), + +-- Остатки на конец месяца +MonthBalancesRaw AS ( + SELECT + Узел, Склад, artic_id, id_внешний, + EOMONTH(Дата) AS MonthEnd, + MAX(Qty) AS Qty, + MAX(AvailQty) AS AvailQty, + MAX(Qty*upakovka) AS PackQty + FROM BaseData + GROUP BY Узел, Склад, artic_id, id_внешний, EOMONTH(Дата) +), + +-- Календарь месяцев 2025 (1–10) +Months AS ( + SELECT + DATEFROMPARTS(2025, m.MonthNum, 1) AS MonthStart, + EOMONTH(DATEFROMPARTS(2025, m.MonthNum, 1)) AS MonthEnd + FROM (VALUES + (1),(2),(3),(4),(5), + (6),(7),(8),(9),(10) + ) m(MonthNum) +), + +-- Список всех товаров +Products AS ( + SELECT DISTINCT Узел, Склад, artic_id, id_внешний + FROM BaseData +), + +-- Полная сетка товар × месяц +MonthGrid AS ( + SELECT p.*, m.MonthStart, m.MonthEnd + FROM Products p + CROSS JOIN Months m +), + +-- Подтягиваем реальные остатки (если нет — 0) +MonthBalances AS ( + SELECT + g.Узел, + g.Склад, + g.artic_id, + g.id_внешний, + g.MonthStart, + g.MonthEnd, + ISNULL(r.Qty,0) AS Qty, + ISNULL(r.AvailQty,0) AS AvailQty, + ISNULL(r.PackQty,0) AS PackQty + FROM MonthGrid g + LEFT JOIN MonthBalancesRaw r + ON r.Узел = g.Узел + AND r.Склад = g.Склад + AND r.artic_id = g.artic_id + AND r.id_внешний = g.id_внешний + AND r.MonthEnd = g.MonthEnd +), + +-- Теперь LAG берёт строго предыдущий календарный месяц +WithPrev AS ( + SELECT *, + ISNULL(LAG(Qty) OVER ( + PARTITION BY Узел, Склад, artic_id, id_внешний + ORDER BY MonthEnd + ),0) AS PrevQty, + + ISNULL(LAG(AvailQty) OVER ( + PARTITION BY Узел, Склад, artic_id, id_внешний + ORDER BY MonthEnd + ),0) AS PrevAvail, + + ISNULL(LAG(PackQty) OVER ( + PARTITION BY Узел, Склад, artic_id, id_внешний + ORDER BY MonthEnd + ),0) AS PrevPack + FROM MonthBalances +), + +-- Подготовка к интерполяции +Prepared AS ( + SELECT *, + DATEDIFF(DAY, MonthStart, MonthEnd) + 1 AS DaysInMonth + FROM WithPrev +) + +-- Интерполяция по дням +INSERT INTO pbi.ostatki_mp_2025_interpolated +( + Дата, Узел, Склад, artic_id, id_внешний, + [Остаток МП, шт], + [Доступно МП, упак], + [Остаток МП, упак] +) +SELECT + DATEADD(DAY, v.number, MonthStart) AS Дата, + Узел, Склад, artic_id, id_внешний, + + PrevQty + ((Qty - PrevQty) * (v.number + 1)) / DaysInMonth, + PrevAvail + ((AvailQty - PrevAvail) * (v.number + 1)) / DaysInMonth, + PrevPack + ((PackQty - PrevPack) * (v.number + 1)) / DaysInMonth + +FROM Prepared +CROSS APPLY ( + SELECT n AS number + FROM ( + SELECT ones.n + tens.n*10 AS n + FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n) + CROSS JOIN (VALUES (0),(1),(2),(3)) tens(n) + ) numbers + WHERE n < DaysInMonth +) v + + ------------------------------------------------------------------------- + -- 4. Интерполяция ноября 1–18 + + ;WITH OctoberEnd AS ( + SELECT + nod._Description AS Узел, + ost._Fld33595 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, + ost._Fld33599 AS id_внешний, + MAX(ost._Fld33602) AS PrevQty, + MAX(ost._Fld33603) AS PrevAvail, + MAX(ost._Fld33602 * ISNULL(up.upakovka,1)) AS PrevPack + FROM [MAG_2019].[dbo].[_InfoRg28682X1] ost + LEFT JOIN [MAG_2019].[dbo].[_Node28072X1] nod + ON nod._IDRRef = ost._Fld28684RRef + LEFT JOIN ( + SELECT _OwnerID_RRRef, MAX(upakovka) AS upakovka + FROM mag_pbi.pbi.[БазоваяУпаковка] + GROUP BY _OwnerID_RRRef + ) up + ON up._OwnerID_RRRef = ost._Fld28683RRef + WHERE CAST(DATEADD(YEAR,-2000, ost._Fld33596) AS DATE) = '2025-10-31' + GROUP BY + nod._Description, + ost._Fld33595, + ost._Fld28683RRef, + ost._Fld33599 +), + +November19 AS ( + SELECT + nod._Description AS Узел, + ost._Fld33595 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, + ost._Fld33599 AS id_внешний, + ost._Fld33602 AS Qty19, + ost._Fld33603 AS Avail19, + ost._Fld33602 * ISNULL(up.upakovka,1) AS Pack19 + FROM [MAG_2019].[dbo].[_InfoRg28682X1] ost + LEFT JOIN [MAG_2019].[dbo].[_Node28072X1] nod + ON nod._IDRRef = ost._Fld28684RRef + LEFT JOIN ( + SELECT _OwnerID_RRRef, MAX(upakovka) AS upakovka + FROM mag_pbi.pbi.[БазоваяУпаковка] + GROUP BY _OwnerID_RRRef + ) up + ON up._OwnerID_RRRef = ost._Fld28683RRef + WHERE CAST(DATEADD(YEAR,-2000, ost._Fld33596) AS DATE) = '2025-11-19' +) + +INSERT INTO pbi.ostatki_mp_2025_interpolated +( + Дата, Узел, Склад, artic_id, id_внешний, + [Остаток МП, шт], + [Доступно МП, упак], + [Остаток МП, упак] +) +SELECT + DATEADD(DAY, d.number, CAST('2025-11-01' AS DATE)) AS Дата, + n.Узел, + n.Склад, + n.artic_id, + n.id_внешний, + + ISNULL(o.PrevQty,0) + + ((n.Qty19 - ISNULL(o.PrevQty,0)) * (d.number + 1)) / 18.0, + + ISNULL(o.PrevAvail,0) + + ((n.Avail19 - ISNULL(o.PrevAvail,0)) * (d.number + 1)) / 18.0, + + ISNULL(o.PrevPack,0) + + ((n.Pack19 - ISNULL(o.PrevPack,0)) * (d.number + 1)) / 18.0 + +FROM November19 n +LEFT JOIN OctoberEnd o + ON o.Узел = n.Узел + AND o.Склад = n.Склад + AND o.artic_id = n.artic_id + AND o.id_внешний = n.id_внешний + +CROSS JOIN ( + VALUES + (0),(1),(2),(3),(4),(5),(6),(7),(8), + (9),(10),(11),(12),(13),(14),(15),(16),(17) +) AS d(number); + + ------------------------------------------------------------------------- + -- 5. Остатки с 19.11.2025 по 31.12.2025 напрямую + INSERT INTO pbi.ostatki_mp_2025_interpolated + (Дата, Узел, Склад, artic_id, id_внешний, [Остаток МП, шт], [Доступно МП, упак], [Остаток МП, упак]) + SELECT + CAST(DATEADD(YEAR,-2000, ost._Fld33596) AS DATE) AS Дата, + nod._Description AS Узел, + ost._Fld33595 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, + ost._Fld33599 AS id_внешний, + ost._Fld33602 AS [Остаток МП, шт], + ost._Fld33603 AS [Доступно МП, упак], + ost._Fld33602 * ISNULL(up.upakovka,1) AS [Остаток МП, упак] + FROM [MAG_2019].[dbo].[_InfoRg28682X1] ost + LEFT JOIN [MAG_2019].[dbo].[_Node28072X1] nod + ON nod._IDRRef = ost._Fld28684RRef + LEFT JOIN ( + SELECT _OwnerID_RRRef, MAX(upakovka) AS upakovka + FROM mag_pbi.pbi.[БазоваяУпаковка] + GROUP BY _OwnerID_RRRef + ) up + ON up._OwnerID_RRRef = ost._Fld28683RRef + WHERE CAST(DATEADD(YEAR,-2000, ost._Fld33596) AS DATE) BETWEEN '2025-11-19' AND '2025-12-31'; + + ------------------------------------------------------------------------- + -- 6. Удаляем пустые строки + DELETE FROM pbi.ostatki_mp_2025_interpolated + WHERE [Остаток МП, шт] = 0; + + ------------------------------------------------------------------------- + -- 7. Создаем индексы заново + CREATE CLUSTERED INDEX IX_ostatki_mp_daily_artic_date + ON pbi.ostatki_mp_2025_interpolated (artic_id, Дата); + + CREATE NONCLUSTERED INDEX IX_ostatki_mp_daily_uzel_date + ON pbi.ostatki_mp_2025_interpolated (Узел, Дата); + +END +GO + +/****** Object: StoredProcedure [pbi].[sp_nomenclature_full_page] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Заполнить себестоимостьОт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: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [sebest].[Заполнить себестоимостьОт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: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbi].[Обновить себестоимость] + @full_update bit = 0 +AS +BEGIN + -- DECLARE @full_update bit = 1 + DECLARE @dt datetime2 = '2015-01-01' + DECLARE @full_update_local_var bit = 0 + + --полностью обновляем таблицу в воскресенье + IF ( SELECT DATEPART(WEEKDAY, GETDATE()) )= 7 OR @full_update = 1 OR format(getdate(), 'yyyy-MM-dd') = '2023-07-29'--( SELECT DAY(CURRENT_TIMESTAMP) )= 1 OR @full_update = 1 + SET @full_update_local_var = 1 + + SELECT @full_update_local_var + + + IF @full_update_local_var = 1 + BEGIN + DROP TABLE IF EXISTS pbi.[Себестоимость] --таблицу удаляем, чтобы удалить индексы. так быстрее вставлять большие массивы данных + EXEC [sebest].[Создать таблицу] + END + ELSE BEGIN + SET @dt = (select DATEADD(MONTH, -1, GETDATE())) + END + + --В этой процедуре создается таблица, в ней же очищается таблица себестоимость начиная с даты @dt + exec sebest.[Заполнить себестоимость закупкой] @dt-- Добавляем закупку + + exec sebest.[Заполнить себестоимость начальным остатком] @dt-- Добавляем начальные остатки + + /* поменял процедуру только на копирование регистра Выручка и Себестоимость продаж */ + exec sebest.[Заполнить себестоимость продажей] @dt -- Добавляем продажи + + exec [sebest].[Заполнить себестоимость комплектующими] @dt + exec sebest.[Заполнить себестоимость комплектами] @dt -- Добавляем все движения по фасовке + + IF @full_update_local_var = 1--( SELECT DAY(CURRENT_TIMESTAMP) )= 1 OR @full_update = 1 + exec sebest.[Создать индексы] + + --Записываем две колонки с курсом usd2+2 и usd + UPDATE mag_pbi.pbi.[Себестоимость] SET + [Курс usd2] = ( + SELECT TOP 1 _Fld13220/_Fld13221 FROM [mag_2019].[dbo].[_InfoRg13218] k--РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND DATEADD(year, -2000, k._Period) <= [Период] + ORDER BY k._Period desc) + , + [Курс usd] = ( + SELECT TOP 1 _Fld13220/_Fld13221 FROM [mag_2019].[dbo].[_InfoRg13218] k--РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND DATEADD(year, -2000, k._Period) <= [Период] + ORDER BY k._Period desc) + WHERE [Период]>=@dt + + --записываем закупочную цену в usd2 из рублей, кроме тех, у кого валюта документа usd2 + UPDATE mag_pbi.pbi.[Себестоимость] SET [Закупка, usd2] = [Закупка]/[Курс usd2] + WHERE [Валюта документа]<>'USD2' AND [Статья] = 'Закупка' AND [Вид операции]<>'Продажа' + AND [Период]>=@dt + + /* это главная процедура расчета себестоимости. Выполняется очень долго, каждое вс пересчитывает полностью весь регистр, каждый день считает только посл. 1 месяц*/ + exec [sebest].[Расчет себестомисти] @dt, 0 -- запуск не для коплектов, только комплектующие + + + --exec [sebest].[Проставить стоимость комплектов] @dt + --exec [sebest].[Расчет себестомисти] @dt, 1 -- второй проход для комплектующих + + + + UPDATE mag_pbi.pbi.[Себестоимость] SET [Учетная цена, новое] = CASE WHEN [Количество] <> 0 THEN [закупка] / [Количество] ELSE 0 END + WHERE 1=1--[Статья] = 'Закупка' AND [Вид операции]='Продажа' + AND [Период]>=@dt + + + --exec sebest.[Заполнить себестоимость курсовой разницей] -- Добавляем курсовую разницу + /* + 0x80CD002590EC174111E581505088A8D5 USD + 0x80D40CC47A052DFD11E6B6DD1820D178 Eur + 0x80E90CC47A052DFD11E7145927CEFC24 Cny + 0xAE9DB496910DCFD611E94F10743DE3FF USD2 + 0xAE9EB496910DCFD611E95C66B5DE3AFA USD2+2 + */ +END +/* + -- Продажу считаем по внутреннему курсу + /*UPDATE mag_pbi.pbi.[Себестоимость] SET [Курс usd2] = ( + SELECT TOP 1 _Fld13220 FROM [mag_2019].[dbo].[_InfoRg13218] k--РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND DATEADD(year, -2000, k._Period) <= [Период] + ORDER BY k._Period desc) + WHERE [Статья] = 'Закупка' AND [Вид операции]='Продажа' + AND [Период]>=@dt + */ + + + --DECLARE @dt datetime2 = '2015-01-01' + --подставляем старое значение учетной цены + UPDATE mag_pbi.pbi.[Себестоимость] SET [Учетная цена, старое] = ( + isnull( + (SELECT top 1 its.[_Fld27138] / 1000 FROM [mag_2019].[dbo].[_InfoRg27129X1] its -- РегистрСведений.ITS_ОсновнойОтчет + WHERE its._Fld27130RRef = [1C_id] AND its.[_Fld27138] > 0 + and datediff(month, DATEADD(year, -2000, its._Period), [Период]) >= 0 + ORDER BY its._period desc) , + (SELECT TOP (1) [Цена]/1000 + FROM [mag_reports].[sales].[pricelist] p + where p.[1c_id] = [1c_id] and [Вид цены] = 'Учетная цена (руб)' + ORDER BY _Period desc) + ) + ) + WHERE [Статья] = 'Закупка' AND [Вид операции]='Продажа' + AND [Период]>=@dt +*/ +GO + +/****** Object: StoredProcedure [pbi].[РасчетСебестоимостиОт2022] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE РасчетСебестоимостиОт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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[ЗаполнитьСебестоимостьСводныйОт2022] + -- Add the parameters for the stored procedure here + +AS +BEGIN + + DELETE FROM mag_pbi.[pbiProd].[СебестоимостьСводныйОт2022] WHERE 1=1 + + DBCC CHECKIDENT ('[pbiProd].[СебестоимостьСводныйОт2022]', RESEED, 0); + + INSERT INTO mag_pbi.[pbiProd].[СебестоимостьСводныйОт2022] ( + [Период] + ,[Статья] + ,[Вид операции] + ,[Хоз операция] + ,[Организация] + ,[Партнер] + ,[PartnerId] + ,[Контрагент] + ,[Менеджер] + ,[Тип документа] + ,[Номер документа] + ,[Валюта документа] + ,[Ценовая группа] + ,[1c_document_id] + ,[1c_id] + ,[artic_id] + ,[Количество] + ,[Сумма] + ,[СуммаБезНДС] + ,[СуммаРучнойСкидки] + ,[СуммаАвтоСкидки] + ,[Закупка] + ,[Закупка, usd2] + ,[Курс usd2] + ,[Курс usd] + ,[Таможня] + ,[Учетная цена] + ,[Учетная цена USD2+2] + ,[Учетная стоимость] + ,[Учетная стоимость USD2+2] + ,[Заказ закрыт] + ,[Номер заказа] + ,[Доставка] + ,[НДС] + ,[Производство] + ,[Code] + ,[ЗатратыСкладХранение] + ,[Приемка] + ,[АтсМаркировка] + ,[ВремяВыполненияМинут] + ,[СборкаЗаказа] + ,[КоличествоУпаковок] + ,[Сумма скидки] + ,[Сумма скидки USD2+2] + ,[Доп расходы] + ,[Доп расходы USD2+2] + ) + + SELECT -- TOP (100) + [Период] + ,[Статья] + ,[Вид операции] + ,[Хоз операция] + ,[Организация] + ,[Партнер] + ,[PartnerId] + ,[Контрагент] + ,[Менеджер] + ,[Тип документа] + ,[Номер документа] + ,[Валюта документа] + ,[Ценовая группа] + ,[1c_document_id] + ,ss.[1c_id] + ,ss.[artic_id] + ,[Количество] + ,[Сумма] + ,[СуммаБезНДС] + ,[СуммаРучнойСкидки] + ,[СуммаАвтоСкидки] + ,[Закупка] + ,[Закупка, usd2] + ,[Курс usd2] + ,[Курс usd] + ,[Таможня] + ,[Учетная цена] + ,[Учетная цена USD2+2] + ,[Учетная стоимость] + ,[Учетная стоимость USD2+2] + ,[Заказ закрыт] + ,[Номер заказа] + ,[Доставка] + ,[НДС] + ,[Производство] + ,nom.[code] + ,[ЗатратыСкладХранение] + ,[Приемка] + ,[АтсМаркировка] + ,[ВремяВыполненияМинут] + ,[СборкаЗаказа] + ,[Количество] / CASE WHEN ISNULL(nom.[Базовая упаковка], 1) = 0 THEN + 1 + else + ISNULL(nom.[Базовая упаковка], 1) + END as [КоличествоУпаковок] + , [СуммаРучнойСкидки] + [СуммаАвтоСкидки] as [Сумма скидки] + , ([СуммаРучнойСкидки] + [СуммаАвтоСкидки]) / [Курс usd2] as [Сумма скидки USD2+2] + ,[Доп расходы] + ,[Доп расходы USD2+2] + FROM [mag_pbi].[pbiProd].[СводныйСебестоимость] as ss + LEFT JOIN [mag_pbi].[pbi].[nomenclature] as nom + on nom.artic_id = ss.artic_id + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(АтсМаркировка)] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(АтсМаркировка)] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + DECLARE @dtStart dateTime2; + DECLARE @dtEnd datetime2; + DECLARE @dtSqlStart dateTime2; + DECLARE @dtSqlEnd datetime2; + SET @dtStart = '2022-01-01' + SET @dtEnd= '2030-01-01' + SET @dtSqlStart = '4022-01-01' + SET @dtSqlEnd= '4030-01-01' + + + INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] + ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] , [Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], + [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] + ) + + + +SELECT -- top (1000) + [Период] + , [Статья] + , [Вид операции] + , [Хоз операция] + , [тип документа] + , [Номер документа] + , [Номер заказа] + , [Валюта документа] + , [Ценовая группа] + , [1c_document_id] + , [Организация] + , [Партнер] + , [PartnerId] + , [Контрагент] + , [Менеджер] + , [1c_id] + , [artic_id] + , [Курс usd] + , [Курс usd2] + , [Количество] + , [Сумма] + , [СуммаБезНДС] + , [СуммаРучнойСкидки] + , [СуммаАвтоСкидки] + , [Закупка] + , [Закупка, usd2] + , [Таможня] + , [ЕАЭС] + , [Доставка] + , [Производство] + , [ЗатратыМП] + , [НДС] + , [ЗатратыСкладХранение] + , [ЗатратыСкладЗарплата] + , [Приемка] + , [АтсМаркировка] + , [ВремяВыполненияМинут] + , [СборкаЗаказа] + , [Доставка USD2+2] + , [НДС USD2+2] + , [Таможня USD2+2] + , [Производство USD2+2] + + FROM ( + + -- \\\\\\\\\\\\\\\\\\\\ АТС МАРКИРОВКА \\\\\\\\\\\\\\\ + + SELECT -- TOP (1000) + + DATEADD(year, -2000, tabAts.[Период]) as [Период] + , 'Атс маркировка' as [Статья] + , 'Приход' as [Вид операции] + , Null as [Хоз операция] + , 'Атс Маркировка товара' as [тип документа] + , AtsMark._Number as [Номер документа] + , '' as [Номер заказа] + , 'Руб' as [Валюта документа] -- Валюта документа + , 'Руб' as [Ценовая группа] + , tabAts.atsRef as [1c_document_id] + , Null as [Организация] -- Организация + , Null as [Партнер] -- партнер + , Null as [PartnerId] + , Null as [Контрагент] -- контрагент + , Null as [Менеджер] -- Менеджер + , tabAts.nom AS [1c_id] -- Номенклатура + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), tabAts.nom, 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), tabAts.nom, 2),21,4),'-',SUBSTRING(convert(nvarchar(36), tabAts.nom, 2),17,4),'-',SUBSTRING(convert(nvarchar(36), tabAts.nom, 2),1,4),'-',SUBSTRING(convert(nvarchar(36), tabAts.nom, 2),5,12))) as [artic_id] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= tabAts.[Период] + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND _Period <= tabAts.[Период] + ORDER BY _Period desc ) as [Курс usd2] + , CAST(tabAts._Fld33656 as decimal(10,3)) as [Количество] -- Количество + , Null as [Сумма] + , Null as [СуммаБезНДС] + , Null as [СуммаРучнойСкидки] + , Null as [СуммаАвтоСкидки] + , Null as [Закупка] + , Null as [Закупка, usd2] + , Null as [Таможня] + , Null as [ЕАЭС] + , Null as [Доставка] -- доставка + , Null as [Производство] -- Сборка + , Null as [ЗатратыМП] -- Затраты мп + , Null as [НДС] + , Null as [ЗатратыСкладХранение] -- Затраты склад хранение + , Null as [ЗатратыСкладЗарплата] -- Затраты склад зарплата + , Null as Приемка + , tabAts.АтсМаркировка / 1000 AS [АтсМаркировка] + , CASE + WHEN DAY(AtsMark._Fld27693) <> DAY(AtsMark._Fld27694) THEN + (((20 - DATEPART(HOUR, AtsMark._Fld27693)) * 60 - DATEPART(MINUTE, AtsMark._Fld27693) - DATEPART(SECOND, AtsMark._Fld27693) / 60.0) + + ((DATEDIFF(DAY, AtsMark._Fld27693, AtsMark._Fld27694) - 1) * 12 * 60) + + ((DATEPART(HOUR, AtsMark._Fld27694) - 8) * 60 + DATEPART(MINUTE, AtsMark._Fld27694) + DATEPART(SECOND, AtsMark._Fld27694) / 60.0)) / SUM(tabAts._Fld33656) OVER (PARTITION BY tabAts.atsRef) * tabAts._Fld33656 + ELSE + (DATEDIFF(MINUTE, AtsMark._Fld27693, AtsMark._Fld27694)) / SUM(tabAts._Fld33656) OVER (PARTITION BY tabAts.atsRef) * tabAts._Fld33656 + END as [ВремяВыполненияМинут] + , Null as [СборкаЗаказа] + , Null as [Доставка USD2+2] + , Null as [НДС USD2+2] + , Null as [Таможня USD2+2] + , Null as [Производство USD2+2] + +FROM ( + SELECT + rnRaboti.[_Period] AS [Период], + rnRaboti.[_RecorderRRef] AS atsRef, + rnRaboti.[_Fld33653RRef] AS nom, -- Номенклатура + SUM(rnRaboti.[_Fld33658]) / 1000 AS [АтсМаркировка], + SUM(rnRaboti._Fld33656) AS [_Fld33656] + FROM [MAG_2019].[dbo].[_AccumRg33652] AS rnRaboti + WHERE 1 = 1 + AND rnRaboti.[_RecorderTRef] = 0x00006C28 + GROUP BY + rnRaboti.[_Period], + rnRaboti.[_RecorderRRef], + rnRaboti.[_Fld33653RRef] +) AS tabAts +INNER JOIN [MAG_2019].[dbo].[_Document27688] AS AtsMark + ON AtsMark.[_IDRRef] = tabAts.atsRef + AND AtsMark._Posted = 0x01 + AND AtsMark._Fld27694 >= @dtStart +WHERE 1 = 1 + and tabAts.[Период] >= @dtSqlStart + + + +) as tabPriemka + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(ДопРасходы)] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(ДопРасходы)] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + DECLARE @dtStart dateTime2; + DECLARE @dtEnd datetime2; + DECLARE @dtSqlStart dateTime2; + DECLARE @dtSqlEnd datetime2; + SET @dtStart = '2022-01-01' + SET @dtEnd= '2030-01-01' + SET @dtSqlStart = '4022-01-01' + SET @dtSqlEnd= '4030-01-01' + + + INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] + ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] , [Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], + [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] + , [Доп расходы], [Доп расходы USD2+2] + ) + + + +SELECT -- top (1000) + [Период] + , [Статья] + , [Вид операции] + , [Хоз операция] + , [тип документа] + , [Номер документа] + , [Номер заказа] + , [Валюта документа] + , [Ценовая группа] + , [1c_document_id] + , [Организация] + , [Партнер] + , [PartnerId] + , [Контрагент] + , [Менеджер] + , [1c_id] + , [artic_id] + , [Курс usd] + , [Курс usd2] + , [Количество] + , [Сумма] + , [СуммаБезНДС] + , [СуммаРучнойСкидки] + , [СуммаАвтоСкидки] + , [Закупка] + , [Закупка, usd2] + , [Таможня] + , [ЕАЭС] + , [Доставка] + , [Производство] + , [ЗатратыМП] + , [НДС] + , [ЗатратыСкладХранение] + , [ЗатратыСкладЗарплата] + , [Приемка] + , [АтсМаркировка] + , [ВремяВыполненияМинут] + , [СборкаЗаказа] + , [Доставка USD2+2] + , [НДС USD2+2] + , [Таможня USD2+2] + , [Производство USD2+2] + , [Доп расходы] as [Доп расходы] + , [Доп расходы] / [Курс usd2] as [Доп расходы USD2+2] + + FROM ( +-- \\\\\\\\\\\\\\\\\\\\\\\\\\\\ ДОП РАСХОДЫ \\\\\\\\\\\\\\\\ +SELECT --TOP (1) + + DATEADD(year, -2000, refPTU.[_Date_Time]) as [Период] + , 'Доп расходы' as [Статья] + , 'Приход' as [Вид операции] + , Null as [Хоз операция] + , 'ПТУ' as [тип документа] + , Null as [Номер документа] + , Null as [Номер заказа] + , val._Description as [Валюта документа] + , CASE + WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' + WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' + ELSE 'Неопределено' + END as [Ценовая группа] + , _Fld33630RRef as [1c_document_id] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = refPTU.[_Fld7121RRef] ) as [Организация] + , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = refPTU.[_Fld7060RRef]) as [Партнер] + , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),5,12) ))as PartnerId + , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = refPTU.[_Fld7064RRef]) as [Контрагент] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = refPTU.[_Fld7067RRef]) as [Менеджер] + , [_Fld33631RRef] as [1c_id] + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),5,12))) as [artic_id] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= refPTU.[_Date_Time] + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND _Period <= refPTU.[_Date_Time] + ORDER BY _Period desc ) as [Курс usd2] + , Null as [Количество] + , Null as [Сумма] + , Null as [СуммаБезНДС] + , Null as [СуммаРучнойСкидки] + , Null as [СуммаАвтоСкидки] + , Null as [Закупка] + , Null as [Закупка, usd2] + , Null as [Таможня] + , Null as [ЕАЭС] + , Null as [Доставка] + , Null as [Производство] + , Null as [ЗатратыМП] + , Null as [НДС] + , Null as [ЗатратыСкладХранение] + , Null as [ЗатратыСкладЗарплата] + , Null as [Приемка] + , Null as [АтсМаркировка] + , Null as [ВремяВыполненияМинут] + , Null as [СборкаЗаказа] + , Null as [Доставка USD2+2] + , Null as [НДС USD2+2] + , Null as [Таможня USD2+2] + , Null as [Производство USD2+2] + , [_Fld33633] / 1000 as [Доп расходы] + , 0 as [Доп расходы USD2+2] + + FROM [MAG_2019].[dbo].[_InfoRg33629] + LEFT JOIN [MAG_2019].[dbo].[_Document483X1] as refPTU + ON refPTU.[_IDRRef] = [_Fld33630RRef] + -- LEFT JOIN [MAG_2019].[dbo].[_Document483_VT7128X1] as refPtuNomen + --ON refPtuNomen.[_Document483_IDRRef] = refPTU.[_IDRRef] + -- AND refPtuNomen.[_Fld7130RRef] = [_Fld33631RRef] + LEFT JOIN MAG_2019.dbo._reference50 val + ON val._IDRRef = refPTU.[_Fld7059RRef] + LEFT JOIN [MAG_2019].[dbo].[_Reference188X1] as refNomenclatura + ON refNomenclatura.[_IDRRef] = [_Fld33631RRef] + +where [_Fld33634_RRRef] = 0x998DB49691D57EFD11F0366B9FA43F0B +and refPTU.[_Date_Time] >= @dtSqlStart + +) as tabDopRashod + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Доставка)] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Доставка)] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + DECLARE @dtStart dateTime2; + DECLARE @dtEnd datetime2; + DECLARE @dtSqlStart dateTime2; + DECLARE @dtSqlEnd datetime2; + SET @dtStart = '2022-01-01' + SET @dtEnd= '2030-01-01' + SET @dtSqlStart = '4022-01-01' + SET @dtSqlEnd= '4030-01-01' + + + INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] + ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] , [Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], + [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] + ) + + + +SELECT -- top (1000) + [Период] + , [Статья] + , [Вид операции] + , [Хоз операция] + , [тип документа] + , [Номер документа] + , [Номер заказа] + , [Валюта документа] + , [Ценовая группа] + , [1c_document_id] + , [Организация] + , [Партнер] + , [PartnerId] + , [Контрагент] + , [Менеджер] + , [1c_id] + , [artic_id] + , [Курс usd] + , [Курс usd2] + , [Количество] + , [Сумма] + , [СуммаБезНДС] + , [СуммаРучнойСкидки] + , [СуммаАвтоСкидки] + , [Закупка] + , [Закупка, usd2] + , [Таможня] + , [ЕАЭС] + , [Доставка] + , [Производство] + , [ЗатратыМП] + , [НДС] + , [ЗатратыСкладХранение] + , [ЗатратыСкладЗарплата] + , [Приемка] + , [АтсМаркировка] + , [ВремяВыполненияМинут] + , [СборкаЗаказа] + , [Доставка] / [Курс usd2] as [Доставка USD2+2] + , [НДС USD2+2] + , [Таможня USD2+2] + , [Производство USD2+2] + + FROM ( +-- \\\\\\\\\\\\\\\\\\\\\\\\\\\\ ДОСТАВКА \\\\\\\\\\\\\\\\ +SELECT --TOP (1) + + DATEADD(year, -2000, refPTU.[_Date_Time]) as [Период] + , 'Доставка контейнера ВЭД' as [Статья] + , 'Приход' as [Вид операции] + , Null as [Хоз операция] + , 'ПТУ' as [тип документа] + , Null as [Номер документа] + , Null as [Номер заказа] + , val._Description as [Валюта документа] + , CASE + WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' + WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' + ELSE 'Неопределено' + END as [Ценовая группа] + , _Fld33630RRef as [1c_document_id] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = refPTU.[_Fld7121RRef] ) as [Организация] + , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = refPTU.[_Fld7060RRef]) as [Партнер] + , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), refPTU.[_Fld7060RRef], 2),5,12) ))as PartnerId + , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = refPTU.[_Fld7064RRef]) as [Контрагент] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = refPTU.[_Fld7067RRef]) as [Менеджер] + , [_Fld33631RRef] as [1c_id] + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33631RRef], 2),5,12))) as [artic_id] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= refPTU.[_Date_Time] + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND _Period <= refPTU.[_Date_Time] + ORDER BY _Period desc ) as [Курс usd2] + , Null as [Количество] + , Null as [Сумма] + , Null as [СуммаБезНДС] + , Null as [СуммаРучнойСкидки] + , Null as [СуммаАвтоСкидки] + , Null as [Закупка] + , Null as [Закупка, usd2] + , Null as [Таможня] + , Null as [ЕАЭС] + , [_Fld33633] / 1000 as [Доставка] + , Null as [Производство] + , Null as [ЗатратыМП] + , Null as [НДС] + , Null as [ЗатратыСкладХранение] + , Null as [ЗатратыСкладЗарплата] + , Null as [Приемка] + , Null as [АтсМаркировка] + , Null as [ВремяВыполненияМинут] + , Null as [СборкаЗаказа] + , Null as [Доставка USD2+2] + , Null as [НДС USD2+2] + , Null as [Таможня USD2+2] + , Null as [Производство USD2+2] + + FROM [MAG_2019].[dbo].[_InfoRg33629] + LEFT JOIN [MAG_2019].[dbo].[_Document483X1] as refPTU + ON refPTU.[_IDRRef] = [_Fld33630RRef] + -- LEFT JOIN [MAG_2019].[dbo].[_Document483_VT7128X1] as refPtuNomen + --ON refPtuNomen.[_Document483_IDRRef] = refPTU.[_IDRRef] + -- AND refPtuNomen.[_Fld7130RRef] = [_Fld33631RRef] + LEFT JOIN MAG_2019.dbo._reference50 val + ON val._IDRRef = refPTU.[_Fld7059RRef] + LEFT JOIN [MAG_2019].[dbo].[_Reference188X1] as refNomenclatura + ON refNomenclatura.[_IDRRef] = [_Fld33631RRef] + +where [_Fld33634_RRRef] = 0x997EB49691D57EFD11ECE1AC556F9FF0 +and refPTU.[_Date_Time] >= @dtSqlStart + +) as tabDostavka + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Закупка)] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Закупка)] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + DECLARE @dtStart dateTime2; + DECLARE @dtEnd datetime2; + DECLARE @dtSqlStart dateTime2; + DECLARE @dtSqlEnd datetime2; + SET @dtStart = '2022-01-01' + SET @dtEnd= '2030-01-01' + SET @dtSqlStart = '4022-01-01' + SET @dtSqlEnd= '4030-01-01' + + + INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] + ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Производство] , [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], + [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] + ) + + +SELECT --top 1000 + [Период] + , [Статья] + , [Вид операции] + , [Хоз операция] + , [тип документа] + , [Номер документа] + , [Номер заказа] + , [Валюта документа] + , [Ценовая группа] + , [1c_document_id] + , [Организация] + , [Партнер] + , [PartnerId] + , [Контрагент] + , [Менеджер] + , [1c_id] + , [artic_id] + , [Курс usd] + , [Курс usd2] + , [Количество] + , [Сумма] + , [СуммаБезНДС] + , [СуммаРучнойСкидки] + , [СуммаАвтоСкидки] + , [Закупка] + , [Закупка] / [Курс usd2] as [Закупка, usd2] + , [Таможня] + , [ЕАЭС] + , [Доставка] + , [Производство] + , [ЗатратыМП] + , [НДС] + , [ЗатратыСкладХранение] + , [ЗатратыСкладЗарплата] + , [Приемка] + , [АтсМаркировка] + , [ВремяВыполненияМинут] + , [СборкаЗаказа] + , [Доставка] / [Курс usd2] as [Доставка USD2+2] + , [НДС] / [Курс usd2] as [НДС USD2+2] + , [Таможня] / [Курс usd2] as [Таможня USD2+2] + , [Производство] / [Курс usd2] as [Производство USD2+2] + +FROM ( + -- \\\\\\\\\\\\\\\\\\\\\\\\\\\\ ЗАКУПКИ \\\\\\\\\\\\\\\\ + select --top (1) + DATEADD(year, -2000, _Period) as [Период] + , case + WHEN r._RecorderTRef=0x000001A1 or r._RecorderTRef=0x0000020D THEN 'НДС' + --WHEN r._RecorderTRef=0x000001A1 THEN 'ЕАЭС' + --WHEN r._RecorderTRef=0x0000020D THEN 'Таможня' + ELSE 'Закупка' + END + as [Статья] + , 'Приход' as [Вид операции] + , Null as [Хоз операция] + , case r._RecorderTRef + WHEN 0x000001A1 then 'Заявление о ввозе товаров из ЕАЭС' + WHEN 0x00000189 then 'Возврат товаров поставщику' + WHEN 0x000001E3 then 'ПТУ' + WHEN 0x000001D5 then 'Передача товаров' + WHEN 0x000001B0 then 'Корректировка ' + WHEN 0x0000020D then 'Таможенная декларация на импорт' + ELSE 'Неизвестный тип' + END as [тип документа] + , Null as [Номер документа] + , Null as [Номер заказа] + , val._Description as [Валюта документа] + , CASE + WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' + WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' + WHEN r._RecorderTRef = 0x0000020D THEN 'Руб' + ELSE 'Неопределено' + END as [Ценовая группа] + , r._RecorderRRef as [1c_document_id] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = r._Fld16346RRef ) as [Организация] + , (SELECT TOP(1) _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = r.[_Fld16353RRef]) as [Партнер] + , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),5,12) ))as PartnerId + , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = r._Fld16354_RRRef) as [Контрагент] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = [_Fld16348RRef]) as [Менеджер] + , analitikaUchetaNomenklaturi.[_Fld20498RRef] as [1c_id] + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),5,12))) as [artic_id] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + --WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= r._Period + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + --WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= r._Period + ORDER BY _Period desc ) as [Курс usd2] + , CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка + THEN + case [_Fld16345RRef] + when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16361] + ELSE [_Fld16361] END + --WHEN r._RecorderTRef = 0x0000020D THEN customDeclaration._Fld8943 + WHEN r._RecorderTRef = 0x0000020D THEN 0 + --WHEN r._RecorderTRef=0x000001A1 THEN docEAS.[_Fld4052] + WHEN r._RecorderTRef=0x000001A1 THEN 0 + ELSE 0 END + as [Количество] + , [_Fld16362] / 1000 as [Сумма] + , [_Fld16363] / 1000 as [СуммаБезНДС] + , 0 as [СуммаРучнойСкидки] + , 0 as [СуммаАвтоСкидки] + , CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка + THEN + case [_Fld16345RRef] + when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16362] / 1000 + ELSE [_Fld16362] / 1000 END + ELSE 0 END + AS [Закупка] + , CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка поле "сумма в валюте документа" + THEN + case [_Fld16345RRef] + when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16373] / 1000 + ELSE [_Fld16373] / 1000 END + ELSE 0 END as [Закупка, usd2] + , CASE WHEN r._RecorderTRef=0x0000020D THEN [_Fld16369] / 1000 END as [Таможня] + , Null as [ЕАЭС] + , Null as [Доставка] -- доставка + , Null as [Производство] -- [Производство] + , Null as [ЗатратыМП] -- Затраты МП + , CASE WHEN r._RecorderTRef=0x000001A1 or r._RecorderTRef=0x0000020D THEN ([_Fld16362] - [_Fld16363]) / 1000 + ELSE Null END as [НДС] + , Null as [ЗатратыСкладХранение] -- Затраты cклад хранение + , Null as [ЗатратыСкладЗарплата]-- Затраты cклад зарплаты + , Null as [Приемка] + , Null as [АтсМаркировка] + , Null as [ВремяВыполненияМинут] + , Null as [СборкаЗаказа] + from + mag_2019.dbo._AccumRg16344 r-- Регистр накопления Закупки + LEFT JOIN [MAG_2019].[dbo].[_Reference160] as analitikaUchetaNomenklaturi + on analitikaUchetaNomenklaturi.[_IDRRef] = [_Fld16349RRef] + LEFT JOIN MAG_2019.dbo._Reference188X1 as N + on analitikaUchetaNomenklaturi.[_Fld20498RRef] = N._IDRRef + LEFT JOIN MAG_2019.dbo._reference50 val + ON val._IDRRef = r._Fld16372RRef + LEFT JOIN [MAG_2019].[dbo].[_Document525_VT8936] as customDeclaration + ON customDeclaration.[_Document525_IDRRef] = [r]._RecorderRRef + and analitikaUchetaNomenklaturi.[_Fld20498RRef] = customDeclaration._Fld8939RRef + LEFT JOIN [MAG_2019].[dbo].[_Document417_VT4034] as docEAS + ON docEAS.[_Document417_IDRRef] = [r]._RecorderRRef + and [_Fld16349RRef] = docEAS.[_Fld4037RRef] + + where _Period >= @dtSqlStart + ) tabZakupki + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(ЗатратыМП)] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(ЗатратыМП)] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + DECLARE @dtStart dateTime2; + DECLARE @dtEnd datetime2; + DECLARE @dtSqlStart dateTime2; + DECLARE @dtSqlEnd datetime2; + SET @dtStart = '2022-01-01' + SET @dtEnd= '2030-01-01' + SET @dtSqlStart = '4022-01-01' + SET @dtSqlEnd= '4030-01-01' + + + INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] + ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Производство] , [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], + [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] + ) + + + +SELECT -- top (1000) + [Период] + , [Статья] + , [Вид операции] + , [Хоз операция] + , [тип документа] + , [Номер документа] + , [Номер заказа] + , [Валюта документа] + , [Ценовая группа] + , [1c_document_id] + , [Организация] + , [Партнер] + , [PartnerId] + , [Контрагент] + , [Менеджер] + , [1c_id] + , [artic_id] + , [Курс usd] + , [Курс usd2] + , [Количество] + , [Сумма] + , [СуммаБезНДС] + , [СуммаРучнойСкидки] + , [СуммаАвтоСкидки] + , [Закупка] + , [Закупка, usd2] + , [Таможня] + , [ЕАЭС] + , [Доставка] + , [Производство] + , [ЗатратыМП] + , [НДС] + , [ЗатратыСкладХранение] + , [ЗатратыСкладЗарплата] + , [Приемка] + , [АтсМаркировка] + , [ВремяВыполненияМинут] + , [СборкаЗаказа] + , [Доставка USD2+2] + , [НДС USD2+2] + , [Таможня USD2+2] + , [Производство USD2+2] + + FROM ( +-- \\\\\\\\\\\\\\\\\\\\ ЗАТРАТЫ МП \\\\\\\\\\\\\\\ +SELECT -- TOP (1000) + + DATEADD(year, -2000, [_Period]) as [Период] + , 'Затраты МП' as [Статья] + , 'Приход' as [Вид операции] + , Null as [Хоз операция] + , 'Отчет комиссионера' as [тип документа] + , Null as [Номер документа] + , Null as [Номер заказа] + , 'Руб' as [Валюта документа] + , 'Руб' as [Ценовая группа] + , [_RecorderRRef] as [1c_document_id] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = otchetKommissionera.[_Fld5484RRef]) as [Организация] + , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = otchetKommissionera.[_Fld5485RRef] ) as [Партнер] + , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), otchetKommissionera.[_Fld5485RRef] , 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), otchetKommissionera.[_Fld5485RRef] , 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), otchetKommissionera.[_Fld5485RRef] , 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), otchetKommissionera.[_Fld5485RRef] , 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), otchetKommissionera.[_Fld5485RRef] , 2),5,12) ))as PartnerId + , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = otchetKommissionera.[_Fld5486RRef]) as [Контрагент] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = otchetKommissionera.[_Fld5492RRef]) as [Менеджер] + , [_Fld33391RRef] as [1c_id] + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [_Fld33391RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [_Fld33391RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33391RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33391RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld33391RRef], 2),5,12))) as [artic_id] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= r.[_Period] + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND _Period <= r.[_Period] + ORDER BY _Period desc ) as [Курс usd2] + , Null as [Количество] + , Null as [Сумма] + , Null as [СуммаБезНДС] + , Null as [СуммаРучнойСкидки] + , Null as [СуммаАвтоСкидки] + , Null as [Закупка] + , Null as [Закупка, usd2] + , Null as [Таможня] + , Null as [ЕАЭС] + , Null as [Доставка] + , Null as [Производство] + , [_Fld33394] / 1000 as [ЗатратыМП] + , Null as [НДС] + , Null as [ЗатратыСкладХранение] + , Null as [ЗатратыСкладЗарплата] + , Null as [Приемка] + , Null as [АтсМаркировка] + , Null as [ВремяВыполненияМинут] + , Null as [СборкаЗаказа] + , Null as [Доставка USD2+2] + , Null as [НДС USD2+2] + , Null as [Таможня USD2+2] + , Null as [Производство USD2+2] + + FROM [MAG_2019].[dbo].[_AccumRg33390] as r + LEFT JOIN [MAG_2019].[dbo].[_Document458_VT5524] as otchetKommissioneraTabTovari + on otchetKommissioneraTabTovari.[_Fld5526RRef] = [_Fld33391RRef] + AND otchetKommissioneraTabTovari.[_Document458_IDRRef] = [_RecorderRRef] + LEFT JOIN [MAG_2019].[dbo].[_Document458] as otchetKommissionera + ON otchetKommissionera.[_IDRRef] = otchetKommissioneraTabTovari.[_Document458_IDRRef] + + where [_Period] >= @dtSqlStart + +) as tabZatratiMP + + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Перерасчет)] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Перерасчет)] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + DECLARE @dtStart dateTime2; + DECLARE @dtEnd datetime2; + DECLARE @dtSqlStart dateTime2; + DECLARE @dtSqlEnd datetime2; + SET @dtStart = '2022-01-01' + SET @dtEnd= '2030-01-01' + SET @dtSqlStart = '4022-01-01' + SET @dtSqlEnd= '4030-01-01' + + + INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] + ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] , [Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], + [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] + ) + + + +SELECT --top (1000) + [Период] + , [Статья] + , [Вид операции] + , [Хоз операция] + , [тип документа] + , [Номер документа] + , [Номер заказа] + , [Валюта документа] + , [Ценовая группа] + , [1c_document_id] + , [Организация] + , [Партнер] + , [PartnerId] + , [Контрагент] + , [Менеджер] + , [1c_id] + , [artic_id] + , [Курс usd] + , [Курс usd2] + , [Количество] + , [Сумма] + , [СуммаБезНДС] + , [СуммаРучнойСкидки] + , [СуммаАвтоСкидки] + , [Закупка] + , [Закупка, usd2] + , [Таможня] + , [ЕАЭС] + , [Доставка] + , [Производство] + , [ЗатратыМП] + , [НДС] + , [ЗатратыСкладХранение] + , [ЗатратыСкладЗарплата] + , [Приемка] + , [АтсМаркировка] + , [ВремяВыполненияМинут] + , [СборкаЗаказа] + , [Доставка USD2+2] + , [НДС USD2+2] + , [Таможня USD2+2] + , [Производство USD2+2] + + FROM ( + + -- \\\\\\\\\\\\\\\\\\\\ СПИСАНИЕ ТОВАРОВ \\\\\\\\\\\\\\\ +SELECT --top (555) + DATEADD(year, -2000, refSpisNedTov._Date_Time) as [Период] + , 'Списание товара' as [Статья] + , 'Расход' as [Вид операции] + , Null as [Хоз операция] + , 'Списание недостач' as [тип документа] + , refSpisNedTov._Number as [Номер документа] + , '' as [Номер заказа] + , 'Руб' as [Валюта документа] -- Валюта документа + , 'Руб' as [Ценовая группа] + , refSpisNedTov._IDRRef as [1c_document_id] + , Null as [Организация] -- Организация + , Null as [Партнер] -- партнер + , Null as [PartnerId] + , Null as [Контрагент] -- контрагент + , Null as [Менеджер] -- Менеджер + , tabSpisNedTov.[_Fld8532RRef] AS [1c_id] -- Номенклатура + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), tabSpisNedTov.[_Fld8532RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), tabSpisNedTov.[_Fld8532RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), tabSpisNedTov.[_Fld8532RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), tabSpisNedTov.[_Fld8532RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), tabSpisNedTov.[_Fld8532RRef], 2),5,12))) as [artic_id] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= refSpisNedTov._Date_Time + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND _Period <= refSpisNedTov._Date_Time + ORDER BY _Period desc ) as [Курс usd2] + , CAST(tabSpisNedTov.[_Fld8535] as decimal(15,3)) as [Количество] -- Количество + , Null as [Сумма] + , Null as [СуммаБезНДС] + , Null as [СуммаРучнойСкидки] + , Null as [СуммаАвтоСкидки] + , Null as [Закупка] + , Null as [Закупка, usd2] + , Null as [Таможня] + , Null as [ЕАЭС] + , Null as [Доставка] -- доставка + , Null as [Производство] -- Сборка + , Null as [ЗатратыМП] -- Затраты мп + , Null as [НДС] + , Null as [ЗатратыСкладХранение] -- Затраты склад хранение + , Null as [ЗатратыСкладЗарплата] -- Затраты склад зарплата + , Null as Приемка + , Null as [АтсМаркировка] + , Null as [ВремяВыполненияМинут] + , Null as [СборкаЗаказа] + , Null as [Доставка USD2+2] + , Null as [НДС USD2+2] + , Null as [Таможня USD2+2] + , Null as [Производство USD2+2] + + FROM [MAG_2019].[dbo].[_Document512_VT8530] as tabSpisNedTov + INNER JOIN [MAG_2019].[dbo].[_Document512] as refSpisNedTov + on refSpisNedTov._IDRRef = tabSpisNedTov._Document512_IDRRef + and refSpisNedTov._Posted = 1 + + + -- \\\\\\\\\\\\\\\\\\\\ ОПРИХОДОВАНИЕ ИЗЛИШКОВ ТОВАРОВ \\\\\\\\\\\\\\\ + UNION ALL + + +SELECT --top (1000) + DATEADD(year, -2000, refOprixTov._Date_Time) as [Период] + , 'Оприходование излишков товара' as [Статья] + , 'Приход' as [Вид операции] + , Null as [Хоз операция] + , 'Оприходование излишков' as [тип документа] + , refOprixTov._Number as [Номер документа] + , '' as [Номер заказа] + , 'Руб' as [Валюта документа] -- Валюта документа + , 'Руб' as [Ценовая группа] + , refOprixTov._IDRRef as [1c_document_id] + , Null as [Организация] -- Организация + , Null as [Партнер] -- партнер + , Null as [PartnerId] + , Null as [Контрагент] -- контрагент + , Null as [Менеджер] -- Менеджер + , tabOprixTov.[_Fld5171RRef] AS [1c_id] -- Номенклатура + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), tabOprixTov.[_Fld5171RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), tabOprixTov.[_Fld5171RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), tabOprixTov.[_Fld5171RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), tabOprixTov.[_Fld5171RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), tabOprixTov.[_Fld5171RRef], 2),5,12))) as [artic_id] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= refOprixTov._Date_Time + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND _Period <= refOprixTov._Date_Time + ORDER BY _Period desc ) as [Курс usd2] + , CAST(tabOprixTov.[_Fld5174] as decimal(15,3)) as [Количество] -- Количество + , Null as [Сумма] + , Null as [СуммаБезНДС] + , Null as [СуммаРучнойСкидки] + , Null as [СуммаАвтоСкидки] + , Null as [Закупка] + , Null as [Закупка, usd2] + , Null as [Таможня] + , Null as [ЕАЭС] + , Null as [Доставка] -- доставка + , Null as [Производство] -- Сборка + , Null as [ЗатратыМП] -- Затраты мп + , Null as [НДС] + , Null as [ЗатратыСкладХранение] -- Затраты склад хранение + , Null as [ЗатратыСкладЗарплата] -- Затраты склад зарплата + , Null as Приемка + , Null as [АтсМаркировка] + , Null as [ВремяВыполненияМинут] + , Null as [СборкаЗаказа] + , Null as [Доставка USD2+2] + , Null as [НДС USD2+2] + , Null as [Таможня USD2+2] + , Null as [Производство USD2+2] + + FROM [MAG_2019].[dbo].[_Document446_VT5169] as tabOprixTov + INNER JOIN [MAG_2019].[dbo].[_Document446] as refOprixTov + on refOprixTov._IDRRef = tabOprixTov.[_Document446_IDRRef] + and refOprixTov._Posted = 1 + + ) as tabPereschet + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(ПерерасчетСкладскойКонтур)] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(ПерерасчетСкладскойКонтур)] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + DECLARE @dtStart dateTime2; + DECLARE @dtEnd datetime2; + DECLARE @dtSqlStart dateTime2; + DECLARE @dtSqlEnd datetime2; + SET @dtStart = '2022-01-01' + SET @dtEnd= '2030-01-01' + SET @dtSqlStart = '4022-01-01' + SET @dtSqlEnd= '4030-01-01' + + + INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] + ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] , [Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], + [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] + ) + + + +SELECT --top (1000) + [Период] + , [Статья] + , [Вид операции] + , [Хоз операция] + , [тип документа] + , [Номер документа] + , [Номер заказа] + , [Валюта документа] + , [Ценовая группа] + , [1c_document_id] + , [Организация] + , [Партнер] + , [PartnerId] + , [Контрагент] + , [Менеджер] + , [1c_id] + , [artic_id] + , [Курс usd] + , [Курс usd2] + , [Количество] + , [Сумма] + , [СуммаБезНДС] + , [СуммаРучнойСкидки] + , [СуммаАвтоСкидки] + , [Закупка] + , [Закупка, usd2] + , [Таможня] + , [ЕАЭС] + , [Доставка] + , [Производство] + , [ЗатратыМП] + , [НДС] + , [ЗатратыСкладХранение] + , [ЗатратыСкладЗарплата] + , [Приемка] + , [АтсМаркировка] + , [ВремяВыполненияМинут] + , [СборкаЗаказа] + , [Доставка USD2+2] + , [НДС USD2+2] + , [Таможня USD2+2] + , [Производство USD2+2] + + FROM ( + + -- \\\\\\\\\\\\\\\\\\\\ СПИСАНИЕ ТОВАРОВ \\\\\\\\\\\\\\\ +SELECT --top (555) + DATEADD(year, -2000, RNtovariNaSkladah.[_Period]) as [Период] + , 'Пересчет товара' as [Статья] + , CASE WHEN [_RecordKind] = 1 THEN + 'Расход' + ELSE + 'Приход' + END as [Вид операции] + , Null as [Хоз операция] + , 'Списание недостач' as [тип документа] + , dokPereschet._Number as [Номер документа] + , '' as [Номер заказа] + , 'Руб' as [Валюта документа] -- Валюта документа + , 'Руб' as [Ценовая группа] + , [_RecorderRRef] as [1c_document_id] + , Null as [Организация] -- Организация + , Null as [Партнер] -- партнер + , Null as [PartnerId] + , Null as [Контрагент] -- контрагент + , Null as [Менеджер] -- Менеджер + , [_Fld17485RRef] AS [1c_id] -- Номенклатура + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [_Fld17485RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [_Fld17485RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld17485RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld17485RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld17485RRef], 2),5,12))) as [artic_id] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= RNtovariNaSkladah.[_Period] + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND _Period <= RNtovariNaSkladah.[_Period] + ORDER BY _Period desc ) as [Курс usd2] + , CASE WHEN [_RecordKind] = 1 THEN + [_Fld17491] * -1 + ELSE + [_Fld17491] + END as [Количество] -- Количество + , Null as [Сумма] + , Null as [СуммаБезНДС] + , Null as [СуммаРучнойСкидки] + , Null as [СуммаАвтоСкидки] + , Null as [Закупка] + , Null as [Закупка, usd2] + , Null as [Таможня] + , Null as [ЕАЭС] + , Null as [Доставка] -- доставка + , Null as [Производство] -- Сборка + , Null as [ЗатратыМП] -- Затраты мп + , Null as [НДС] + , Null as [ЗатратыСкладХранение] -- Затраты склад хранение + , Null as [ЗатратыСкладЗарплата] -- Затраты склад зарплата + , Null as Приемка + , Null as [АтсМаркировка] + , Null as [ВремяВыполненияМинут] + , Null as [СборкаЗаказа] + , Null as [Доставка USD2+2] + , Null as [НДС USD2+2] + , Null as [Таможня USD2+2] + , Null as [Производство USD2+2] + + FROM [MAG_2019].[dbo].[_AccumRg17484] as RNtovariNaSkladah + LEFT JOIN [MAG_2019].[dbo].[_Document473X1] as dokPereschet + on dokPereschet._IDRRef = [_RecorderRRef] + where [_RecorderTRef] = 0x000001D9 -- Документ пересчет + and [_Period] > @dtSqlStart + + + + ) as tabPereschet + + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Приемка)] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Приемка)] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + DECLARE @dtStart dateTime2; + DECLARE @dtEnd datetime2; + DECLARE @dtSqlStart dateTime2; + DECLARE @dtSqlEnd datetime2; + SET @dtStart = '2022-01-01' + SET @dtEnd= '2030-01-01' + SET @dtSqlStart = '4022-01-01' + SET @dtSqlEnd= '4030-01-01' + + + INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] + ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], + [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] + ) + + + +SELECT -- top (1000) + [Период] + , [Статья] + , [Вид операции] + , [Хоз операция] + , [тип документа] + , [Номер документа] + , [Номер заказа] + , [Валюта документа] + , [Ценовая группа] + , [1c_document_id] + , [Организация] + , [Партнер] + , [PartnerId] + , [Контрагент] + , [Менеджер] + , [1c_id] + , [artic_id] + , [Курс usd] + , [Курс usd2] + , [Количество] + , [Сумма] + , [СуммаБезНДС] + , [СуммаРучнойСкидки] + , [СуммаАвтоСкидки] + , [Закупка] + , [Закупка, usd2] + , [Таможня] + , [ЕАЭС] + , [Доставка] + , [Производство] + , [ЗатратыМП] + , [НДС] + , [ЗатратыСкладХранение] + , [ЗатратыСкладЗарплата] + , [Приемка] + , [АтсМаркировка] + , [ВремяВыполненияМинут] + , [СборкаЗаказа] + , [Доставка USD2+2] + , [НДС USD2+2] + , [Таможня USD2+2] + , [Производство USD2+2] + + FROM ( + + -- \\\\\\\\\\\\\\\\\\\\ ПРИЕМКА \\\\\\\\\\\\\\\ + SELECT --top 1000 + DATEADD(year, -2000, docOtbor._Date_Time) as [Период] + , 'Приемка товара' as [Статья] + , 'Приход' as [Вид операции] + , Null as [Хоз операция] + , 'Отбор (размещение) товара' as [тип документа] + , docOtbor._Number as [Номер документа] + , zakasPostavshiku._Number as [Номер заказа] + , 'Руб' as [Валюта документа] -- Валюта документа + , 'Руб' as [Ценовая группа] + , docOtbor._IDRRef as [1c_document_id] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = zakasPostavshiku._Fld3411RRef ) as [Организация] + , (SELECT TOP(1) _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = zakasPostavshiku._Fld3409RRef) as [Партнер] + , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), zakasPostavshiku._Fld3409RRef , 2),5,12) )) as [PartnerId] + , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = zakasPostavshiku._Fld3410RRef) as [Контрагент] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = zakasPostavshiku._Fld3415RRef) as [Менеджер] + , otborTabRazmeshenie._Fld5347RRef as [1c_id] + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), otborTabRazmeshenie._Fld5347RRef, 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), otborTabRazmeshenie._Fld5347RRef, 2),21,4),'-',SUBSTRING(convert(nvarchar(36), otborTabRazmeshenie._Fld5347RRef, 2),17,4),'-',SUBSTRING(convert(nvarchar(36), otborTabRazmeshenie._Fld5347RRef, 2),1,4),'-',SUBSTRING(convert(nvarchar(36), otborTabRazmeshenie._Fld5347RRef, 2),5,12))) as [artic_id] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= docOtbor._Date_Time + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND _Period <= docOtbor._Date_Time + ORDER BY _Period desc ) as [Курс usd2] + , Null as [Количество] -- Количество + , Null as [Сумма] + , Null as [СуммаБезНДС] + , Null as [СуммаРучнойСкидки] + , Null as [СуммаАвтоСкидки] + , Null as [Закупка] + , Null as [Закупка, usd2] + , Null as [Таможня] + , Null as [ЕАЭС] + , Null as [Доставка] -- доставка + , Null as [Производство] -- Производство \\\ Сборка + , Null as [ЗатратыМП] -- Затраты мп + , Null as [НДС] + , Null as [ЗатратыСкладХранение] -- Затраты склад хранение + , Null as [ЗатратыСкладЗарплата] -- Затраты склад зарплата + , ((CASE + WHEN DAY(docOtbor._Fld5324) <> DAY(docOtbor._Fld5325) THEN + ((20 - DATEPART(HOUR, docOtbor._Fld5324)) * 60 - DATEPART(MINUTE, docOtbor._Fld5324) - DATEPART(SECOND, docOtbor._Fld5324) / 60.0) + + ((DATEDIFF(DAY, docOtbor._Fld5324, docOtbor._Fld5325) - 1) * 12 * 60) + + ((DATEPART(HOUR, docOtbor._Fld5325) - 8) * 60 + DATEPART(MINUTE, docOtbor._Fld5325) + DATEPART(SECOND, docOtbor._Fld5325) / 60.0) + ELSE + DATEDIFF(SECOND, docOtbor._Fld5324, docOtbor._Fld5325) / 60.0 + END * 3 / SUM(otborTabRazmeshenie._Fld5346 / ISNULL(upackovka.chislitel, 1)) over (partition by docOtbor._IDRRef) + * otborTabRazmeshenie._Fld5346 / ISNULL(upackovka.chislitel, 1)) + + ((COUNT(*) over (partition by docOtbor._IDRRef) / 3000 + otborTabRazmeshenie._Fld5346 / ISNULL(upackovka.chislitel, 1) / 50000 + + (upackovka.ves * otborTabRazmeshenie._Fld5346 / ISNULL(upackovka.chislitel, 1) / 15000)) / 3 * 20000)) / 1000 AS [Приемка] + , Null as [АтсМаркировка] + , Null as [ВремяВыполненияМинут] + , Null as [СборкаЗаказа] + , Null as [Доставка USD2+2] + , Null as [НДС USD2+2] + , Null as [Таможня USD2+2] + , Null as [Производство USD2+2] +FROM + [MAG_2019].[dbo].[_Document453_VT5341X1] AS otborTabRazmeshenie + + INNER JOIN [MAG_2019].[dbo].[_Document453X1] AS docOtbor + ON docOtbor._IDRRef = otborTabRazmeshenie._Document453_IDRRef + and docOtbor._Fld5316_RTRef = 0x000001E6 -- Фильтрация по псо + and docOtbor._Fld5325 >= @dtStart + and docOtbor._Fld5324 >= @dtStart + and docOtbor._Posted = 0x01 + + INNER JOIN [MAG_2019].[dbo].[_Document486] as docPSO + on docPSO._Fld7346_RTRef = 0x00000198 -- фильтрация по заказу поставщика + and docOtbor._Fld5316_RRRef = docPSO._IDRRef + LEFT JOIN [MAG_2019].[dbo].[_Document408X1] as zakasPostavshiku + on docPSO._Fld7346_RRRef = zakasPostavshiku._IDRRef + LEFT JOIN ( + SELECT + upackovka._OwnerID_RRRef AS vladelec, -- Владелец + CASE WHEN upackovka._Fld24768 = 0 THEN + 1 + ELSE + ISNULL(upackovka._Fld24768, 1) + END AS chislitel, -- Числитель + upackovka._Fld24769 AS znamenatel, -- Знаменатель + CAST(CASE + WHEN 1 = 1 -- ВесИспользовать + AND upackovka._Fld24769 <> 0 -- Знаменатель + THEN upackovka._Fld24768 / upackovka._Fld24769 + ELSE 0 + END AS DECIMAL(15, 3)) AS ves + FROM + [MAG_2019].[dbo].[_Reference347X1] AS upackovka + WHERE + upackovka._Marked = 0 -- ПометкаУдаления + ) AS upackovka + + ON upackovka.vladelec = otborTabRazmeshenie._Fld5347RRef -- Сопоставление Номенклатуры и Владелец + WHERE + 1=1 + and ISNULL(otborTabRazmeshenie._Fld5346, 0) > 0 + and docOtbor._Date_Time >= @dtSqlStart + + +) as tabPriemka + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Продажи)] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Продажи)] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + DECLARE @dtStart dateTime2; + DECLARE @dtEnd datetime2; + DECLARE @dtSqlStart dateTime2; + DECLARE @dtSqlEnd datetime2; + SET @dtStart = '2022-01-01' + SET @dtEnd= '2030-01-01' + SET @dtSqlStart = '4022-01-01' + SET @dtSqlEnd= '4030-01-01' + + + INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] + ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], + [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2], [Заказ закрыт] + ) + + +SELECT --top (1000) + [Период] + , [Статья] + , [Вид операции] + , [Хоз операция] + , [тип документа] + , [Номер документа] + , [Номер заказа] + , [Валюта документа] + , [Ценовая группа] + , [1c_document_id] + , [Организация] + , [Партнер] + , [PartnerId] + , [Контрагент] + , [Менеджер] + , [1c_id] + , [artic_id] + , [Курс usd] + , [Курс usd2] + , [Количество] + , [Сумма] + , [СуммаБезНДС] + , [СуммаРучнойСкидки] + , [СуммаАвтоСкидки] + , [Закупка] + , [Закупка, usd2] + , [Таможня] + , [ЕАЭС] + , [Доставка] + , [Производство] + , [ЗатратыМП] + , [НДС] + , [ЗатратыСкладХранение] + , [ЗатратыСкладЗарплата] + , [Приемка] + , [АтсМаркировка] + , [ВремяВыполненияМинут] + , [СборкаЗаказа] + , [Доставка] / [Курс usd2] as [Доставка USD2+2] + , [НДС USD2+2] + , [Таможня USD2+2] + , [Производство USD2+2] + , [Заказ закрыт] + + FROM ( +-- ///////////////// ПРОДАЖИ //////////////// +SELECT --TOP (1) + + DATEADD(year, -2000, [_Period]) as [Период] + , 'Реализация' as [Статья] + , 'Расход' as [Вид операции] + , Null as [Хоз операция] + , case [_RecorderTRef] + WHEN 0x000001F4 then 'РТУ' + ELSE 'Неизвестный тип' + END [тип документа] + , docRTU.[_Number] as [Номер документа] + , orders.[_Number] as [Номер заказа] + , val._Description as [Валюта документа] + , CASE + WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' + WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' + ELSE 'Неопределено' + END as [Ценовая группа] + , [_RecorderRRef] as [1c_document_id] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = AnalitikaUchetaPartner.[_Fld20514RRef] ) as [Организация] + , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = AnalitikaUchetaPartner.[_Fld20513RRef]) as [Партнер] + , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), AnalitikaUchetaPartner.[_Fld20513RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), AnalitikaUchetaPartner.[_Fld20513RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), AnalitikaUchetaPartner.[_Fld20513RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), AnalitikaUchetaPartner.[_Fld20513RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), AnalitikaUchetaPartner.[_Fld20513RRef], 2),5,12) ))as PartnerId + , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = AnalitikaUchetaPartner.[_Fld20515_RRRef]) as [Контрагент] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = orders._Fld3138RRef) as [Менеджер] + , analitikaUchetaNomenklaturi.[_Fld20498RRef] as [1c_id] + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),21,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),17,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),1,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),5,12))) as [artic_id] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= r.[_Period] + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND _Period <= r.[_Period] + ORDER BY _Period desc ) as [Курс usd2] + , [_Fld15567] as [Количество] + , [_Fld15568] / 1000 as [Сумма] + , Null as [СуммаБезНДС] + , [_Fld15595] / 1000 as [СуммаРучнойСкидки] + , [_Fld15596] / 1000 as [СуммаАвтоСкидки] + , Null as [Закупка] + , Null as [Закупка, usd2] + , Null as [Таможня] + , Null as [ЕАЭС] + , Null as [Доставка] + , Null as [Производство] + , Null as [ЗатратыМП] + , Null as [НДС] + , Null as [ЗатратыСкладХранение] + , Null as [ЗатратыСкладЗарплата] + , Null as [Приемка] + , Null as [АтсМаркировка] + , Null as [ВремяВыполненияМинут] + , Null as [СборкаЗаказа] + , Null as [Доставка USD2+2] + , Null as [НДС USD2+2] + , Null as [Таможня USD2+2] + , Null as [Производство USD2+2] + , DATEADD(year, -2000, SostZakazaClienta.DateClose) as [Заказ закрыт] + + FROM [MAG_2019].[dbo].[_AccumRg15547] as r + LEFT JOIN [MAG_2019].[dbo].[_Reference160] as analitikaUchetaNomenklaturi + on analitikaUchetaNomenklaturi.[_IDRRef] = [_Fld15548RRef] + LEFT JOIN [MAG_2019].[dbo].[_Reference162] as AnalitikaUchetaPartner + on AnalitikaUchetaPartner.[_IDRRef] = [_Fld15550RRef] + LEFT JOIN [MAG_2019].[dbo].[_Document500X1] as docRTU + on docRTU.[_IDRRef] = [_RecorderRRef] + LEFT JOIN (SELECT + [_Document500_IDRRef] as _IDRRef + ,MIN([_Fld7990_RRRef]) as orderRTU + FROM [MAG_2019].[dbo].[_Document500_VT7967X1] + GROUP BY + [_Document500_IDRRef]) as ordersRTU + ON ordersRTU._IDRRef = [_RecorderRRef] + LEFT JOIN [MAG_2019].[dbo].[_Document404X1] as orders + ON orders.[_IDRRef] = ordersRTU.orderRTU + LEFT JOIN (SELECT --TOP (1000) + MIN([_Period]) as DateClose + ,[_Fld28369_RRRef] as zakazrref + FROM [MAG_2019].[dbo].[_InfoRg28368] + where [_Fld28370_RRRef] = 0x9AE0BC17F922537141FF55A099D7C9C4 + GROUP BY + [_Fld28369_RRRef]) as SostZakazaClienta + ON SostZakazaClienta.zakazrref = orders.[_IDRRef] + LEFT JOIN [MAG_2019].[dbo].[_Reference188X1] as refNomenclatura + ON refNomenclatura.[_IDRRef] = analitikaUchetaNomenklaturi.[_Fld20498RRef] + LEFT JOIN MAG_2019.dbo._reference50 val + ON val._IDRRef = [_Fld15601RRef] + + where r.[_Period] >= @dtSqlStart +) as tabProdaji + + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Производство)] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Производство)] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + DECLARE @dtStart dateTime2; + DECLARE @dtEnd datetime2; + DECLARE @dtSqlStart dateTime2; + DECLARE @dtSqlEnd datetime2; + SET @dtStart = '2022-01-01' + SET @dtEnd= '2030-01-01' + SET @dtSqlStart = '4022-01-01' + SET @dtSqlEnd= '4030-01-01' + + + INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] + ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], + [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] + ) + + + +SELECT -- top (1000) + [Период] + , [Статья] + , [Вид операции] + , [Хоз операция] + , [тип документа] + , [Номер документа] + , [Номер заказа] + , [Валюта документа] + , [Ценовая группа] + , [1c_document_id] + , [Организация] + , [Партнер] + , [PartnerId] + , [Контрагент] + , [Менеджер] + , [1c_id] + , [artic_id] + , [Курс usd] + , [Курс usd2] + , [Количество] + , [Сумма] + , [СуммаБезНДС] + , [СуммаРучнойСкидки] + , [СуммаАвтоСкидки] + , [Закупка] + , [Закупка] / [Курс usd2] as [Закупка, usd2] + , [Таможня] + , [ЕАЭС] + , [Доставка] + , [Производство] + , [ЗатратыМП] + , [НДС] + , [ЗатратыСкладХранение] + , [ЗатратыСкладЗарплата] + , [Приемка] + , [АтсМаркировка] + , [ВремяВыполненияМинут] + , [СборкаЗаказа] + , [Доставка USD2+2] + , [НДС USD2+2] + , [Таможня USD2+2] + , [Производство] / [Курс usd2] as [Производство USD2+2] + + FROM ( + +-- \\\\\\\\\\\\\\\\ СБОРКА РАСХОД БЕЗ ЗАТРАТ НА СБОРКУ\\\\\\\\\\\\\\\\ +SELECT --TOP (1000) + + DATEADD(year, -2000, znS.[_Date_Time]) as [Период] + , 'Производство товара' as [Статья] + , 'Расход' as [Вид операции] + , Null as [Хоз операция] + , 'Заказ на сборку' as [тип документа] + , Null as [Номер документа] + , Null as [Номер заказа] + , 'Руб' as [Валюта документа] + , 'Руб' as [Ценовая группа] + , TabGoods.[_Document407_IDRRef] as [1c_document_id] + + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = ZnS.[_Fld3348RRef] ) as [Организация] + , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = Kontr.[_Fld20612RRef]) as [Партнер] + , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),5,12) ))as PartnerId + , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = ZnS.[_Fld27876RRef]) as [Контрагент] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = ZnS.[_Fld28230RRef]) as [Менеджер] + , [_Fld3381RRef] as [1c_id] + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [_Fld3381RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [_Fld3381RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld3381RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld3381RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld3381RRef], 2),5,12))) as [artic_id] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= znS.[_Date_Time] + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND _Period <= znS.[_Date_Time] + ORDER BY _Period desc ) as [Курс usd2] + , [_Fld3385] as [Количество] + , Null as [Сумма] + , Null as [СуммаБезНДС] + , Null as [СуммаРучнойСкидки] + , Null as [СуммаАвтоСкидки] + --, (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] + -- WHERE [Вид цены] = 'Учетная цена (руб)' + -- AND [Дата] <= znS.[_Date_Time] + -- and [_Fld3381RRef] = [1c_id] + -- ORDER BY Дата desc ) / 1000 * [_Fld3385] * -1 + , Null as [Закупка] + , Null as [Закупка, usd2] + , Null as [Таможня] + , Null as [ЕАЭС] + , Null as [Доставка] + , Null as [Производство] + , Null as [ЗатратыМП] + , Null as [НДС] + , Null as [ЗатратыСкладХранение] + , Null as [ЗатратыСкладЗарплата] + , Null as [Приемка] + , Null as [АтсМаркировка] + , Null as [ВремяВыполненияМинут] + , Null as [СборкаЗаказа] + , Null as [Доставка USD2+2] + , Null as [НДС USD2+2] + , Null as [Таможня USD2+2] + , Null as [Производство USD2+2] + + FROM [MAG_2019].[dbo].[_Document407_VT3379X1] as TabGoods + INNER JOIN [MAG_2019].[dbo].[_Document407X1] as ZnS -- Заказ на сборку + on ZnS._IDRRef = [_Document407_IDRRef] + and _Posted = 0x01 -- проведен + -- and [_Number] = 'АНУТ-010680' -- номер дока для проверки + and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт + LEFT JOIN [MAG_2019].[dbo].[_Reference168] as Kontr + ON Kontr.[_IDRRef] = ZnS.[_Fld27876RRef] + + where znS.[_Date_Time] >= @dtSqlStart + and TabGoods.[_Fld3392] = 0x00 -- отменено ложь + + + +UNION ALL +-- \\\\\\\\\\\\\\\\ СБОРКА ПРИХОД + ЗАТРАТЫ НА СБОРКУ \\\\\\\\\\\\\\\\ +SELECT -- top 1000 + DATEADD(year, -2000, znS.[_Date_Time]) as [Период] + , 'Производство товара' as [Статья] + , 'Приход' as [Вид операции] + , Null as [Хоз операция] + , 'Заказ на сборку' as [тип документа] + , Null as [Номер документа] + , ZnS._Number as [Номер заказа] + , 'Руб' as [Валюта документа] + , 'Руб' as [Ценовая группа] + , [табКомплекты].[_Document407_IDRRef] as [1c_document_id] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = ZnS.[_Fld3348RRef] ) as [Организация] + , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = Kontr.[_Fld20612RRef]) as [Партнер] + , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), Kontr.[_Fld20612RRef], 2),5,12) ))as PartnerId + , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = ZnS.[_Fld27876RRef]) as [Контрагент] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = ZnS.[_Fld28230RRef]) as [Менеджер] + , [табКомплекты].[_Fld28059RRef] as [1c_id] + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [табКомплекты].[_Fld28059RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [табКомплекты].[_Fld28059RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [табКомплекты].[_Fld28059RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [табКомплекты].[_Fld28059RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [табКомплекты].[_Fld28059RRef], 2),5,12))) as [artic_id] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= znS.[_Date_Time] + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND _Period <= znS.[_Date_Time] + ORDER BY _Period desc ) as [Курс usd2] + , [табКомплекты].[_Fld28063] as [Количество] + , Null as [Сумма] + , Null as [СуммаБезНДС] + , Null as [СуммаРучнойСкидки] + , Null as [СуммаАвтоСкидки] + , [табКомплектующие].Закупка as Закупка -- Новый не костыль + , Null as [Закупка, usd2] + , Null as [Таможня] + , Null as [ЕАЭС] + , Null as [Доставка] + , TabZatratiSborka.sborka / 1000 as [Производство] + , Null as [ЗатратыМП] + , Null as [НДС] + , Null as [ЗатратыСкладХранение] + , Null as [ЗатратыСкладЗарплата] + , Null as [Приемка] + , Null as [АтсМаркировка] + , Null as [ВремяВыполненияМинут] + , Null as [СборкаЗаказа] + , Null as [Доставка USD2+2] + , Null as [НДС USD2+2] + , Null as [Таможня USD2+2] + , Null as [Производство USD2+2] + +FROM [MAG_2019].[dbo]._Document407_VT28057X1 as [табКомплекты] -- список товаров к поступлению ... +INNER JOIN [MAG_2019].[dbo].[_Document407X1] as ZnS -- Заказ на сборку + on ZnS._IDRRef = [табКомплекты].[_Document407_IDRRef] + and _Posted = 0x01 -- проведен + and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт + +LEFT JOIN (SELECT --top 500 + SUM(tabItog.[Закупка]) as [Закупка] + , tabItog.[КодСтрокиКомплекта] + , [ZnSRref] as [ZnSRref] +FROM ( +SELECT + (SELECT TOP 1 [Учетная цена] FROM [mag_pbi].[pbiProd].[СебестоимостьПроизводствоОт2022] + WHERE [Период] <= znS.[_Date_Time] + and [1c_id] = [табКомплектующие]._Fld3381RRef + ORDER BY [Период] desc ) * [_Fld3385] as [Закупка] + ,[табКомплектующие].[_Fld28055] as [КодСтрокиКомплекта] + , ZnS._IDRRef as [ZnSRref] +FROM [MAG_2019].[dbo].[_Document407_VT3379X1] as [табКомплектующие] -- в конфе это тч Товары, здесь лежит список товаров на ВХОД и Вариант комплектации ... + --ON [табКомплектующие]._Document407_IDRRef = [табКомплекты].[_Document407_IDRRef] + --and [табКомплектующие] +INNER JOIN [MAG_2019].[dbo].[_Document407X1] as ZnS -- Заказ на сборку + on ZnS._IDRRef = [табКомплектующие].[_Document407_IDRRef] + and _Posted = 0x01 -- проведен + and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт + +) as tabItog + +GROUP BY + tabItog.[КодСтрокиКомплекта] + , [ZnSRref] + ) as [табКомплектующие] -- в конфе это тч Товары, здесь лежит список товаров на ВХОД и Вариант комплектации ... + ON [табКомплектующие].КодСтрокиКомплекта = [табКомплекты].[_Fld28070] + and [табКомплектующие].ZnSRref = [табКомплекты].[_Document407_IDRRef] + +LEFT JOIN [MAG_2019].[dbo].[_Reference168] as Kontr + ON Kontr.[_IDRRef] = ZnS.[_Fld27876RRef] + + LEFT JOIN (SELECT --TOP (1000) + [_RecorderRRef] -- регистратор + , [_Fld33653RRef] -- Номенклатура + , SUM([_Fld33658]) / 1000 as sborka -- сборка + FROM [MAG_2019].[dbo].[_AccumRg33652] -- рн работы + where [_RecorderTRef] = 0x00000197 + + group by + [_RecorderRRef] + , [_Fld33653RRef] -- Номенклатура + ) as TabZatratiSborka + ON TabZatratiSborka.[_RecorderRRef] = [табКомплекты].[_Document407_IDRRef] + and TabZatratiSborka.[_Fld33653RRef] = [табКомплекты].[_Fld28059RRef] + +where 1=1 + and [табКомплекты].[_Fld28152] = 0x00 -- отменено ложь + and znS.[_Date_Time] >= @dtSqlStart + --and tabSet.[_Fld28059RRef] = 0x9987B49691D57EFD11EEE1296BB584D6 + --and ZnS._Number = 'АНУТ-007990' + --and znS.[_Date_Time] >= @dtSqlStart + ) as tabProizvodstvo + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Сборка)] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Пакетное: Заполнить себестоимостьОт2022(Сборка)] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + DECLARE @dtStart dateTime2; + DECLARE @dtEnd datetime2; + DECLARE @dtSqlStart dateTime2; + DECLARE @dtSqlEnd datetime2; + SET @dtStart = '2022-01-01' + SET @dtEnd= '2030-01-01' + SET @dtSqlStart = '4022-01-01' + SET @dtSqlEnd= '4030-01-01' + + + INSERT INTO mag_pbi.[pbiProd].[СебестоимостьОт2022] + + ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Производство], [ЗатратыМП], [НДС], [ЗатратыСкладХранение], [ЗатратыСкладЗарплата], [Приемка], + [АтсМаркировка], [ВремяВыполненияМинут], [СборкаЗаказа], [Доставка USD2+2], [НДС USD2+2], [Таможня USD2+2], [Производство USD2+2] + ) + + +SELECT -- top (1000) + [Период] + , [Статья] + , [Вид операции] + , [Хоз операция] + , [тип документа] + , [Номер документа] + , [Номер заказа] + , [Валюта документа] + , [Ценовая группа] + , [1c_document_id] + , [Организация] + , [Партнер] + , [PartnerId] + , [Контрагент] + , [Менеджер] + , [1c_id] + , [artic_id] + , [Курс usd] + , [Курс usd2] + , [Количество] + , [Сумма] + , [СуммаБезНДС] + , [СуммаРучнойСкидки] + , [СуммаАвтоСкидки] + , [Закупка] + , [Закупка, usd2] + , [Таможня] + , [ЕАЭС] + , [Доставка] + , [Производство] + , [ЗатратыМП] + , [НДС] + , [ЗатратыСкладХранение] + , [ЗатратыСкладЗарплата] + , [Приемка] + , [АтсМаркировка] + , [ВремяВыполненияМинут] + , [СборкаЗаказа] + , [Доставка USD2+2] as [Доставка USD2+2] + , [НДС USD2+2] + , [Таможня USD2+2] + , [Производство] / [Курс usd2] as [Производство USD2+2] + + FROM ( + + -- \\\\\\\\\\\\\\\\\\\\ СБОРКА ЗАКАЗА КЛИЕНТА \\\\\\\\\\\\\\\ + SELECT --TOP (100000) + + DATEADD(year, -2000, docOtbor._Date_Time) as [Период] + , 'Сборка заказа' as [Статья] + , 'Приход' as [Вид операции] + , Null as [Хоз операция] + , 'Отбор (отбор) товара' as [тип документа] + , docOtbor._Number as [Номер документа] + , docZakazKlienta._Number as [Номер заказа] + , 'Руб' as [Валюта документа] -- Валюта документа + , 'Руб' as [Ценовая группа] + , docOtbor._IDRRef as [1c_document_id] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = docZakazKlienta._Fld3129RRef ) as [Организация] + , (SELECT TOP(1)_description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = docZakazKlienta._Fld3127RRef) as [Партнер] + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), docZakazKlienta._Fld3127RRef, 2),5,12) )) as [PartnerId] + , (SELECT TOP(1) _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = docZakazKlienta._Fld3128RRef) as [Контрагент] + , (SELECT TOP(1) _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = docZakazKlienta._Fld3138RRef) as [Менеджер] + , [_Fld5332RRef] as [1c_id] -- Номенклатура + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), [_Fld5332RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), [_Fld5332RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld5332RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld5332RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), [_Fld5332RRef], 2),5,12))) as [artic_id] + --, '' as [artic_id] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + --WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= docOtbor._Date_Time + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + --WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND _Period <= docOtbor._Date_Time + ORDER BY _Period desc ) as [Курс usd2] + , CAST([_Fld5330] as decimal(10,3)) as [Количество] -- Количество + , Null as [Сумма] + , Null as [СуммаБезНДС] + , Null as [СуммаРучнойСкидки] + , Null as [СуммаАвтоСкидки] + , Null as [Закупка] + , Null as [Закупка, usd2] + , Null as [Таможня] + , Null as [ЕАЭС] + , Null as [Доставка] -- доставка + , Null as [Производство] -- Сборка + , Null as [ЗатратыМП] -- Затраты мп + , Null as [НДС] + , Null as [ЗатратыСкладХранение] -- Затраты склад хранение + , Null as [ЗатратыСкладЗарплата] -- Затраты склад зарплата + , Null as [Приемка] + , Null as [АтсМаркировка] + , CASE + WHEN DAY(docOtbor.[_Fld5324]) <> DAY(docOtbor.[_Fld5325]) THEN + (((20 - DATEPART(HOUR, docOtbor.[_Fld5324])) * 60 - DATEPART(MINUTE, docOtbor.[_Fld5324]) - DATEPART(SECOND, docOtbor.[_Fld5324]) / 60.0) + + ((DATEDIFF(DAY, docOtbor.[_Fld5324], docOtbor.[_Fld5325]) - 1) * 12 * 60) + + ((DATEPART(HOUR, docOtbor.[_Fld5325]) - 8) * 60 + DATEPART(MINUTE, docOtbor.[_Fld5325]) + DATEPART(SECOND, docOtbor.[_Fld5325]) / 60.0)) / SUM([_Fld5330]) over (partition by [_Document453_IDRRef]) * [_Fld5330] + ELSE + (DATEDIFF(SECOND, docOtbor.[_Fld5324], docOtbor.[_Fld5325]) / 60.0) / SUM([_Fld5330]) over (partition by [_Document453_IDRRef]) * [_Fld5330] + END as [ВремяВыполненияМинут] + , ((SUM(1) over (partition by [_Document453_IDRRef]) / 5000 + [_Fld5330] / 20000)/2*30000) / 1000 as СборкаЗаказа + , Null as [Доставка USD2+2] + , Null as [НДС USD2+2] + , Null as [Таможня USD2+2] + , Null as [Производство USD2+2] + + + + + FROM [MAG_2019].[dbo].[_Document453_VT5326X1] as OtborTabOtbor + INNER JOIN [MAG_2019].[dbo].[_Document453X1] as docOtbor + ON docOtbor.[_IDRRef] = [_Document453_IDRRef] + and docOtbor._Posted = 0x01 + and docOtbor._Fld5325 >= @dtStart + and docOtbor._Fld5324 >= @dtStart + and docOtbor.[_Fld5316_RTRef] = 0x000001F0 -- RSO + INNER JOIN [MAG_2019].[dbo].[_Document496X1] as docRSO + on docOtbor._Fld5316_RRRef = docRSO._IDRRef + and docRSO.[_Fld27744_RTRef] = 0x00000194 -- zakaz klienta + LEFT JOIN [MAG_2019].[dbo].[_Document404X1] as docZakazKlienta + on docRSO.[_Fld27744_RRRef] = docZakazKlienta._IDRRef + + WHERE 1=1 + and docOtbor._Date_Time >= @dtSqlStart + + ) as tabSborka +END +GO + +/****** Object: StoredProcedure [pbiProd].[Пакетное: Подготовка таблицы СебестоимостьОт2022] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Пакетное: Подготовка таблицы СебестоимостьОт2022] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + DELETE FROM mag_pbi.pbiProd.[СебестоимостьОт2022] WHERE 1=1 + + DBCC CHECKIDENT ('[pbiProd].[СебестоимостьОт2022]', RESEED, 0); + + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Подготовка Производство: Дозаполнить уровни по ЗНС Приход] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Подготовка Производство: Дозаполнить уровни по ЗНС] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + + + + INSERT INTO mag_pbi.[pbiProd].[НоменклатураВПроизводствеПоУровням] + ([1c_id], [УровеньПроизводства]) + + + +SELECT + tabNomLVL.[1c_id] as [1c_id] + , ISNULL(tabZNS.[УровеньПроизводства], 1) as [УровеньПроизводства] +FROM ( +SELECT + _OwnerIDRRef as [1c_id] +FROM + [MAG_2019].[dbo].[_Reference54] + + LEFT JOIN [mag_pbi].[pbiProd].[НоменклатураВПроизводствеПоУровням] as NomLvl + on NomLvl.[1c_id] = _OwnerIDRRef +WHERE + NomLvl.[УровеньПроизводства] IS NULL) as tabNomLVL + +LEFT JOIN ( +SELECT + TabGoods.[_Fld3381RRef] as [1c_id] + , 2 as [УровеньПроизводства] + FROM [MAG_2019].[dbo].[_Document407_VT3379] as TabGoods + --INNER JOIN [MAG_2019].[dbo].[_Document407] as ZnS -- Заказ на сборку + -- on ZnS._IDRRef = [_Document407_IDRRef] + -- and _Posted = 0x01 -- проведен + -- and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт + + where [_Fld3392] = 0x00 -- отменено ложь + GROUP BY + TabGoods.[_Fld3381RRef] + ) as tabZNS + ON 1=1 + and tabZNS.[1c_id] = tabNomLVL.[1c_id] + + + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Подготовка Производство: Дозаполнить уровни по ЗНС Расход] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Подготовка Производство: Дозаполнить уровни по ЗНС Расход] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + + + + INSERT INTO mag_pbi.[pbiProd].[НоменклатураВПроизводствеПоУровням] + ([1c_id], [УровеньПроизводства]) + + + +SELECT DISTINCT + [_Fld3381RRef] as [1c_id] + , 0 as [УровеньПроизводства] +FROM [MAG_2019].[dbo].[_Document407_VT3379] as TabGoods +WHERE [_Fld3381RRef] NOT IN ( SELECT NomLVL.[1c_id] FROM [mag_pbi].[pbiProd].[НоменклатураВПроизводствеПоУровням] as NomLVL) + + + + + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Подготовка Производство: единая процедура для подготовки] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Подготовка Производство: единая процедура для подготовки] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + DELETE FROM [pbiProd].[СебестоимостьПроизводствоОт2022] + WHERE 1=1 + + DELETE FROM [pbiProd].[НоменклатураВПроизводствеПоУровням] + WHERE 1=1 + + exec [pbiProd].[Подготовка Производство: Заполнить уровень 0] + exec [pbiProd].[Подготовка Производство: Заполнить уровень 1] + exec [pbiProd].[Подготовка Производство: Заполнить уровень 2] + exec [pbiProd].[Подготовка Производство: Заполнить уровень 3] + exec [pbiProd].[Подготовка Производство: Дозаполнить уровни по ЗНС Расход] + exec [pbiProd].[Подготовка Производство: Дозаполнить уровни по ЗНС Приход]; + + WITH CTE AS ( + SELECT + *, + ROW_NUMBER() OVER ( + PARTITION BY УровеньПроизводства + ORDER BY ID -- или другая логика сортировки внутри группы + ) AS RowNumNew + FROM + [pbiProd].[НоменклатураВПроизводствеПоУровням] + ) + UPDATE CTE + SET RowNum = RowNumNew + + + + + + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Подготовка Производство: Заполнить уровень 0] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Подготовка Производство: Заполнить уровень 0] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + + + + INSERT INTO mag_pbi.[pbiProd].[НоменклатураВПроизводствеПоУровням] + ([1c_id], [УровеньПроизводства]) + + + +SELECT DISTINCT--TOP (1000) + + [_Fld18241RRef] as [1c_id] + , 0 as [УровеньПроизводства] + + + + FROM [MAG_2019].[dbo].[_Reference54_VT18239] + + where [_Fld18241RRef] NOT IN (SELECT + + [_OwnerIDRRef] + + FROM [MAG_2019].[dbo].[_Reference54]) + + + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Подготовка Производство: Заполнить уровень 1] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Подготовка Производство: Заполнить уровень 1] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + + + + INSERT INTO mag_pbi.[pbiProd].[НоменклатураВПроизводствеПоУровням] + ([1c_id], [УровеньПроизводства]) + + + + +SELECT + tabItog.nomVlad as [1c_id] + , 1 as [УровеньПроизводства] + +FROM ( + SELECT DISTINCT + refKomplekt._OwnerIDRRef as nomVlad + , MAX(ISNULL(NomLvl.[УровеньПроизводства], 99)) as [УровеньПроизводства] + FROM [MAG_2019].[dbo].[_Reference54_VT18239] + + LEFT JOIN [mag_pbi].[pbiProd].[НоменклатураВПроизводствеПоУровням] as NomLvl + on NomLvl.[1c_id] = _Fld18241RRef and NomLvl.УровеньПроизводства = 0 + + LEFT JOIN [MAG_2019].[dbo].[_Reference54] as refKomplekt + on refKomplekt._IDRRef = [_Reference54_IDRRef] + + GROUP BY + refKomplekt._OwnerIDRRef + HAVING + MAX(ISNULL(NomLvl.[УровеньПроизводства], 99)) = 0) as tabItog + + + + + + + + + + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Подготовка Производство: Заполнить уровень 2] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Подготовка Производство: Заполнить уровень 2] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + + + + INSERT INTO mag_pbi.[pbiProd].[НоменклатураВПроизводствеПоУровням] + ([1c_id], [УровеньПроизводства]) + + + + + +SELECT + tabItog.nomVlad + , 2 as [УровеньПроизводства] +FROM ( + SELECT + refKomplekt._OwnerIDRRef as nomVlad + , MAX(ISNULL(NomLvl.[УровеньПроизводства], 99)) as [УровеньПроизводства] + FROM [MAG_2019].[dbo].[_Reference54_VT18239] + + LEFT JOIN [mag_pbi].[pbiProd].[НоменклатураВПроизводствеПоУровням] as NomLvl + on NomLvl.[1c_id] = _Fld18241RRef + + LEFT JOIN [MAG_2019].[dbo].[_Reference54] as refKomplekt + on refKomplekt._IDRRef = [_Reference54_IDRRef] + + GROUP BY + refKomplekt._OwnerIDRRef + HAVING + MAX(ISNULL(NomLvl.[УровеньПроизводства], 99)) = 1 + ) as tabItog + + + + + + + + + + + + + + + + + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Подготовка Производство: Заполнить уровень 3] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Подготовка Производство: Заполнить уровень 3] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + + + + INSERT INTO mag_pbi.[pbiProd].[НоменклатураВПроизводствеПоУровням] + ([1c_id], [УровеньПроизводства]) + + + + + +SELECT + tabItog.nomVlad + , 3 as [УровеньПроизводства] +FROM ( + SELECT + refKomplekt._OwnerIDRRef as nomVlad + , MAX(ISNULL(NomLvl.[УровеньПроизводства], 99)) as [УровеньПроизводства] + FROM [MAG_2019].[dbo].[_Reference54_VT18239] + + LEFT JOIN [mag_pbi].[pbiProd].[НоменклатураВПроизводствеПоУровням] as NomLvl + on NomLvl.[1c_id] = _Fld18241RRef + + LEFT JOIN [MAG_2019].[dbo].[_Reference54] as refKomplekt + on refKomplekt._IDRRef = [_Reference54_IDRRef] + + GROUP BY + refKomplekt._OwnerIDRRef + HAVING + MAX(ISNULL(NomLvl.[УровеньПроизводства], 99)) = 2 + ) as tabItog + + + + + + + + + + + + + + + + + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Подготовка: Заполнить группы номенклатуры для расчета] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Подготовка: Заполнить группы номенклатуры для расчета] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + BEGIN + + DELETE FROM mag_pbi.pbiProd.GroupsOfNomenclature + + INSERT INTO mag_pbi.pbiProd.GroupsOfNomenclature (artic_id) + + + SELECT --TOP (1000) + [artic_id] + FROM [mag_pbi].[pbi].[nomenclature] + + DECLARE @articid nchar(36) + DECLARE @2k int + DECLARE @4k int + DECLARE @6k int + DECLARE @8k int + DECLARE @10k int + DECLARE @15k int + DECLARE @20k int + + DECLARE @Counter2k int + DECLARE @Counter4k int + DECLARE @Counter6k int + DECLARE @Counter8k int + DECLARE @Counter10k int + DECLARE @Counter15k int + DECLARE @Counter20k int + DECLARE @counter int + + + SET @2k = 1 + SET @4k = 1 + SET @6k = 1 + SET @8k = 1 + SET @10k = 1 + SET @15k = 1 + SET @20k = 1 + + SET @counter = 1 + SET @Counter2k = 1 + SET @Counter4k = 1 + SET @Counter6k = 1 + SET @Counter8k = 1 + SET @Counter10k = 1 + SET @Counter15k = 1 + SET @Counter20k = 1 + + + + DECLARE itterate CURSOR FOR + SELECT + [artic_id] + FROM mag_pbi.[pbiProd].[GroupsOfNomenclature] as s + + order by + [artic_id] + + OPEN itterate + FETCH NEXT FROM itterate INTO @articid + + WHILE @@FETCH_STATUS = 0 + BEGIN + if @Counter2k <= 2000 begin + SET @Counter2k = @Counter2k + 1 + end + else begin + SET @Counter2k = 0 + SET @2k = @2k + 1 + end + + if @Counter4k <= 4000 begin + SET @Counter4k = @Counter4k + 1 + end + else begin + SET @Counter4k = 0 + SET @4k = @4k + 1 + end + + if @Counter6k <= 6000 begin + SET @Counter6k = @Counter6k + 1 + end + else begin + SET @Counter6k = 0 + SET @6k = @6k + 1 + end + + if @Counter8k <= 8000 begin + SET @Counter8k = @Counter8k + 1 + end + else begin + SET @Counter8k = 0 + SET @8k = @8k + 1 + end + + if @Counter10k <= 10000 begin + SET @Counter10k = @Counter10k + 1 + end + else begin + SET @Counter10k = 0 + SET @10k = @10k + 1 + end + + if @Counter15k <= 15000 begin + SET @Counter15k = @Counter15k + 1 + end + else begin + SET @Counter15k = 0 + SET @15k = @15k + 1 + end + + if @Counter20k <= 20000 begin + SET @Counter20k = @Counter20k + 1 + end + else begin + SET @Counter20k = 0 + SET @20k = @20k + 1 + end + + + + + UPDATE mag_pbi.[pbiProd].[GroupsOfNomenclature] + SET [2k] = @2k + ,[4k] = @4k + ,[6k] = @6k + ,[8k] = @8k + ,[10k] = @10k + ,[15k] = @15k + ,[20k] = @20k + + + WHERE [artic_id]= @articid + + FETCH NEXT FROM itterate INTO @articid + END + + CLOSE itterate + DEALLOCATE itterate +END + + + +END +GO + +/****** Object: StoredProcedure [pbiProd].[Производство: Заполнить 1сid для СебестоимостьПроизводствоОт2022] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [pbiProd].[Производство: Заполнить 1сid для СебестоимостьПроизводствоОт2022] + -- Add the parameters for the stored procedure here + +AS +BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. + SET NOCOUNT ON; + + UPDATE [pbiProd].[СебестоимостьПроизводствоОт2022] + SET [pbiProd].[СебестоимостьПроизводствоОт2022].[1c_id] = nom.[1c_id] + FROM [pbiProd].[СебестоимостьПроизводствоОт2022] ss + LEFT JOIN [mag_pbi].[pbi].[nomenclature] as nom ON ss.artic_id = nom.artic_id + WHERE ss.[1c_id] IS NULL; + + + +END +GO + +/****** Object: StoredProcedure [sebest].[ComputeStorehouseVolume] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [sebest].[ComputeStorehouseVolume] + -- Add the parameters for the stored procedure here + +AS +BEGIN + + DELETE FROM [pbi].[nomenclatureVolumeStorehouse] WHERE 1=1 + ; + + WITH calendar AS ( + SELECT + [_Fld13119] AS date -- date + FROM [MAG_2019].[dbo].[_InfoRg13116] + WHERE [_Fld13117RRef] = 0x80CD002590EC174111E58150B83C760D -- calendar + AND [_Fld13118] > 2018 -- year + +), + +GoodsInStorehousesTurnover AS ( + SELECT + GoodsInStorehousesTurnover.period AS period, + GoodsInStorehousesTurnover.nomenclature AS nomenclature, + GoodsInStorehousesTurnover.storehouse as storehouse, + SUM(GoodsInStorehousesTurnover.Turnover) OVER (PARTITION BY storehouse, nomenclature ORDER BY period) AS balance + FROM ( + SELECT + period, + nomenclature, + storehouse, + SUM(Turnover) as Turnover + FROM (SELECT --Top (1000) + [_Period] AS period, + [_Fld17485RRef] AS nomenclature, + [_Fld17488RRef] AS storehouse, + CASE + WHEN [_RecordKind] = 0 THEN [_Fld17491] + ELSE -[_Fld17491] + END AS Turnover + FROM [MAG_2019].[dbo].[_AccumRg17484] + WHERE + 1=1 + --and [_Fld17485RRef] = 0x80C5305A3A00E12B11E585239E47A898 -- nom + AND [_Fld17488RRef] = 0x80D70CC47A052DFD11E6C841742D2F2C -- storehouse дед-2 + ) as tabTurnover + GROUP BY + period, + nomenclature, + storehouse) AS GoodsInStorehousesTurnover +) + +INSERT INTO [pbi].[nomenclatureVolumeStorehouse] ([Период], [balance], [1c_id], [storehouse], [volume], [totalVolume]) + +SELECT --top (10000) + calendar_date as [Период], + GoodsInStorehousesTurnover.balance as balance, + GoodsInStorehousesTurnover.nomenclature as [1c_id], + GoodsInStorehousesTurnover.storehouse as storehouse, + GoodsInStorehousesTurnover.balance * tabVolume.volume as volume, + SUM(GoodsInStorehousesTurnover.balance * tabVolume.volume) OVER (PARTITION BY GoodsInStorehousesTurnover.storehouse, calendar_date) as totalVolume +FROM ( + SELECT + calendar.date AS calendar_date, + MAX(GoodsInStorehousesTurnover.period) AS turnover_period, + GoodsInStorehousesTurnover.nomenclature AS nomenclature, + GoodsInStorehousesTurnover.storehouse as storehouse + FROM calendar + LEFT JOIN GoodsInStorehousesTurnover + ON calendar.date >= GoodsInStorehousesTurnover.period + GROUP BY + calendar.date, + GoodsInStorehousesTurnover.nomenclature, + GoodsInStorehousesTurnover.storehouse +) AS tabBalancePeriodMax +LEFT JOIN GoodsInStorehousesTurnover + ON GoodsInStorehousesTurnover.nomenclature = tabBalancePeriodMax.nomenclature + AND GoodsInStorehousesTurnover.period = tabBalancePeriodMax.turnover_period + +LEFT JOIN (SELECT --top (1000) + + _OwnerID_RRRef as [1c_id] + ,case when _Fld24768 = 0 then + 0 + else + _Fld24771 / _Fld24768 + end as volume + + FROM [MAG_2019].dbo._Reference347X1 u + INNER JOIN [mag_2019].dbo._Reference188X1 nn ON nn._IDRRef = u._OwnerID_RRRef + INNER JOIN [mag_pbi].[pbi].[nomenclature] nom on nom.[1c_id] = u._OwnerID_RRRef and nom.[Статус] <> 'Не для продажи' + where + u.[_Marked] = 0x00) as tabVolume +on tabVolume.[1c_id] = tabBalancePeriodMax.nomenclature + +where + YEAR(calendar_date) >= 4024 + and GoodsInStorehousesTurnover.balance <> 0 + and DATEADD(YEAR, -2000, calendar_date) <= GETDATE() +ORDER BY + calendar_date; + + + + +END +GO + +/****** Object: StoredProcedure [sebest].[Заполнить итоги до 2022] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [sebest].[Заполнить итоги до 2022] + -- Add the parameters for the stored procedure here + +AS +BEGIN + + DELETE FROM [pbi].[СебестоимостьИтогиДо2022] + WHERE 1=1 + + INSERT INTO mag_pbi.pbi.[СебестоимостьИтогиДо2022] ( + [artic_id], [Количество], [Закупка], [Таможня], [ЕАЭС], [Доставка], [НДС], [Сборка], [Учетная цена]) + + + +SELECT --TOP (5000) +-- это финальная выборка, её не корректировать(можно только комменить поля которые не нужны к выводу), менять всё во вложенных запросах ... + [artic_id] + ,[Количество] + ,[Закупка] + ,[Таможня] + ,[ЕАЭС] + ,[Доставка] + ,[НДС] + ,[Сборка] + ,case when [Количество] = 0 then + 0 + else + ([Закупка] + [Таможня] + [ЕАЭС] + [Доставка] + [НДС] + [Сборка]) / [Количество] + end as [Учетная цена] + FROM (SELECT + [artic_id] + ,SUM([Количество]) as [Количество] + ,SUM([Закупка]) as [Закупка] + ,SUM([Таможня]) as [Таможня] + ,SUM([ЕАЭС]) as [ЕАЭС] + ,SUM([Доставка]) as [Доставка] + ,SUM([НДС]) as [НДС] + ,SUM([Сборка]) as [Сборка] + FROM + + (SELECT + [artic_id] + ,CASE WHEN [Вид операции] = 'Продажа' THEN + -SUM([Количество]) + else + SUM([Количество]) + end as [Количество] + ,SUM([Закупка]) as [Закупка] + ,SUM([Таможня]) as [Таможня] + ,SUM([ЕАЭС]) as [ЕАЭС] + ,SUM([Доставка]) as [Доставка] + ,SUM([НДС]) as [НДС] + ,SUM([Сборка]) as [Сборка] + + FROM [mag_pbi].[pbi].[СебестоимостьДо2022] + -- where [artic_id] = '25c0d4a5-00dc-11e8-80f7-0cc47a052dfd' + group by + [Вид операции] + ,[artic_id] ) as tabMain + GROUP BY + [artic_id]) tabItog +--WHERE YEAR([Период]) < 2022 +--and [artic_id] = 'cdb37c08-84c6-11e5-80c5-305a3a00e12b' + + +END +GO + +/****** Object: StoredProcedure [sebest].[Заполнить себестоимость до 2022] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [sebest].[Заполнить себестоимость до 2022] + -- Add the parameters for the stored procedure here + +AS +BEGIN + + DELETE FROM [pbi].[СебестоимостьДо2022] + WHERE 1=1 + + INSERT INTO mag_pbi.pbi.[СебестоимостьДо2022] ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], + [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня], [Доставка] ,[Сборка], [НДС] ,[Учетная стоимость] ,[Учетная стоимость USD2+2] ,[Учетная цена] + ,[Учетная цена USD2+2] + --, [CodeUT] + /*[Сумма], [Сумма Без НДС], [Валютная сумма], [Валютная сумма Без НДС] */) + + +SELECT --TOP (5000) +-- это финальная выборка, её не корректировать(можно только комменить поля которые не нужны к выводу), менять всё во вложенных запросах ... + [Период] + ,[Статья] + ,[Вид операции] + ,[Хоз операция] + ,[тип документа] + ,[Номер документа] + ,[Номер заказа] + ,[Валюта документа] + ,[Ценовая группа] + ,[1c_document_id] + ,[Организация] + ,[Партнер] + ,[PartnerId] + ,[Контрагент] + ,[Менеджер] + ,[1c_id] + ,[artic_id] + ,[Курс usd] + ,[Курс usd2] + ,[Количество] + ,[Сумма] + ,[СуммаБезНДС] + ,[СуммаРучнойСкидки] + ,[СуммаАвтоСкидки] + ,[Закупка] + ,[Закупка, usd2] + ,[Таможня] + --,[ЕАЭС] + --,[Маркетинг] + ,[Доставка] + ,[Сборка] + --, [ЗатратыМП] + --,[CodeUT] + , [НДС] + ,[Учетная стоимость] + ,[Учетная стоимость USD2+2] + ,[Учетная цена] + ,[Учетная цена USD2+2] + +FROM ( +SELECT -- TOP (1000) + [id] + ,[Период] + ,[Статья] + ,[Вид операции] + ,[Хоз операция] + ,[Организация] + ,[Партнер] + ,[PartnerId] + ,[Контрагент] + ,[Менеджер] + ,[Тип документа] + ,[Номер документа] + ,[Валюта документа] + ,[Ценовая группа] + ,[1c_document_id] + ,[1c_id] + ,[artic_id] + ,[Количество] + ,[Сумма] + ,[СуммаБезНДС] + ,[СуммаРучнойСкидки] + ,[СуммаАвтоСкидки] + ,[Закупка] + ,[Закупка, usd2] + ,[Курс usd2] + ,[Курс usd] + ,[Таможня] + ,[Учетная цена] + ,[Учетная цена USD2+2] + ,[Учетная стоимость] + ,[Учетная стоимость USD2+2] + ,[Заказ закрыт] + ,[Номер заказа] + ,[Доставка] + ,[НДС] + ,[Сборка] + ,[PriceListPrice] + FROM [mag_pbi].[pbi].[Себестоимость+СебестоимостьПродаж] + + + +) tabItog +WHERE YEAR([Период]) < 2022 +--and [artic_id] = 'cdb37c08-84c6-11e5-80c5-305a3a00e12b' + + +END +GO + +/****** Object: StoredProcedure [sebest].[Заполнить себестоимость закупкой] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [sebest].[Заполнить себестоимость закупкой] + @dt datetime2 = '2015-01-01' +AS +BEGIN + /*r._RecorderTRef: + 0x000001A1 Заявление о ввозе товаров из ЕАЭС + 0x000001E3 ПТУ + 0x00000189 Возврат товаров поставщику + 0x000001D5 Передача товаров + 0x000001B0 Корректировка приобретения + 0x0000020D Таможенная декларация на импорт + + закупка: (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) + ЕАЭС: 0x000001A1 + Таможня: 0x0000020D + */ + /* + 0x80CD002590EC174111E581505088A8D5 USD + 0x80D40CC47A052DFD11E6B6DD1820D178 Eur + 0x80E90CC47A052DFD11E7145927CEFC24 Cny + 0xAE9DB496910DCFD611E94F10743DE3FF USD2 + 0xAE9EB496910DCFD611E95C66B5DE3AFA USD2+2 + */ + DELETE FROM mag_pbi.pbi.[Себестоимость] WHERE [Период]>@dt + + DBCC CHECKIDENT ('[pbi].[Себестоимость]', RESEED, 0); + + INSERT INTO mag_pbi.pbi.[Себестоимость] ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], + [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня],[ЕАЭС], [Доставка] ,[Сборка], [ЗатратыМП], [НДС] + --, [CodeUT] + /*[Сумма], [Сумма Без НДС], [Валютная сумма], [Валютная сумма Без НДС] */) + + +SELECT --TOP (5000) +-- это финальная выборка, её не корректировать(можно только комменить поля которые не нужны к выводу), менять всё во вложенных запросах ... + [Период] + ,[Статья] + ,[Вид операции] + ,[Хоз операция] + ,[тип документа] + ,[Номер документа] + ,[Номер заказа] + ,[Валюта документа] + ,[Ценовая группа] + ,[1c_document_id] + ,[Организация] + ,[Партнер] + ,[PartnerId] + ,[Контрагент] + ,[Менеджер] + ,[1c_id] + ,[artic_id] + ,[Курс usd] + ,[Курс usd2] + ,[Количество] + ,[Сумма] + ,[СуммаБезНДС] + ,[СуммаРучнойСкидки] + ,[СуммаАвтоСкидки] + , CASE WHEN YEAR([Период]) <= 2021 and ([Партнер] = 'КИТАЙ' or [Партнер] = 'Luca-S') and [Валюта документа] <> 'руб.' Then + [Закупка] * 1.42 + ELSE + [Закупка] + END as [Закупка] + , CASE WHEN YEAR([Период]) <= 2021 and ([Партнер] = 'КИТАЙ' or [Партнер] = 'Luca-S') and [Валюта документа] <> 'руб.' Then + [Закупка, usd2] * 1.42 + ELSE + [Закупка, usd2] + END as [Закупка, usd2] + ,[Таможня] + ,[ЕАЭС] + --,[Маркетинг] + ,[Доставка] + ,[Сборка] + , [ЗатратыМП] + --,[CodeUT] + , [НДС] + +FROM ( + +select --top (1) + DATEADD(year, -2000, _Period) as [Период] + , case + WHEN r._RecorderTRef=0x000001A1 or r._RecorderTRef=0x0000020D THEN 'НДС' + --WHEN r._RecorderTRef=0x000001A1 THEN 'ЕАЭС' + --WHEN r._RecorderTRef=0x0000020D THEN 'Таможня' + ELSE 'Закупка' + END + as [Статья] + , 'Закупка' as [Вид операции] + , h.value as [Хоз операция] + , case r._RecorderTRef + WHEN 0x000001A1 then 'Заявление о ввозе товаров из ЕАЭС' + WHEN 0x00000189 then 'Возврат товаров поставщику' + WHEN 0x000001E3 then 'ПТУ' + WHEN 0x000001D5 then 'Передача товаров' + WHEN 0x000001B0 then 'Корректировка ' + WHEN 0x0000020D then 'Таможенная декларация на импорт' + ELSE 'Неизвестный тип' + END as [тип документа] + , '-' as [Номер документа] + , '-' as [Номер заказа] + , val._Description as [Валюта документа] + ,CASE + WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' + WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' + WHEN r._RecorderTRef = 0x0000020D THEN 'Руб' + ELSE 'Неопределено' + END as [Ценовая группа] + , r._RecorderRRef as [1c_document_id] + , (SELECT _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = r._Fld16346RRef ) as [Организация] + , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = r.[_Fld16353RRef]) as [Партнер] + --, r.[_Fld16353RRef] as PartnerId + , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), r.[_Fld16353RRef], 2),5,12) ))as PartnerId + , (SELECT _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = r._Fld16354_RRRef) as [Контрагент] + , (SELECT _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = [_Fld16348RRef]) as [Менеджер] + + , analitikaUchetaNomenklaturi.[_Fld20498RRef] as [1c_id] + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),21,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),17,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),1,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef], 2),5,12))) as [artic_id] + ,CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка + THEN + case [_Fld16345RRef] + when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16361] + ELSE [_Fld16361] END + --WHEN r._RecorderTRef = 0x0000020D THEN customDeclaration._Fld8943 + WHEN r._RecorderTRef = 0x0000020D THEN 0 + --WHEN r._RecorderTRef=0x000001A1 THEN docEAS.[_Fld4052] + WHEN r._RecorderTRef=0x000001A1 THEN 0 + ELSE 0 END + as [Количество] + , [_Fld16362] / 1000 as [Сумма] + , [_Fld16363] / 1000 as [СуммаБезНДС] + ,0 as [СуммаРучнойСкидки] + ,0 as [СуммаАвтоСкидки] + , CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка + THEN + case [_Fld16345RRef] + when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16362] / 1000 + ELSE [_Fld16362] / 1000 END + ELSE 0 END + AS [Закупка] + , CASE WHEN r._RecorderTRef IN (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) -- только для вида операция закупка поле "сумма в валюте документа" + THEN + case [_Fld16345RRef] + when 0x970191967A54A8814BA45C6234640F68 /* возврат, берем с минусом */ THEN -[_Fld16373] / 1000 + ELSE [_Fld16373] / 1000 END + ELSE 0 END as [Закупка, usd2] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + --WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, r._Period) + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + --WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, r._Period) + ORDER BY _Period desc ) as [Курс usd2] + /*, CASE WHEN r._RecorderTRef=0x0000020D THEN [_Fld16369] / 1000 + ELSE 0 END + as [Таможня] + , CASE WHEN r._RecorderTRef=0x000001A1 THEN [_Fld16369] / 1000 + ELSE 0 END + as [ЕАЭС] */ + , CASE WHEN r._RecorderTRef=0x0000020D THEN [_Fld16369] / 1000 END as [Таможня] + , 0 as [ЕАЭС] + , 0 as [Маркетинг] -- маркетинг + , 0 as [Доставка] -- доставка + , 0 as [Сборка]-- Сборка + , 0 as [ЗатратыМП] -- Затраты МП + ,CASE WHEN LEFT(n._Code, 2) = '00' -- только для вида операция закупка + THEN '9' + CONVERT(nvarchar(15), TRIM('-' FROM TRIM ( '00' FROM n._Code))) + ELSE '8' + TRIM ( 'УТ-' FROM n._Code) + END + as [CodeUT] + , CASE WHEN r._RecorderTRef=0x000001A1 THEN ([_Fld16362] - [_Fld16363]) / 1000 + WHEN r._RecorderTRef=0x0000020D THEN ([_Fld16362] - [_Fld16363]) / 1000 + ELSE 0 END + as [НДС] + --,RIGHT(n._Code, LEN(n._Code) - DATALENGTH(CONVERT(VARCHAR(100),'УТ-'))) as [CodeUT] + + from + mag_2019.dbo._AccumRg16344 r-- Регистр накопления Закупки + LEFT JOIN [MAG_2019].[dbo].[_Reference160] as analitikaUchetaNomenklaturi + on analitikaUchetaNomenklaturi.[_IDRRef] = [_Fld16349RRef] + left join MAG_2019.dbo._Reference188X1 as N + on analitikaUchetaNomenklaturi.[_Fld20498RRef] = N._IDRRef + LEFT JOIN [mag_reports].[dbo].[enums] h + ON h._IDRref = r._Fld16345RRef + LEFT JOIN MAG_2019.dbo._reference50 val + ON val._IDRRef = r._Fld16372RRef + LEFT JOIN [MAG_2019].[dbo].[_Document525_VT8936] as customDeclaration + ON customDeclaration.[_Document525_IDRRef] = [r]._RecorderRRef + and analitikaUchetaNomenklaturi.[_Fld20498RRef] = customDeclaration._Fld8939RRef + LEFT JOIN [MAG_2019].[dbo].[_Document417_VT4034] as docEAS + ON docEAS.[_Document417_IDRRef] = [r]._RecorderRRef + and [_Fld16349RRef] = docEAS.[_Fld4037RRef] + -- WHERE DATEADD(year, -2000, _Period) > @dt + +UNION ALL + +SELECT -- top (1000) + DATEADD(year, -2000, date) -- период + ,SR -- Статья расходов + , ВидОперации -- Вид операции + , '' -- хоз операция + , typeReg -- Тип документа + , НомерДокумента -- Номер документа + , [Номер заказа] -- Номер заказа клиента для РТУ + , val._Description -- Валюта документа + , CASE + WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' + WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' + ELSE 'Неопределено' + END -- Ценовая группа + , Регистратор -- Ссылка на документ + , refOrganizaciya.[_Description] -- Организация + , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = Партнер) -- Партнер + -- , [Партнер] as PartnerId + , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [Партнер], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [Партнер], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [Партнер], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [Партнер], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), [Партнер], 2),5,12) ))as PartnerId + , (SELECT _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = Контрагент) -- Контрагент + , (SELECT _description FROM [MAG_2019].[dbo].[_Reference228X1] WHERE _IDRRef = Менеджер) -- Менеджер + , onec_id -- 1с id + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), onec_id, 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), onec_id, 2),21,4),'-',SUBSTRING(convert(nvarchar(36), onec_id, 2),17,4),'-',SUBSTRING(convert(nvarchar(36), onec_id, 2),1,4),'-',SUBSTRING(convert(nvarchar(36), onec_id, 2),5,12))) -- arctic id + , kolvo -- количество + , [Сумма] / 1000 + , [СуммаБезНДС] / 1000 + , [СуммаРучнойСкидки] / 1000 + , [СуммаАвтоСкидки] / 1000 + , [Закупка] -- закупка + , [Закупка, usd2] -- закупка usd2 + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, date) + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, date) + ORDER BY _Period desc ) as [Курс usd2] + , 0 -- Таможня + , 0 --ЕАЭС + , marketing / 1000 -- маркетинг + , delivery / 1000 -- доставка + , [Сборка] / 1000 as [Сборка]-- Сборка + , [ЗатратыМП] / 1000 -- Затраты МП + ,CASE WHEN LEFT(refNomenclatura._Code, 2) = '00' -- только для вида операция закупка + THEN '9' + CONVERT(nvarchar(15), TRIM('-' FROM TRIM ( '00' FROM refNomenclatura._Code))) + ELSE '8' + TRIM ( 'УТ-' FROM refNomenclatura._Code) + END + as [CodeUT] + , 0 -- НДС + -- ,RIGHT(refNomenclatura._Code, LEN(refNomenclatura._Code) - DATALENGTH(CONVERT(VARCHAR(100),'УТ-'))) as [CodeUT] + + + FROM ( +-- \\\\\\\\\\\\\\\\\\\\\\\\\\\\ ДОСТАВКА \\\\\\\\\\\\\\\\ +SELECT --TOP (1) + refPTU.[_Date_Time] as date -- дата + , 'Доставка контейнера ВЭД' as SR + ,'Закупка' as ВидОперации + ,[_Fld33630RRef] as Регистратор -- регистратор + , '-' as НомерДокумента -- Номер документа + , '-' [Номер заказа] + ,'ПТУ' as typeReg -- типРегистратора + ,refPTU.[_Fld7121RRef] as Организация -- Организация + ,refPTU.[_Fld7060RRef] as Партнер -- партнер + ,refPTU.[_Fld7064RRef] as Контрагент -- контрагент + ,refPTU.[_Fld7067RRef] as Менеджер -- Менеджер + ,[_Fld33631RRef] as onec_id -- Номенклатура + --,refPtuNomen.[_Fld7134] as kolvo -- Количество + , 0 as kolvo -- Количество + --, [_Fld33633] as [Сумма] + , 0 as [Сумма] + , 0 as [СуммаБезНДС] + , 0 as [СуммаРучнойСкидки] + , 0 as [СуммаАвтоСкидки] + , 0 as [Закупка] + , 0 as [Закупка, usd2] + ,refPTU.[_Fld7059RRef] as ВалютаДокумента -- Валюта документа + ,[_Fld33632RRef] -- ППУ + ,0 as marketing -- маркетинг + ,[_Fld33633] as delivery -- доставка + ,0 as [Сборка]-- Сборка + , 0 as [ЗатратыМП]-- Затраты мп + -- ,[_Fld33634_RRRef] -- статья расходов + + FROM [MAG_2019].[dbo].[_InfoRg33629] + LEFT JOIN [MAG_2019].[dbo].[_Document483X1] as refPTU + ON refPTU.[_IDRRef] = [_Fld33630RRef] + LEFT JOIN [MAG_2019].[dbo].[_Document483_VT7128X1] as refPtuNomen + ON refPtuNomen.[_Document483_IDRRef] = refPTU.[_IDRRef] + AND refPtuNomen.[_Fld7130RRef] = [_Fld33631RRef] + +where [_Fld33634_RRRef] = 0x997EB49691D57EFD11ECE1AC556F9FF0 + +UNION ALL +-- \\\\\\\\\\\\ МАРКЕТИНГ \\\\\\\\\\\\\\\ +SELECT --TOP (1) + refPTU.[_Date_Time] + , 'Маркетинг' + ,'Закупка' + ,[_Fld33630RRef] -- регистратор + , '-' -- Номер документа + , '-' -- Номер заказа + ,'ПТУ' + ,refPTU.[_Fld7121RRef] -- Организация + ,refPTU.[_Fld7060RRef] as Партнер -- партнер + ,refPTU.[_Fld7064RRef] as Контрагент -- контрагент + ,refPTU.[_Fld7067RRef] as Менеджер -- Менеджер + ,[_Fld33631RRef] -- Номенклатура + , 0 -- Количество + , 0 as [Сумма] + , 0 as [СуммаБезНДС] + , 0 as [СуммаРучнойСкидки] + , 0 as [СуммаАвтоСкидки] + , 0 as [Закупка] + , 0 as [Закупка, usd2] + , refPTU.[_Fld7059RRef] -- Валюта документа + ,[_Fld33632RRef] -- ППУ + ,[_Fld33633] -- маркетинг + , 0 -- доставка + ,0 -- Сборка + , 0 -- Затраты мп + --,[_Fld33634_RRRef] -- статья расходов + + FROM [MAG_2019].[dbo].[_InfoRg33629] +LEFT JOIN [MAG_2019].[dbo].[_Document483X1] as refPTU +ON refPTU.[_IDRRef] = [_Fld33630RRef] + +where [_Fld33634_RRRef] = 0x9981B49691D57EFD11EDCE203CED30C4 + + +UNION ALL +-- ///////////////// ПРОДАЖИ //////////////// +SELECT --TOP (1) + [_Period] + ,'Реализация' + ,'Продажа' + ,[_RecorderRRef] -- регистратор + ,docRTU.[_Number] -- Номер документа + , orders.[_Number] -- Номер заказа + ,case [_RecorderTRef] + WHEN 0x000001F4 then 'РТУ' + + ELSE 'Неизвестный тип' + END + , AnalitikaUchetaPartner.[_Fld20514RRef] -- Организация + , AnalitikaUchetaPartner.[_Fld20513RRef] -- партнер + , AnalitikaUchetaPartner.[_Fld20515_RRRef] -- контрагент + , [_Fld15559RRef] as Менеджер -- Менеджер + , analitikaUchetaNomenklaturi.[_Fld20498RRef] -- Номенклатура + , [_Fld15567] -- количество + , [_Fld15568] as [Сумма] + , 0 as [СуммаБезНДС] + , [_Fld15595] as [СуммаРучнойСкидки] + , [_Fld15596] as [СуммаАвтоСкидки] + , 0 as [Закупка] + , 0 as [Закупка, usd2] + ,CASE + WHEN [_Fld15601RRef] IS NULL THEN 'руб.' -- Валюта документа + ELSE [_Fld15601RRef] + END AS [Валюта документа] + , '' -- ППУ + ,0 -- маректинг + ,0 -- Доставка + ,0 -- Сборка + , 0 -- Затраты мп + + + FROM [MAG_2019].[dbo].[_AccumRg15547] + LEFT JOIN [MAG_2019].[dbo].[_Reference160] as analitikaUchetaNomenklaturi + on analitikaUchetaNomenklaturi.[_IDRRef] = [_Fld15548RRef] + LEFT JOIN [MAG_2019].[dbo].[_Reference162] as AnalitikaUchetaPartner + on AnalitikaUchetaPartner.[_IDRRef] = [_Fld15550RRef] + LEFT JOIN [MAG_2019].[dbo].[_Document500X1] as docRTU + on docRTU.[_IDRRef] = [_RecorderRRef] + LEFT JOIN (SELECT + [_Document500_IDRRef] as _IDRRef + ,MIN([_Fld7990_RRRef]) as orderRTU + FROM [MAG_2019].[dbo].[_Document500_VT7967X1] + GROUP BY + [_Document500_IDRRef]) as ordersRTU + ON ordersRTU._IDRRef = [_RecorderRRef] + LEFT JOIN [MAG_2019].[dbo].[_Document404X1] as orders + ON orders.[_IDRRef] = ordersRTU.orderRTU + +UNION ALL +-- \\\\\\\\\\\\\\\\ СБОРКА РАСХОД БЕЗ ЗАТРАТ НА СБОРКУ\\\\\\\\\\\\\\\\ +SELECT TOP (1000) + znS.[_Date_Time] as per + , 'Сборка' + , 'Продажа' + , TabGoods.[_Document407_IDRRef] -- регистратор + , '-' -- Номер документа + , '-' -- Номер заказа + ,'Заказ на сборку' + , ZnS.[_Fld3348RRef] -- Организация + , Kontr.[_Fld20612RRef] -- партнер + , ZnS.[_Fld27876RRef] -- контрагент + , ZnS.[_Fld28230RRef] -- Менеджер + , [_Fld3381RRef] as nom -- Номенклатура + , [_Fld3385] as kolvo -- Количество + --, tabset.[_Fld28063] + , 0 as [Сумма] + , 0 as [СуммаБезНДС] + , 0 as [СуммаРучнойСкидки] + , 0 as [СуммаАвтоСкидки] + , (SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] + WHERE [Вид цены] = 'Учетная цена (руб)' + AND [Дата] <= znS.[_Date_Time] + and [_Fld3381RRef] = [1c_id] + ORDER BY Дата desc ) / 1000 * [_Fld3385] * -1 as [Закупка] + , 0 as [Закупка, usd2] + , currency._IDRRef -- Валюта документа + , '' -- ППУ + , 0 -- маректинг + , 0 -- Доставка + , 0 -- сборка + , 0 -- Затраты мп + + FROM [MAG_2019].[dbo].[_Document407_VT3379] as TabGoods + INNER JOIN [MAG_2019].[dbo].[_Document407] as ZnS -- Заказ на сборку + on ZnS._IDRRef = [_Document407_IDRRef] + and _Posted = 0x01 -- проведен + --and [_Number] = 'АНУТ-010680' -- номер дока для проверки + and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт + LEFT JOIN [MAG_2019].[dbo].[_Reference168] as Kontr + ON Kontr.[_IDRRef] = ZnS.[_Fld27876RRef] + + + LEFT JOIN (SELECT TOP (1) [_IDRRef] + FROM [MAG_2019].[dbo].[_Reference50] + where _code = '643') as currency + on 1 = 1 + + + + +UNION ALL +-- \\\\\\\\\\\\\\\\ СБОРКА ПРИХОД + ЗАТРАТЫ НА СБОРКУ \\\\\\\\\\\\\\\\ +SELECT TOP (333) + znS.[_Date_Time] + , 'Сборка' + , 'Закупка' + , TabGoods.[_Document407_IDRRef] -- регистратор + , '-' -- Номер документа + , '-' -- Номер заказа + ,'Заказ на сборку' + , ZnS.[_Fld3348RRef] -- Организация + , Kontr.[_Fld20612RRef] -- партнер + , ZnS.[_Fld27876RRef] -- контрагент + , ZnS.[_Fld28230RRef] -- Менеджер + , tabSet.[_Fld28059RRef] -- Номенклатура + --, [_Fld3385] -- Количество + , tabset.[_Fld28063] + , 0 as [Сумма] + , 0 as [СуммаБезНДС] + , 0 as [СуммаРучнойСкидки] + , 0 as [СуммаАвтоСкидки] + --, CASE WHEN tabSetPrices.[SumSebes] IS NULL THEN 0 + -- ELSE tabSetPrices.[SumSebes] / 1000 * tabset.[_Fld28063] + -- end as [Закупка] + ,(SELECT TOP 1 [Цена] FROM [mag_pbi].[pbi].[pricelist] + WHERE [Вид цены] = 'Учетная цена (руб)' + AND [дата] <= znS.[_Date_Time] + and [_Fld3381RRef] = [1c_id] + ORDER BY Дата desc ) / 1000 * [_Fld3385] as [SumSebes] + , 0 as [Закупка, usd2] + , currency._IDRRef -- Валюта документа + , '' -- ППУ + , 0 -- маректинг + , 0 -- Доставка + , TabZatratiSborka.sborka as sborka -- сборка + , 0 -- Затраты мп + + FROM [MAG_2019].[dbo].[_Document407_VT3379] as TabGoods + INNER JOIN [MAG_2019].[dbo].[_Document407] as ZnS -- Заказ на сборку + on ZnS._IDRRef = [_Document407_IDRRef] + and _Posted = 0x01 -- проведен + -- and [_Number] = 'АНУТ-010680' -- номер дока для проверки + and [_Fld3352RRef] = 0x97266ED3BEFAB868480833CDF0FCF236 -- статус Закрыт + LEFT JOIN [MAG_2019].[dbo]._Document407_VT28057 as tabSet -- тч комплекты, тут связь было-стало + on tabSet.[_Fld28070] = [_Fld28055] + and tabSet._Document407_IDRRef = TabGoods._Document407_IDRRef + + LEFT JOIN [MAG_2019].[dbo].[_Reference168] as Kontr + ON Kontr.[_IDRRef] = ZnS.[_Fld27876RRef] + LEFT JOIN (SELECT TOP (1) [_IDRRef] + FROM [MAG_2019].[dbo].[_Reference50] + where _code = '643') as currency + on 1 = 1 +LEFT JOIN (SELECT --TOP (1000) + [_RecorderRRef] -- регистратор + , [_Fld33653RRef] -- Номенклатура + , SUM([_Fld33658]) / 1000 as sborka -- сборка + FROM [MAG_2019].[dbo].[_AccumRg33652] -- рн работы + where [_RecorderTRef] = 0x00000197 + + group by + [_RecorderRRef] + , [_Fld33653RRef] -- Номенклатура + ) as TabZatratiSborka + ON TabZatratiSborka.[_RecorderRRef] = TabGoods.[_Document407_IDRRef] + and TabZatratiSborka.[_Fld33653RRef] = tabSet.[_Fld28059RRef] + + where [_Fld3392] = 0x00 -- отменено ложь + + + + +UNION ALL +-- \\\\\\\\\\\\\\\\\\\\ ЗАТРАТЫ МП \\\\\\\\\\\\\\\ +SELECT -- TOP (1000) + [_Period] + ,'Затраты МП' + ,'Закупка' + ,[_RecorderRRef] -- Регистратор отчет комиссионера + , '-' -- Номер документа + , '-' -- Номер заказа + , 'Отчет комиссионера' + , otchetKommissionera.[_Fld5484RRef] -- Организация + , otchetKommissionera.[_Fld5485RRef] -- партнер + , otchetKommissionera.[_Fld5486RRef] -- контрагент + , otchetKommissionera.[_Fld5492RRef] -- Менеджер + ,[_Fld33391RRef] -- номенклатура + --,otchetKommissioneraTabTovari.[_Fld5531] -- Количество + ,0 -- Количество + ,0 as [Сумма] + --,[_Fld33394] as [Сумма] + , 0 as [СуммаБезНДС] + , 0 as [СуммаРучнойСкидки] + , 0 as [СуммаАвтоСкидки] + , 0 as [Закупка] + , 0 as [Закупка, usd2] + , currency._IDRRef -- Валюта документа + , '' -- ППУ + , 0 -- маректинг + , 0 -- Доставка + , 0 -- сборка + , [_Fld33394] -- Затраты МП + + FROM [MAG_2019].[dbo].[_AccumRg33390] + LEFT JOIN [MAG_2019].[dbo].[_Document458_VT5524] as otchetKommissioneraTabTovari + on otchetKommissioneraTabTovari.[_Fld5526RRef] = [_Fld33391RRef] + AND otchetKommissioneraTabTovari.[_Document458_IDRRef] = [_RecorderRRef] + LEFT JOIN [MAG_2019].[dbo].[_Document458] as otchetKommissionera + ON otchetKommissionera.[_IDRRef] = otchetKommissioneraTabTovari.[_Document458_IDRRef] + LEFT JOIN (SELECT TOP (1) [_IDRRef] + FROM [MAG_2019].[dbo].[_Reference50] + where _code = '643') as currency + on 1 = 1 + +) as tabMain +LEFT JOIN [MAG_2019].[dbo].[_Reference188X1] as refNomenclatura +ON refNomenclatura.[_IDRRef] = tabMain.onec_id +LEFT JOIN [MAG_2019].[dbo].[_Document483X1] as refPTU +ON refPTU.[_IDRRef] = tabMain.Регистратор +LEFT JOIN [MAG_2019].[dbo].[_Document484] as refPPU +ON refPPU.[_IDRRef] = tabMain.Регистратор +LEFT JOIN [MAG_2019].[dbo].[_Reference198X1] as refOrganizaciya +on refOrganizaciya._IDRRef = tabMain.Организация +LEFT JOIN MAG_2019.dbo._reference50 val +ON val._IDRRef = tabMain.ВалютаДокумента + + + +) tabItog +WHERE [Период] > @dt +--and [artic_id] = 'cdb37c08-84c6-11e5-80c5-305a3a00e12b' + + +END +GO + +/****** Object: StoredProcedure [sebest].[Заполнить себестоимость комплектами] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [sebest].[Заполнить себестоимость комплектами] + -- Add the parameters for the stored procedure here + @dt datetime2 = '2015-01-01' +AS +BEGIN + insert into pbi.[Себестоимость]([Период], [Статья], [Вид операции],[Номер документа],[Тип документа], [1c_id], [artic_id], [Количество], [Ценовая группа]) + select + k.[Период] + , 'Закупка' as [Статья] + , 'Фасовка_Комплекты' as [Вид операции] + , [Номер документа] + , 'Заказ на сборку' as [Тип документа] + , [1c_id] + , [artic_id] + , [Количество] + , [Ценовая группа] + + FROM pbi.[сборки_комплекты] k + WHERE + [Период] > @dt +END +GO + +/****** Object: StoredProcedure [sebest].[Заполнить себестоимость комплектующими] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [sebest].[Заполнить себестоимость курсовой разницей] + -- Add the parameters for the stored procedure here +AS +BEGIN + + insert into pbi.[Себестоимость] ([Период], [Статья], [Вид операции], [1c_id], [artic_id], [Количество], [Сумма], [Сумма Без НДС], [Валютная сумма], [Валютная сумма Без НДС]) + SELECT --TOP (1000) + [Период] + , 'Курсовая разница' as [Статья] + ,[Вид операции] + ,[1c_id] + ,[artic_id] + , 0 as [Количество] + , isnull([Валютная сумма] * + (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND DATEADD(year, -2000, _Period) <= [Период] + ORDER BY _Period desc) - [Сумма], 0) + as [Сумма] + , 0 as [Сумма Без НДС] + , 0 as [Валютная сумма] + , 0 as [Валютная сумма Без НДС] + FROM + mag_pbi.pbi.[Себестоимость] + + where + [Вид операции] = 'Продажа' + and [Статья] = 'Закупка' + and [Валютная сумма] <> 0 + and isnull([Валютная сумма] * + (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND DATEADD(year, -2000, _Period) <= [Период] + ORDER BY _Period desc) - [Сумма], 0) <> 0 + +END +GO + +/****** Object: StoredProcedure [sebest].[Заполнить себестоимость начальным остатком] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [sebest].[Заполнить себестоимость начальным остатком] + -- Add the parameters for the stored procedure here + @dt datetime2 = '2015-01-01' +AS +BEGIN + /* + 0x80CD002590EC174111E581505088A8D5 USD + 0x80D40CC47A052DFD11E6B6DD1820D178 Eur + 0x80E90CC47A052DFD11E7145927CEFC24 Cny + 0xAE9DB496910DCFD611E94F10743DE3FF USD2 + 0xAE9EB496910DCFD611E95C66B5DE3AFA USD2+2 + */ + insert into pbi.[Себестоимость]([Период], [Статья], [Вид операции],[Хоз операция],[Организация],[Тип документа],[Номер документа],[Валюта документа],[Ценовая группа],[1c_document_id], [1c_id], [artic_id], [Количество], [Закупка], [Закупка, usd2], [Курс usd], [Курс usd2]/*, [Курс usd2], [Сумма Без НДС], [Валютная сумма], [Валютная сумма Без НДС] */) + + SELECT + tabItog.[Период], + tabItog.[Статья], + tabItog.[Вид операции], + tabItog.[Хоз операция], + tabItog.[Организация], + tabItog.[Тип документа], + tabItog.[Номер документа], + tabItog.[Валюта документа], + tabItog.[Ценовая группа], + tabItog.[1c_document_id], + tabItog.[1c_id], + tabItog.[artic_id], + tabItog.[Количество], + tabItog.[Закупка], + tabItog.[Закупка] / tabItog.[Курс usd2] as [Закупка, usd2], + tabItog.[Курс usd], + tabItog.[Курс usd2] + FROM (select + DATEADD(year, -2000, _Date_Time) as [Период] + , 'Ввод начальных остатков' as [Статья] + , 'Закупка' as [Вид операции] + , 'Ввод остатков' as [Хоз операция] + , (SELECT _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = d._Fld1778RRef ) as [Организация] + , 'Ввод остатков' as [Тип документа] + , D._Number as [Номер документа] + , 'руб.' as [Валюта документа] + , 'Руб' as [Ценовая группа] + , D._IDRRef as [1c_document_id] + , _Fld1811RRef as [1c_id] + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), _Fld1811RRef, 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), _Fld1811RRef, 2),21,4),'-',SUBSTRING(convert(nvarchar(36), _Fld1811RRef, 2),17,4),'-',SUBSTRING(convert(nvarchar(36), _Fld1811RRef, 2),1,4),'-',SUBSTRING(convert(nvarchar(36), _Fld1811RRef, 2),5,12))) as [artic_id] + , _Fld1816 as [Количество] + , _Fld1816 * isnull((SELECT TOP (1) [Цена] / 1000 + FROM [mag_reports].[sales].[pricelist] pl + where [1c_id] = _Fld1811RRef + and [Вид цены] = 'Учетная цена (руб)' + --and pl._Period <= _Date_Time + ORDER BY _Period), 0) as [Закупка] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0x80CD002590EC174111E581505088A8D5 --USD + AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, _Date_Time) + ORDER BY _Period desc ) as [Курс usd] + , (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND DATEADD(year, -2000, _Period) <= DATEADD(year, -2000, _Date_Time) + ORDER BY _Period desc ) as [Курс usd2] + + from + mag_2019.dbo._Document385 as D-- Документ Ввод остатков + inner join mag_2019.dbo._Document385_VT1809 as Tov-- Документ Ввод остатков.Товары + on D._IDRRef = Tov._Document385_IDRRef + inner join MAG_2019.dbo._Reference188X1 as N + on Tov._Fld1811RRef = N._IDRRef + where + D._Posted = 0x01 + and d._Fld1777RRef = 0x8EADCC7BFE3B43C24D37E47DE504409F -- Тип операции = Собственные товары + AND DATEADD(year, -2000, d._Date_Time) > '2012') as tabItog +END +GO + +/****** Object: StoredProcedure [sebest].[Заполнить себестоимость продажей] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [sebest].[Заполнить себестоимость продажей] + -- Add the parameters for the stored procedure here + @dt datetime2 = '2015-01-01' +AS +BEGIN + + /* Вставить все продажи в таблицу себестоимости */ + /* UPDATE для каждой строки в отдельной процедуре */ + + + insert into pbi.[Себестоимость]([Период], [Статья], [Вид операции],[Организация],[Партнер],[Менеджер],[Номер документа],[Тип документа], [1c_id], [artic_id] + , [Количество],[Сумма],[СуммаБезНДС],[СуммаРучнойСкидки],[СуммаАвтоСкидки],[Номер заказа],[Заказ закрыт], [Ценовая группа] + ) + select --top 100 + DATEADD(year, -2000, r._Period) as [Период] + , 'Закупка' as [Статья] + , 'Продажа' as [Вид операции] + , (SELECT _description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = anp._Fld20514RRef ) as [Организация] + , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = anp._Fld20513RRef) as [Партнер] + , (SELECT _description FROM [mag_2019].[dbo].[_Reference228X1] WHERE _IDRRef = z._Fld3138RRef) as [Менеджер] + , CASE _RecorderTRef + WHEN 0x000001F4 THEN (SELECT _Number FROM MAG_2019.dbo._Document500X1 d WHERE d._IDRRef = r._RecorderRRef) + WHEN 0x00000188 THEN (SELECT _Number FROM MAG_2019.dbo._Document392 d WHERE d._IDRRef = r._RecorderRRef) + WHEN 0x000001B1 THEN (SELECT _Number FROM MAG_2019.dbo._Document433 d WHERE d._IDRRef = r._RecorderRRef) + WHEN 0x000001CA THEN (SELECT _Number FROM MAG_2019.dbo._Document458 d WHERE d._IDRRef = r._RecorderRRef) + WHEN 0x000001E4 THEN (SELECT _Number FROM MAG_2019.dbo._Document484 d WHERE d._IDRRef = r._RecorderRRef) + WHEN 0x000001D5 THEN (SELECT _Number FROM MAG_2019.dbo._Document469 d WHERE d._IDRRef = r._RecorderRRef) + WHEN 0x00000178 THEN (SELECT _Number FROM MAG_2019.dbo._Document376 d WHERE d._IDRRef = r._RecorderRRef) + END as [Номер документа] + , CASE _RecorderTRef + WHEN 0x000001F4 THEN 'Реализация' + WHEN 0x00000188 THEN 'Возврат' + WHEN 0x000001B1 THEN 'Корректировка реализации' + WHEN 0x000001CA THEN 'Отчет комиссионера' + WHEN 0x000001E4 THEN 'Приобретение Услуг и прочих активов' + WHEN 0x000001D5 THEN 'Передача Товаров между организаций' + WHEN 0x00000178 THEN 'Акт выполненных работ' + END as [Тип документа] + , n._IDRRef as [1c_id] + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), n._IDRRef, 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),21,4),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),17,4),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),1,4),'-',SUBSTRING(convert(nvarchar(36), n._IDRRef, 2),5,12))) as [artic_id] + , -1 * r._Fld15567 as [Количество] + , r._Fld15568 / 1000 as 'sum' + , r._Fld15569 / 1000 as 'СуммаБезНДС' + , r._Fld15595 / 1000 as 'СуммаРучнойСкидки' + , r._Fld15596 / 1000 as 'СуммаАвтоСкидки' + , z._Number as [Номер заказа] + , (SELECT top 1 convert(datetime, DATEADD(year, -2000, l._Period), 104) from [pbi].[ЛогЗаказов] l where l.status = 'Закрыт' and l.zakazNum = z._IDRRef) as [Заказ закрыт] + , CASE + WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Руб' + WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Вал' + ELSE 'Неопределено' + END as [Ценовая группа] + from + mag_2019.dbo._AccumRg15547 r-- Регистр накопления Выручка и себестоимость продаж + /*LEFT JOIN [MAG_2019].[dbo]._InfoRg12119 an-- Регистр сведений Аналитика учета номенклатуры + on r._Fld15548RRef = an._Fld12126RRef + */ + + INNER JOIN [mag_2019].[dbo]._Reference160 an /*ключ аналитики номенклатуры*/ ON r._Fld15548RRef = an._IDRRef + INNER JOIN [mag_2019].[dbo]._Reference188X1 n /*номенклатура*/ ON n._IDRRef = an._Fld20498RRef + + + LEFT JOIN [MAG_2019].[dbo].[_Document404X1] z /* заказ клиента */ ON z._IDRRef = r._Fld15549_RRRef + --LEFT JOIN [mag_2019].[dbo]._Document500X1 rlz /*документ реализации*/ ON r._RecorderRRef = rlz._IDRRef + INNER JOIN [mag_2019].[dbo]._Reference162 anp /*Ключ аналитики партнера*/ ON r._Fld15550RRef = anp._IDRRef + where 1=1 + AND DATEADD(year, -2000, r._Period)> @dt + +END +GO + +/****** Object: StoredProcedure [sebest].[Заполнить СебестоимостьСебестоимостьПродажиРезультат] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [sebest].[Заполнить СебестоимостьСебестоимостьПродажиРезультат] + + +AS +BEGIN + /*r._RecorderTRef: + 0x000001A1 Заявление о ввозе товаров из ЕАЭС + 0x000001E3 ПТУ + 0x00000189 Возврат товаров поставщику + 0x000001D5 Передача товаров + 0x000001B0 Корректировка приобретения + 0x0000020D Таможенная декларация на импорт + + закупка: (0x000001E3, 0x00000189,0x000001D5, 0x000001B0) + ЕАЭС: 0x000001A1 + Таможня: 0x0000020D + */ + /* + 0x80CD002590EC174111E581505088A8D5 USD + 0x80D40CC47A052DFD11E6B6DD1820D178 Eur + 0x80E90CC47A052DFD11E7145927CEFC24 Cny + 0xAE9DB496910DCFD611E94F10743DE3FF USD2 + 0xAE9EB496910DCFD611E95C66B5DE3AFA USD2+2 + */ + DELETE FROM mag_pbi.pbi.[СебестоимостьСебестоимостьПродажиРезультат] WHERE 1=1 + + INSERT INTO mag_pbi.pbi.[СебестоимостьСебестоимостьПродажиРезультат] ([Период], [Статья], [Вид операции], + [Хоз операция],[Тип документа],[Номер документа], [Номер заказа], [Валюта документа],[Ценовая группа], [1c_document_id], + [Организация],[Партнер], [PartnerId], [Контрагент],[Менеджер], + [1c_id], + [artic_id], [Курс usd] ,[Курс usd2], [Количество], [Сумма], [СуммаБезНДС], [СуммаРучнойСкидки], [СуммаАвтоСкидки], + [Закупка],[Закупка, usd2], [Таможня], [Доставка] ,[Сборка], [НДС], [code], [Учетная цена] ,[Учетная цена USD2+2] + ,[Учетная стоимость] ,[Учетная стоимость USD2+2] + --, [CodeUT] + /*[Сумма], [Сумма Без НДС], [Валютная сумма], [Валютная сумма Без НДС] */) + + +SELECT --TOP (5000) +-- это финальная выборка, её не корректировать(можно только комменить поля которые не нужны к выводу), менять всё во вложенных запросах ... + [Период] + ,[Статья] + ,[Вид операции] + ,[Хоз операция] + ,[тип документа] + ,[Номер документа] + ,[Номер заказа] + ,[Валюта документа] + ,[Ценовая группа] + ,[1c_document_id] + ,[Организация] + ,[Партнер] + ,[PartnerId] + ,[Контрагент] + ,[Менеджер] + ,[1c_id] + ,[artic_id] + ,[Курс usd] + ,[Курс usd2] + ,[Количество] + ,[Сумма] + ,[СуммаБезНДС] + ,[СуммаРучнойСкидки] + ,[СуммаАвтоСкидки] + ,[Закупка] + ,[Закупка, usd2] + ,[Таможня] + ,[Доставка] + ,[Сборка] + ,[НДС] + ,[code] + ,[Учетная цена] + ,[Учетная цена USD2+2] + ,[Учетная стоимость] + ,[Учетная стоимость USD2+2] + +FROM ( +SELECT -- TOP (1000) + [Период] + ,[Статья] + ,[Вид операции] + ,[Хоз операция] + ,[Тип документа] + ,[Номер документа] + ,[Номер заказа] + ,[Валюта документа] + ,[Ценовая группа] + ,[1c_document_id] + ,[Организация] + ,[Партнер] + ,[PartnerId] + ,[Контрагент] + ,[Менеджер] + ,tabMain.[1c_id] + ,tabMain.[artic_id] + ,[Курс usd] + ,[Курс usd2] + ,[Количество] + ,[Сумма] + ,[СуммаБезНДС] + ,[СуммаРучнойСкидки] + ,[СуммаАвтоСкидки] + ,[Закупка] + ,[Закупка, usd2] + ,[Таможня] + ,[Доставка] + ,[Сборка] + ,[НДС] + , tabNom.[code] + ,[Учетная цена] + ,[Учетная цена USD2+2] + ,[Учетная стоимость] + ,[Учетная стоимость USD2+2] + + FROM [mag_pbi].[pbi].[Себестоимость+СебестоимостьПродажОт2022] as tabMain + LEFT JOIN [mag_pbi].[pbi].[nomenclature] as tabNom + on tabNom.[artic_id] = tabMain.[artic_id] + + +) tabItog +WHERE 1=1 +--and [artic_id] = 'cdb37c08-84c6-11e5-80c5-305a3a00e12b' + + +END +GO + +/****** Object: StoredProcedure [sebest].[Проставить стоимость комплектов] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: +-- Description: +-- ============================================= +CREATE PROCEDURE [sebest].[Проставить стоимость комплектов] + @dt datetime2(0) = '2015' +AS +BEGIN + UPDATE [pbi].[Себестоимость] SET + [Закупка] = ( + SELECT -1*SUM(Закупка) + FROM [pbi].[Себестоимость] ss + INNER JOIN [pbi].[Сборки] sb + ON sb.[Дата документа] = ss.Период AND sb.[Номер документа] = ss.[Номер документа] + WHERE + sb.[ИД номенклатура комплекта] = k.[1c_id] + --0x80C5305A3A00E12B11E584C1000D5AA5 + ), + [Закупка, usd2] = ( + SELECT -1*SUM([Закупка, usd2]) + FROM [pbi].[Себестоимость] ss + INNER JOIN [pbi].[Сборки] sb + ON sb.[Дата документа] = ss.Период AND sb.[Номер документа] = ss.[Номер документа] + WHERE + sb.[ИД номенклатура комплекта] = k.[1c_id] + --0x80C5305A3A00E12B11E584C1000D5AA5 + ), + [Таможня] = ( + SELECT -1*SUM([Таможня]) + FROM [pbi].[Себестоимость] ss + INNER JOIN [pbi].[Сборки] sb + ON sb.[Дата документа] = ss.Период AND sb.[Номер документа] = ss.[Номер документа] + WHERE + sb.[ИД номенклатура комплекта] = k.[1c_id] + --0x80C5305A3A00E12B11E584C1000D5AA5 + ), + [ЕАЭС] = ( + SELECT -1*SUM([ЕАЭС]) + FROM [pbi].[Себестоимость] ss + INNER JOIN [pbi].[Сборки] sb + ON sb.[Дата документа] = ss.Период AND sb.[Номер документа] = ss.[Номер документа] + WHERE + sb.[ИД номенклатура комплекта] = k.[1c_id] + --0x80C5305A3A00E12B11E584C1000D5AA5 + ) + + FROM [pbi].[Себестоимость] k + WHERE k. [Статья]='Закупка' AND k.[Вид операции] = 'Фасовка_Комплекты' + AND [Период] > @dt + +END +GO + +/****** Object: StoredProcedure [sebest].[Расчет себестомисти] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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 diff --git a/sql_db_mag_pbi/mag_pbi_tables.sql b/sql_db_mag_pbi/mag_pbi_tables.sql index 26a942f..bcdaf5b 100644 --- a/sql_db_mag_pbi/mag_pbi_tables.sql +++ b/sql_db_mag_pbi/mag_pbi_tables.sql @@ -1,56 +1,56 @@ USE [mag_pbi] GO -/****** Object: Schema [analytics] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [analytics] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [analytics] GO -/****** Object: Schema [artem] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [artem] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [artem] GO -/****** Object: Schema [db_accessadmin] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [db_accessadmin] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [db_accessadmin] GO -/****** Object: Schema [db_backupoperator] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [db_backupoperator] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [db_backupoperator] GO -/****** Object: Schema [db_datareader] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [db_datareader] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [db_datareader] GO -/****** Object: Schema [db_datawriter] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [db_datawriter] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [db_datawriter] GO -/****** Object: Schema [db_ddladmin] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [db_ddladmin] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [db_ddladmin] GO -/****** Object: Schema [db_denydatareader] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [db_denydatareader] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [db_denydatareader] GO -/****** Object: Schema [db_denydatawriter] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [db_denydatawriter] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [db_denydatawriter] GO -/****** Object: Schema [db_owner] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [db_owner] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [db_owner] GO -/****** Object: Schema [db_securityadmin] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [db_securityadmin] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [db_securityadmin] GO -/****** Object: Schema [ostatki] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [ostatki] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [ostatki] GO -/****** Object: Schema [pbi] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [pbi] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [pbi] GO -/****** Object: Schema [pbiProd] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [pbiProd] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [pbiProd] GO -/****** Object: Schema [sebest] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [sebest] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [sebest] GO -/****** Object: Schema [stg] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Schema [stg] Script Date: 2026-03-02 14:46:40 ******/ CREATE SCHEMA [stg] GO -/****** Object: Table [analytics].[deficit_money_request] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[deficit_money_request] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -75,7 +75,7 @@ PRIMARY KEY CLUSTERED )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].[deficit_proposal] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[deficit_proposal] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -98,7 +98,7 @@ PRIMARY KEY CLUSTERED )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] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[forecast] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -120,7 +120,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[forecast_history] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -142,7 +142,7 @@ PRIMARY KEY CLUSTERED )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_scenarios] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[forecast_scenarios] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -161,7 +161,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[load_log_w_ostatok_da_net] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -179,7 +179,7 @@ PRIMARY KEY CLUSTERED )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].[manufacturer_counterparty_map] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[manufacturer_counterparty_map] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -194,7 +194,7 @@ PRIMARY KEY CLUSTERED )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].[manufacturer_payment_stage] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[manufacturer_payment_stage] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -212,7 +212,7 @@ PRIMARY KEY CLUSTERED )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO -/****** Object: Table [analytics].[manufacturers] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[manufacturers] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -229,7 +229,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[sales_weekly_features] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -262,7 +262,7 @@ PRIMARY KEY CLUSTERED )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] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[seasonality_groups] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -273,7 +273,7 @@ CREATE TABLE [analytics].[seasonality_groups]( [month] [tinyint] NULL, [koef] [numeric(38,23)] NULL) ON [PRIMARY] GO -/****** Object: Table [analytics].[seasonality_groups_summ_1] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[seasonality_groups_summ_1] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -284,7 +284,7 @@ CREATE TABLE [analytics].[seasonality_groups_summ_1]( [month] [tinyint] NULL, [koef] [numeric(38,23)] NULL) ON [PRIMARY] GO -/****** Object: Table [analytics].[stock_balance] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[stock_balance] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -307,7 +307,7 @@ CREATE TABLE [analytics].[stock_balance]( [Остаток склад + МП + в пути + произв., упак] [numeric(26,7)] NULL, [Остаток склад + МП + в пути + произв., руб] [numeric(26,7)] NULL) ON [PRIMARY] GO -/****** Object: Table [analytics].[stock_plan_by_arrival] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[stock_plan_by_arrival] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -331,7 +331,7 @@ PRIMARY KEY CLUSTERED )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].[аналитика за 365 дн.] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[аналитика за 365 дн.] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -361,7 +361,7 @@ CREATE TABLE [analytics].[аналитика за 365 дн.]( [Рентабельность по остатку / квартал] [decimal(38,6)] NULL, [Рентабельность по остатку / будущий год] [decimal(38,6)] NULL) ON [PRIMARY] GO -/****** Object: Table [analytics].[прогноз из excel] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[прогноз из excel] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -374,7 +374,7 @@ CREATE TABLE [analytics].[прогноз из excel]( [user_name] [nvarchar(255)] NULL, [updated_at] [datetime] NULL) ON [PRIMARY] GO -/****** Object: Table [analytics].[срез учетных цен] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [analytics].[срез учетных цен] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -387,7 +387,7 @@ CREATE TABLE [analytics].[срез учетных цен]( [Период] [nvarchar(4000)] NULL, [количество] [numeric(21,9)] NULL) ON [PRIMARY] GO -/****** Object: Table [dbo].[Turnover] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [dbo].[Turnover] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -400,7 +400,7 @@ CREATE TABLE [dbo].[Turnover]( [Operation] [int] NULL, [Quantity] [int] NULL) ON [PRIMARY] GO -/****** Object: Table [dbo].[content_rating] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [dbo].[content_rating] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -411,7 +411,7 @@ CREATE TABLE [dbo].[content_rating]( [wb] [int] NULL, [magok] [int] NULL) ON [PRIMARY] GO -/****** Object: Table [dbo].[grades_quartal] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [dbo].[grades_quartal] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -422,7 +422,7 @@ CREATE TABLE [dbo].[grades_quartal]( [subject] [nvarchar(50)] NULL, [grade] [int] NULL) ON [PRIMARY] GO -/****** Object: Table [dbo].[lineage_edges] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [dbo].[lineage_edges] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -437,7 +437,7 @@ CREATE TABLE [dbo].[lineage_edges]( [to_type] [nvarchar(60)] NULL, [edge_source] [varchar(27)] NULL) ON [PRIMARY] GO -/****** Object: Table [dbo].[lineage_objects] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [dbo].[lineage_objects] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -451,7 +451,7 @@ CREATE TABLE [dbo].[lineage_objects]( [create_date] [datetime] NULL, [modify_date] [datetime] NULL) ON [PRIMARY] GO -/****** Object: Table [dbo].[order_source] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [dbo].[order_source] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -469,7 +469,7 @@ CREATE TABLE [dbo].[order_source]( [campaign_name] [nvarchar(500)] NULL, [banner_group_name] [nvarchar(500)] NULL) ON [PRIMARY] GO -/****** Object: Table [dbo].[site_product] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [dbo].[site_product] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -486,7 +486,7 @@ PRIMARY KEY CLUSTERED )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].[yandex_direct_criteria_stats] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [dbo].[yandex_direct_criteria_stats] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -513,7 +513,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbiProd].[GroupsOfNomenclature] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -529,7 +529,7 @@ CREATE TABLE [pbiProd].[GroupsOfNomenclature]( [20k] [int] NULL, [upload] [int] NULL) ON [PRIMARY] GO -/****** Object: Table [pbiProd].[Логирование] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbiProd].[Логирование] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -538,7 +538,7 @@ CREATE TABLE [pbiProd].[Логирование]( [Инфо] [nvarchar(8)] NULL, [Период] [datetime2(0)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbiProd].[НоменклатураВПроизводствеПоУровням] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbiProd].[НоменклатураВПроизводствеПоУровням] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -554,7 +554,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbiProd].[СебестоимостьДо2022] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -606,7 +606,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbiProd].[СебестоимостьИтогиДо2022] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -638,7 +638,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbiProd].[СебестоимостьОт2022] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -705,7 +705,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbiProd].[СебестоимостьПроизводствоОт2022] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -723,7 +723,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbiProd].[СебестоимостьСводныйОт2022] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -786,7 +786,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbiProd].[СебестоимостьСводныйОт2022_copy_2025-03-26] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -840,7 +840,7 @@ CREATE TABLE [pbiProd].[СебестоимостьСводныйОт2022_copy_20 [СборкаЗаказа] [numeric(21,9)] NULL, [КоличествоУпаковок] [numeric(15,3)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbiProd].[СебестоимостьСводныйОт2022_copy_for_pbi] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -901,7 +901,7 @@ CREATE TABLE [pbiProd].[СебестоимостьСводныйОт2022_copy_fo [Учетная сумма, usd] [decimal(21,9)] NULL, [Источник заказа] [nvarchar(50)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbiProd].[УчетнаяЦенаПоСебестоимости] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbiProd].[УчетнаяЦенаПоСебестоимости] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -912,7 +912,7 @@ CREATE TABLE [pbiProd].[УчетнаяЦенаПоСебестоимости]( [Учетная цена USD2+2] [numeric(15,9)] NULL, [Период] [datetime2(0)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[Turnover] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[Turnover] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -930,7 +930,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[content_rating] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -942,7 +942,7 @@ CREATE TABLE [pbi].[content_rating]( [wb_by_ozon] [int] NULL, [magok] [int] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[direct_adv_costs] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[direct_adv_costs] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -961,7 +961,7 @@ CREATE TABLE [pbi].[direct_adv_costs]( [Расход, руб] [decimal(18,2)] NULL, [Ср. цена клика, руб] [decimal(18,2)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[direct_orders] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[direct_orders] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -974,7 +974,7 @@ CREATE TABLE [pbi].[direct_orders]( [Количество покупок] [int] NULL, [Доход, руб] [decimal(18,2)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[enums] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[enums] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -984,7 +984,7 @@ CREATE TABLE [pbi].[enums]( [value] [nvarchar(150)] NULL, [enum] [nvarchar(50)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[groups] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[groups] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1004,7 +1004,7 @@ CREATE TABLE [pbi].[groups]( [план] [float] NULL, [first group] [nvarchar(36)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[nomenclatureVolumeStorehouse] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[nomenclatureVolumeStorehouse] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1017,7 +1017,7 @@ CREATE TABLE [pbi].[nomenclatureVolumeStorehouse]( [volume] [numeric(15,5)] NULL, [totalVolume] [numeric(15,5)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[nomenclature] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[nomenclature] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1099,7 +1099,7 @@ CREATE TABLE [pbi].[nomenclature]( [СКО_МесячныхПродаж] [float] NULL, [minAvailableQty] [decimal(18,4)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[ostatki] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[ostatki] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1120,7 +1120,7 @@ CREATE TABLE [pbi].[ostatki]( [upakovok_ship] [numeric(38,15)] NULL, [quantity_ship] [numeric(38,15)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[ostatki_mp] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[ostatki_mp] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1134,7 +1134,7 @@ CREATE TABLE [pbi].[ostatki_mp]( [Доступно МП, упак] [decimal(18,3)] NULL, [Остаток МП, шт] [decimal(18,3)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[ostatki_mp_2025_interpolated] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[ostatki_mp_2025_interpolated] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1149,7 +1149,7 @@ CREATE TABLE [pbi].[ostatki_mp_2025_interpolated]( [Доступно МП, упак] [decimal(18,3)] NULL, [Остаток МП, упак] [decimal(18,3)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[ostatki_short] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[ostatki_short] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1168,7 +1168,7 @@ CREATE TABLE [pbi].[ostatki_short]( [upakovok_ship] [numeric(38,15)] NULL, [quantity_ship] [numeric(38,15)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[pricelist] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[pricelist] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1181,7 +1181,7 @@ CREATE TABLE [pbi].[pricelist]( [Дата] [datetime2(0)] NULL, [_Period] [datetime2(0)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[w_ostatok_da_net] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[w_ostatok_da_net] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1201,7 +1201,7 @@ CREATE TABLE [pbi].[w_ostatok_da_net]( [ostatok_mp] [numeric(15,6)] NULL, [ostatok_all] [numeric(15,6)] NULL) ON [PRIMARY] GO -/****** Object: Table [pbi].[Себестоимость2023] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[Себестоимость2023] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1259,7 +1259,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[Себестоимость2024] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1317,7 +1317,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[Себестоимость] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1369,7 +1369,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[СебестоимостьДо2022Тест] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1421,7 +1421,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[СебестоимостьПродажи] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1457,7 +1457,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[СебестоимостьПродажиОт2022] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1493,7 +1493,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[СебестоимостьПродажиТест] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1529,7 +1529,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[СебестоимостьСводныйОт2022Тестовый] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1587,7 +1587,7 @@ PRIMARY KEY CLUSTERED )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: 2026-03-02 14:42:25 ******/ +/****** Object: Table [pbi].[СебестоимостьТест] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1639,7 +1639,7 @@ PRIMARY KEY CLUSTERED )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 [stg].[forecast_load] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: Table [stg].[forecast_load] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON diff --git a/sql_db_mag_pbi/mag_pbi_views.sql b/sql_db_mag_pbi/mag_pbi_views.sql index 9247802..d01917e 100644 --- a/sql_db_mag_pbi/mag_pbi_views.sql +++ b/sql_db_mag_pbi/mag_pbi_views.sql @@ -1,7 +1,7 @@ USE [mag_pbi] GO -/****** Object: View [analytics].[deficit_orders] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[deficit_orders] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -23,7 +23,7 @@ CREATE VIEW [analytics].[deficit_orders] AS INNER JOIN pbi.nomenclature n ON n.[1c_id] = d.[1c_id] GO -/****** Object: View [analytics].[doprekvizit] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[doprekvizit] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -55,7 +55,7 @@ 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: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[doprekvizitvalues] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -111,7 +111,7 @@ CROSS APPLY ( ) AS h; GO -/****** Object: View [analytics].[ForecastBasesKs] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[ForecastBasesKs] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -312,7 +312,7 @@ LEFT JOIN TrendFinal tf ON n.artic_id = tf.artic_id WHERE n.Статус IN ('Основной', 'Маркетплейс'); GO -/****** Object: View [analytics].[get_analytics_by_group] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[get_analytics_by_group] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -346,7 +346,7 @@ FROM WHERE (g.g NOT LIKE '*%') GO -/****** Object: View [analytics].[get_forecast_by_group] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[get_forecast_by_group] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -367,7 +367,7 @@ FROM [mag_pbi].[analytics].forecast f WHERE g.g not like '*%' AND [value] > 0 GO -/****** Object: View [analytics].[get_forecast_scenarios] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[get_forecast_scenarios] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -382,7 +382,7 @@ SELECT [scenario_id] WHERE active = 1 GO -/****** Object: View [analytics].[get_mp_quantity_by_group] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[get_mp_quantity_by_group] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -414,7 +414,7 @@ CREATE view [analytics].[get_mp_quantity_by_group] as WHERE t.[Дата обновления] >= FORMAT(GETDATE(), 'yyyy-MM-dd') GO -/****** Object: View [analytics].[get_mpcosts_monthly_by_group] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[get_mpcosts_monthly_by_group] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -442,7 +442,7 @@ INNER JOIN [mag_pbi].[pbi].[groups] g ON n.[1c_group] = g.[1c_id] GROUP BY sales.date, n.code, g.path GO -/****** Object: View [analytics].[get_nomenclature_by_group] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[get_nomenclature_by_group] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -511,7 +511,7 @@ CREATE view [analytics].[get_nomenclature_by_group] as */ GO -/****** Object: View [analytics].[get_orders_by_group] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[get_orders_by_group] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -540,7 +540,7 @@ WHERE z.Статус NOT IN ('Тех. заказ', 'Подтвержден' ,'Закрыт') GO -/****** Object: View [analytics].[get_orders_list] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[get_orders_list] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -606,7 +606,7 @@ WHERE z._Posted = 1 AND z._Fld3417RRef <> 0x973A5675AC6A17F64DA37EC6C22FC12C; -- не «Частично отгружен» GO -/****** Object: View [analytics].[get_quantity_by_group] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[get_quantity_by_group] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -638,7 +638,7 @@ CREATE view [analytics].[get_quantity_by_group] as GROUP BY n.code, s._Description, s.[Категория], g.path, n.[1c_id] GO -/****** Object: View [analytics].[get_sales_monthly_by_group] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[get_sales_monthly_by_group] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -679,7 +679,7 @@ 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].[images] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[images] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -725,7 +725,7 @@ CROSS APPLY ( ) AS h; GO -/****** Object: View [analytics].[income_expence] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[income_expence] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -960,7 +960,7 @@ FROM WHERE g <> 'Прочие перемещения ДС' AND [Статья ДДС] <> 'Закупка_Приобретение валюты' GO -/****** Object: View [analytics].[nomenclature] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[nomenclature] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1007,7 +1007,7 @@ SELECT WHERE n._Folder = 1 GO -/****** Object: View [analytics].[v_contractors] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[v_contractors] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1035,7 +1035,7 @@ FROM [MAG_2019].[dbo].[_Reference168] c WHERE c._Marked = 0; GO -/****** Object: View [analytics].[v_manufacturer_counterparty_mapping] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[v_manufacturer_counterparty_mapping] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1059,7 +1059,7 @@ LEFT JOIN [analytics].[v_contractors] c ON c.contractor_1c_id = mcm.contractor_1 LEFT JOIN [analytics].[v_producers] p ON LTRIM(RTRIM(p.producer_name)) = LTRIM(RTRIM(man.manufacturer)); GO -/****** Object: View [analytics].[v_manufacturers_roi_compat] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[v_manufacturers_roi_compat] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1086,7 +1086,7 @@ LEFT JOIN ( ) m_stage ON m_stage.manufacturer_id = man.id AND m_stage.rn = 2; GO -/****** Object: View [analytics].[v_producers] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[v_producers] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1107,7 +1107,7 @@ FROM [MAG_2019].[dbo].[_Reference260] pr WHERE pr._Marked = 0; GO -/****** Object: View [analytics].[Бюджет ДДС] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Бюджет ДДС] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1134,7 +1134,7 @@ FROM [MAG_2019].[dbo].[_InfoRg28389] budget /* РегистрСведений.Б --WHERE _Active = 1 GO -/****** Object: View [analytics].[Внешние остатки] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Внешние остатки] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1158,7 +1158,7 @@ FROM [MAG_2019].[dbo].[_InfoRg28682X1] AS ost /* РегистрСведени LEFT JOIN [MAG_2019].[dbo].[_Node28072X1] nod ON nod._IDRRef = ost._Fld28684RRef /* ПланОбмена.ВнешниеСистемы */ GO -/****** Object: View [analytics].[Где товар] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Где товар] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1204,7 +1204,7 @@ UNION ALL FROM [pbi].[Заказо_в_производстве] GO -/****** Object: View [analytics].[Где товар с упаковками] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Где товар с упаковками] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1227,7 +1227,7 @@ SELECT [1c_id] ON t.[1c_id] = upak.[_IDRRef] GO -/****** Object: View [analytics].[Группы_статей_ДДС] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Группы_статей_ДДС] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1271,7 +1271,7 @@ CREATE view [analytics].[Группы_статей_ДДС] as --ORDER BY Sort GO -/****** Object: View [analytics].[Заказы] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Заказы] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1365,7 +1365,7 @@ WHERE --AND z._Fld3417RRef <> 0x973A5675AC6A17F64DA37EC6C22FC12C /* Не Подтвержден */ GO -/****** Object: View [analytics].[ЗаказыВЗаявках] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[ЗаказыВЗаявках] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1492,7 +1492,7 @@ WHERE AND t._Fld3491RRef = 0; GO -/****** Object: View [analytics].[Заявки_без_проекта_неоплачено] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Заявки_без_проекта_неоплачено] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1523,7 +1523,7 @@ SELECT [Номер заявки] WHERE [Оплачено]=0 AND [project id] is null AND [Дата оплаты план] >= '2024-06-01' GO -/****** Object: View [analytics].[Заявки_на_оплату] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Заявки_на_оплату] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1569,7 +1569,7 @@ AS SELECT WHERE /*[_Fld3881RRef]=0xB96DB293C2F88D8C46DF79811923F574 AND */ r.[_Posted] = 0x01 AND r._Marked = 0x00 GO -/****** Object: View [analytics].[Заявки_на_оплату_по_табличной_части] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Заявки_на_оплату_по_табличной_части] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1625,7 +1625,7 @@ WHERE z._Posted = 1 AND z._Marked = 0x00 AND z.[_Fld3880RRef] <> 0x9EB3FD405C68C64C42B491437EDE1CAB GO -/****** Object: View [analytics].[ЗаявкиТовары] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[ЗаявкиТовары] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1793,7 +1793,7 @@ OUTER APPLY ( LEFT JOIN deduct d ON d.zayavka_id = r.zayavka_id AND d.nom_1c_id = r.nom_1c_id; GO -/****** Object: View [analytics].[Курсы валют на сегодня] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Курсы валют на сегодня] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1819,7 +1819,7 @@ CREATE VIEW analytics.[Курсы валют на сегодня] as [MAG_2019].[dbo].[_Reference50] r GO -/****** Object: View [analytics].[Ожидаемое_поступление] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Ожидаемое_поступление] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1848,7 +1848,7 @@ WHERE d._Marked = 0x00 AND d._Posted = 0x01 */ GO -/****** Object: View [analytics].[Ожидаемый расход] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Ожидаемый расход] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1876,7 +1876,7 @@ SELECT FROM [mag_pbi].[analytics].[Бюджет ДДС] GO -/****** Object: View [analytics].[Остатки МП] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Остатки МП] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -1907,7 +1907,7 @@ CREATE VIEW analytics.[Остатки МП] as t.[1c_id] GO -/****** Object: View [analytics].[Продажи_Учёт_Маржа_по_дням] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Продажи_Учёт_Маржа_по_дням] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -2002,7 +2002,7 @@ SELECT */ GO -/****** Object: View [analytics].[Проекты] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Проекты] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -2031,7 +2031,7 @@ FROM [MAG_2019].[dbo].[_Reference258] p /* Справочник.Проекты * WHERE p._Marked = 0 GO -/****** Object: View [analytics].[Товары на складах] Script Date: 2026-03-02 14:42:25 ******/ +/****** Object: View [analytics].[Товары на складах] Script Date: 2026-03-02 14:46:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -2052,3 +2052,3307 @@ CREATE view [analytics].[Товары на складах] as WHERE s.[Категория]='Хранение' OR s.[Категория]='Фасовка' --g.path like 'Игрушки%' GROUP BY t._Fld17485RRef, s._Description, s.[Категория] GO + +/****** Object: View [dbo].[tovar_bez_kontenta] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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 [ostatki].[СборкиРазборкиВРаботе] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE view pbi.[groups] +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: 2026-03-02 14:46:40 ******/ +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].[nomeclature_for_pbi] Script Date: 2026-03-02 14:46:40 ******/ +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].[sklad_2019] Script Date: 2026-03-02 14:46:40 ******/ +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 [pbi].[users_1C] Script Date: 2026-03-02 14:46:40 ******/ +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].[v_nomenclature_full] Script Date: 2026-03-02 14:46:40 ******/ +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: View [pbi].[v_ostatki_2025_interpolated] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE VIEW [pbi].[v_ostatki_2025_interpolated] +AS +WITH Base AS ( + SELECT + artic_id, + CAST([Период] AS date) AS Дата, + [Количество], + LEAD(CAST([Период] AS date)) OVER ( + PARTITION BY artic_id + ORDER BY [Период] + ) AS СледДата + FROM mag_pbi.pbiProd.[СводныйСебестоимость Для PBI] + WHERE [Вид операции] = 'Остаток' +), +Ranges AS ( + SELECT + artic_id, + Дата AS ДатаНачала, + ISNULL(DATEADD(DAY, -1, СледДата), '2025-12-31') AS ДатаОкончания, + Количество + FROM Base +) +SELECT + r.artic_id, + DATEADD(DAY, v.number, r.ДатаНачала) AS Дата, + r.Количество +FROM Ranges r +CROSS APPLY ( + SELECT number + FROM master..spt_values + WHERE type = 'P' + AND number <= DATEDIFF(DAY, r.ДатаНачала, r.ДатаОкончания) +) v +WHERE DATEADD(DAY, v.number, r.ДатаНачала) + BETWEEN '2025-01-01' AND '2025-12-31' +GO + +/****** Object: View [pbi].[БазоваяУпаковка] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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 [pbi].[Внешние продажи] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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 [pbi].[Заказо_в_пути] Script Date: 2026-03-02 14:46:40 ******/ +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 [pbi].[Заказы] Script Date: 2026-03-02 14:46:40 ******/ +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].[Заказы в заявках] Script Date: 2026-03-02 14:46:40 ******/ +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 'Сумма в руб' + ,[Сумма]/1000 * + (SELECT TOP 1 _Fld13220/_Fld13221 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = [currency_id] --валюта документа + AND CONVERT(date, DATEADD(YEAR, -2000, _Period)) <= [Дата заказа поставщику] + ORDER BY _Period desc) / + + (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND CONVERT(date, DATEADD(YEAR, -2000, _Period)) <= [Дата заказа поставщику] + ORDER BY _Period desc) as [Сумма всего, usd2] + + FROM [mag_pbi].[analytics].[ЗаказыВЗаявках] + WHERE [g] NOT LIKE '*Внутренняя' + AND [Статус] = 'В пути' +GO + +/****** Object: View [pbi].[Заказы_тех] Script Date: 2026-03-02 14:46:40 ******/ +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 [pbi].[Заявки_на_оплату] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/*ALTER VIEW [pbi].[ЗаявкиПоставщикам] AS + +SELECT [Дата заявки] + ,[Номер заявки] + ,[Статус заявки] + --,[Партнер] + --,[partner_1c_id] + , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [partner_1c_id], 2), 25,8),'-', + SUBSTRING ( convert(nvarchar(36), [partner_1c_id], 2),21,4),'-', + SUBSTRING ( convert(nvarchar(36), [partner_1c_id], 2),17,4),'-', + SUBSTRING ( convert(nvarchar(36), [partner_1c_id], 2),1,4),'-', + SUBSTRING ( convert(nvarchar(36), [partner_1c_id], 2),5,12) )) as partner_id + + ,[Контрагент] + ,[Валюта] + --,[Сумма документа] + --,[Сумма документа в руб] + --,[Дата поступления] + --,[manufacturer] + --,[roi_year_normalized] + --,[n_percent] + --,[n_days] + --,[m_percent] + --,[m_days] + --,[line_no] + --,[nom_1c_id] + ,[artic_id] + --,[Номенклатура] + --,[code] + --,[Артикул] + --,[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] + --,[Количество заказано (вычет)] + --,[Кол. упаковок заказано (вычет)] + ,[Количество текущее] + ,[Кол. упаковок текущее] + ,[Количество текущее] * (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 [Заявки нач в вал док] + ,[Сумма строки в руб]/1000 as [Заявки нач, руб] + ,[Сумма строки]/1000 * + (SELECT TOP 1 _Fld13220/_Fld13221 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = [currency_id] --валюта документа + AND CONVERT(date, DATEADD(YEAR, -2000, _Period)) <= [Дата заявки] + ORDER BY _Period desc) / + + (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND CONVERT(date, DATEADD(YEAR, -2000, _Period)) <= [Дата заявки] + ORDER BY _Period desc) as [Заявки нач, usd2] + + ,[Сумма строки текущая]/1000 as [Заявки тек в вал док] + ,[Сумма строки текущая в руб]/1000 as [Заявки тек, руб] + ,[Сумма строки текущая]/1000 * + (SELECT TOP 1 _Fld13220/_Fld13221 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = [currency_id] --валюта документа + AND CONVERT(date, DATEADD(YEAR, -2000, _Period)) <= [Дата заявки] + ORDER BY _Period desc) / + + (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND CONVERT(date, DATEADD(YEAR, -2000, _Period)) <= [Дата заявки] + ORDER BY _Period desc) as [Заявки тек, usd2] + + FROM [mag_pbi].[analytics].[ЗаявкиТовары] zt + --LEFT JOIN [mag_pbi].[pbi].[ПартнерыКонтрагенты] pc ON pc.[partner_1cid] = zt.[partner_1c_id] + WHERE [Статус заявки] IN ('В производстве', 'На согласовании') + +GO +*/ + + + + +CREATE VIEW [pbi].[ЗаявкиПоставщикам] 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, + z._Fld34039RRef AS partner_1c_id, + z._Fld34040RRef AS contractor_1c_id, + CONVERT(decimal(18, 2), z._Fld34051) AS summa_doc, + z._Fld34045RRef AS valuta_ref, + CASE + WHEN z._Fld34119 = '00010101' THEN NULL + ELSE CONVERT(date, DATEADD(YEAR, -2000, z._Fld34119)) + END AS data_postupleniya, + t._LineNo34053 AS line_no, + t._Fld34054RRef AS nom_1c_id, + CONVERT(decimal(18, 3), t._Fld34056) AS qty_initial, + CONVERT(decimal(18, 2), t._Fld34059) AS summa_line + 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 + AND z._Fld34044RRef IN ( + 0x89144CF303169EA446E30A9CFAC257D1, + 0xA6CC3F7ADAD37C7D473BFD1D132A96E8) + +), +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 [Статус заявки], + --prt._Description AS [Партнер], + LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), r.partner_1c_id, 2), 25,8),'-', + SUBSTRING ( convert(nvarchar(36), r.partner_1c_id, 2),21,4),'-', + SUBSTRING ( convert(nvarchar(36), r.partner_1c_id, 2),17,4),'-', + SUBSTRING ( convert(nvarchar(36), r.partner_1c_id, 2),1,4),'-', + SUBSTRING ( convert(nvarchar(36), r.partner_1c_id, 2),5,12) )) AS partner_id, + + ctg._Description AS [Контрагент], + val._Description AS [Валюта], + + /* ── Сумма документа ── */ + /* r.summa_doc AS [Сумма документа], + CASE val._Description + WHEN 'USD' THEN r.summa_doc * + (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = 'USD2') + ELSE r.summa_doc * + (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = val._Description) + END AS [Сумма документа в руб], + + r.data_postupleniya AS [Дата поступления], + ISNULL(man.manufacturer, N'Не найдено') AS manufacturer, + ISNULL(man.ROI_norm, 136) / 100.0 AS roi_year_normalized, + man.n_percent, + man.n_days, + man.m_percent, + man.m_days, + r.line_no AS line_no, + r.nom_1c_id AS 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 [Кол. упаковок начальное], + r.qty_initial * (SELECT n._Fld21092 / ISNULL(NULLIF(n._Fld21089, 0), 1) FROM mag_2019.dbo._Reference188X1 n WHERE r.nom_1c_id = n._IDRRef) as [Заявки нач объем, м3], + + + /* /* ── Количество заказано (вычет) ── */ + 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 [Кол. упаковок текущее], + CONVERT(decimal(18, 3), r.qty_initial - ISNULL(d.qty_deduct, 0)) * (SELECT n._Fld21092 / ISNULL(NULLIF(n._Fld21089, 0), 1) FROM mag_2019.dbo._Reference188X1 n WHERE r.nom_1c_id = n._IDRRef) as [Заявки тек объем, м3], + + + r.summa_line/1000 as [Заявки нач в вал док], + CASE val._Description + WHEN 'USD' THEN r.summa_line/1000 * + (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = 'USD2') + ELSE r.summa_line/1000 * + (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = val._Description) + END AS [Заявки нач, руб], + + r.summa_line/1000 * + (SELECT TOP 1 _Fld13220/_Fld13221 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = r.valuta_ref --валюта документа + AND CONVERT(date, DATEADD(YEAR, -2000, _Period)) <= r.zayavka_date + ORDER BY _Period desc) / + + (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND CONVERT(date, DATEADD(YEAR, -2000, _Period)) <= r.zayavka_date + ORDER BY _Period desc) as [Заявки нач, usd2], + + CASE + WHEN r.qty_initial = 0 THEN CONVERT(decimal(18, 2), 0) + ELSE CONVERT(decimal(18, 2), + r.summa_line / r.qty_initial * (r.qty_initial - ISNULL(d.qty_deduct, 0))) / 1000 + END as [Заявки тек в вал док], + + + CASE val._Description + WHEN 'USD' THEN + CASE WHEN r.qty_initial = 0 THEN 0 + ELSE r.summa_line / r.qty_initial * (r.qty_initial - ISNULL(d.qty_deduct, 0)) END * + (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = 'USD2') / 1000 + ELSE + CASE WHEN r.qty_initial = 0 THEN 0 + ELSE r.summa_line / r.qty_initial * (r.qty_initial - ISNULL(d.qty_deduct, 0)) END * + (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = val._Description) / 1000 + END AS [Заявки тек, руб], + + + CASE + WHEN r.qty_initial = 0 THEN CONVERT(decimal(18, 2), 0) + ELSE CONVERT(decimal(18, 2), + r.summa_line / r.qty_initial * (r.qty_initial - ISNULL(d.qty_deduct, 0))) / 1000 + END * + (SELECT TOP 1 _Fld13220/_Fld13221 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = r.valuta_ref --валюта документа + AND CONVERT(date, DATEADD(YEAR, -2000, _Period)) <= r.zayavka_date + ORDER BY _Period desc) / + + (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND CONVERT(date, DATEADD(YEAR, -2000, _Period)) <= r.zayavka_date + ORDER BY _Period desc) as [Заявки тек, usd2] + + + + + +FROM req r + +JOIN MAG_2019.dbo._Reference188X1 n ON n._IDRRef = r.nom_1c_id +LEFT JOIN MAG_2019.dbo._Reference215X1 prt ON prt._IDRRef = r.partner_1c_id +LEFT JOIN MAG_2019.dbo._Reference168 ctg ON ctg._IDRRef = r.contractor_1c_id +LEFT JOIN MAG_2019.dbo._Reference50 val ON val._IDRRef = r.valuta_ref +LEFT JOIN analytics.manufacturer_counterparty_map map ON map.contractor_1c_id = r.contractor_1c_id +LEFT JOIN analytics.v_manufacturers_roi_compat man ON man.id = map.manufacturer_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: View [pbi].[значения доп реквизитов номенклатуры] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: View [pbi].[ОстаткиTotal] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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 [pbi].[ПартнерыКонтрагенты] Script Date: 2026-03-02 14:46:40 ******/ +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 [pbi].[ПартнерыСегменты] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +create view [pbi].[partner_segments] 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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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 [pbi].[Резервы] Script Date: 2026-03-02 14:46:40 ******/ +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 [pbi].[РекламаМаркетплейсы] Script Date: 2026-03-02 14:46:40 ******/ +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: View [pbi].[Сборки] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: View [pbi].[Себестоимость+СебестоимостьПродажОт2022] Script Date: 2026-03-02 14:46:40 ******/ +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 [pbi].[Себестоимость+СебестоимостьПродажТестовая] Script Date: 2026-03-02 14:46:40 ******/ +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: View [pbi].[СегментыНоменклатуры] Script Date: 2026-03-02 14:46:40 ******/ +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: 2026-03-02 14:46:40 ******/ +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: View [pbi].[Стоимость обработки заказа] Script Date: 2026-03-02 14:46:40 ******/ +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].[УчетнаяСуммаДляPBI] Script Date: 2026-03-02 14:46:40 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/****** Скрипт для команды SelectTopNRows из среды SSMS ******/ + +CREATE view [pbi].[УчетнаяСуммаДляPBI] +as +SELECT + + DATEADD(year, -2000, [_Period]) as [Период] + , [_RecorderRRef] as [1c_document_id] + , LOWER(CONCAT(SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2), 25,8),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),21,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),17,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),1,4),'-',SUBSTRING(convert(nvarchar(36), analitikaUchetaNomenklaturi.[_Fld20498RRef] , 2),5,12))) as [artic_id] + , [_Fld15567] as [Количество] + , isnull( + [_Fld15567] * + (SELECT top 1 [_Fld27138] / 1000 FROM [mag_2019].[dbo].[_InfoRg27129X1] -- РегистрСведений.ITS_ОсновнойОтчет + WHERE _Fld27130RRef = analitikaUchetaNomenklaturi._Fld20498RRef AND [_Fld27138] > 0 + AND datediff(month,_Period, r._Period) >= 0 + order by _period desc), + [_Fld15567] * + (SELECT TOP (1) [Цена]/1000 + FROM [mag_pbi].[pbi].[pricelist] + where [1c_id] = analitikaUchetaNomenklaturi._Fld20498RRef and [Вид цены] = 'Учетная цена (руб)' + ORDER BY _Period desc) + ) as [Учетная сумма, руб] + + , CASE + WHEN refNomenclatura._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN --'Валютная' + -- Если валютная ценовая группа, то берем учетную цену (вал) + r._Fld15567 * + (SELECT TOP (1) [Цена] / 1000 + FROM [mag_pbi].[pbi].[pricelist] pl + where [1c_id] = analitikaUchetaNomenklaturi._Fld20498RRef and [Вид цены] = 'Учетная цена (вал)' + AND pl._Period <= r._Period + ORDER BY _Period desc) + + + ELSE --WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN --'Рублевая' + --делим учетную цену (руб) на курс + r._Fld15567 * + (SELECT TOP (1) [Цена] / 1000 + FROM [mag_pbi].[pbi].[pricelist] pl + where [1c_id] = analitikaUchetaNomenklaturi._Fld20498RRef and [Вид цены] = 'Учетная цена (руб)' + AND pl._Period <= r._Period + ORDER BY _Period desc) / (SELECT TOP 1 _Fld13220 FROM [MAG_2019].[dbo].[_InfoRg13218] --РегистрСведений.КурсыВалют + WHERE _Fld13219RRef = 0xAE9EB496910DCFD611E95C66B5DE3AFA --USD2+2 + AND _Period <= r._Period + ORDER BY _Period desc) + END + + as [Учетная сумма, usd] + + + FROM [MAG_2019].[dbo].[_AccumRg15547] as r + LEFT JOIN [MAG_2019].[dbo].[_Reference160] as analitikaUchetaNomenklaturi + ON r._Fld15548RRef = analitikaUchetaNomenklaturi._IDRRef + LEFT JOIN [MAG_2019].[dbo].[_Reference188X1] as refNomenclatura + ON refNomenclatura.[_IDRRef] = analitikaUchetaNomenklaturi.[_Fld20498RRef] +GO + +/****** Object: View [pbiProd].[ИтогСебестоимостьПродажОт2022] Script Date: 2026-03-02 14:46:40 ******/ +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 [pbiProd].[СводныйСебестоимость] Script Date: 2026-03-02 14:46:40 ******/ +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: View [pbiProd].[СводныйСебестоимость Для PBI] Script Date: 2026-03-02 14:46:40 ******/ +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