Имя: Пароль:
1C
1С v8
Ошибка 1С или SQL, Помогите разобратся
0 vikpart
 
12.01.18
21:19
Доброго времени!

Есть База УТП серверная, Ведется участок розницы, при групповом проведении документов Отчет о розничных продажах по БУ, после нескольких документов зависает, опытным путем нащел процедуру которая завешивает
Там есть запрос к РС
|ВЫБРАТЬ
    |    ЦеныПродажные.Склад КАК Склад,
    |    ЦеныПродажные.Номенклатура КАК Номенклатура,
    |    ЦеныПродажные.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |    ЦеныПродажные.Цена КАК Цена
    |ИЗ
    |    РегистрСведений.ЦеныАТТ.СрезПоследних(&Дата, Склад В (&СписокСкладов)
    |       И Номенклатура В (&СписокНоменклатуры)) КАК ЦеныПродажные
    |";
Вроде все просто, но проведение зависает совсем, пробывал выгрузить в файловую версию все отрабатывает нормально.

Куда копать, что оптимизировать не могу понять!
1 Dmitry1c
 
12.01.18
21:27
А ты уверен, что именно этот запрос вешает систему?
2 Михаил Козлов
 
12.01.18
21:28
Наверное, ТИИ для начала.
Попробовать понять, зачем нужна цена АТТ при проведении отчета о розничных продажах.
3 vikpart
 
12.01.18
21:40
Уверен, я его исключил из проведения и все ровно,ТиИ делал не помагает, нужна цена для расчета возвратов в рознице.

Меня больше смущает что простецкий запрос, выполненный несколько раз завешивает процесс
4 vikpart
 
12.01.18
21:42
Может в настройках SQL что не так???, ведь в файловом варианте работает (((
5 ptiz
 
12.01.18
21:57
Для начала - обновить в sql статистику по таблице цен.
6 vikpart
 
12.01.18
22:31
Статистику обновлял, не помогает
7 asady
 
12.01.18
22:42
Размеры таблицы ценыатт, списка номенклатуры укажи
8 vikpart
 
12.01.18
22:46
Строк в таблице 265541, список номенклатуры 50-200, склад 1, характеристики не используются
9 asady
 
12.01.18
22:57
Я бы сделал внешюю обработку этим запросом и погонял бы с этими списками номенклатуры
Меняя параметры и исключая части
структура регистра какая?
По той инфе что есть тсой запрос должен летать
10 vikpart
 
12.01.18
23:02
Это и есть все поля регистра, меня тоже это смущает, попробую погонять его отдельно
11 youalex
 
12.01.18
23:18
профайлером отлови этот запрос (если это он) и скорми его скулю.
12 youalex
 
12.01.18
23:19
(10) условие в индекс попадает хотя бы?
13 Ненавижу 1С
 
гуру
12.01.18
23:21
ну ты же не просто текст запроса убрал? там же результат запроса как-то отрабатывается

и одно дело проверить хоть и в файловой но с 1 пользователем и в серверной со 100
14 vikpart
 
12.01.18
23:35
Создал обработку с этим запросом и скормил ей номенклатуру с документов о продажах за год в цикле по документно все отработало нормально,
На серверной я проверял монопольно картинка таже, зависает
15 Злопчинский
 
12.01.18
23:59
(8) если характеристики не используются - зачем ты запросом тянешь их? Делать нечего, по играться охота?
16 Ненавижу 1С
 
гуру
13.01.18
00:04
(15) мы тоже не используем, но в типовых 100500 запросах они тянутся - не мешают
17 youalex
 
13.01.18
12:09
Как вариант, можно попробовать запихать значения параметров в вт кроссджойном и фильтровать регистр уже по этой вт:

.СрезПоследних(&Дата, (Склад, Номенклатура)  В (ВЫБРАТЬ вт.Склад, вт.Номенклатура из вт как вт))
18 vi0
 
13.01.18
12:15
(10) какой порядок измерений в регистре?
19 vi0
 
13.01.18
12:16
(17) да, это можно попробовать
20 Лефмихалыч
 
13.01.18
12:23
(0) сколько элементов в массивах, которые ты передаешь в запрос? Склад и Номенклатура - ведущие измерения?
21 Лефмихалыч
 
13.01.18
12:23
ну, и план-то покажи штоля
22 triviumfan
 
13.01.18
12:30
(17) Если это сработает, "то я сожру свои носки" (с)
23 breezee
 
13.01.18
13:10
(0) А точно на этой строке зависает? В отладке-то смотрели?
24 vi0
 
13.01.18
16:58
(22) а в чем проблема?
25 Лефмихалыч
 
13.01.18
17:50
(24) если тормозит именно этот запрос, то такой трюк ничего не даст вероятнее всего
26 triviumfan
 
13.01.18
18:46
(25) +100500.
Имхо дело не в этом запросе) ТС что-то скрывает/недоговаривает
27 youalex
 
13.01.18
18:52
(25) скорее всего, если дело в этом запросе, то даст. Потому что это условие платформа преобразует в обычный коррелированный запрос, по индексированным полям, мсскуль его прожует на раз.
С другой стороны, возможно ты прав, тут может играть количество элементов в параметре. Дело в том (обращаюсь к ТС) - что если элементов мало, то платформа пихает их литералами в текст запроса, грубо говоря в where(точнее, в параметры хранимки, но не суть)  . Но если значений много - то платформа генерит вт. Причем, каждое значение - это отдельный инсёрт. И вот тут оно может тупить.
28 ZloyBrawler
 
13.01.18
20:56
сталкивался с падением производительности похожего рода, помогло только повышение режима совместимости
наблюдал правда такое на бухгалтерских регистрах
29 triviumfan
 
13.01.18
21:04
(27) в 8 тебе ответили про параметры.
30 h-sp
 
13.01.18
21:04
может наоборот написать

|ВЫБРАТЬ
   |    ЦеныПродажные.Номенклатура КАК Номенклатура,
   |    ЦеныПродажные.Склад КАК Склад,

всё-таки так правильнее
31 Glup0sti
 
15.01.18
15:13
выполни DBCC FLUSHPROCINDB(db_id()) к нужной базе
получи план запроса и порядок измерений регистра покажи