Имя: Пароль:
1C
 
Дали запрос, который необходимо оценить.
0 wowik
 
24.10.18
21:33
Подскажите, все ли здесь правильно?

ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад КАК Склад,
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК СкладОстаток,
    ТоварыОрганизацийОстатки.КоличествоОстаток КАК ОрганизацияОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки
        ПО ТоварыНаСкладахОстатки.Номенклатура = ТоварыОрганизацийОстатки.Номенклатура.Ссылка
ГДЕ
    ТоварыНаСкладахОстатки.Склад = &Склад
    И ТоварыОрганизацийОстатки.Организация = &Организация
    И ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура
1 Лефмихалыч
 
24.10.18
21:35
нет
2 1CSharp
 
24.10.18
21:35
5 ошибок насчитал
3 Лефмихалыч
 
24.10.18
21:37
(2) а две последние строчки - это у тебя две ошибки или одна?
4 wowik
 
24.10.18
21:37
Сообщите пожалуйста об ошибках. Это крайне важно. Я нашел ошибки некоторые, необходимо сравнить.
5 palsergeich
 
24.10.18
21:38
(4)
ГДЕ
    ТоварыНаСкладахОстатки.Склад = &Склад
    И ТоварыОрганизацийОстатки.Организация = &Организация
    И ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура

это одна большая ошибка
6 Лефмихалыч
 
24.10.18
21:38
(4) сначала ты свои выкладывай, а то так не интересно
7 PR
 
24.10.18
21:38
(4) Да легко
После сообщите запятая нужна
8 wowik
 
24.10.18
21:39
(6) - нет соединения по Складу, СерииНоменклатуры,Характеристике между "ТоварыНаСкладах" и "ТоварыОрганизаций"
- вместо ТоварыОрганизацийОстатки.Номенклатура.Ссылка нужно писать ТоварыОрганизацийОстатки.Номенклатура, это лишняя связь
- отбор необходимо делать в виртуальных таблицах
- отбор по складу в одном регистре есть, в другом нет, почему?
9 palsergeich
 
24.10.18
21:40
(8) Потому что товары организаций там нет складов. А в товарах на склаждах нет организаций, это разные разделы учета
10 Лефмихалыч
 
24.10.18
21:45
(8) слона-то ты и не приметил.
Соединение здесь само по себе - это один большой косяк. Виртуальные таблицы соединяют друг с другом только мудаки.
11 palsergeich
 
24.10.18
21:46
ТоварыНаСкладахОстатки.Номенклатура = ТоварыОрганизацийОстатки.Номенклатура.Ссылка Само по себе грубейшая ошибка, а если взять последнюю УТ, то в товарах организации нет измерения Номенклатура вообще, там ключиАналитикиНоменклатуры
12 wowik
 
24.10.18
21:47
(10) +100!
13 1CSharp
 
24.10.18
21:47
(3) Считал как две. Там с учетом отбора по номенклатуре можно ещё одну прибавить, но уже было лень писать)

(8) Соед...
14 palsergeich
 
24.10.18
21:47
(10) Это оперативные остатки, там это допускается
15 wowik
 
24.10.18
21:47
(9) это почему нет склада в товарах организаций? от настроек зависит.
16 Лефмихалыч
 
24.10.18
21:47
и отборы все - в параметры надо. Это помимо того, что так в принципе не надо делать вообще изначально
17 palsergeich
 
24.10.18
21:50
(15) Потому что нету https://ibb.co/dZ7iGV
18 1CSharp
 
24.10.18
21:50
(10) А что не так с соединением виртуальных таблиц?
Как иначе получить остатки из двух виртуальных таблиц в строке?
19 wowik
 
24.10.18
21:51
(17) Конфигурация УПП 1.3, забыл сказать.
20 palsergeich
 
24.10.18
21:54
(18) При неоперативных остатках это подзапрос 2го уровня вложенности и оптимизатор СУБД очень сильно лажает. Это если в кратце.
При оперативных отстатках - просто поиск с отборами в таблице остатков - там соединение 2х вирт таблиц остатков не вызовет технологических проблем
21 Лефмихалыч
 
24.10.18
21:55
(18) для этого - временные таблицы.
С самими виртуальными нет проблем, проблемы начинаются с из соединением друг с другом потому, что виртуальная таблица - это запрос.
22 1CSharp
 
24.10.18
21:56
(20) Т.е. просто сначала в ВТ предлагаете поместить?
23 palsergeich
 
24.10.18
21:58
(21) Не просто запрос, а получаются расчитанные остатки и от них суммируются движения, и при соединении оптимизатор очень часто и очень сильно лажает.
При ОПЕРАТИВНЫХ остатках (без указания периода остатков) - простейший запрос.
ВТ тоже не бесплатные.
Оперативные остатки - не имеет смысла.
Не оперативные остатки - имеет смысл
24 vde69
 
24.10.18
22:00
для начала нужно заполнить максимум параметров в виртуальной таблице
25 Лефмихалыч
 
24.10.18
22:01
(23) горшочек, не вари

(22) да
26 palsergeich
 
24.10.18
22:03
(25) Ну ок, мне же лучше, я потом за исправление в том числе таких ошибок премии получаю.
27 vde69
 
24.10.18
22:03
(22) не обязательно, все зависит от размера выборки виртуальных таблиц после того как сделаешь (24)

и надо учитывать, что создание ВТ и работа внутри нее имеет свои накладные расходы, по этому ВТ имеет  смысл далеко не всегда...
28 wowik
 
24.10.18
22:08
Можете поставить оценку по пятибалльной шкале разработчику данного запроса?
29 Лефмихалыч
 
24.10.18
22:08
(28) кол. Вазелинового дерева.
30 palsergeich
 
24.10.18
22:09
(28) 2, все ошибки, кроме трений нужно ВТ или нет являются грубейшими
31 palsergeich
 
24.10.18
22:10
И хоть никто не обратил на это внимание, но вот это ТоварыОрганизацийОстатки.Номенклатура.Ссылка Просто злейшее зло, особенно в соединении
32 vde69
 
24.10.18
22:11
(28) данный запрос на базе где в регистрах будет хотя бы по 100тыс записей (а это очень не много) - тебе завесит сервак минут на 10... причем полность....

по этому автору - 2 с минусом
33 palsergeich
 
24.10.18
22:13
(32) Не, может и проскочить, я встречал когда и 3 соединения ВТ, где параметры были в ГДЕ оптимизатор понимал и подбирал оптимальный план запроса, но это исключение, а не правило.
34 Лефмихалыч
 
24.10.18
22:14
(31) полно-те вам, батенька, брюзжать - на это обратил внимание автор
35 vde69
 
24.10.18
22:15
(31) это не всегда ошибка, это будет гемороем только если тип составной, остальное скуль заоптимизирует с большой долей вероятности.

вообще условие в джойне не должно вести к деградации составного индекса, ТоварыОрганизацийОстатки.Номенклатура.Ссылка - однозначно ведет к деградации, но тут вопрос на какой длине это будет, если это условие отсечет только хвост индекса, то все не так и плохо, а вот если приведет к полному фулскану - то плохо...
36 palsergeich
 
24.10.18
22:15
(34) Лучи добра Вам)
37 Лефмихалыч
 
24.10.18
22:15
(33) эо просто оптимизатор ошибся четное количество раз
38 Лефмихалыч
 
24.10.18
22:17
мучительно нудная вечеринка в кнайпе "Старые пердуны" объявляется открытой...
39 H A D G E H O G s
 
24.10.18
23:53
Даже в оперативных остатках будет подзапрос, чтобы сложить разделение итогов, другой вопрос, что оптимизатор его нормально прожевывает.
40 palsergeich
 
25.10.18
00:10
(39) Да будет, но не двойной
41 dmpl
 
25.10.18
07:22
(14) Соединение количественных данных вместо объединения - верный путь получить неверные цифры из-за задваивания-затраивания строк.
42 dmpl
 
25.10.18
07:30
(32) Проверил на базе объемом 300 Гб. Отработал за секунду. Причем это на тестовом сервере, где оборудование уже не фонтан.
43 Повелитель
 
25.10.18
07:43
(28) 2 балла разарбочику
44 palsergeich
 
25.10.18
07:49
(42) 1) а смысл смотреть без нагрузки.
2) соединение по 1 номенклатуре из оперативных остатков 1 секунду - это просто ужасный результат.
45 toypaul
 
гуру
25.10.18
08:20
Кто-то тут курсов по оптимизации похоже пересмотрел. Только смотрел похоже в режиме 5 минут через 10.


Первый вопрос к запросу - а что хотели получить. А уж потом про ошибки.
46 organizm
 
25.10.18
08:31
во первых, нужно использовать виртуальные таблицы с максимальным количеством отборов , во вторых, использовать объединение.
47 dmpl
 
25.10.18
08:32
(44) Это компенсируется тем, что база не в ОЗУ, и лежит на "зеленом" HDD WD. Ну и обещали 10 минут минимум. При этом если бы оптимизатор лажанул, то запрос минимум 30 секунд бы работал на этой базе.
48 0xFFFFFF
 
25.10.18
08:36
(2) я насчитал одну ошибку. Весь запрос - одна большая ошибка.
49 zak555
 
25.10.18
08:39
(0) для начала надо узнать : какую задачу решал поставленный запрос

Например, если есть ордерная схема, то запрос все эти движения без подтверждений не учитываются
50 palsergeich
 
25.10.18
08:41
(49) 100% это тестовая задача - найдите ошибки в этом запросе и объясните почему это так
51 zak555
 
25.10.18
08:45
(50) по мне главное это понимание как работают те или регистры

Остальное дело техники
52 ADirks
 
25.10.18
08:48
(0) По моему, тут даже не в запросе что-то не так. Тут с архитектурой беда. Два регистра с остатками ТМЦ - это злейшее зло. Я то думал, после ТИСа они так больше не лепят, ан оказывается нет...
53 Cool_Profi
 
25.10.18
08:49
(52) А у тебя были сомнения, что в 1с сидят качественные архитекторы?
54 palsergeich
 
25.10.18
08:54
(51) то что при соединении все поплывет это ответ на должность повыше, обычно просят не вдаваться в детали, а рассказать что в тексте не нравится сходу.
(53) ну ДО то адекватный достаточно вышел.
55 ADirks
 
25.10.18
08:54
(53) ну, местами то вполне ничо
но вот последнее время частенько в ЗиКе колупаюсь - вот где наркоманы то тусовались. да и в ЗУПе тоже.  традиции блин...
56 SoulPower
 
25.10.18
09:06
вот всё написали же, чего не читаем)))

https://its.1c.ru/db/metod8dev#content:5842:hdoc:vtable_join
57 zak555
 
25.10.18
09:15
(52) первый для хранения остатков по складам и резервам

Второй остатки для хранения склады/организации -- основание для расчета себеса
58 wowik
 
25.10.18
09:26
(50) нет, это к сожалению не тест, это в жизни.