|
Тормоза при проведении\распроведении документа | ☑ | ||
---|---|---|---|---|
0
Dmitriy_
Kolesnikov 01.11.21
✎
07:22
|
Есть ЗУП с нетиповым дополнением, дальше речь будет идти только о нетиповом функционале.
Большой документ осуществляет движения по двум регистрам бухгалтерии. Проводится в общем минут 15, причем, по замеру, на процедуру ОбработкаПроведения тратится лишь треть этого времени, куда уходит остальное - пытаюсь понять. Дело в том, что попытка остановить отладку ни к чему не приводит - приложение продолжает "висеть" несколько минут, прежде чем останавливается. Выполняется ли при этом код? Сомневаюсь. Ну и вишенка на торте - отмена проведения. Ни строчки кода при этом не выполняется. Попытка остановить отладку ни к чему не приводит - приложение продолжает "висеть". Сама отмена занимает несколько минут. Как понять, что происходит в этот момент? |
|||
1
ДенисЧ
01.11.21
✎
07:24
|
Идёт запрос и запись в БД.
Смотри скуль-профайлер. |
|||
2
МихаилМ
01.11.21
✎
07:29
|
(0)тормоза из-за клиент-серверных контекстных вызовов. они "не учитываются" замером.
но и без них 5 минут - очень долго. перечитайте правила форума. |
|||
3
Dmitriy_
Kolesnikov 01.11.21
✎
08:15
|
(2) при отмене проведения из формы списка - контекстные вызовы?
Как? |
|||
4
Chai Nic
01.11.21
✎
08:21
|
База файловая или sql? Если sql, то какой сервер баз данных применяется?
|
|||
5
vde69
01.11.21
✎
08:31
|
1. большой документ - сколько строк в документе и сколько строк пишет в регистр
2. в ЗУП вроде нет регистров бухгалтерии? опиши чего это за регистры, их состав (измерения и т.д.) 3. ответь на (4) |
|||
6
Dmitriy_
Kolesnikov 01.11.21
✎
09:54
|
(4) mssql, ЗУП с отраслевым дополнением, в котором есть свои документы и целых два регистра бухгалтерии (6 измерений, 6 ресурсов)
В документе 5000 строк (это нетиповое отражение зарплаты в бухучете) Тестирую отмену проведения. Смотрю профайлером, что происходит, и вижу два одинаковых запроса, один выполняется 160 секунд, второй 190: === exec sp_executesql N'UPDATE T2 SET _Fld34250 = T2._Fld34250 + T1._Fld34250, _TurnoverDt34267 = T2._TurnoverDt34267 + T1._TurnoverDt34267, _TurnoverCt34268 = T2._TurnoverCt34268 + T1._TurnoverCt34268, _Turnover34269 = T2._Turnover34269 + T1._Turnover34269, _Fld34251 = T2._Fld34251 + T1._Fld34251, _TurnoverDt34270 = T2._TurnoverDt34270 + T1._TurnoverDt34270, _TurnoverCt34271 = T2._TurnoverCt34271 + T1._TurnoverCt34271, _Turnover34272 = T2._Turnover34272 + T1._Turnover34272, _Fld34252 = T2._Fld34252 + T1._Fld34252, _TurnoverDt34273 = T2._TurnoverDt34273 + T1._TurnoverDt34273, _TurnoverCt34274 = T2._TurnoverCt34274 + T1._TurnoverCt34274, _Turnover34275 = T2._Turnover34275 + T1._Turnover34275, _Fld34253 = T2._Fld34253 + T1._Fld34253, _TurnoverDt34276 = T2._TurnoverDt34276 + T1._TurnoverDt34276, _TurnoverCt34277 = T2._TurnoverCt34277 + T1._TurnoverCt34277, _Turnover34278 = T2._Turnover34278 + T1._Turnover34278, _Fld34254 = T2._Fld34254 + T1._Fld34254, _TurnoverDt34279 = T2._TurnoverDt34279 + T1._TurnoverDt34279, _TurnoverCt34280 = T2._TurnoverCt34280 + T1._TurnoverCt34280, _Turnover34281 = T2._Turnover34281 + T1._Turnover34281, _Fld34255 = T2._Fld34255 + T1._Fld34255, _TurnoverDt34282 = T2._TurnoverDt34282 + T1._TurnoverDt34282, _TurnoverCt34283 = T2._TurnoverCt34283 + T1._TurnoverCt34283, _Turnover34284 = T2._Turnover34284 + T1._Turnover34284 FROM #tt23 T1 WITH(NOLOCK) INNER JOIN dbo._AccRgAT234286 T2 ON T1._Period = T2._Period AND T1._AccountRRef = T2._AccountRRef AND T1._Fld34245RRef = T2._Fld34245RRef AND ((T1._Fld34246RRef = T2._Fld34246RRef OR T1._Fld34246RRef IS NULL AND T2._Fld34246RRef IS NULL)) AND ((T1._Fld34247RRef = T2._Fld34247RRef OR T1._Fld34247RRef IS NULL AND T2._Fld34247RRef IS NULL)) AND T1._Fld34248RRef = T2._Fld34248RRef AND T1._Fld34249 = T2._Fld34249 AND T1._Fld1104 = T2._Fld1104 AND (T1._Value1_TYPE = T2._Value1_TYPE AND T1._Value1_S = T2._Value1_S AND T1._Value1_RTRef = T2._Value1_RTRef AND T1._Value1_RRRef = T2._Value1_RRRef OR T1._Value1_TYPE IS NULL AND T1._Value1_S IS NULL AND T1._Value1_RTRef IS NULL AND T1._Value1_RRRef IS NULL AND T2._Value1_TYPE IS NULL AND T2._Value1_S IS NULL AND T2._Value1_RTRef IS NULL AND T2._Value1_RRRef IS NULL) AND (T1._Value2_TYPE = T2._Value2_TYPE AND T1._Value2_S = T2._Value2_S AND T1._Value2_RTRef = T2._Value2_RTRef AND T1._Value2_RRRef = T2._Value2_RRRef OR T1._Value2_TYPE IS NULL AND T1._Value2_S IS NULL AND T1._Value2_RTRef IS NULL AND T1._Value2_RRRef IS NULL AND T2._Value2_TYPE IS NULL AND T2._Value2_S IS NULL AND T2._Value2_RTRef IS NULL AND T2._Value2_RRRef IS NULL) AND T2._Splitter = P1 WHERE (T1._EDCount = @P2) AND (T2._Fld1104 = @P3)',N'P1 numeric(10),@P2 numeric(10),@P3 numeric(10)',0,2,0 === Что это такое, кто скажет? Понятно, что запрос к регистру бухгалтерии, но можно ли сказать навскидку, почему так долго? |
|||
7
Amra
01.11.21
✎
09:59
|
(6) Интерено, кто придумал присобачить в ЗУП аж два регистра бухгалтерии?
|
|||
8
youalex
01.11.21
✎
10:06
|
(6) Таблиц итогов по счету (_AccRgAT<k><n>) столько , каково максимальное количество субконто в плане счетов
|
|||
9
Dmitriy_
Kolesnikov 01.11.21
✎
10:11
|
(7) один регламентированный, второй управленческий
(8) максимум три субконто |
|||
10
Fragster
гуру
01.11.21
✎
10:13
|
незакрытые итоги + движения в далеком будущем и/или прошлом
|
|||
11
Обработка
01.11.21
✎
10:20
|
А нафига заводить в ЗУПе РБ и тем более для 5000 записей.
Это надо быть таким сильным мазохистом чтоб такое придумать. Меняйте Рб на РН (РС) или на РР! |
|||
12
Обработка
01.11.21
✎
10:23
|
Всем известен факт что РБ самый медленный из все регистров в 1С.
И на БР не стоит писать сложную ЗП или большие объемы данных по ЗП. |
|||
13
Chai Nic
01.11.21
✎
11:03
|
"Смотрю профайлером, что происходит, и вижу два одинаковых запроса, один выполняется 160 секунд, второй 190:"
А собственно план посмотреть если? Почему такое медленное соединение? Может, индексов на каких-то полях не хватает? |
|||
14
Dmitriy_
Kolesnikov 01.11.21
✎
11:09
|
(10) итоги для всех регистров бухгалтерии посчитаны на конец текущего месяца. Все проводки документ делает концом текущего месяца.
(11) это отраслевая конфа, менять её радикально мы не будем (как потом обновлять) (13) как посмотреть? Дайте наводку. |
|||
15
Chai Nic
01.11.21
✎
11:22
|
(14) В SQL студии - новый запрос. Туда копипастишь текст запроса, нажимаешь кнопочку сверху "Включить действительный план выполнения", запускаешь выполнение запроса, дожидаешься результатов - и внизу появится закладка с планом. Как-то так.
|
|||
16
H A D G E H O G s
01.11.21
✎
11:23
|
Позовите специалиста.
|
|||
17
H A D G E H O G s
01.11.21
✎
11:24
|
А то получается, что "капитан Колесников пишет нам письмо". Вроде и написал, а яснее не стало.
|
|||
18
vde69
01.11.21
✎
11:51
|
сравни с временем проведения под полными правами...
если разница большая то значит рельса кривая (что часто бывает в отраслевых) |
|||
19
МихаилМ
01.11.21
✎
13:58
|
(6) подсчитайте кол-во полей у T2 в запросе
|
|||
20
Dmitriy_
Kolesnikov 01.11.21
✎
13:59
|
Отключил текущие итоги у регистров.
Время проведения документа уменьшилось на 15%. Время распроведения - в три раза. |
|||
21
МихаилМ
01.11.21
✎
14:16
|
+(19) посчитал за Вас : 18 полей. думайте сами с учетом https://its.1c.ru/db/metod8dev/content/2732/hdoc
|
|||
22
mistеr
01.11.21
✎
15:39
|
(14) Тебе пишут про незакрытие регистра. Знаешь, что это?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |