|
Помогите изобрести запрос! | ☑ | ||
---|---|---|---|---|
0
Flagman
19.06.17
✎
16:49
|
Добрый день, столкнулся тут с не очень хорошей ситуацией по переполненю SQL таблиц при выполнении запроса
Сам запрос: ВЫБРАТЬ ДополнительныеСведения.Объект КАК Ссылка ИЗ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения ГДЕ ДополнительныеСведения.Свойство = &Свойство И ДополнительныеСведения.Значение = &Значение И ТИПЗНАЧЕНИЯ(ДополнительныеСведения.Объект) = ТИПЗНАЧЕНИЯ(&Объект) И ДополнительныеСведения.Объект.Дата МЕЖДУ &НачДата И &КонДата ______________________________ Переполнение таблиц происходит тут: ДополнительныеСведения.Объект.Дата МЕЖДУ &НачДата И &КонДата Хотелось бы переделать на чито то в виде ВЫРАЗИТЬ( ДополнительныеСведения.Объект КАК Документ.ТИПЗНАЧЕНИЯ(&Объект).Дата МЕЖДУ &НачДата И &КонДата ___________ Но к сожалению такое не прокатывает! :( И я впал в ступор... посоветуйте какую нибудь идею так как типдокумента в запросе может быть любой! |
|||
1
aleks_default
19.06.17
✎
16:51
|
Посоветую читать справку по языку запросов. Там все есть и почти так как ты написал.
|
|||
2
Timon1405
19.06.17
✎
16:51
|
собрать динамически текст по метаданным документов ОБЪЕДИНИТЬ ВСЕ с выразить конкретный тип
|
|||
3
Вафель
19.06.17
✎
16:54
|
ДополнительныеСведения.Объект.Дата
Так не надо делать |
|||
4
Лефмихалыч
19.06.17
✎
16:56
|
вот тут ДополнительныеСведения.Объект.Дата Объект надо ВЫРАЗИТЬ()
|
|||
5
Vaflya
19.06.17
✎
17:26
|
ссылка Документ.Документ можно в ВТ, потом из нее - уже тип будет, можно попробовать без ВТ. А так там в Объект наверно все типы базы
|
|||
6
Лефмихалыч
19.06.17
✎
17:35
|
(5) не спасет без приведения типов
|
|||
7
Vaflya
19.06.17
✎
17:36
|
(6) даже через вт не спасет?
|
|||
8
Лефмихалыч
19.06.17
✎
17:37
|
(7) ВТ - это не волшебная палка. Хоть с ВТ, хоть без нее такая конструкция "ДополнительныеСведения.Объект.Дата" приведет к неявному соединениею со всеми таблицами, из которых потенциально может состоять Объект.
|
|||
9
PR2
19.06.17
✎
17:38
|
Необходимый и достаточный ответ в (4), нахрена дальше сопли по стеклу размазывать?
|
|||
10
Лефмихалыч
19.06.17
✎
17:39
|
(9) ну, почему же? Еще можно вот это говнище облагородить
И ТИПЗНАЧЕНИЯ(ДополнительныеСведения.Объект) = ТИПЗНАЧЕНИЯ(&Объект) |
|||
11
Vaflya
19.06.17
✎
17:47
|
(8)
Выбрать Объект Поместить ВТ Где ДополнительныеСведения.Свойство = &Свойство И ДополнительныеСведения.Значение = &Значение И Объект Ссылка Документ.Документ; Выбрать ВТ.Объект Где ВТ.Объект.Дата понятно, что не палка, но работать будет, и скорость будет зависеть от количества таблиц, но! такой регистр - это так сказать типовое решение, можно рассуждать о печальности использования МНОГОсоставных измерений, но только за пивом или еще чем) |
|||
12
Vaflya
19.06.17
✎
17:50
|
(6) чуть не так понял..
"ссылка Документ.Документ можно в ВТ, потом из нее - уже тип будет" надеюсь, что в ВТ уже будет тип, проверять не хочется |
|||
13
Ёпрст
19.06.17
✎
18:01
|
(11)
И Объект Ссылка Документ.Документ; не даст никакого ускорения. |
|||
14
h-sp
19.06.17
✎
18:03
|
(13) откуда вдруг тип появится? По идее у Объект составной тип, он же и будет продолжать оставаться.
|
|||
15
Лефмихалыч
19.06.17
✎
18:13
|
(12) это тупик, выбрось из головы.
У тебя проблема в конструкции Объект.Дата. Причина описана в (8). Решение - в (4). |
|||
16
sapphire
19.06.17
✎
18:33
|
(15) Если Объект как ссылка уже получен, зачем условие на дату?
|
|||
17
Flagman
19.06.17
✎
21:09
|
15. потому что в рамках значения могут быть повторяющимися, и дата нужно для однозначной идентификации.
|
|||
18
Flagman
19.06.17
✎
21:12
|
(4)Выразить это легко сказать...
ВЫРАЗИТЬ( ДополнительныеСведения.Объект КАК Документ.ТИПЗНАЧЕНИЯ(&Объект).Дата МЕЖДУ &НачДата И &КонДата НО! В выразить параметры не работают... Пока вижу только через когда все документы выражать... но это же писец!? |
|||
19
youalex
19.06.17
✎
21:26
|
(18) динамический тупо сделай и не мучайся.
т.е. в тексте запроса будет ВЫРАЗИТЬ( ДополнительныеСведения.Объект КАК Документ.%ИмяДокумента%).Дата МЕЖДУ &НачДата И &КонДата Потом через СтрЗаменить поменяешь %ИмяДокумента% на реальное имя(вид) |
|||
20
RomaH
naïve
19.06.17
✎
21:32
|
(19)
ВЫРАЗИТЬ( ДополнительныеСведения.Объект КАК Документ.СуществующийТипДокуменрта) потом заменить что бы конструктор работал и не портил |
|||
21
youalex
19.06.17
✎
21:34
|
(20) это уже вкусовщина) Я бы предпочел сразу видеть, что вид документа - переменная. А конструктор - да и с ним, им только форматировать удобно.
|
|||
22
Flagman
19.06.17
✎
21:42
|
(19), (20) О как!!! Очень благодарен! Хорошая идея!!!
Куда пива высылать? |
|||
23
PR2
19.06.17
✎
21:45
|
LOL
А какой тип-то подставлять? :))) |
|||
24
Flagman
19.06.17
✎
21:46
|
(23) ТипЗНЧ(Объект)
|
|||
25
youalex
19.06.17
✎
21:46
|
(22) Помоги другому)
|
|||
26
PR2
19.06.17
✎
21:47
|
А, или отбор по одному типу что ли?
Чем тогда ССЫЛКА не подходит? Изобретатели хреновы :)) |
|||
27
PR2
19.06.17
✎
21:49
|
И ДополнительныеСведения.Объект ССЫЛКА Документ.ИмяДокументаКакВМетаданныхДляТогоТипаКоторыйНужно
|
|||
28
youalex
19.06.17
✎
21:51
|
(27) и че это даст. Это не избавит тебя от доп. соединений со всеми таблицами, входящими в ОТ объекта
|
|||
29
Flagman
19.06.17
✎
21:53
|
(27) Тоже не катит!
Ибо получается Ссылка Документ.Типзначения(&Объект) |
|||
30
PR2
19.06.17
✎
21:54
|
(28) Да правда что ли? :)))
|
|||
31
PR2
19.06.17
✎
21:55
|
(29) Какой нахрен "Ссылка Документ.Типзначения(&Объект)"?
Я же говорю, просто тупо типа "ССЫЛКА Документ.АвансовыйОтчет". |
|||
32
youalex
19.06.17
✎
21:55
|
(30) Да. Это правда)
|
|||
33
Flagman
19.06.17
✎
21:57
|
(31) тогда я мысль видимо потерял! Дело в том что я незнаю заранее какой тип документа у меня пойдет!
|
|||
34
PR2
19.06.17
✎
21:58
|
(33) Где ты не знаешь? Перед выполнением запроса?
Тогда как ты перед выполнением запроса умудряешься заполнить параметр "Объект"? |
|||
35
youalex
19.06.17
✎
21:59
|
(33) У тебя же есть &Объект, ты что-то в этом параметре передаешь в запрос. Из него и вытащи тип через метаданные.
|
|||
36
Flagman
19.06.17
✎
22:01
|
Объект приходит в вызов функции, содержащий этот запрос.
До этого объект ищеться в данных на основании содержащейся в xml инфе, и может быть любым документом метаданных... |
|||
37
Flagman
19.06.17
✎
22:03
|
(35) ну оттуда я тип вытащу... у меня проблема в выразить была...
тип то переменный |
|||
38
Flagman
19.06.17
✎
22:05
|
(35) в первом вызове это реализация, во втором уже может пойти требование накладная
|
|||
39
youalex
19.06.17
✎
22:05
|
(37) Получишь тип, точнее имя объекта, подставишь его (через СтрЗаменить) в текст запроса (в ВЫРАЗИТЬ) - и все
|
|||
40
Flagman
19.06.17
✎
22:07
|
(35)
И ДополнительныеСведения.Объект ССЫЛКА Документ.ЯНЕЗНАЮКАКОЕИМЯСЕЙЧАСОБРАБАТЫВАТЬСЯБУДУТ |
|||
41
Flagman
19.06.17
✎
22:08
|
(39) не это я понял! Прикольная идея! Хоть и извращение :)
Дальше то проблем нету! |
|||
42
youalex
19.06.17
✎
22:09
|
Еще варик, но такой, похуже. Если знаешь состав типов, которые могут играть, и если у тебя есть, внезапно, ЖурналДокументов, которые все эти типы включает, можно явно соединиться с этим журналом. А условия - Ссылка и Дата - накладывать на поля Журнала.
|
|||
43
Flagman
19.06.17
✎
22:12
|
(42) Ну да... но... боюсь это медленнее
|
|||
44
PiterPrg
19.06.17
✎
22:13
|
(38) В этом случае у тебя разные таблицы, ты не напишешь такой запрос, только динамически его строить по типу документа. Как вариант - если все отбираемые документы проведены и делают проводки по какому-то регистру, причем на момент документа - можно связаться по регистратору и делать отбор по периоду.
|
|||
45
Flagman
19.06.17
✎
22:13
|
просто приходит 6-8 тыс. доков в сутки
|
|||
46
Flagman
19.06.17
✎
22:15
|
(38) Эта функция провеят записан ли импортируемый док в базу, или он новый. К сожалению не все существующие могут быть проведены
|
|||
47
PR2
19.06.17
✎
22:15
|
(41) Извращение?!
Слов нет. |
|||
48
Flagman
19.06.17
✎
22:17
|
(47) Кстати работает:)
Не если есть идея лучше то поделись? |
|||
49
PR2
19.06.17
✎
22:17
|
Пипец, мир сошел с ума.
Какие, нахрен, еще могут быть варианты, когда нужно просто тупо подставить в запрос нужный параметр? |
|||
50
Flagman
19.06.17
✎
22:18
|
НУ нахуя я буху обновил! :) Вот и прилетел геморрой
|
|||
51
Flagman
19.06.17
✎
22:19
|
(49) я не могу придумать как в запрос подставить этот параметр!!!
|
|||
52
PR2
19.06.17
✎
22:19
|
(48) Аааа, LOL
А что, были сомнения, что будет работать? :)))) Еще раз, для тех, кто на бронепоезде. 1. Это лучшая идея 2. Это абсолютно рутинная вещь, не какое-то мегаэкзотическое сложное извращение через задницу, какие тут, нахрен, сомнения? :)) |
|||
53
PR2
19.06.17
✎
22:20
|
(51) Да никак, тебе же сказали, заменяй текст запроса
|
|||
54
PiterPrg
19.06.17
✎
22:20
|
(46) У тебя он в цикле много раз вызывается?
Заюзай менеджер временных таблиц, подготовь ВТ до цикла, в которую собери Ссылки документов нужных тебе типов и их даты. Соединяйся с ней и все. |
|||
55
Flagman
19.06.17
✎
22:21
|
(52) тьфу... это была не ирония?
|
|||
56
youalex
19.06.17
✎
22:21
|
(43) да нет, не должно особо У Журнала Ссылка и Дата - стандартно в индексе сидят.
|
|||
57
PiterPrg
19.06.17
✎
22:21
|
(54) В смысле ссылки в требуемом тебе диапазоне дат. Чтобы всю базу не дублировать :-)
|
|||
58
Flagman
19.06.17
✎
22:22
|
Я сегодня в ДТП попал... в пробке крайним стоял... на 80 кмч в меня прилетео...:(
|
|||
59
PR2
19.06.17
✎
22:22
|
(55) Ты заканчивай, я уже не могу смеяться
Нет, это была не ирония |
|||
60
Flagman
19.06.17
✎
22:22
|
бампер в багажнике... крышка багажника там же...
|
|||
61
Flagman
19.06.17
✎
22:23
|
(57) эти значения в рамках года уникальны только
|
|||
62
Flagman
19.06.17
✎
22:24
|
шея болит...
машинку жалко... |
|||
63
Flagman
19.06.17
✎
22:25
|
Пасибо всем учавствовашим!!!
|
|||
64
PiterPrg
19.06.17
✎
22:26
|
(56) Журнал - это хорошо. Класс решение
|
|||
65
h-sp
20.06.17
✎
06:05
|
(60) бампер он же железный. Это наверно у тебя пластик от бампера попал в багажник.
|
|||
66
DrZombi
гуру
20.06.17
✎
06:58
|
(0) Составные типы — бесплатный сыр мышеловки производительности
http://catalog.mista.ru/public/184361/ Для корректной работы запросов при составном типе, придется много писать :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |