|
БП 3.0, запрос долго считает итоги по регистру Хозрасчетный | ☑ | ||
---|---|---|---|---|
0
novichok79
12.07.18
✎
14:02
|
Доброго времени суток, коллеги. ГБ сегодня меня удивила тем, что у нее в списке банковских выписок долго перелистываются строки. БП версии 3.0.64.21, платформа 8.3.11.2867. Я включил ТЖ и посмотрел что творится с платформой в этот момент (ниже приведу то, что получается). Потом еще замер производительности на этом же месте попробовал запустить. Тоже тормоза. ТиИ (с ограничением в 30 минут делал), vacuumdb full тоже делал. Остается пересчитать итоги по регистру Хозрасчетный, как я понимаю, правильно? Подскажите, пожалуйста. Заранее благодарю за помощь.
|
|||
1
novichok79
12.07.18
✎
14:03
|
06:30.642000-4889941,DBPOSTGRS,5,process=rphost,p:processName=bp_30,OSThread=5864,t:clientID=191,t:applicationName=1CV8C,t:computerName=IT-Programmer,t:connectID=12202,SessionID=3,Usr=Какашкина Лариса Петровна,AppID=1CV8C,Trans=0,dbpid=5264,Sql="SELECT
COALESCE(CAST(SUM(CASE WHEN T1.Q_001_F_008_ = TRUE THEN T1.Q_001_F_001_ ELSE T1.Q_001_F_000_ END) AS NUMERIC(33, 2)),CAST(0 AS NUMERIC)), COALESCE(CAST(SUM(CASE WHEN T1.Q_001_F_008_ = TRUE THEN T1.Q_001_F_003_ ELSE T1.Q_001_F_002_ END) AS NUMERIC(27, 2)),CAST(0 AS NUMERIC)), COALESCE(CAST(SUM(CASE WHEN T1.Q_001_F_008_ = TRUE THEN T1.Q_001_F_005_ ELSE T1.Q_001_F_004_ END) AS NUMERIC(27, 2)),CAST(0 AS NUMERIC)), COALESCE(CAST(SUM(CASE WHEN T1.Q_001_F_008_ = TRUE THEN T1.Q_001_F_007_ ELSE T1.Q_001_F_006_ END) AS NUMERIC(34, 2)),CAST(0 AS NUMERIC)) FROM (SELECT T2.Fld895InitialBalance_ AS Q_001_F_000_, T2.Fld896InitialBalance_ AS Q_001_F_001_, T2.Fld895TurnoverDt_ AS Q_001_F_002_, T2.Fld896TurnoverDt_ AS Q_001_F_003_, T2.Fld895TurnoverCt_ AS Q_001_F_004_, T2.Fld896TurnoverCt_ AS Q_001_F_005_, T2.Fld895FinalBalance_ AS Q_001_F_006_, T2.Fld896FinalBalance_ AS Q_001_F_007_, CASE WHEN ((((T2.Fld896InitialBalance_ <> CAST(0 AS NUMERIC)) OR (T2.Fld896TurnoverDt_ <> CAST(0 AS NUMERIC))) OR (T2.Fld896TurnoverCt_ <> CAST(0 AS NUMERIC))) OR (T2.Fld896FinalBalance_ <> CAST(0 AS NUMERIC))) THEN TRUE ELSE FALSE END AS Q_001_F_008_ FROM (SELECT CASE WHEN SUM(T3.Fld896TurnoverDt_) IS NULL THEN CAST(0 AS NUMERIC) ELSE SUM(T3.Fld896TurnoverDt_) END AS Fld896TurnoverDt_, CASE WHEN SUM(T3.Fld896TurnoverCt_) IS NULL THEN CAST(0 AS NUMERIC) ELSE SUM(T3.Fld896TurnoverCt_) END AS Fld896TurnoverCt_, CASE WHEN SUM(T3.Fld896Balance_) IS NULL THEN CAST(0 AS NUMERIC) ELSE SUM(T3.Fld896Balance_) END AS Fld896InitialBalance_, CASE WHEN SUM(T3.Fld896Balance_ + T3.Fld896FinalTurnover_) IS NULL THEN CAST(0 AS NUMERIC) ELSE SUM(T3.Fld896Balance_ + T3.Fld896FinalTurnover_) END AS Fld896FinalBalance_, CASE WHEN SUM(T3.Fld895TurnoverDt_) IS NULL THEN CAST(0 AS NUMERIC) ELSE SUM(T3.Fld895TurnoverDt_) END AS Fld895TurnoverDt_, CASE WHEN SUM(T3.Fld895TurnoverCt_) IS NULL THEN CAST(0 AS NUMERIC) ELSE SUM(T3.Fld895TurnoverCt_) END AS Fld895TurnoverCt_, CASE WHEN SUM(T3.Fld895Balance_) IS NULL THEN CAST(0 AS NUMERIC) ELSE SUM(T3.Fld895Balance_) END AS Fld895InitialBalance_, CASE WHEN SUM(T3.Fld895Balance_ + T3.Fld895FinalTurnover_) IS NULL THEN CAST(0 AS NUMERIC) ELSE SUM(T3.Fld895Balance_ + T3.Fld895FinalTurnover_) END AS Fld895FinalBalance_ FROM (SELECT T4._Fld896 AS Fld896Balance_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld896FinalTurnover_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld896TurnoverDt_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld896TurnoverCt_, T4._Fld895 AS Fld895Balance_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld895FinalTurnover_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld895TurnoverDt_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld895TurnoverCt_ FROM _AccRgAT2925 T4 INNER JOIN pg_temp.tt6 T5 ON T5._IDRRef = T4._AccountRRef AND T5._LineNo1 = CAST(1 AS NUMERIC) AND T5._Cnt = CAST(2 AS NUMERIC) WHERE ((T4._Fld878 = CAST(0 AS NUMERIC))) AND ((((T4._Fld892RRef IN ('\\216J\\000\\026\\346\\330D\\037\\021\\345m\\177\\277\\217\\205\\272'::bytea)) AND (CASE WHEN T4._Value1_TYPE = '\\010'::bytea AND T4._Value1_RTRef = '\\000\\000\\000""'::bytea THEN T4._Value1_RRRef END = '\\207t\\000\\026\\346\\330D\\037\\021\\345\\346\\215\\300\\244\\327;'::bytea))) AND T4._Period = '3999-11-01 00:00:00'::timestamp AND (T4._Fld896 <> CAST(0 AS NUMERIC) OR T4._Fld895 <> CAST(0 AS NUMERIC))) UNION ALL SELECT CAST(-T6._Fld896Dt AS NUMERIC(21, 2)) AS Fld896Balance_, T6._Fld896Dt AS Fld896FinalTurnover_, T6._Fld896Dt AS Fld896TurnoverDt_, CAST(CASE WHEN T6._Fld896Dt IS NULL THEN CAST(NULL AS NUMERIC) ELSE CAST(0 AS NUMERIC) END AS NUMERIC(15, 2)) AS Fld896TurnoverCt_, CAST(-T6._Fld895 AS NUMERIC(21, 2)) AS Fld895Balance_, T6._Fld895 AS Fld895FinalTurnover_, T6._Fld895 AS Fld895TurnoverDt_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld895TurnoverCt_ FROM _AccRg891 T6 INNER JOIN _AccRgED928 T7 ON T7._RecorderTRef = T6._RecorderTRef AND T7._RecorderRRef = T6._RecorderRRef AND T7._LineNo = T6._LineNo AND T7._Period = T6._Period AND T7._Correspond = CAST(0 AS NUMERIC) AND T7._KindRRef = '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\246\\030x\\322G'::bytea AND T7._Period >= '2018-06-20 00:00:00'::timestamp AND T7._Period <= '2018-06-20 23:59:59'::timestamp WHERE (((T6._Fld878 = CAST(0 AS NUMERIC))) AND (T7._Fld878 = CAST(0 AS NUMERIC))) AND (T6._Active = TRUE AND T6._AccountDtRRef <> '\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000'::bytea AND ((T6._AccountDtRRef IN ('\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273""'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273#'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273$'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273%'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273&'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273'''::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273('::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273)'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273*'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273+'::bytea))) AND (((T6._Fld892RRef IN ('\\216J\\000\\026\\346\\330D\\037\\021\\345m\\177\\277\\217\\205\\272'::bytea)) AND (CASE WHEN T7._Value_TYPE = '\\010'::bytea AND T7._Value_RTRef = '\\000\\000\\000""'::bytea THEN T7._Value_RRRef END = '\\207t\\000\\026\\346\\330D\\037\\021\\345\\346\\215\\300\\244\\327;'::bytea))) AND T6._Period >= '2018-06-20 00:00:00'::timestamp AND T6._Period <= '2018-06-20 23:59:59'::timestamp) UNION ALL SELECT CAST(T8._Fld896Ct AS NUMERIC(21, 2)) AS Fld896Balance_, -T8._Fld896Ct AS Fld896FinalTurnover_, CAST(CASE WHEN T8._Fld896Ct IS NULL THEN CAST(NULL AS NUMERIC) ELSE CAST(0 AS NUMERIC) END AS NUMERIC(15, 2)) AS Fld896TurnoverDt_, T8._Fld896Ct AS Fld896TurnoverCt_, CAST(T8._Fld895 AS NUMERIC(21, 2)) AS Fld895Balance_, -T8._Fld895 AS Fld895FinalTurnover_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld895TurnoverDt_, T8._Fld895 AS Fld895TurnoverCt_ FROM _AccRg891 T8 INNER JOIN _AccRgED928 T9 ON T9._RecorderTRef = T8._RecorderTRef AND T9._RecorderRRef = T8._RecorderRRef AND T9._LineNo = T8._LineNo AND T9._Period = T8._Period AND T9._Correspond = CAST(1 AS NUMERIC) AND T9._KindRRef = '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\246\\030x\\322G'::bytea AND T9._Period >= '2018-06-20 00:00:00'::timestamp AND T9._Period <= '2018-06-20 23:59:59'::timestamp WHERE (((T8._Fld878 = CAST(0 AS NUMERIC))) AND (T9._Fld878 = CAST(0 AS NUMERIC))) AND (T8._Active = TRUE AND T8._AccountCtRRef <> '\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000'::bytea AND ((T8._AccountCtRRef IN ('\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273""'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273#'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273$'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273%'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273&'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273'''::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273('::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273)'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273*'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273+'::bytea))) AND (((T8._Fld892RRef IN ('\\216J\\000\\026\\346\\330D\\037\\021\\345m\\177\\277\\217\\205\\272'::bytea)) AND (CASE WHEN T9._Value_TYPE = '\\010'::bytea AND T9._Value_RTRef = '\\000\\000\\000""'::bytea THEN T9._Value_RRRef END = '\\207t\\000\\026\\346\\330D\\037\\021\\345\\346\\215\\300\\244\\327;'::bytea))) AND T8._Period >= '2018-06-20 00:00:00'::timestamp AND T8._Period <= '2018-06-20 23:59:59'::timestamp) UNION ALL SELECT CAST(-T10._Fld896Dt AS NUMERIC(21, 2)) AS Fld896Balance_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld896FinalTurnover_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld896TurnoverDt_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld896TurnoverCt_, CAST(-T10._Fld895 AS NUMERIC(21, 2)) AS Fld895Balance_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld895FinalTurnover_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld895TurnoverDt_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld895TurnoverCt_ FROM _AccRg891 T10 INNER JOIN _AccRgED928 T11 ON T11._RecorderTRef = T10._RecorderTRef AND T11._RecorderRRef = T10._RecorderRRef AND T11._LineNo = T10._LineNo AND T11._Period = T10._Period AND T11._Correspond = CAST(0 AS NUMERIC) AND T11._KindRRef = '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\246\\030x\\322G'::bytea AND T11._Period > '2018-06-20 23:59:59'::timestamp AND T11._Period < '3999-11-01 00:00:00'::timestamp WHERE (((T10._Fld878 = CAST(0 AS NUMERIC))) AND (T11._Fld878 = CAST(0 AS NUMERIC))) AND (T10._Active = TRUE AND T10._AccountDtRRef <> '\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000'::bytea AND ((T10._AccountDtRRef IN ('\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273""'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273#'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273$'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273%'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273&'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273'''::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273('::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273)'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273*'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273+'::bytea))) AND (((T10._Fld892RRef IN ('\\216J\\000\\026\\346\\330D\\037\\021\\345m\\177\\277\\217\\205\\272'::bytea)) AND (CASE WHEN T11._Value_TYPE = '\\010'::bytea AND T11._Value_RTRef = '\\000\\000\\000""'::bytea THEN T11._Value_RRRef END = '\\207t\\000\\026\\346\\330D\\037\\021\\345\\346\\215\\300\\244\\327;'::bytea))) AND T10._Period > '2018-06-20 23:59:59'::timestamp AND T10._Period < '3999-11-01 00:00:00'::timestamp) UNION ALL SELECT CAST(T12._Fld896Ct AS NUMERIC(21, 2)) AS Fld896Balance_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld896FinalTurnover_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld896TurnoverDt_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld896TurnoverCt_, CAST(T12._Fld895 AS NUMERIC(21, 2)) AS Fld895Balance_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld895FinalTurnover_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld895TurnoverDt_, CAST(CAST(0 AS NUMERIC) AS NUMERIC(15, 2)) AS Fld895TurnoverCt_ FROM _AccRg891 T12 INNER JOIN _AccRgED928 T13 ON T13._RecorderTRef = T12._RecorderTRef AND T13._RecorderRRef = T12._RecorderRRef AND T13._LineNo = T12._LineNo AND T13._Period = T12._Period AND T13._Correspond = CAST(1 AS NUMERIC) AND T13._KindRRef = '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\246\\030x\\322G'::bytea AND T13._Period > '2018-06-20 23:59:59'::timestamp AND T13._Period < '3999-11-01 00:00:00'::timestamp WHERE (((T12._Fld878 = CAST(0 AS NUMERIC))) AND (T13._Fld878 = CAST(0 AS NUMERIC))) AND (T12._Active = TRUE AND T12._AccountCtRRef <> '\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000'::bytea AND ((T12._AccountCtRRef IN ('\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273""'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273#'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273$'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273%'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273&'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273'''::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273('::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273)'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273*'::bytea, '\\201\\327T\\004\\246\\037\\023\\243\\021\\344\\275\\2465;\\273+'::bytea))) AND (((T12._Fld892RRef IN ('\\216J\\000\\026\\346\\330D\\037\\021\\345m\\177\\277\\217\\205\\272'::bytea)) AND (CASE WHEN T13._Value_TYPE = '\\010'::bytea AND T13._Value_RTRef = '\\000\\000\\000""'::bytea THEN T13._Value_RRRef END = '\\207t\\000\\026\\346\\330D\\037\\021\\345\\346\\215\\300\\244\\327;'::bytea))) AND T12._Period > '2018-06-20 23:59:59'::timestamp AND T12._Period < '3999-11-01 00:00:00'::timestamp)) T3) T2) T1",RowsAffected=1,Result=PGRES_TUPLES_OK,Context='Форма.Вызов : ЖурналДокументов.Деньги.Форма.БанковскиеВыписки.Модуль.ПолучитьИтоги ЖурналДокументов.Деньги.Форма.БанковскиеВыписки.Форма : 1544 : РезультатыЗапроса = ПостроительЗапроса.ПолучитьЗапрос().Выполнить();' |
|||
2
novichok79
12.07.18
✎
14:04
|
сам запрос
ВЫБРАТЬ ЕСТЬNULL(СУММА(ВЫБОР КОГДА ВТ_БИ.ЭтоВалютныйСчет ТОГДА ВТ_БИ.ВалютнаяСуммаНачальныйОстаток ИНАЧЕ ВТ_БИ.СуммаНачальныйОстаток КОНЕЦ), 0) КАК НачальныйОстаток, ЕСТЬNULL(СУММА(ВЫБОР КОГДА ВТ_БИ.ЭтоВалютныйСчет ТОГДА ВТ_БИ.ВалютнаяСуммаОборотДт ИНАЧЕ ВТ_БИ.СуммаОборотДт КОНЕЦ), 0) КАК ВсегоПоступило, ЕСТЬNULL(СУММА(ВЫБОР КОГДА ВТ_БИ.ЭтоВалютныйСчет ТОГДА ВТ_БИ.ВалютнаяСуммаОборотКт ИНАЧЕ ВТ_БИ.СуммаОборотКт КОНЕЦ), 0) КАК ВсегоСписано, ЕСТЬNULL(СУММА(ВЫБОР КОГДА ВТ_БИ.ЭтоВалютныйСчет ТОГДА ВТ_БИ.ВалютнаяСуммаКонечныйОстаток ИНАЧЕ ВТ_БИ.СуммаКонечныйОстаток КОНЕЦ), 0) КАК КонечныйОстаток ИЗ (ВЫБРАТЬ БИ.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток, БИ.ВалютнаяСуммаНачальныйОстаток КАК ВалютнаяСуммаНачальныйОстаток, БИ.СуммаОборотДт КАК СуммаОборотДт, БИ.ВалютнаяСуммаОборотДт КАК ВалютнаяСуммаОборотДт, БИ.СуммаОборотКт КАК СуммаОборотКт, БИ.ВалютнаяСуммаОборотКт КАК ВалютнаяСуммаОборотКт, БИ.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток, БИ.ВалютнаяСуммаКонечныйОстаток КАК ВалютнаяСуммаКонечныйОстаток, ВЫБОР КОГДА БИ.ВалютнаяСуммаНачальныйОстаток <> 0 ИЛИ БИ.ВалютнаяСуммаОборотДт <> 0 ИЛИ БИ.ВалютнаяСуммаОборотКт <> 0 ИЛИ БИ.ВалютнаяСуммаКонечныйОстаток <> 0 ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ЭтоВалютныйСчет ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты( &ДатаИтоговНачалоДня, &ДатаИтоговКонецДня, , ДвиженияИГраницыПериода, Счет В (&СчетаССубконтоБанковскиеСчета), &ВидСубконтоБанковскиеСчета, Организация В (&Организации) И (ВЫРАЗИТЬ(Субконто1 КАК Справочник.БанковскиеСчета)) = &Параметр1) КАК БИ) КАК ВТ_БИ |
|||
3
Borteg
12.07.18
✎
14:06
|
И (ВЫРАЗИТЬ(Субконто1 КАК Справочник.БанковскиеСчета)) = &Параметр1)
убирай выразить |
|||
4
novichok79
12.07.18
✎
14:07
|
(3) типовая на замочке... по-другому (без расширений и дописок) никак, да?
|
|||
5
Borteg
12.07.18
✎
14:11
|
(4) база клиент сервер?
|
|||
6
novichok79
12.07.18
✎
14:12
|
(5) да
|
|||
7
Borteg
12.07.18
✎
14:14
|
(6) посмотри а нету никаких отборов скрытых в списке
|
|||
8
novichok79
12.07.18
✎
14:15
|
(7) сейчас стандартные настройки попробую, спасибо.
|
|||
9
novichok79
12.07.18
✎
14:21
|
(8) мой пользователь Администратор и у ГБ пользователь ГБ, сейчас я дал пользователю ГБ одинаковые права как и у меня. в списке банковских выписок лагает так же, даже со стандартными настройками, значит беда приключилась с таблицей остатков регистра бухгалтерии.
|
|||
10
novichok79
12.07.18
✎
14:25
|
в управлении итогами по РБ Хозрасчетный написано что текущий остаток есть и просчитан до 31.07.2018. магия ёпта.
|
|||
11
hhhh
12.07.18
✎
14:46
|
(10) итоги в целых месяцах считаются. Поэтому смотрите какой период берете. Если месяц, квартал или там год, то это итоги. Если какие-то произвольные дни, то это не итоги, это у вас сама таблица регистра глючит.
|
|||
12
novichok79
12.07.18
✎
14:48
|
(11) в любом случае, вечером на серваке сделаю полное ТиИ и пересчет итогов, и vacuumdb full еще после всего.
|
|||
13
yzimin
12.07.18
✎
14:50
|
иногда такое бывает, когда сортировка в списке документов выполнена по неиндексируемому полю. Попробуйте просто отсортировать документы по дате
|
|||
14
hhhh
12.07.18
✎
14:51
|
(10) в управлении итогами можно всегда нажать кнопку перейти на следующий месяц, поэтому вы легко можете до 2020 года догнать без всякой магии
|
|||
15
novichok79
12.07.18
✎
14:52
|
(13) я сделал стандартные настройки, с ними повторяется ошибка.
|
|||
16
yzimin
12.07.18
✎
14:57
|
(15) нет в базе записей от Рождества Христова? Или 3018 годом? :-)
|
|||
17
novichok79
12.07.18
✎
14:59
|
(16) интригуете, сейчас проверю.
|
|||
18
novichok79
12.07.18
✎
15:11
|
дата последнего движения - 12.07.2018 15:02:32
|
|||
19
tesseract
12.07.18
✎
21:34
|
(12) Postgres не любит вложеные запросы. Попробуй временную таблицу.
>>8.3.11.2867 С этой платформой куча тормозов. >>(ВЫРАЗИТЬ(Субконто1 КАК Справочник.БанковскиеСчета)) = &Параметр1 А зачем выразить, если у тебя и так отбор по виду субконто стоит? >> ВЫБОР >> КОГДА БИ.ВалютнаяСуммаНачальныйОстаток <> 0 >> ИЛИ БИ.ВалютнаяСуммаОборотДт <> 0 >> ИЛИ БИ.ВалютнаяСуммаОборотКт <> 0 >> ИЛИ БИ.ВалютнаяСуммаКонечныйОстаток <> 0 >> ТОГДА ИСТИНА >> ИНАЧЕ ЛОЖЬ >> КОНЕЦ КАК ЭтоВалютныйСчет А БИ. счет.Валютный никак не пойдет? |
|||
20
ssh2006
13.07.18
✎
00:04
|
(12) > и vacuumdb full еще после всего.
вместе с -- ANALYZE вызов? |
|||
21
tesseract
13.07.18
✎
00:08
|
(20) full сбрасывает план запросов много лучше analyze.
|
|||
22
ssh2006
13.07.18
✎
00:28
|
(21) откуда инфа?
по документации чтобы после вакуума сгенерировалась новая статистика нужно вызывать его с опцией ANALYZE. vacuumdb --analyze или vacuumdb --full --analyze |
|||
23
tesseract
13.07.18
✎
00:46
|
(22) Ты по какой версии смотрел? Full по любому сбрасывает планировщик тк идет полная реорганизация таблиц.
|
|||
24
tesseract
13.07.18
✎
00:48
|
(22)по документации чтобы после вакуума
Это после auto vacuum? Full полностью сбросит план - это фактически холодный старт, база будет тормозить , пока план не прогреется. |
|||
25
ssh2006
13.07.18
✎
00:50
|
||||
26
ssh2006
13.07.18
✎
00:51
|
чтобы статистика обновилась нужно добавлять analyze в команде. Может он не делает обновления статистики
|
|||
27
tesseract
13.07.18
✎
01:20
|
(26) ТЕ полная пересборка таблицы по вашему не сбросит статистику плана? Еще как сбросит :-)
|
|||
28
novichok79
13.07.18
✎
08:51
|
(19) сделал ТиИ с пересчетом итогов, потом еще сверху vacuumdb --full. пока ГБ не шуршит. это полностью типовая конфигурация, я мог бы переписать запрос на использование временной таблицы, но это нежелательный вариант, т. к. снятие с поддержки. тем более, мне кажется (я не уверен), что торомозило обращение к таблице остатков РБ Хозрасчетный, а не вложенный запрос.
|
|||
29
novichok79
13.07.18
✎
08:53
|
(27) пока ГБ не звонит, а это такие особенные представители офисной фауны, под конец каждого квартала у них начинается небольшой период бешенства, с конца квартала до 20х чисел первого месяца следующего квартала.
|
|||
30
СвинТуз
13.07.18
✎
09:11
|
Что то не пойму? А признаки учета на счете? Вроде это так называется? "Валютный". Что за прыжки с бубном?
|
|||
31
0xFFFFFF
13.07.18
✎
09:12
|
(1) Какашкина Лариса? Really????
|
|||
32
СвинТуз
13.07.18
✎
09:14
|
И что там на выходе в итоге? Сумма долларов и рублей?
|
|||
33
СвинТуз
13.07.18
✎
09:14
|
Где "Валюта" ? Где дата курса?
|
|||
34
novichok79
13.07.18
✎
09:15
|
(30) видимо пейсатели типовой БП не в курсах, или Луна зашла в фазу Венеры и они решили, что напишут запрос именно так.
|
|||
35
novichok79
13.07.18
✎
09:15
|
(31) тяжелая судьба у Ларисы Петровны.
|
|||
36
СвинТуз
13.07.18
✎
09:16
|
(0)
- ... Бонд ... Джейм Бонд ... Ну ну |
|||
37
novichok79
13.07.18
✎
09:16
|
(32) на выходе остаток рублей по счету на дату документа в пролистываемом списке.
|
|||
38
novichok79
13.07.18
✎
09:17
|
(36) да, ваш любимый 1Сник )))
|
|||
39
СвинТуз
13.07.18
✎
09:17
|
(37)
Рублей? |
|||
40
novichok79
13.07.18
✎
09:18
|
остаток в валюте банковского счета, который выбран в журнале банковских выписок.
|
|||
41
СвинТуз
13.07.18
✎
09:18
|
Запрос в топку ...
Автора на кол. Удачи |
|||
42
novichok79
13.07.18
✎
09:20
|
(41) боюсь, что даже если написать в [email protected] (что я делаю регулярно, т. к. ставлю свежие обновления), на кол автора запроса не посадят. неизвестный автор запроса заюзал построитель кстати, хз сильно ли влияет это на производительность конечного запроса.
|
|||
43
novichok79
13.07.18
✎
09:23
|
&НаСервереБезКонтекста
// Возвращает таблицу сумм остатков и оборотов за указанный день по указанному счету // Функция ПолучитьИтоги(Знач ТекДата, Знач ТекОрганизация, Знач ТекБанковскийСчет) СтруктураРезультат = Новый Структура("НаименованиеСчета, |НачальныйОстаток, ВсегоПоступило, ВсегоСписано, КонечныйОстаток" , "" , 0, 0, 0, 0); СписокДоступныхОрганизаций = ОбщегоНазначенияБПВызовСервераПовтИсп.ВсеОрганизацииДанныеКоторыхДоступныПоRLS(Ложь); // Если нет доступных организаций, то Итоги не вычисляем Если СписокДоступныхОрганизаций.Количество() = 0 Тогда Возврат СтруктураРезультат; ИначеЕсли ЗначениеЗаполнено(ТекОрганизация) Тогда // Если организация не числится в списке доступных, то Итоги не вычисляем Если СписокДоступныхОрганизаций.Найти(ТекОрганизация) = Неопределено Тогда Возврат СтруктураРезультат; КонецЕсли; КонецЕсли; ПостроительЗапроса = Новый ПостроительЗапроса; ПостроительЗапроса.Текст = "ВЫБРАТЬ | ЕСТЬNULL(СУММА(ВЫБОР | КОГДА ВТ_БИ.ЭтоВалютныйСчет | ТОГДА ВТ_БИ.ВалютнаяСуммаНачальныйОстаток | ИНАЧЕ ВТ_БИ.СуммаНачальныйОстаток | КОНЕЦ), 0) КАК НачальныйОстаток, | ЕСТЬNULL(СУММА(ВЫБОР | КОГДА ВТ_БИ.ЭтоВалютныйСчет | ТОГДА ВТ_БИ.ВалютнаяСуммаОборотДт | ИНАЧЕ ВТ_БИ.СуммаОборотДт | КОНЕЦ), 0) КАК ВсегоПоступило, | ЕСТЬNULL(СУММА(ВЫБОР | КОГДА ВТ_БИ.ЭтоВалютныйСчет | ТОГДА ВТ_БИ.ВалютнаяСуммаОборотКт | ИНАЧЕ ВТ_БИ.СуммаОборотКт | КОНЕЦ), 0) КАК ВсегоСписано, | ЕСТЬNULL(СУММА(ВЫБОР | КОГДА ВТ_БИ.ЭтоВалютныйСчет | ТОГДА ВТ_БИ.ВалютнаяСуммаКонечныйОстаток | ИНАЧЕ ВТ_БИ.СуммаКонечныйОстаток | КОНЕЦ), 0) КАК КонечныйОстаток |ИЗ | (ВЫБРАТЬ | БИ.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток, | БИ.ВалютнаяСуммаНачальныйОстаток КАК ВалютнаяСуммаНачальныйОстаток, | БИ.СуммаОборотДт КАК СуммаОборотДт, | БИ.ВалютнаяСуммаОборотДт КАК ВалютнаяСуммаОборотДт, | БИ.СуммаОборотКт КАК СуммаОборотКт, | БИ.ВалютнаяСуммаОборотКт КАК ВалютнаяСуммаОборотКт, | БИ.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток, | БИ.ВалютнаяСуммаКонечныйОстаток КАК ВалютнаяСуммаКонечныйОстаток, | ВЫБОР | КОГДА БИ.ВалютнаяСуммаНачальныйОстаток <> 0 | ИЛИ БИ.ВалютнаяСуммаОборотДт <> 0 | ИЛИ БИ.ВалютнаяСуммаОборотКт <> 0 | ИЛИ БИ.ВалютнаяСуммаКонечныйОстаток <> 0 | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЭтоВалютныйСчет | ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаИтоговНачалоДня, &ДатаИтоговКонецДня, , ДвиженияИГраницыПериода, Счет В (&СчетаССубконтоБанковскиеСчета), &ВидСубконтоБанковскиеСчета, Организация В (&Организации) {(ВЫРАЗИТЬ(Субконто1 КАК Справочник.БанковскиеСчета)) КАК БанковскийСчетИтогов}) КАК БИ) КАК ВТ_БИ"; Если ЗначениеЗаполнено(ТекОрганизация) Тогда СписокОрганизаций = Новый Массив; СписокОрганизаций.Добавить(ТекОрганизация); Иначе СписокОрганизаций = СписокДоступныхОрганизаций; КонецЕсли; Если ЗначениеЗаполнено(ТекБанковскийСчет) Тогда ЭлементОтбора = ПостроительЗапроса.Отбор.Добавить("БанковскийСчетИтогов"); ЭлементОтбора.ВидСравнения = ВидСравнения.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.Значение = ТекБанковскийСчет; СтруктураРезультат.НаименованиеСчета = СокрЛП(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекБанковскийСчет, "Наименование")); КонецЕсли; ПостроительЗапроса.Параметры.Вставить("Организации", СписокОрганизаций); ПостроительЗапроса.Параметры.Вставить("ДатаИтоговНачалоДня", НачалоДня(ТекДата)); ПостроительЗапроса.Параметры.Вставить("ДатаИтоговКонецДня", КонецДня(ТекДата)); ПостроительЗапроса.Параметры.Вставить("ВалютаРеглУчета", ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета()); ПостроительЗапроса.Параметры.Вставить("ВидСубконтоБанковскиеСчета", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.БанковскиеСчета); ПостроительЗапроса.Параметры.Вставить("СчетаССубконтоБанковскиеСчета", УчетДенежныхСредствПовтИсп.ПолучитьСчетаССубконтоБанковскиеСчета()); УстановитьПривилегированныйРежим(Истина); РезультатыЗапроса = ПостроительЗапроса.ПолучитьЗапрос().Выполнить(); Если НЕ РезультатыЗапроса.Пустой() Тогда Выборка = РезультатыЗапроса.Выбрать(); Выборка.Следующий(); ЗаполнитьЗначенияСвойств(СтруктураРезультат, Выборка); КонецЕсли; Возврат СтруктураРезультат; КонецФункции |
|||
44
ssh2006
13.07.18
✎
10:27
|
(43) выполни обновление статистики и проверь результат:
vacuumdb --analyze-only |
|||
45
novichok79
13.07.18
✎
10:30
|
(44) прям на рабочей базе? вечером если только.
|
|||
46
los_hooliganos
13.07.18
✎
10:41
|
(45) Прямо на рабочей можно и реиндексацию запустить.
Если БД небольшая можно как раз на время обеда. |
|||
47
los_hooliganos
13.07.18
✎
10:43
|
(45) Господи, какие еще снятия с поддержки?! Рекомендую изучать расширения. Можно спокойно редактировать типовые под свои хотелки.
|
|||
48
пятница
13.07.18
✎
10:51
|
Получи план запроса в ТЖ (тег <plansql/>) и выложи на explain.depsz.com
|
|||
49
novichok79
13.07.18
✎
11:04
|
(46) можно, попробую.
(47) расширения можно воткнуть на конфигурацию, где не включена возможность изменений? |
|||
50
ssh2006
13.07.18
✎
11:06
|
(45) можно на рабочей, да
|
|||
51
novichok79
13.07.18
✎
11:24
|
(47) да, действительно можно без включения возможности изменений накатывать расширения на типовую, этого не знал. это непаханное поле для экспериментов над злосчастным запросом. кроме этого случая, в ЗУП 3.1.6.54 я уже использовал расширения для правки ошибок до выхода обновлений, чтобы в модули документов не лезть.
|
|||
52
novichok79
13.07.18
✎
11:25
|
да, кстати, сейчас у ГБ интересовался - говорит, что 1С не тормозит при пролистывании выписок.
|
|||
53
ssh2006
13.07.18
✎
11:37
|
(52) ну вот, теперь в регламентный вакуум добавить ключ analyze
|
|||
54
novichok79
13.07.18
✎
11:48
|
(53) да кстати, как часто надо делать регламентный вакуум, по-вашему.
|
|||
55
ssh2006
13.07.18
✎
11:53
|
(54) "Мы рекомендуем очищать активные производственные базы данных достаточно часто (как минимум, каждую ночь), чтобы избавляться от «мёртвых» строк. После добавления или удаления большого числа строк может быть хорошей идеей выполнить команду VACUUM ANALYZE для каждой затронутой таблицы. При этом результаты всех последних изменений будут отражены в системных каталогах, что позволит планировщику запросов Postgres Pro принимать более эффективные решения при планировании.
Режим FULL не рекомендуется для обычного применения, но в некоторых случаях он бывает полезен. Например, когда были удалены или изменены почти все строки таблицы, может возникнуть желание физически сжать её, чтобы освободить место на диске и ускорить сканирование этой таблицы. " https://postgrespro.ru/docs/postgrespro/9.6/sql-vacuum Для обычной бух на несколько пользователей ежедневный vacuumdb --analyze |
|||
56
novichok79
13.07.18
✎
11:55
|
(55) у меня на ночь с воскресенья на понедельник обычно ТиИ и vacuumdb --full на все базы.
|
|||
57
novichok79
13.07.18
✎
11:58
|
видимо надо почаще
|
|||
58
ssh2006
13.07.18
✎
11:58
|
(56) добавь еженочный vacuumdb --analyze
|
|||
59
novichok79
13.07.18
✎
11:59
|
(58) как вариант, да, спасибо.
|
|||
60
ssh2006
13.07.18
✎
11:59
|
+(58) а full по выходным. Статистику надо каждый день обновлять желательно
|
|||
61
novichok79
13.07.18
✎
12:02
|
(60) ясно, не посоветуете какие-нибудь курсы / настольную книгу по Postgre (кроме тех, что PostgrePro распространяет)?
|
|||
62
ssh2006
13.07.18
✎
12:16
|
(61) сам читал PostgresPro документацию и их посты на хабре, ну и гугл по конкретным вопросам
|
|||
63
novichok79
13.07.18
✎
12:24
|
(62) да, я также. инфы по постгри в связке с 1С не очень много.
|
|||
64
Новиков
13.07.18
✎
12:47
|
(63) Предложи главному бухгалтеру перейти на настоящий скуль, там такой дичевки, естественно нет. По правильному, выписал бы сразу счет, написал обоснование и дальше - дорого? Тогда мучайтесь далее.
|
|||
65
Новиков
13.07.18
✎
12:48
|
(63) на хабре статья была, сам нагуглишь, отчего там иногда случаются такие дерьмовские вещи. Там чувак очень глубоко копал, обосновывал и т.д. Почитай там, оттуда понакопипасть страхов и в обоснование вставь.
|
|||
66
пятница
13.07.18
✎
12:52
|
(64) какой дичевки?
|
|||
67
Новиков
13.07.18
✎
13:04
|
(66) я знаю чем закончится наш диалог. Побереги ник, он тебе еще пригодится :)
|
|||
68
novichok79
13.07.18
✎
13:27
|
(64) это люкс-вариант, чтобы сразу купили MS SQL Server с преферансом и куртизанками.
|
|||
69
rsv
13.07.18
✎
13:50
|
(68) почему люкс? Например в языке запросов 1с можно написать только так Выбрать Первые это синтаксис скуля ms т.е.select Top.Косвенно наводит на размышления
|
|||
70
novichok79
13.07.18
✎
13:53
|
(69) потому что организация-нищеброд, на MS SQL у куроводства не хватило денег
|
|||
71
Новиков
13.07.18
✎
14:02
|
(70) тогда предложим им уйти во фрешку.
|
|||
72
novichok79
13.07.18
✎
14:25
|
(71) у них дописанная конфа, во фреше только типовые, насколько я знаю.
|
|||
73
novichok79
13.07.18
✎
14:47
|
(69) в постгри select top тоже есть
36:21.554000-30994,DBV8DBEng,5,process=1cv8,OSThread=11188,Usr=Федоров (администратор),Trans=0,Sql='SELECT TOP 6254 T1._Fld3982RRef, T1._Fld3983RRef, T1._Fld3984RRef, T1._Fld3985RRef, T1._Fld3986, T1._Fld3987RRef FROM _InfoRg3981 T1',NParams=0,Rows=870,Context=' ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма : 1229 : ВыполнитьЗапрос(); ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма : 676 : мРезЗапроса = ОбъектЗапрос.Выполнить();' |
|||
74
novichok79
13.07.18
✎
14:47
|
(73) ВЫБРАТЬ ПЕРВЫЕ 6254
ЦеныНоменклатуры.ТипЦен, ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.ХарактеристикаНоменклатуры, ЦеныНоменклатуры.Валюта, ЦеныНоменклатуры.Цена, ЦеныНоменклатуры.ЕдиницаИзмерения ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры |
|||
75
unregistered
13.07.18
✎
14:50
|
(71) Большая часть фреша живёт на Postgres. Неожиданно....
|
|||
76
novichok79
13.07.18
✎
14:53
|
(73) а не, на 9.6.6 действительно TOP нету, там надо LIMIT юзать
ERROR: syntax error at or near "6254" LINE 1: SELECT TOP 6254 ^ SQL state: 42601 Character: 12 |
|||
77
Новиков
13.07.18
✎
14:56
|
(75) Это да, но хз как там ее админят, но таких затупов не видно :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |