Тормозит база. В таблице значений субконто over 370млн. записей

1. Kasherniy 21.10.16 10:32 Сейчас в теме
Бухгалтерия КОРП 2.0. Почти без изменений. Модули расчета не затронуты, все запросы типовые. MSSQL 2014. На сервере 8.3.6.2299.
Месяц проводится за 5-7 дней.
Регламенты выполняются в срок, все в соответствии с ИТС. Выгружали/загружали dt. Запускали проведение на сервере. Переносил проведение в серверный модуль(где-то тут статья есть, попробовал). Ничего не помогает. Да в общем-то не мудрено, из такой таблицы разумеется долго будет тянуть остатки.

Самый тормозной момент - выборка остатков из регистра бухгалтерии. Простой запрос по остаткам номенклатуры в реализации с отборами в виртуальной таблице. Может выполняться до 5 секунд.
Посмотрели, в таблице значений субконто большое 370млн. записей. База весит 300 гигов.

Куда можно глянуть, что делать? Сервер стоит внушительный, загрузка до смешного мала при проведении. Нормально ли, что таблица имеет столько записей?
У нас УТ 10.3 крутится, там в 3 раза больше юр. лиц и максимальная таблица по записям ~ 70млн.

Вот все никак не могу понять, это норма, или все плохо?

По документам вот такая картина(количество всех документов в базе):
ГодДокумента	МесяцДокумента	КоличествоДокументов
2 011	1	42 920
2 011	2	58 649
2 011	3	61 588
2 011	4	53 195
2 011	5	51 480
2 011	6	50 272
2 011	7	48 859
2 011	8	54 159
2 011	9	56 434
2 011	10	58 328
2 011	11	58 651
2 011	12	66 721
2 012	1	46 484
2 012	2	63 637
2 012	3	67 612
2 012	4	61 833
2 012	5	63 195
2 012	6	58 384
2 012	7	56 332
2 012	8	61 562
2 012	9	63 079
2 012	10	75 913
2 012	11	71 319
2 012	12	77 382
2 013	1	62 357
2 013	2	65 928
2 013	3	71 151
2 013	4	73 811
2 013	5	57 625
2 013	6	62 142
2 013	7	64 813
2 013	8	63 094
2 013	9	69 038
2 013	10	82 590
2 013	11	76 704
2 013	12	89 405
2 014	1	61 324
2 014	2	75 445
2 014	3	95 561
2 014	4	117 885
2 014	5	104 051
2 014	6	101 488
2 014	7	117 983
2 014	8	107 873
2 014	9	130 231
2 014	10	145 996
2 014	11	126 868
2 014	12	165 714
2 015	1	124 164
2 015	2	164 812
2 015	3	181 681
2 015	4	186 754
2 015	5	149 910
2 015	6	166 674
2 015	7	175 650
2 015	8	177 318
2 015	9	208 976
2 015	10	231 005
2 015	11	213 327
2 015	12	242 120
2 016	1	189 946
2 016	2	233 273
2 016	3	262 685
2 016	4	269 980
2 016	5	236 210
2 016	6	265 622
2 016	7	262 123
2 016	8	299 193
2 016	9	317 644
2 016	10	15 001
Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. mymyka 21.10.16 11:15 Сейчас в теме
(1)
Бухгалтерия КОРП 2.0

370млн. записей. База весит 300 гигов.


Базе нужна липосакция, причем желательно по начало 2016 года. Такой монстр на регистре бухгалтерии долго жить не будет однозначно.
ipoloskov; +1 Ответить
3. Kasherniy 21.10.16 11:29 Сейчас в теме
(2) mymyka, я бы сперва хотел понять, это нормальное поведение базы - создать столько записей при выложенном объеме документов, или где-то накосячили?
Ну и услышать опыт, вдруг у кого подобная база живет и не жалуется.
Пытался свернуть 1 месяц (на начало феврала 2011). Крутилось пол дня + куча ошибок, оборотка не сошлась. Я как представлю, что меня ждет при свертке на 2016, чесаться начинаю. Это сперва месяц ждать, пока свернет, потом выискивать косяки....
4. mymyka 21.10.16 11:37 Сейчас в теме
(3)Такое количество записей субконто это нормально. Особенно если одним из видов субконто является ДокументРасчетов. Субконто это сочетание значений, коих при таком количество документов может быть бесконечно много. Свертку лучше делать выгрузкой данных в чистую базу и с начала года, сейчас уже, наверно, поздно.
В целом, регистр бухгалтерии весьма тормозная штука. Даже на объемах на 2 порядка меньше. УПП 472 гб (режется каждые 2 года), от отражения в контуре БУ отказались 3 года назад, т.к. уже после июля-августа года свертки оперативно получить данные бухучета фактически невозможно.
5. Kasherniy 21.10.16 12:05 Сейчас в теме
(4) mymyka, эээх... А мне бухгалтера уже все уши прожужжали "Надо разгонять базу!". И разумеется у всех есть знакомые, у которых такие же базы на работах и проводятся за 6 часов.
Спасибо, хоть вектор для размышлений ясен.
6. Fox-trot 158 21.10.16 12:11 Сейчас в теме
(1) Kasherniy, для начала текст запроса в студию, иначе только догадки-отгадки
15. kofr1c 24.10.16 21:49 Сейчас в теме
(1) Kasherniy, у Вас явно что-то не так с базой или сервером. Запускайте замер производительности и смотрите текущее состояние сервера.
У нас бухгалтерия Украины 1.2 весит 500+ гиг, документы проводятся до 2 сек. Не может месяц проводиться 5-7 дней,это просто нереально!
Прикрепленные файлы:
16. herfis 499 24.10.16 22:15 Сейчас в теме
(1) Kasherniy, Смущает ваше "Почти без изменений".
Не добавляли ли вы случайно примитивные типы данных в виды субконто?
18. Airlord 25.10.16 20:41 Сейчас в теме
(1) Начнем по порядку. 10.3 блаблабла и все такое... Не забываем, что УТ "крутится" на разных регистрах накопления, а БП на движениях единственного, что имеет смысл - регистре бухучета - отсюда и разница в количестве.
Варианты лечения:
1. Пробуем сжать таблицы.
2. Выгрузить, загрузить.
3. Пробуем "свернуть базу". Если были "допилы", то придется подпиливать стандартную свертку и пробовать свернуть копию базы. Почему копию и сейчас - потому, что после НГ (после сдачи годового отчета лучше всего) свернуть по 31.12.15. Будут трындеть бухи "ой мне там надо смотреть в кукуевом году..." пусть смотрят в копию!
По опыту говорю - пришлось стандартную подпиливать для БГУ1.0 - какой-то козел настрогал аналитики до 6-го субконто - свернулась, как миленькая. Заодно столько косяков "ручных" выползло - мама не горюй!
Делай выводы сам, но свертки тебе не миновать - иначе будешь зависеть от железа...
21. alexlights 26.10.16 08:17 Сейчас в теме
(18) Не согласен. Зачем сворачивать базы, обрезать? И как образом будут зависеть от железа?
У 1С много механизмов, например, итоги. И если их правильно организовывать, то нет зависимости от длительности ведения учета в базе.
Регистры БУ надо правильно разрабатывать (не более 3-х субконто, отсутствие примитивных типов в субконто и т.д.).
22. корум 287 26.10.16 09:21 Сейчас в теме
(21)
цитата (1)

Разработчиков типовых на мыло.
7. Bienko 212 21.10.16 13:03 Сейчас в теме
"Сервер стоит внушительный, загрузка до смешного мала при проведении." А подробнее? Рейд есть? Какой рейд? Диски SSD? Памяти сколько? Сколько памяти выделено на SQL сервер. Просто можно купить сервер за кучу денег, но из-за неправильной конфигурации результат будет швах. Кстати, если в реде сдохла батарейка, то скорость может упасть в 10 раз. Какую скорость дисковой подсистемы кристал диск показывает?
8. Kasherniy 21.10.16 16:46 Сейчас в теме
(7) Bienko, я подробно не описываю, потому как устал отвечать нашим сотрудникам, которые мягко сказать не всегда высококвалифицированные. У нас как новый программист приходит, так сразу давай лезть в конфигурацию сервера и т.д., напрочь не понимаю что вообще к чему, главное сделать умный вид и запрячь кого-то. Но это не к вам, просто свою бытность описал. Ажтрисет от таких 1Сников. А как лезть в profiler, замеры делать, анализировать, так ой не, это я не знаю, я ж 1Сник. Нахер, спрашивается, тебе вся эта никчемная инфа? Тут кадр был, пришла одна 1Сница, говорит сервер говно у вас, как так вообще 2 ядра? Ей выслали конфиги и указал 2xкакой-то там xeon, который 16 ядерный. То есть два процессора по 16 ядер. Которые были расценены как 2х ядерный.

В общем все там ок с сервером, обслуживают и закупают ребята, которые занимаются и остальными серверами, с базами повнушительнее нашей бухии.

А запрос там простейший. Обращается к одной виртуальной таблице остатков и все, никаких соединений или условий, все в параметрах. Возвращает столько строк, сколько в документе в ТЧ. В профайлере смотрели, 20% времени жрет соединение с таблицей значений субконто, 20% еще что-то подобное. Объем таблицы дикий.

Уже на копиях обрезалки запустил.
9. Fox-trot 158 22.10.16 19:37 Сейчас в теме
(8) Kasherniy, по результатам профайлера... может индекса не хватает или еще чего?
10. Kasherniy 24.10.16 11:31 Сейчас в теме
Ковыряли индексы. У меня по правде говоря нет таких глубоких познаний в SQL, я сидел с ребятами, которые на форуме Гилева зависают и пару курсов проходили. Ничем помочь не смогли, сказали что таблица слишком большая, это нормальная скорость проведения.

Сейчас неожиданная проблема со сверткой появилась. Сформировал документы обработкой с ИТС, хотел выгрузить в чистую базу и завис. Два дня в xml выгружкал, 56гигов файл стал, умерло. Видимо по частям придется грузить. Да и то не факт, скорее всего из-за 2-3 документов такая дикость, остатки по 10 и 41 счету видимо дают по овер дофига строк.

