Имя: Пароль:
1C
1С v8
Помогите изобрести запрос!
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/

Для корректной работы запросов при составном типе, придется много писать :)