Перерасчет итогов регистра бухгалтерии в 1С

0. MarcoPolo3 50 30.05.17 09:19 Сейчас в теме
Вариант перерасчета итогов частями (помесячно), если при типовом пересчете 1С зависает.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. GROOVY 2493 30.05.17 15:09 Сейчас в теме
Превосходная статья, для тех кто хочет разобраться в механизмах регистров бухгалтерии.
4. anig99 2829 19.12.20 23:20 Сейчас в теме
(1)Добрый вечер! Текущий способ помог и мне, но остается открытым вопрос, почему так происходит?
У меня эта проблема возникла в ноябре. Расчет шел больше суток, потом я его вырубал. Все месяцы до этого считались и считаются быстро (по 1-2 минуты). Я пробовал очищать таблицы итого и пересчитывать, убирать проводки отдельных счетов, искать битые ссылки, проверял на разных базах. Но ничего необычного не находил. Максимум, что выяснил, что если оставить проводки с 1 по 5 число, то расчет идет 10-15 минут. Далее Помог только описанный в статья способ. Итог рассчитался за 15 секунд.
Как найти причину, чтобы не пришлось каждый раз чистить таблицы?

Вот зависающий отчет из profilerа

exec sp_executesql N'INSERT INTO #tt7 WITH(TABLOCK) (_Period, _AccountRRef, _Fld13158RRef, _Fld13159RRef, _EDValue1_TYPE, _EDValue1_RTRef, _EDValue1_RRRef, _EDValue2_TYPE, _EDValue2_RTRef, _EDValue2_RRRef, _Fld13160, _TurnoverDt13171, _TurnoverCt13172, _Turnover13173, _Fld13161, _TurnoverDt13174, _TurnoverCt13175, _Turnover13176, _Fld13162, _TurnoverDt13177, _TurnoverCt13178, _Turnover13179) SELECT
*P1,
T1.AccountRRef,
T1.Fld13158RRef,
T1.Fld13159RRef,
T1.EDValue1_TYPE,
T1.EDValue1_RTRef,
T1.EDValue1_RRRef,
T1.EDValue2_TYPE,
T1.EDValue2_RTRef,
T1.EDValue2_RRRef,
*P2,
CAST(SUM(T1.TurnoverDt13171_) AS NUMERIC(21, 2)),
CAST(SUM(T1.TurnoverCt13172_) AS NUMERIC(21, 2)),
CAST(SUM(T1.TurnoverDt13171_ - T1.TurnoverCt13172_) AS NUMERIC(22, 2)),
*P3,
CAST(SUM(T1.TurnoverDt13174_) AS NUMERIC(21, 2)),
CAST(SUM(T1.TurnoverCt13175_) AS NUMERIC(21, 2)),
CAST(SUM(T1.TurnoverDt13174_ - T1.TurnoverCt13175_) AS NUMERIC(22, 2)),
*P4,
CAST(SUM(T1.TurnoverDt13177_) AS NUMERIC(21, 3)),
CAST(SUM(T1.TurnoverCt13178_) AS NUMERIC(21, 3)),
CAST(SUM(T1.TurnoverDt13177_ - T1.TurnoverCt13178_) AS NUMERIC(22, 3))
FROM (SELECT
T2._AccountDtRRef AS AccountRRef,
T2._Fld13158RRef AS Fld13158RRef,
T2._Fld13159DtRRef AS Fld13159RRef,
T3._EDCount AS EDCount_,
T5._Value_TYPE AS EDValue1_TYPE,
T5._Value_RTRef AS EDValue1_RTRef,
T5._Value_RRRef AS EDValue1_RRRef,
T7._Value_TYPE AS EDValue2_TYPE,
T7._Value_RTRef AS EDValue2_RTRef,
T7._Value_RRRef AS EDValue2_RRRef,
T2._Fld13160 AS TurnoverDt13171_,
CAST(*P5 AS NUMERIC(15, 2)) AS TurnoverCt13172_,
T2._Fld13161Dt AS TurnoverDt13174_,
CAST(*P6 AS NUMERIC(15, 2)) AS TurnoverCt13175_,
T2._Fld13162Dt AS TurnoverDt13177_,
CAST(*P7 AS NUMERIC(15, 3)) AS TurnoverCt13178_
FROM dbo._AccRg13157 T2
INNER JOIN #tt4 T3 WITH(NOLOCK)
ON T3._IDRRef = T2._AccountDtRRef AND T3._EDCount = *P8
LEFT OUTER JOIN dbo._Acc4_ExtDim13078 T4
ON T4._Acc4_IDRRef = T2._AccountDtRRef AND T4._LineNo = *P9
LEFT OUTER JOIN dbo._AccRgED13184 T5
ON T5._Period >= *P10 AND T5._Period < *P11 AND T5._Period = T2._Period AND T5._RecorderTRef = T2._RecorderTRef AND T5._RecorderRRef = T2._RecorderRRef AND T5._LineNo = T2._LineNo AND T5._Correspond = *P12 AND T5._KindRRef = T4._DimKindRRef
LEFT OUTER JOIN dbo._Acc4_ExtDim13078 T6
ON T6._Acc4_IDRRef = T2._AccountDtRRef AND T6._LineNo = *P13
LEFT OUTER JOIN dbo._AccRgED13184 T7
ON T7._Period >= *P14 AND T7._Period < *P15 AND T7._Period = T2._Period AND T7._RecorderTRef = T2._RecorderTRef AND T7._RecorderRRef = T2._RecorderRRef AND T7._LineNo = T2._LineNo AND T7._Correspond = *P16 AND T7._KindRRef = T6._DimKindRRef
WHERE T2._Active = 0x01 AND (T2._Period >= *P17 AND T2._Period < *P18) AND T2._AccountDtRRef <> 0x00000000000000000000000000000000
UNION ALL SELECT
T8._AccountCtRRef AS AccountRRef,
T8._Fld13158RRef AS Fld13158RRef,
T8._Fld13159CtRRef AS Fld13159RRef,
T9._EDCount AS EDCount_,
T11._Value_TYPE AS EDValue1_TYPE,
T11._Value_RTRef AS EDValue1_RTRef,
T11._Value_RRRef AS EDValue1_RRRef,
T13._Value_TYPE AS EDValue2_TYPE,
T13._Value_RTRef AS EDValue2_RTRef,
T13._Value_RRRef AS EDValue2_RRRef,
CAST(*P19 AS NUMERIC(15, 2)) AS TurnoverDt13171_,
T8._Fld13160 AS TurnoverCt13172_,
CAST(*P20 AS NUMERIC(15, 2)) AS TurnoverDt13174_,
T8._Fld13161Ct AS TurnoverCt13175_,
CAST(*P21 AS NUMERIC(15, 3)) AS TurnoverDt13177_,
T8._Fld13162Ct AS TurnoverCt13178_
FROM dbo._AccRg13157 T8
INNER JOIN #tt4 T9 WITH(NOLOCK)
ON T9._IDRRef = T8._AccountCtRRef AND T9._EDCount = *P22
LEFT OUTER JOIN dbo._Acc4_ExtDim13078 T10
ON T10._Acc4_IDRRef = T8._AccountCtRRef AND T10._LineNo = *P23
LEFT OUTER JOIN dbo._AccRgED13184 T11
ON T11._Period >= *P24 AND T11._Period < *P25 AND T11._Period = T8._Period AND T11._RecorderTRef = T8._RecorderTRef AND T11._RecorderRRef = T8._RecorderRRef AND T11._LineNo = T8._LineNo AND T11._Correspond = *P26 AND T11._KindRRef = T10._DimKindRRef
LEFT OUTER JOIN dbo._Acc4_ExtDim13078 T12
ON T12._Acc4_IDRRef = T8._AccountCtRRef AND T12._LineNo = *P27
LEFT OUTER JOIN dbo._AccRgED13184 T13
ON T13._Period >= *P28 AND T13._Period < *P29 AND T13._Period = T8._Period AND T13._RecorderTRef = T8._RecorderTRef AND T13._RecorderRRef = T8._RecorderRRef AND T13._LineNo = T8._LineNo AND T13._Correspond = *P30 AND T13._KindRRef = T12._DimKindRRef
WHERE T8._Active = 0x01 AND (T8._Period >= *P31 AND T8._Period < *P32) AND T8._AccountCtRRef <> 0x00000000000000000000000000000000) T1
GROUP BY T1.AccountRRef,
T1.Fld13158RRef,
T1.Fld13159RRef,
T1.EDValue1_TYPE,
T1.EDValue1_RTRef,
T1.EDValue1_RRRef,
T1.EDValue2_TYPE,
T1.EDValue2_RTRef,
T1.EDValue2_RRRef',N'*P1 datetime2(3),*P2 numeric(10),*P3 numeric(10),*P4 numeric(10),*P5 numeric(10),*P6 numeric(10),*P7 numeric(10),*P8 numeric(10),*P9 numeric(10),*P10 datetime2(3),*P11 datetime2(3),*P12 numeric(10),*P13 numeric(10),*P14 datetime2(3),*P15 datetime2(3),*P16 numeric(10),*P17 datetime2(3),*P18 datetime2(3),*P19 numeric(10),*P20 numeric(10),*P21 numeric(10),*P22 numeric(10),*P23 numeric(10),*P24 datetime2(3),*P25 datetime2(3),*P26 numeric(10),*P27 numeric(10),*P28 datetime2(3),*P29 datetime2(3),*P30 numeric(10),*P31 datetime2(3),*P32 datetime2(3)','4020-11-01 00:00:00',0,0,0,0,0,0,2,1,'4020-11-01 00:00:00','4020-12-01 00:00:00',0,2,'4020-11-01 00:00:00','4020-12-01 00:00:00',0,'4020-11-01 00:00:00','4020-12-01 00:00:00',0,0,0,2,1,'4020-11-01 00:00:00','4020-12-01 00:00:00',1,2,'4020-11-01 00:00:00','4020-12-01 00:00:00',1,'4020-11-01 00:00:00','4020-12-01 00:00:00'
Показать
2. пользователь 19.12.20 23:11
Сообщение было скрыто модератором.
...
3. anig99 2829 19.12.20 23:20 Сейчас в теме
Добрый вечер! Текущий способ помог и мне, но остается открытым вопрос, почему так происходит?
У меня эта проблема возникла в ноябре. Расчет шел больше суток, потом я его вырубал. Все месяцы до этого считались и считаются быстро (по 1-2 минуты). Я пробовал очищать таблицы итого и пересчитывать, убирать проводки отдельных счетов, искать битые ссылки, проверял на разных базах. Но ничего необычного не находил. Максимум, что выяснил, что если оставить проводки с 1 по 5 число, то расчет идет 10-15 минут. Далее Помог только описанный в статья способ. Итог рассчитался за 15 секунд.
Как найти причину, чтобы не пришлось каждый раз чистить таблицы?