В общем хороший опыт работы с большими базами. Надеюсь свертка пройдет нормально. Бухов убедить работать в чистой базе будет проще.
11. alexlights 24.10.16 12:05 Сейчас в теме
(10) Kasherniy, Есть еще вариант ЦКТП.
Там ребята умные и могут помочь.
12. Fox-trot 158 24.10.16 18:37 Сейчас в теме
(10) Kasherniy, если запрос выполняется около 5 секунд, а документ проводится 5-7 дней, то в таком случае нуна смотреть еще и код проведения документа
и еще. скорость выполнения не зависит от объема данных если все сделано правильно. я гарантирую это ;-)
29. Kasherniy 07.11.16 12:16 Сейчас в теме
Похоже оно:
exec sp_executesql N'SEL ECT
N''profiler'',
T1.AccountRRef,
T1.Fld8064RRef,
T1.Value1_TYPE,
T1.Value1_RTRef,
T1.Value1_RRRef,
T1.Value2_TYPE,
T1.Value2_RTRef,
T1.Value2_RRRef,
T1.Fld8062RRef,
CAST(SUM(CASE WHEN T1.Fld8067BalanceDt_ IS NULL THEN 0.0 ELSE T1.Fld8067BalanceDt_ END) AS NUMERIC(38, 8)),
CAST(SUM(CASE WHEN T1.Fld8067BalanceDt_ IS NULL THEN 0.0 ELSE T1.Fld8067BalanceDt_ END) AS NUMERIC(38, 8)),
CAST(SUM(CASE WHEN T1.Fld8065BalanceDt_ IS NULL THEN 0.0 ELSE T1.Fld8065BalanceDt_ END) AS NUMERIC(38, 8)),
CAST(SUM(CASE WHEN T1.Fld8068BalanceDt_ IS NULL THEN 0.0 ELSE T1.Fld8068BalanceDt_ END) AS NUMERIC(38, 8)),
CAST(SUM(CASE WHEN T1.Fld8069BalanceDt_ IS NULL THEN 0.0 ELSE T1.Fld8069BalanceDt_ END) AS NUMERIC(38, 8)),
CAST(SUM(CASE WHEN T1.Fld8070BalanceDt_ IS NULL THEN 0.0 ELSE T1.Fld8070BalanceDt_ END) AS NUMERIC(38, 8))
FR OM (SELECT
T2._AccountRRef AS AccountRRef,
T2._Value1_TYPE AS Value1_TYPE,
T2._Value1_RTRef AS Value1_RTRef,
T2._Value1_RRRef AS Value1_RRRef,
T2._Value2_TYPE AS Value2_TYPE,
T2._Value2_RTRef AS Value2_RTRef,
T2._Value2_RRRef AS Value2_RRRef,
T2._Fld8062RRef AS Fld8062RRef,
T2._Fld8064RRef AS Fld8064RRef,
CASE WHEN CAST(SUM(T2._Fld8065) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld8065 + T2._Turnover8077) AS NUMERIC(34, 8)) > 0.0 THEN CAST(SUM(T2._Fld8065 + T2._Turnover8077) AS NUMERIC(34, 8)) ELSE 0.0 END AS Fld8065BalanceDt_,
CASE WHEN CAST(SUM(T2._Fld8067) AS NUMERIC(32, 8)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld8067 + T2._Turnover8083) AS NUMERIC(33, 8)) > 0.0 THEN CAST(SUM(T2._Fld8067 + T2._Turnover8083) AS NUMERIC(33, 8)) ELSE 0.0 END AS Fld8067BalanceDt_,
CASE WHEN CAST(SUM(T2._Fld8068) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld8068 + T2._Turnover8086) AS NUMERIC(34, 8)) > 0.0 THEN CAST(SUM(T2._Fld8068 + T2._Turnover8086) AS NUMERIC(34, 8)) ELSE 0.0 END AS Fld8068BalanceDt_,
CASE WHEN CAST(SUM(T2._Fld8070) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld8070 + T2._Turnover8092) AS NUMERIC(34, 8)) > 0.0 THEN CAST(SUM(T2._Fld8070 + T2._Turnover8092) AS NUMERIC(34, 8)) ELSE 0.0 END AS Fld8070BalanceDt_,
CASE WHEN CAST(SUM(T2._Fld8069) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld8069 + T2._Turnover8089) AS NUMERIC(34, 8)) > 0.0 THEN CAST(SUM(T2._Fld8069 + T2._Turnover8089) AS NUMERIC(34, 8)) ELSE 0.0 END AS Fld8069BalanceDt_,
MAX(T3._Kind) AS AccKind_
FR OM dbo._AccRgAT28094 T2 WITH(NOLOCK)
INNER JOIN #tt1 T3 WITH(NOLOCK)
ON T3._IDRRef = T2._AccountRRef AND T3._LineNo1 = @P1 AND T3._LineNo2 = @P2 AND T3._Cnt = @P3
WH ERE ((((((T2._Fld8064RRef IN (@P4)) OR T2._Fld8064RRef IS NULL) AND (T2._Value1_TYPE = 0x08 AND T2._Value1_RTRef = 0x00000030 AND T2._Value1_RRRef IN (@P5, @P6, @P7))) AND (T2._Value2_TYPE = 0x08 AND T2._Value2_RTRef = 0x0000004A AND T2._Value2_RRRef IN (@P8))) AND (T2._Fld8062RRef IN (@P9)))) AND T2._Period = @P10 AND (T2._Fld8065 <> @P11 OR T2._Turnover8077 <> @P12 OR T2._Fld8067 <> @P13 OR T2._Turnover8083 <> @P14 OR T2._Fld8068 <> @P15 OR T2._Turnover8086 <> @P16 OR T2._Fld8070 <> @P17 OR T2._Turnover8092 <> @P18 OR T2._Fld8069 <> @P19 OR T2._Turnover8089 <> @P20)
GROUP BY T2._AccountRRef,
T2._Value1_TYPE,
T2._Value1_RTRef,
T2._Value1_RRRef,
T2._Value2_TYPE,
T2._Value2_RTRef,
T2._Value2_RRRef,
T2._Fld8062RRef,
T2._Fld8064RRef
HAVING (CASE WHEN CAST(SUM(T2._Fld8065) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld8065 + T2._Turnover8077) AS NUMERIC(34, 8)) > 0.0 THEN CAST(SUM(T2._Fld8065 + T2._Turnover8077) AS NUMERIC(34, 8)) ELSE 0.0 END) <> 0.0 OR (CASE WHEN CAST(SUM(T2._Fld8067) AS NUMERIC(32, 8)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld8067 + T2._Turnover8083) AS NUMERIC(33, 8)) > 0.0 THEN CAST(SUM(T2._Fld8067 + T2._Turnover8083) AS NUMERIC(33, 8)) ELSE 0.0 END) <> 0.0 OR (CASE WHEN CAST(SUM(T2._Fld8068) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld8068 + T2._Turnover8086) AS NUMERIC(34, 8)) > 0.0 THEN CAST(SUM(T2._Fld8068 + T2._Turnover8086) AS NUMERIC(34, 8)) ELSE 0.0 END) <> 0.0 OR (CASE WHEN CAST(SUM(T2._Fld8070) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld8070 + T2._Turnover8092) AS NUMERIC(34, 8)) > 0.0 THEN CAST(SUM(T2._Fld8070 + T2._Turnover8092) AS NUMERIC(34, 8)) ELSE 0.0 END) <> 0.0 OR (CASE WHEN CAST(SUM(T2._Fld8069) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T3._Kind) = 0.0 OR MAX(T3._Kind) = 2.0 AND CAST(SUM(T2._Fld8069 + T2._Turnover8089) AS NUMERIC(34, 8)) > 0.0 THEN CAST(SUM(T2._Fld8069 + T2._Turnover8089) AS NUMERIC(34, 8)) ELSE 0.0 END) <> 0.0) T1
GROUP BY T1.AccountRRef,
T1.Fld8064RRef,
T1.Value1_TYPE,
T1.Value1_RTRef,
T1.Value1_RRRef,
T1.Value2_TYPE,
T1.Value2_RTRef,
T1.Value2_RRRef,
T1.Fld8062RRef',N'@P1 numeric(10),@P2 numeric(10),@P3 numeric(10),@P4 varbinary(16),@P5 varbinary(16),@P6 varbinary(16),@P7 varbinary(16),@P8 varbinary(16),@P9 varbinary(16),@P10 datetime2(3),@P11 numeric(10),@P12 numeric(10),@P13 numeric(10),@P14 numeric(10),@P15 numeric(10),@P16 numeric(10),@P17 numeric(10),@P18 numeric(10),@P19 numeric(10),@P20 numeric(10)',1,2,2,0x00000000000000000000000000000000,0xBB4F001D7D0B896011E05A9D267F567D,0xBB4F001D7D0B896011E05A9D673BA7D2,0xB4EA00215AC99DEA11E10526F26B3C5F,0x811200215AC99DEA11E0457A6A48B352,0x9E3AFF5C7762DA1A462EC44A5ED15881,'4016-08-01 00:00:00',0,0,0,0,0,0,0,0,0,0
Показать
30. Kasherniy 07.11.16 12:28 Сейчас в теме
Что-то не то...
Запрос выше я получил через консоль запросов, просто вставил то, что ловилось отладчиком. Сейчас прямо в конфе дописал в запрос поле "profiler" и получаю вот это:
exec sp_executesql N'SEL ECT
N''profiler'',
T1.AccountRRef,
T1.Fld8064RRef,
T1.Value1_TYPE,
T1.Value1_RTRef,
T1.Value1_RRRef,
{ts ''2001-01-01 00:00:00''},
0x00000000000000000000000000000000,
{ts ''2001-01-01 00:00:00''},
0x00000000000000000000000000000000,
T1.Value2_TYPE,
T1.Value2_RTRef,
T1.Value2_RRRef,
T1.Fld8062RRef,
CAST(SUM(CASE WHEN T1.Fld8067BalanceDt_ IS NULL THEN 0.0 ELSE T1.Fld8067BalanceDt_ END) AS NUMERIC(38, 8)),
CAST(SUM(CASE WHEN T1.Fld8067BalanceDt_ IS NULL THEN 0.0 ELSE T1.Fld8067BalanceDt_ END) AS NUMERIC(38, 8)),
CAST(SUM(CASE WHEN T1.Fld8065BalanceDt_ IS NULL THEN 0.0 ELSE T1.Fld8065BalanceDt_ END) AS NUMERIC(38, 8)),
CAST(SUM(CASE WHEN T1.Fld8068BalanceDt_ IS NULL THEN 0.0 ELSE T1.Fld8068BalanceDt_ END) AS NUMERIC(38, 8)),
CAST(SUM(CASE WHEN T1.Fld8069BalanceDt_ IS NULL THEN 0.0 ELSE T1.Fld8069BalanceDt_ END) AS NUMERIC(38, 8)),
CAST(SUM(CASE WHEN T1.Fld8070BalanceDt_ IS NULL THEN 0.0 ELSE T1.Fld8070BalanceDt_ END) AS NUMERIC(38, 8))
FR OM (SEL ECT
T2.AccountRRef AS AccountRRef,
T2.Value1_TYPE AS Value1_TYPE,
T2.Value1_RTRef AS Value1_RTRef,
T2.Value1_RRRef AS Value1_RRRef,
T2.Value2_TYPE AS Value2_TYPE,
T2.Value2_RTRef AS Value2_RTRef,
T2.Value2_RRRef AS Value2_RRRef,
T2.Fld8062RRef AS Fld8062RRef,
T2.Fld8064RRef AS Fld8064RRef,
CASE WHEN CAST(SUM(T2.Fld8065Balance_) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T11._Kind) = 0.0 OR MAX(T11._Kind) = 2.0 AND CAST(SUM(T2.Fld8065Balance_) AS NUMERIC(33, 8)) > 0.0 THEN CAST(SUM(T2.Fld8065Balance_) AS NUMERIC(33, 8)) ELSE 0.0 END AS Fld8065BalanceDt_,
CASE WHEN CAST(SUM(T2.Fld8067Balance_) AS NUMERIC(32, 8)) IS NULL THEN 0.0 WHEN MAX(T11._Kind) = 0.0 OR MAX(T11._Kind) = 2.0 AND CAST(SUM(T2.Fld8067Balance_) AS NUMERIC(32, 8)) > 0.0 THEN CAST(SUM(T2.Fld8067Balance_) AS NUMERIC(32, 8)) ELSE 0.0 END AS Fld8067BalanceDt_,
CASE WHEN CAST(SUM(T2.Fld8068Balance_) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T11._Kind) = 0.0 OR MAX(T11._Kind) = 2.0 AND CAST(SUM(T2.Fld8068Balance_) AS NUMERIC(33, 8)) > 0.0 THEN CAST(SUM(T2.Fld8068Balance_) AS NUMERIC(33, 8)) ELSE 0.0 END AS Fld8068BalanceDt_,
CASE WHEN CAST(SUM(T2.Fld8070Balance_) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T11._Kind) = 0.0 OR MAX(T11._Kind) = 2.0 AND CAST(SUM(T2.Fld8070Balance_) AS NUMERIC(33, 8)) > 0.0 THEN CAST(SUM(T2.Fld8070Balance_) AS NUMERIC(33, 8)) ELSE 0.0 END AS Fld8070BalanceDt_,
CASE WHEN CAST(SUM(T2.Fld8069Balance_) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T11._Kind) = 0.0 OR MAX(T11._Kind) = 2.0 AND CAST(SUM(T2.Fld8069Balance_) AS NUMERIC(33, 8)) > 0.0 THEN CAST(SUM(T2.Fld8069Balance_) AS NUMERIC(33, 8)) ELSE 0.0 END AS Fld8069BalanceDt_,
MAX(T11._Kind) AS AccKind_
FR OM (SEL ECT
T3._AccountRRef AS AccountRRef,
T3._Value1_TYPE AS Value1_TYPE,
T3._Value1_RTRef AS Value1_RTRef,
T3._Value1_RRRef AS Value1_RRRef,
T3._Value2_TYPE AS Value2_TYPE,
T3._Value2_RTRef AS Value2_RTRef,
T3._Value2_RRRef AS Value2_RRRef,
T3._Fld8062RRef AS Fld8062RRef,
T3._Fld8064RRef AS Fld8064RRef,
T3._Fld8065 AS Fld8065Balance_,
T3._Fld8067 AS Fld8067Balance_,
T3._Fld8068 AS Fld8068Balance_,
T3._Fld8070 AS Fld8070Balance_,
T3._Fld8069 AS Fld8069Balance_
FR OM dbo._AccRgAT28094 T3
INNER JOIN #tt16 T4 WITH(NOLOCK)
ON T4._IDRRef = T3._AccountRRef AND T4._LineNo1 = @P1 AND T4._LineNo2 = @P2 AND T4._Cnt = @P3
WHERE ((((((T3._Fld8064RRef IN (@P4)) OR T3._Fld8064RRef IS NULL) AND (T3._Value1_TYPE = 0x08 AND T3._Value1_RTRef = 0x00000030 AND T3._Value1_RRRef IN (@P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12, @P13))) AND (T3._Value2_TYPE = 0x08 AND T3._Value2_RTRef = 0x0000004A AND T3._Value2_RRRef IN (@P14))) AND (T3._Fld8062RRef IN (@P15)))) AND T3._Period = @P16 AND (T3._Fld8065 <> @P17 OR T3._Fld8067 <> @P18 OR T3._Fld8068 <> @P19 OR T3._Fld8070 <> @P20 OR T3._Fld8069 <> @P21)
UNI ON ALL SELECT
T5._AccountDtRRef AS AccountRRef,
T6._Value_TYPE AS Value1_TYPE,
T6._Value_RTRef AS Value1_RTRef,
T6._Value_RRRef AS Value1_RRRef,
T7._Value_TYPE AS Value2_TYPE,
T7._Value_RTRef AS Value2_RTRef,
T7._Value_RRRef AS Value2_RRRef,
T5._Fld8062RRef AS Fld8062RRef,
T5._Fld8064DtRRef AS Fld8064RRef,
CAST(-T5._Fld8065 AS NUMERIC(21, 2)) AS Fld8065Balance_,
CAST(-T5._Fld8067Dt AS NUMERIC(21, 3)) AS Fld8067Balance_,
CAST(-T5._Fld8068Dt AS NUMERIC(21, 2)) AS Fld8068Balance_,
CAST(-T5._Fld8070Dt AS NUMERIC(21, 2)) AS Fld8070Balance_,
CAST(-T5._Fld8069Dt AS NUMERIC(21, 2)) AS Fld8069Balance_
FR OM dbo._AccRg8061 T5
INNER JOIN dbo._AccRgED8097 T6
ON T6._RecorderTRef = T5._RecorderTRef AND T6._RecorderRRef = T5._RecorderRRef AND T6._LineNo = T5._LineNo AND T6._Period = T5._Period AND T6._Correspond = @P22 AND T6._KindRRef = @P23 AND (T6._Period > @P24 OR T6._Period = @P25 AND (T6._RecorderTRef > 0x000000BA OR T6._RecorderTRef = 0x000000BA AND T6._RecorderRRef >= @P26)) AND T6._Period < @P27
INNER JOIN dbo._AccRgED8097 T7
ON T7._RecorderTRef = T5._RecorderTRef AND T7._RecorderRRef = T5._RecorderRRef AND T7._LineNo = T5._LineNo AND T7._Period = T5._Period AND T7._Correspond = @P28 AND T7._KindRRef = @P29 AND (T7._Period > @P30 OR T7._Period = @P31 AND (T7._RecorderTRef > 0x000000BA OR T7._RecorderTRef = 0x000000BA AND T7._RecorderRRef >= @P32)) AND T7._Period < @P33
WH ERE T5._Active = 0x01 AND ((T5._AccountDtRRef IN (@P34))) AND ((((((T5._Fld8064DtRRef IN (@P35)) OR T5._Fld8064DtRRef IS NULL) AND (T6._Value_TYPE = 0x08 AND T6._Value_RTRef = 0x00000030 AND T6._Value_RRRef IN (@P36, @P37, @P38, @P39, @P40, @P41, @P42, @P43, @P44))) AND (T7._Value_TYPE = 0x08 AND T7._Value_RTRef = 0x0000004A AND T7._Value_RRRef IN (@P45))) AND (T5._Fld8062RRef IN (@P46)))) AND (T5._Period > @P47 OR T5._Period = @P48 AND (T5._RecorderTRef > 0x000000BA OR T5._RecorderTRef = 0x000000BA AND T5._RecorderRRef >= @P49)) AND T5._Period < @P50
UNION ALL SEL ECT
T8._AccountCtRRef AS AccountRRef,
T9._Value_TYPE AS Value1_TYPE,
T9._Value_RTRef AS Value1_RTRef,
T9._Value_RRRef AS Value1_RRRef,
T10._Value_TYPE AS Value2_TYPE,
T10._Value_RTRef AS Value2_RTRef,
T10._Value_RRRef AS Value2_RRRef,
T8._Fld8062RRef AS Fld8062RRef,
T8._Fld8064CtRRef AS Fld8064RRef,
CAST(T8._Fld8065 AS NUMERIC(21, 2)) AS Fld8065Balance_,
CAST(T8._Fld8067Ct AS NUMERIC(21, 3)) AS Fld8067Balance_,
CAST(T8._Fld8068Ct AS NUMERIC(21, 2)) AS Fld8068Balance_,
CAST(T8._Fld8070Ct AS NUMERIC(21, 2)) AS Fld8070Balance_,
CAST(T8._Fld8069Ct AS NUMERIC(21, 2)) AS Fld8069Balance_
FR OM dbo._AccRg8061 T8
INNER JOIN dbo._AccRgED8097 T9
ON T9._RecorderTRef = T8._RecorderTRef AND T9._RecorderRRef = T8._RecorderRRef AND T9._LineNo = T8._LineNo AND T9._Period = T8._Period AND T9._Correspond = @P51 AND T9._KindRRef = @P52 AND (T9._Period > @P53 OR T9._Period = @P54 AND (T9._RecorderTRef > 0x000000BA OR T9._RecorderTRef = 0x000000BA AND T9._RecorderRRef >= @P55)) AND T9._Period < @P56
INNER JOIN dbo._AccRgED8097 T10
ON T10._RecorderTRef = T8._RecorderTRef AND T10._RecorderRRef = T8._RecorderRRef AND T10._LineNo = T8._LineNo AND T10._Period = T8._Period AND T10._Correspond = @P57 AND T10._KindRRef = @P58 AND (T10._Period > @P59 OR T10._Period = @P60 AND (T10._RecorderTRef > 0x000000BA OR T10._RecorderTRef = 0x000000BA AND T10._RecorderRRef >= @P61)) AND T10._Period < @P62
WH ERE T8._Active = 0x01 AND ((T8._AccountCtRRef IN (@P63))) AND ((((((T8._Fld8064CtRRef IN (@P64)) OR T8._Fld8064CtRRef IS NULL) AND (T9._Value_TYPE = 0x08 AND T9._Value_RTRef = 0x00000030 AND T9._Value_RRRef IN (@P65, @P66, @P67, @P68, @P69, @P70, @P71, @P72, @P73))) AND (T10._Value_TYPE = 0x08 AND T10._Value_RTRef = 0x0000004A AND T10._Value_RRRef IN (@P74))) AND (T8._Fld8062RRef IN (@P75)))) AND (T8._Period > @P76 OR T8._Period = @P77 AND (T8._RecorderTRef > 0x000000BA OR T8._RecorderTRef = 0x000000BA AND T8._RecorderRRef >= @P78)) AND T8._Period < @P79) T2
INNER JOIN dbo._Acc8 T11
ON T11._IDRRef = T2.AccountRRef
GROUP BY T2.AccountRRef,
T2.Value1_TYPE,
T2.Value1_RTRef,
T2.Value1_RRRef,
T2.Value2_TYPE,
T2.Value2_RTRef,
T2.Value2_RRRef,
T2.Fld8062RRef,
T2.Fld8064RRef
HAVING (CASE WHEN CAST(SUM(T2.Fld8065Balance_) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T11._Kind) = 0.0 OR MAX(T11._Kind) = 2.0 AND CAST(SUM(T2.Fld8065Balance_) AS NUMERIC(33, 8)) > 0.0 THEN CAST(SUM(T2.Fld8065Balance_) AS NUMERIC(33, 8)) ELSE 0.0 END) <> 0.0 OR (CASE WHEN CAST(SUM(T2.Fld8067Balance_) AS NUMERIC(32, 8)) IS NULL THEN 0.0 WHEN MAX(T11._Kind) = 0.0 OR MAX(T11._Kind) = 2.0 AND CAST(SUM(T2.Fld8067Balance_) AS NUMERIC(32, 8)) > 0.0 THEN CAST(SUM(T2.Fld8067Balance_) AS NUMERIC(32, 8)) ELSE 0.0 END) <> 0.0 OR (CASE WHEN CAST(SUM(T2.Fld8068Balance_) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T11._Kind) = 0.0 OR MAX(T11._Kind) = 2.0 AND CAST(SUM(T2.Fld8068Balance_) AS NUMERIC(33, 8)) > 0.0 THEN CAST(SUM(T2.Fld8068Balance_) AS NUMERIC(33, 8)) ELSE 0.0 END) <> 0.0 OR (CASE WHEN CAST(SUM(T2.Fld8070Balance_) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T11._Kind) = 0.0 OR MAX(T11._Kind) = 2.0 AND CAST(SUM(T2.Fld8070Balance_) AS NUMERIC(33, 8)) > 0.0 THEN CAST(SUM(T2.Fld8070Balance_) AS NUMERIC(33, 8)) ELSE 0.0 END) <> 0.0 OR (CASE WHEN CAST(SUM(T2.Fld8069Balance_) AS NUMERIC(33, 8)) IS NULL THEN 0.0 WHEN MAX(T11._Kind) = 0.0 OR MAX(T11._Kind) = 2.0 AND CAST(SUM(T2.Fld8069Balance_) AS NUMERIC(33, 8)) > 0.0 THEN CAST(SUM(T2.Fld8069Balance_) AS NUMERIC(33, 8)) ELSE 0.0 END) <> 0.0) T1
GROUP BY T1.AccountRRef,
T1.Fld8064RRef,
T1.Value1_TYPE,
T1.Value1_RTRef,
T1.Value1_RRRef,
T1.Value2_TYPE,
T1.Value2_RTRef,
T1.Value2_RRRef,
T1.Fld8062RRef',N'@P1 numeric(10),@P2 numeric(10),@P3 numeric(10),@P4 varbinary(16),@P5 varbinary(16),@P6 varbinary(16),@P7 varbinary(16),@P8 varbinary(16),@P9 varbinary(16),@P10 varbinary(16),@P11 varbinary(16),@P12 varbinary(16),@P13 varbinary(16),@P14 
varbinary(16),@P15 varbinary(16),@P16 datetime2(3),@P17 numeric(10),@P18 numeric(10),@P19 numeric(10),@P20 numeric(10),@P21 numeric(10),@P22 numeric(10),@P23 varbinary(16),@P24 datetime2(3),@P25 datetime2(3),@P26 varbinary(16),@P27 datetime2(3),@P28 numeric(10),@P29 
varbinary(16),@P30 datetime2(3),@P31 datetime2(3),@P32 varbinary(16),@P33 datetime2(3),@P34 varbinary(16),@P35 varbinary(16),@P36 varbinary(16),@P37 varbinary(16),@P38 varbinary(16),@P39 varbinary(16),@P40 varbinary(16),@P41 varbinary(16),@P42 varbinary(16),@P43 
varbinary(16),@P44 varbinary(16),@P45 varbinary(16),@P46 varbinary(16),@P47 datetime2(3),@P48 datetime2(3),@P49 varbinary(16),@P50 datetime2(3),@P51 numeric(10),@P52 varbinary(16),@P53 datetime2(3),@P54 datetime2(3),@P55 varbinary(16),@P56 datetime2(3),@P57 
numeric(10),@P58 varbinary(16),@P59 datetime2(3),@P60 datetime2(3),@P61 varbinary(16),@P62 datetime2(3),@P63 varbinary(16),@P64 varbinary(16),@P65 varbinary(16),@P66 varbinary(16),@P67 varbinary(16),@P68 varbinary(16),@P69 varbinary(16),@P70 varbinary(16),@P71 
varbinary(16),@P72 varbinary(16),@P73 varbinary(16),@P74 varbinary(16),@P75 varbinary(16),@P76 datetime2(3),@P77 datetime2(3),@P78 varbinary(16),@P79 
datetime2(3)',1,2,2,0x80C50CC47A203E3F11E5C9965BE38C1E,0x85A56EAE8B368A6111E2A671F229C710,0xBB4F001D7D0B896011E05A9D267F56BB,0xBB4F001D7D0B896011E05A9D87B0027E,0x80C50CC47A203E3F11E5BEB2D047849F,0xBB4F001D7D0B896011E05A9D87B00318,0xBB4F001D7D0B896011E05A9F78775381,0xBB4F001D7D0B896011E05A9E3BAD1754,0xBB4F001D7D0B896011E05A9E3BAD179B,0xBB4F001D7D0B896011E05A9F32374517,0x80C50CC47A203E3F11E5FB085CD06329,0x9E3AFF5C7762DA1A462EC44A5ED15881,'5999-11-01 
00:00:00',0,0,0,0,0,0,0xA2D9EF0AD9924E764E73FB1C43E874EE,'4016-09-30 23:59:59','4016-09-30 23:59:59',0x92EC0CC47A347FEE11E68725178C06AF,'5999-11-01 00:00:00',0,0xBEE54541A4A688B745534FDD1DF6EB52,'4016-09-30 23:59:59','4016-09-30 23:59:59',0x92EC0CC47A347FEE11E68725178C06AF,'5999-11-01 00:00:00',0xA36F5219F3882D59474C2B8DF0E06657,0x80C50CC47A203E3F11E5C9965BE38C1E,0x85A56EAE8B368A6111E2A671F229C710,0xBB4F001D7D0B896011E05A9D267F56BB,0xBB4F001D7D0B896011E05A9D87B0027E,0x80C50CC47A203E3F11E5BEB2D047849F,0xBB4F001D7D0B896011E05A9D87B00318,0xBB4F001D7D0B896011E05A9F78775381,0xBB4F001D7D0B896011E05A9E3BAD1754,0xBB4F001D7D0B896011E05A9E3BAD179B,0xBB4F001D7D0B896011E05A9F32374517,0x80C50CC47A203E3F11E5FB085CD06329,0x9E3AFF5C7762DA1A462EC44A5ED15881,'4016-09-30 23:59:59','4016-09-30 23:59:59',0x92EC0CC47A347FEE11E68725178C06AF,'5999-11-01 00:00:00',1,0xA2D9EF0AD9924E764E73FB1C43E874EE,'4016-09-30 23:59:59','4016-09-30 23:59:59',0x92EC0CC47A347FEE11E68725178C06AF,'5999-11-01 00:00:00',1,0xBEE54541A4A688B745534FDD1DF6EB52,'4016-09-30 23:59:59','4016-09-30 23:59:59',0x92EC0CC47A347FEE11E68725178C06AF,'5999-11-01 00:00:00',0xA36F5219F3882D59474C2B8DF0E06657,0x80C50CC47A203E3F11E5C9965BE38C1E,0x85A56EAE8B368A6111E2A671F229C710,0xBB4F001D7D0B896011E05A9D267F56BB,0xBB4F001D7D0B896011E05A9D87B0027E,0x80C50CC47A203E3F11E5BEB2D047849F,0xBB4F001D7D0B896011E05A9D87B00318,0xBB4F001D7D0B896011E05A9F78775381,0xBB4F001D7D0B896011E05A9E3BAD1754,0xBB4F001D7D0B896011E05A9E3BAD179B,0xBB4F001D7D0B896011E05A9F32374517,0x80C50CC47A203E3F11E5FB085CD06329,0x9E3AFF5C7762DA1A462EC44A5ED15881,'4016-09-30 23:59:59','4016-09-30 23:59:59',0x92EC0CC47A347FEE11E68725178C06AF,'5999-11-01 00:00:00'
Показать


