SET NOCOUNT ON;
-- Пустая дата именно в ваших представлениях.
-- Если представления возвращают даты без смещения +2000,
-- замени на '00010101'.
DECLARE @EmptyDate date = '20010101';
DECLARE
@RemoteSql nvarchar(max),
@Sql nvarchar(max),
@Found bigint;
-- Пересоздаём обе временные таблицы.
IF OBJECT_ID('tempdb..#RemoteTareIDs') IS NOT NULL
DROP TABLE #RemoteTareIDs;
IF OBJECT_ID('tempdb..#TareToReview') IS NOT NULL
DROP TABLE #TareToReview;
SELECT TOP (0) t.[ID]
INTO #RemoteTareIDs
FROM [dbo].[Справочник.Тары] AS t;
SELECT TOP (0) t.[ID]
INTO #TareToReview
FROM [dbo].[Справочник.Тары] AS t;
CREATE UNIQUE CLUSTERED INDEX IX_RemoteTareIDs
ON #RemoteTareIDs ([ID]);
BEGIN TRY
-- 1. Загружаем удалённые ID с пустой датой создания.
-- По группе и актуальности удалённую выборку не ограничиваем.
SET @RemoteSql =
N'SELECT [ID]
FROM [V8Views].[dbo].[Справочник.Тары]
WHERE [ДатаСоздания] = '''
+ CONVERT(nvarchar(8), @EmptyDate, 112)
+ N''' OR [ДатаСоздания] IS NULL';
SET @Sql =
N'INSERT INTO #RemoteTareIDs ([ID])
SELECT [ID]
FROM OPENQUERY([sql], '''
+ REPLACE(@RemoteSql, N'''', N'''''')
+ N''');';
EXEC sys.sp_executesql @Sql;
-- 2. Сохраняем локальные ID, подходящие для пометки.
INSERT INTO #TareToReview ([ID])
SELECT t.[ID]
FROM [dbo].[Справочник.Тары] AS t
WHERE t.[ЭтоГруппа] = 0x01
AND t.[НеАктуальна] = 0x00
AND
(
t.[ДатаСоздания] = @EmptyDate
OR t.[ДатаСоздания] IS NULL
)
AND NOT EXISTS
(
SELECT 1
FROM #RemoteTareIDs AS r
WHERE r.[ID] = t.[ID]
)
AND NOT EXISTS
(
SELECT 1
FROM [dbo].[РегистрСведений.СостоянияГрузов] AS СГ
WHERE СГ.[Тара] = t.[ID]
AND СГ.[Период] >= '20260901'
)
OPTION (RECOMPILE, MAXDOP 2);
SET @Found = ROWCOUNT_BIG();
SELECT @Found AS НайденоДляПроверки;
END TRY
BEGIN CATCH
-- Если загрузка удалённых ID завершилась ошибкой,
-- локальную сверку не выполняем.
THROW;
END CATCH;
-- 3. Просмотр результата.
SELECT TOP (100)
t.[ID],
t.[Код],
t.[Наименование],
t.[ДатаСоздания],
t.[Родитель]
FROM #TareToReview AS r
INNER JOIN [dbo].[Справочник.Тары] AS t
ON t.[ID] = r.[ID];
-- #TareToReview остаётся для дальнейшего исключения по родителю.
-- Данные справочника не обновляются.