Вот зависающий отчет из profilerа

exec sp_executesql N'INSERT INTO #tt7 WITH(TABLOCK) (_Period, _AccountRRef, _Fld13158RRef, _Fld13159RRef, _EDValue1_TYPE, _EDValue1_RTRef, _EDValue1_RRRef, _EDValue2_TYPE, _EDValue2_RTRef, _EDValue2_RRRef, _Fld13160, _TurnoverDt13171, _TurnoverCt13172, _Turnover13173, _Fld13161, _TurnoverDt13174, _TurnoverCt13175, _Turnover13176, _Fld13162, _TurnoverDt13177, _TurnoverCt13178, _Turnover13179) SELECT
*P1,
T1.AccountRRef,
T1.Fld13158RRef,
T1.Fld13159RRef,
T1.EDValue1_TYPE,
T1.EDValue1_RTRef,
T1.EDValue1_RRRef,
T1.EDValue2_TYPE,
T1.EDValue2_RTRef,
T1.EDValue2_RRRef,
*P2,
CAST(SUM(T1.TurnoverDt13171_) AS NUMERIC(21, 2)),
CAST(SUM(T1.TurnoverCt13172_) AS NUMERIC(21, 2)),
CAST(SUM(T1.TurnoverDt13171_ - T1.TurnoverCt13172_) AS NUMERIC(22, 2)),
*P3,
CAST(SUM(T1.TurnoverDt13174_) AS NUMERIC(21, 2)),
CAST(SUM(T1.TurnoverCt13175_) AS NUMERIC(21, 2)),
CAST(SUM(T1.TurnoverDt13174_ - T1.TurnoverCt13175_) AS NUMERIC(22, 2)),
*P4,
CAST(SUM(T1.TurnoverDt13177_) AS NUMERIC(21, 3)),
CAST(SUM(T1.TurnoverCt13178_) AS NUMERIC(21, 3)),
CAST(SUM(T1.TurnoverDt13177_ - T1.TurnoverCt13178_) AS NUMERIC(22, 3))
FROM (SELECT
T2._AccountDtRRef AS AccountRRef,
T2._Fld13158RRef AS Fld13158RRef,
T2._Fld13159DtRRef AS Fld13159RRef,
T3._EDCount AS EDCount_,
T5._Value_TYPE AS EDValue1_TYPE,
T5._Value_RTRef AS EDValue1_RTRef,
T5._Value_RRRef AS EDValue1_RRRef,
T7._Value_TYPE AS EDValue2_TYPE,
T7._Value_RTRef AS EDValue2_RTRef,
T7._Value_RRRef AS EDValue2_RRRef,
T2._Fld13160 AS TurnoverDt13171_,
CAST(*P5 AS NUMERIC(15, 2)) AS TurnoverCt13172_,
T2._Fld13161Dt AS TurnoverDt13174_,
CAST(*P6 AS NUMERIC(15, 2)) AS TurnoverCt13175_,
T2._Fld13162Dt AS TurnoverDt13177_,
CAST(*P7 AS NUMERIC(15, 3)) AS TurnoverCt13178_
FROM dbo._AccRg13157 T2
INNER JOIN #tt4 T3 WITH(NOLOCK)
ON T3._IDRRef = T2._AccountDtRRef AND T3._EDCount = *P8
LEFT OUTER JOIN dbo._Acc4_ExtDim13078 T4
ON T4._Acc4_IDRRef = T2._AccountDtRRef AND T4._LineNo = *P9
LEFT OUTER JOIN dbo._AccRgED13184 T5
ON T5._Period >= *P10 AND T5._Period < *P11 AND T5._Period = T2._Period AND T5._RecorderTRef = T2._RecorderTRef AND T5._RecorderRRef = T2._RecorderRRef AND T5._LineNo = T2._LineNo AND T5._Correspond = *P12 AND T5._KindRRef = T4._DimKindRRef
LEFT OUTER JOIN dbo._Acc4_ExtDim13078 T6
ON T6._Acc4_IDRRef = T2._AccountDtRRef AND T6._LineNo = *P13
LEFT OUTER JOIN dbo._AccRgED13184 T7
ON T7._Period >= *P14 AND T7._Period < *P15 AND T7._Period = T2._Period AND T7._RecorderTRef = T2._RecorderTRef AND T7._RecorderRRef = T2._RecorderRRef AND T7._LineNo = T2._LineNo AND T7._Correspond = *P16 AND T7._KindRRef = T6._DimKindRRef
WHERE T2._Active = 0x01 AND (T2._Period >= *P17 AND T2._Period < *P18) AND T2._AccountDtRRef <> 0x00000000000000000000000000000000
UNION ALL SELECT
T8._AccountCtRRef AS AccountRRef,
T8._Fld13158RRef AS Fld13158RRef,
T8._Fld13159CtRRef AS Fld13159RRef,
T9._EDCount AS EDCount_,
T11._Value_TYPE AS EDValue1_TYPE,
T11._Value_RTRef AS EDValue1_RTRef,
T11._Value_RRRef AS EDValue1_RRRef,
T13._Value_TYPE AS EDValue2_TYPE,
T13._Value_RTRef AS EDValue2_RTRef,
T13._Value_RRRef AS EDValue2_RRRef,
CAST(*P19 AS NUMERIC(15, 2)) AS TurnoverDt13171_,
T8._Fld13160 AS TurnoverCt13172_,
CAST(*P20 AS NUMERIC(15, 2)) AS TurnoverDt13174_,
T8._Fld13161Ct AS TurnoverCt13175_,
CAST(*P21 AS NUMERIC(15, 3)) AS TurnoverDt13177_,
T8._Fld13162Ct AS TurnoverCt13178_
FROM dbo._AccRg13157 T8
INNER JOIN #tt4 T9 WITH(NOLOCK)
ON T9._IDRRef = T8._AccountCtRRef AND T9._EDCount = *P22
LEFT OUTER JOIN dbo._Acc4_ExtDim13078 T10
ON T10._Acc4_IDRRef = T8._AccountCtRRef AND T10._LineNo = *P23
LEFT OUTER JOIN dbo._AccRgED13184 T11
ON T11._Period >= *P24 AND T11._Period < *P25 AND T11._Period = T8._Period AND T11._RecorderTRef = T8._RecorderTRef AND T11._RecorderRRef = T8._RecorderRRef AND T11._LineNo = T8._LineNo AND T11._Correspond = *P26 AND T11._KindRRef = T10._DimKindRRef
LEFT OUTER JOIN dbo._Acc4_ExtDim13078 T12
ON T12._Acc4_IDRRef = T8._AccountCtRRef AND T12._LineNo = *P27
LEFT OUTER JOIN dbo._AccRgED13184 T13
ON T13._Period >= *P28 AND T13._Period < *P29 AND T13._Period = T8._Period AND T13._RecorderTRef = T8._RecorderTRef AND T13._RecorderRRef = T8._RecorderRRef AND T13._LineNo = T8._LineNo AND T13._Correspond = *P30 AND T13._KindRRef = T12._DimKindRRef
WHERE T8._Active = 0x01 AND (T8._Period >= *P31 AND T8._Period < *P32) AND T8._AccountCtRRef <> 0x00000000000000000000000000000000) T1
GROUP BY T1.AccountRRef,
T1.Fld13158RRef,
T1.Fld13159RRef,
T1.EDValue1_TYPE,
T1.EDValue1_RTRef,
T1.EDValue1_RRRef,
T1.EDValue2_TYPE,
T1.EDValue2_RTRef,
T1.EDValue2_RRRef',N'*P1 datetime2(3),*P2 numeric(10),*P3 numeric(10),*P4 numeric(10),*P5 numeric(10),*P6 numeric(10),*P7 numeric(10),*P8 numeric(10),*P9 numeric(10),*P10 datetime2(3),*P11 datetime2(3),*P12 numeric(10),*P13 numeric(10),*P14 datetime2(3),*P15 datetime2(3),*P16 numeric(10),*P17 datetime2(3),*P18 datetime2(3),*P19 numeric(10),*P20 numeric(10),*P21 numeric(10),*P22 numeric(10),*P23 numeric(10),*P24 datetime2(3),*P25 datetime2(3),*P26 numeric(10),*P27 numeric(10),*P28 datetime2(3),*P29 datetime2(3),*P30 numeric(10),*P31 datetime2(3),*P32 datetime2(3)','4020-11-01 00:00:00',0,0,0,0,0,0,2,1,'4020-11-01 00:00:00','4020-12-01 00:00:00',0,2,'4020-11-01 00:00:00','4020-12-01 00:00:00',0,'4020-11-01 00:00:00','4020-12-01 00:00:00',0,0,0,2,1,'4020-11-01 00:00:00','4020-12-01 00:00:00',1,2,'4020-11-01 00:00:00','4020-12-01 00:00:00',1,'4020-11-01 00:00:00','4020-12-01 00:00:00'
Показать
5. anig99 2829 19.12.20 23:21 Сейчас в теме
Добрый вечер! Текущий способ помог и мне, но остается открытым вопрос, почему так происходит?
У меня эта проблема возникла в ноябре. Расчет шел больше суток, потом я его вырубал. Все месяцы до этого считались и считаются быстро (по 1-2 минуты). Я пробовал очищать таблицы итого и пересчитывать, убирать проводки отдельных счетов, искать битые ссылки, проверял на разных базах. Но ничего необычного не находил. Максимум, что выяснил, что если оставить проводки с 1 по 5 число, то расчет идет 10-15 минут. Далее Помог только описанный в статья способ. Итог рассчитался за 15 секунд.
Как найти причину, чтобы не пришлось каждый раз чистить таблицы?
6. anig99 2829 19.12.20 23:22 Сейчас в теме
(5) вот отчет из profiler
Добрый вечер! Текущий способ помог и мне, но остается открытым вопрос, почему так происходит?
У меня эта проблема возникла в ноябре. Расчет шел больше суток, потом я его вырубал. Все месяцы до этого считались и считаются быстро (по 1-2 минуты). Я пробовал очищать таблицы итого и пересчитывать, убирать проводки отдельных счетов, искать битые ссылки, проверял на разных базах. Но ничего необычного не находил. Максимум, что выяснил, что если оставить проводки с 1 по 5 число, то расчет идет 10-15 минут. Далее Помог только описанный в статья способ. Итог рассчитался за 15 секунд.
Как найти причину, чтобы не пришлось каждый раз чистить таблицы?