Этот запрос выполняется 510мс. Похоже на правду.
13. Ujine1313 9 24.10.16 20:43 Сейчас в теме
Переводи базу на скуль и массив из ссд
14. Fox-trot 158 24.10.16 21:30 Сейчас в теме
(13) а чё так мелко? может сап+оракл предложишь?
Kasherniy; +1 Ответить
17. ipoloskov 162 24.10.16 22:24 Сейчас в теме
Были однажды тормоза как раз на таблице субконто. SQL по некой причине выбирал неправильный план запроса и соединялся СНАЧАЛА с таблицей субконто за период, а потом с условиями из параметров. Соответственно первым оператором считывалось 70 млн записей с диска. Может быть, у вас то же самое? Посмотрите план.
23. ipoloskov 162 26.10.16 10:52 Сейчас в теме
В дополнение к (17)
В моем случае все вылечилось само после ночной очистки процедурного кэша. Тут какая ситуация может быть? Кто-то у вас утром первым после очистки кэша запускает отчет на одном наборе параметров. SQL строит план запроса, и радостно его использует при дальнейших вызовах этого отчета в течение дня. А в дальнейшем он может вовсе не подходить и быть неоптимальным. Попробуйте почистить кэш и запустить отчет сразу после этого.

Кроме того, что за условия в вашем "простейшем" запросе? Наличие фразы "В ИЕРАРХИИ" тут же превращает простейший запрос в непростейший.
19. user629672_vladimirmir 26.10.16 02:24 Сейчас в теме
еще один вариант лечения это программный, поищите нужную в инете
20. Fox-trot 158 26.10.16 07:07 Сейчас в теме
(19) и как жеш называется сия таблэтка?
24. Fragster 1139 26.10.16 11:18 Сейчас в теме
>Самый тормозной момент - выборка остатков из регистра бухгалтерии. Простой запрос по остаткам номенклатуры в реализации с отборами в виртуальной таблице. Может выполняться до 5 секунд.

Надо проверить, закрываются ли итоги по всем субконто. Потом проверить количество "нулевых" записей в таблице итогов. Если ОК, то смотреть уже дальше.

Например сделать таблицу вида: месяц - количество записей в виртуальной таблице итогов
Выбрать * Из РегистрБухгалтерии.Остатки(период,...), именно звездочка
25. alexlights 26.10.16 14:13 Сейчас в теме
а можете приложить текст запроса 1с (и какие отборы), текст запроса со стороны SQL и схему запроса SQL
26. Kasherniy 07.11.16 10:04 Сейчас в теме
Всем спасибо за полезные комментарии.
Долго пытался разобраться, учитывая здесь написанное. Начал с таблиц итогов.


Делаю в sql запрос к таблице итогов по 3 субконто. Именно к ней, а не к 1 и 2 субконто, потому что тормозит запрос, в котором указываются все три субконто в параметрах виртуальной таблицы. Я вообще правильно мыслю?
sel ect 
	_Period as [ДатаИтога],
	count(*) as [ВсегоСтрок],
	sum(case when (_FLD8065=0 and _FLD8066=0 and _FLD8067=0 and _FLD8068=0 and _FLD8069=0 and _FLD8070=0) THEN 1 ELSE 0 END) as [НулевыхЗаписей]