Вот зависающий отчет из profilerа

exec sp_executesql N'INSERT INTO #tt7 WITH(TABLOCK) (_Period, _AccountRRef, _Fld13158RRef, _Fld13159RRef, _EDValue1_TYPE, _EDValue1_RTRef, _EDValue1_RRRef, _EDValue2_TYPE, _EDValue2_RTRef, _EDValue2_RRRef, _Fld13160, _TurnoverDt13171, _TurnoverCt13172, _Turnover13173, _Fld13161, _TurnoverDt13174, _TurnoverCt13175, _Turnover13176, _Fld13162, _TurnoverDt13177, _TurnoverCt13178, _Turnover13179) SELECT
*P1,
T1.AccountRRef,
T1.Fld13158RRef,
T1.Fld13159RRef,
T1.EDValue1_TYPE,
T1.EDValue1_RTRef,
T1.EDValue1_RRRef,
T1.EDValue2_TYPE,
T1.EDValue2_RTRef,
T1.EDValue2_RRRef,
*P2,
CAST(SUM(T1.TurnoverDt13171_) AS NUMERIC(21, 2)),
CAST(SUM(T1.TurnoverCt13172_) AS NUMERIC(21, 2)),
CAST(SUM(T1.TurnoverDt13171_ - T1.TurnoverCt13172_) AS NUMERIC(22, 2)),
*P3,
CAST(SUM(T1.TurnoverDt13174_) AS NUMERIC(21, 2)),
CAST(SUM(T1.TurnoverCt13175_) AS NUMERIC(21, 2)),
CAST(SUM(T1.TurnoverDt13174_ - T1.TurnoverCt13175_) AS NUMERIC(22, 2)),
*P4,
CAST(SUM(T1.TurnoverDt13177_) AS NUMERIC(21, 3)),
CAST(SUM(T1.TurnoverCt13178_) AS NUMERIC(21, 3)),
CAST(SUM(T1.TurnoverDt13177_ - T1.TurnoverCt13178_) AS NUMERIC(22, 3))
FROM (SELECT
T2._AccountDtRRef AS AccountRRef,
T2._Fld13158RRef AS Fld13158RRef,
T2._Fld13159DtRRef AS Fld13159RRef,
T3._EDCount AS EDCount_,
T5._Value_TYPE AS EDValue1_TYPE,
T5._Value_RTRef AS EDValue1_RTRef,
T5._Value_RRRef AS EDValue1_RRRef,
T7._Value_TYPE AS EDValue2_TYPE,
T7._Value_RTRef AS EDValue2_RTRef,
T7._Value_RRRef AS EDValue2_RRRef,
T2._Fld13160 AS TurnoverDt13171_,
CAST(*P5 AS NUMERIC(15, 2)) AS TurnoverCt13172_,
T2._Fld13161Dt AS TurnoverDt13174_,
CAST(*P6 AS NUMERIC(15, 2)) AS TurnoverCt13175_,
T2._Fld13162Dt AS TurnoverDt13177_,
CAST(*P7 AS NUMERIC(15, 3)) AS TurnoverCt13178_
FROM dbo._AccRg13157 T2
INNER JOIN #tt4 T3 WITH(NOLOCK)
ON T3._IDRRef = T2._AccountDtRRef AND T3._EDCount = *P8
LEFT OUTER JOIN dbo._Acc4_ExtDim13078 T4
ON T4._Acc4_IDRRef = T2._AccountDtRRef AND T4._LineNo = *P9
LEFT OUTER JOIN dbo._AccRgED13184 T5
ON T5._Period >= *P10 AND T5._Period < *P11 AND T5._Period = T2._Period AND T5._RecorderTRef = T2._RecorderTRef AND T5._RecorderRRef = T2._RecorderRRef AND T5._LineNo = T2._LineNo AND T5._Correspond = *P12 AND T5._KindRRef = T4._DimKindRRef
LEFT OUTER JOIN dbo._Acc4_ExtDim13078 T6
ON T6._Acc4_IDRRef = T2._AccountDtRRef AND T6._LineNo = *P13
LEFT OUTER JOIN dbo._AccRgED13184 T7
ON T7._Period >= *P14 AND T7._Period < *P15 AND T7._Period = T2._Period AND T7._RecorderTRef = T2._RecorderTRef AND T7._RecorderRRef = T2._RecorderRRef AND T7._LineNo = T2._LineNo AND T7._Correspond = *P16 AND T7._KindRRef = T6._DimKindRRef
WHERE T2._Active = 0x01 AND (T2._Period >= *P17 AND T2._Period < *P18) AND T2._AccountDtRRef <> 0x00000000000000000000000000000000
UNION ALL SELECT
T8._AccountCtRRef AS AccountRRef,
T8._Fld13158RRef AS Fld13158RRef,
T8._Fld13159CtRRef AS Fld13159RRef,
T9._EDCount AS EDCount_,
T11._Value_TYPE AS EDValue1_TYPE,
T11._Value_RTRef AS EDValue1_RTRef,
T11._Value_RRRef AS EDValue1_RRRef,
T13._Value_TYPE AS EDValue2_TYPE,
T13._Value_RTRef AS EDValue2_RTRef,
T13._Value_RRRef AS EDValue2_RRRef,
CAST(*P19 AS NUMERIC(15, 2)) AS TurnoverDt13171_,
T8._Fld13160 AS TurnoverCt13172_,
CAST(*P20 AS NUMERIC(15, 2)) AS TurnoverDt13174_,
T8._Fld13161Ct AS TurnoverCt13175_,
CAST(*P21 AS NUMERIC(15, 3)) AS TurnoverDt13177_,
T8._Fld13162Ct AS TurnoverCt13178_
FROM dbo._AccRg13157 T8
INNER JOIN #tt4 T9 WITH(NOLOCK)
ON T9._IDRRef = T8._AccountCtRRef AND T9._EDCount = *P22
LEFT OUTER JOIN dbo._Acc4_ExtDim13078 T10
ON T10._Acc4_IDRRef = T8._AccountCtRRef AND T10._LineNo = *P23
LEFT OUTER JOIN dbo._AccRgED13184 T11
ON T11._Period >= *P24 AND T11._Period < *P25 AND T11._Period = T8._Period AND T11._RecorderTRef = T8._RecorderTRef AND T11._RecorderRRef = T8._RecorderRRef AND T11._LineNo = T8._LineNo AND T11._Correspond = *P26 AND T11._KindRRef = T10._DimKindRRef
LEFT OUTER JOIN dbo._Acc4_ExtDim13078 T12
ON T12._Acc4_IDRRef = T8._AccountCtRRef AND T12._LineNo = *P27
LEFT OUTER JOIN dbo._AccRgED13184 T13
ON T13._Period >= *P28 AND T13._Period < *P29 AND T13._Period = T8._Period AND T13._RecorderTRef = T8._RecorderTRef AND T13._RecorderRRef = T8._RecorderRRef AND T13._LineNo = T8._LineNo AND T13._Correspond = *P30 AND T13._KindRRef = T12._DimKindRRef
WHERE T8._Active = 0x01 AND (T8._Period >= *P31 AND T8._Period < *P32) AND T8._AccountCtRRef <> 0x00000000000000000000000000000000) T1
GROUP BY T1.AccountRRef,
T1.Fld13158RRef,
T1.Fld13159RRef,
T1.EDValue1_TYPE,
T1.EDValue1_RTRef,
T1.EDValue1_RRRef,
T1.EDValue2_TYPE,
T1.EDValue2_RTRef,
T1.EDValue2_RRRef',N'*P1 datetime2(3),*P2 numeric(10),*P3 numeric(10),*P4 numeric(10),*P5 numeric(10),*P6 numeric(10),*P7 numeric(10),*P8 numeric(10),*P9 numeric(10),*P10 datetime2(3),*P11 datetime2(3),*P12 numeric(10),*P13 numeric(10),*P14 datetime2(3),*P15 datetime2(3),*P16 numeric(10),*P17 datetime2(3),*P18 datetime2(3),*P19 numeric(10),*P20 numeric(10),*P21 numeric(10),*P22 numeric(10),*P23 numeric(10),*P24 datetime2(3),*P25 datetime2(3),*P26 numeric(10),*P27 numeric(10),*P28 datetime2(3),*P29 datetime2(3),*P30 numeric(10),*P31 datetime2(3),*P32 datetime2(3)','4020-11-01 00:00:00',0,0,0,0,0,0,2,1,'4020-11-01 00:00:00','4020-12-01 00:00:00',0,2,'4020-11-01 00:00:00','4020-12-01 00:00:00',0,'4020-11-01 00:00:00','4020-12-01 00:00:00',0,0,0,2,1,'4020-11-01 00:00:00','4020-12-01 00:00:00',1,2,'4020-11-01 00:00:00','4020-12-01 00:00:00',1,'4020-11-01 00:00:00','4020-12-01 00:00:00'
Показать
7. MarcoPolo3 50 20.12.20 23:50 Сейчас в теме
(5) Приветствую, причина скорее всего в том, что текущая модель хранения данных регистра бухгалтерии и запросы, которые формирует 1С при расчете итогов, при большом количестве записей в таблицах строит не оптимальные планы запроса на стороне MSSQL (если оптимальные при такой модели вообще можно построить). К сожалению я не имею достаточной квалификации по MSSQL, чтобы "копнуть" глубже в данном вопросе, поэтому ума хватило только на такой своеобразный "костыль".
8. anig99 2829 21.12.20 05:42 Сейчас в теме
(7) Доброе утро! Вчера всё-таки выяснили в чем дело. Не обновлялась статистика по регистрам. Вручную обновил статистику, добавил соответствующее задание на перестройку индексов с обновлением статистики, включил флаг для SQL сервера для баз с режимом совместимости.
9. due 372 11.07.22 09:34 Сейчас в теме
(8)
включил флаг для SQL сервера для баз с режимом совместимости
Добрый день! Можете уточнить какой флаг включали для оптимизации?
Оставьте свое сообщение
Вакансии
Функциональный архитектор
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб.
Полный день

Ведущий программист 1С (удаленно)
Пермь
зарплата от 150 000 руб.
Полный день

Программист 1С
Домодедово
зарплата от 150 000 руб. до 180 000 руб.
Полный день

Консультант 1С
Москва
зарплата от 80 000 руб. до 150 000 руб.
Полный день