fr om _AccRgAT38095
group by _Period
order by [ДатаИтога] DESC


И получаю примерно треть записей с нулевыми значениями. После пересчета через конфигуратор меняется только одно - дата 5999, то есть актуальные итоги не имеют нулевых записей. А все помесячные итоги также хранят в себе треть нулевых.
Ставил дату итогов регистра бухгалтерии через пользовательский интерфейс на сентябрь - тоже самое. В сентябре также остаются нулевые записи.
Делал через ПересчитатьИтогиЗаПериод, указывая интервал 31 августа - 30 сентября. Тоже самое.

Пока у меня один вопрос. Это что-то происходит с таблицами итогов, или я неправильно понимаю принцип расчета?

Кстати, запрос в 1С, с которого все началось:
ВЫБРАТЬ
	Остатки.Счет КАК СчетУчета,
	Остатки.Подразделение КАК Подразделение,
	Остатки.Субконто1 КАК Номенклатура,
	&ПустаяДата КАК ДокументОприходованияДата,
	&ПустаяПартия КАК ДокументОприходования,
	&ПустаяДата КАК ДокументОтгрузкиДата,
	&ПустаяОтгрузка КАК ДокументОтгрузки,
	Остатки.Субконто2 КАК Склад,
	Остатки.Организация КАК Организация,
	СУММА(ВЫБОР КОГДА Остатки.КоличествоОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.КоличествоОстатокДт КОНЕЦ) КАК КоличествоПоСкладу,
	СУММА(ВЫБОР КОГДА Остатки.КоличествоОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.КоличествоОстатокДт КОНЕЦ) КАК Количество,
	СУММА(ВЫБОР КОГДА Остатки.СуммаОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.СуммаОстатокДт КОНЕЦ) КАК Стоимость,
	СУММА(ВЫБОР КОГДА Остатки.СуммаНУОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.СуммаНУОстатокДт КОНЕЦ) КАК СтоимостьНУ,
	СУММА(ВЫБОР КОГДА Остатки.СуммаПРОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.СуммаПРОстатокДт КОНЕЦ) КАК СтоимостьПР,
	СУММА(ВЫБОР КОГДА Остатки.СуммаВРОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.СуммаВРОстатокДт КОНЕЦ) КАК СтоимостьВР
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Остатки(&МоментКон, Счет В (&СчетаУчетаНС), &ВидыСубконтоНС, (Подразделение В (&ФильтрПодразделения) ИЛИ Подразделение ЕСТЬ NULL) И Субконто1 В (&Номенклатура) И Субконто2 В (&Склады) И Организация В (&Организации)) КАК Остатки

СГРУППИРОВАТЬ ПО
	Остатки.Счет,
	Остатки.Подразделение,
	Остатки.Субконто1,
	Остатки.Субконто2,
	Остатки.Организация
ДЛЯ ИЗМЕНЕНИЯ 
ИТОГИ ПО Номенклатура
Показать
28. alexlights 07.11.16 11:53 Сейчас в теме
(26) А можете еще выложить текст запроса, сформированный на стороне SQL.
32. Rokky78 40 08.11.16 10:11 Сейчас в теме
(26) соглашусь с (31).
Я бы при выборе субконто использовал выразить.

ВЫРАЗИТЬ(Остатки.Субконто1 КАК Справочник.Номенклатура) КАК Номенклатура,
ВЫРАЗИТЬ(Остатки.Субконто2 КАК Справочник.Склады) КАК Склад,

И от "ИЛИ" нужно избавиться
27. Kasherniy 07.11.16 10:17 Сейчас в теме
Еще дополню. Смотрел типы значения субконто(ПВХ ВидыСубконтоХозрасчетные. Туда хоть смотрел?), примитивных нет.
Кеш чистил после пересчета итогов - не спасло.
31. alexlights 08.11.16 09:05 Сейчас в теме
А если попробовать выполнить запрос без
ИЛИ Подразделение ЕСТЬ NULL

И еще Попробуйте использовать
Выразить
в Вашем запросе.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот