Вход | Регистрация


1С:Предприятие ::

Метки:

Помогите изобрести запрос!

Я
   Flagman
 
19.06.17 - 16:49
Добрый день, столкнулся тут с не очень хорошей ситуацией по переполненю SQL таблиц при выполнении запроса
Сам запрос:
ВЫБРАТЬ
    ДополнительныеСведения.Объект КАК Ссылка
ИЗ
    РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
ГДЕ
    ДополнительныеСведения.Свойство = &Свойство
    И ДополнительныеСведения.Значение = &Значение
    И ТИПЗНАЧЕНИЯ(ДополнительныеСведения.Объект) = ТИПЗНАЧЕНИЯ(&Объект)
    И ДополнительныеСведения.Объект.Дата МЕЖДУ &НачДата И &КонДата
______________________________
Переполнение таблиц происходит тут:
ДополнительныеСведения.Объект.Дата МЕЖДУ &НачДата И &КонДата

Хотелось бы переделать на чито то в виде
ВЫРАЗИТЬ( ДополнительныеСведения.Объект КАК Документ.ТИПЗНАЧЕНИЯ(&Объект).Дата МЕЖДУ &НачДата И &КонДата
___________
Но к сожалению такое не прокатывает! :(
И я впал в ступор... посоветуйте какую нибудь идею так как типдокумента в запросе может быть любой!
 
 
   aleks_default
 
1 - 19.06.17 - 16:51
Посоветую читать справку по языку запросов. Там все есть и почти так как ты написал.
   Timon1405
 
2 - 19.06.17 - 16:51
собрать динамически текст по метаданным документов ОБЪЕДИНИТЬ ВСЕ с выразить конкретный тип
   Вафель
 
3 - 19.06.17 - 16:54
ДополнительныеСведения.Объект.Дата
Так не надо делать
   Лефмихалыч
 
4 - 19.06.17 - 16:56
вот тут ДополнительныеСведения.Объект.Дата Объект надо ВЫРАЗИТЬ()
   Vaflya
 
5 - 19.06.17 - 17:26
ссылка Документ.Документ можно в ВТ, потом из нее - уже тип будет, можно попробовать без ВТ. А так там в Объект наверно все типы базы
   Лефмихалыч
 
6 - 19.06.17 - 17:35
(5) не спасет без приведения типов
   Vaflya
 
7 - 19.06.17 - 17:36
(6) даже через вт не спасет?
   Лефмихалыч
 
8 - 19.06.17 - 17:37
(7) ВТ - это не волшебная палка. Хоть с ВТ, хоть без нее такая конструкция "ДополнительныеСведения.Объект.Дата" приведет к неявному соединениею со всеми таблицами, из которых потенциально может состоять Объект.
   PR2
 
9 - 19.06.17 - 17:38
Необходимый и достаточный ответ в (4), нахрена дальше сопли по стеклу размазывать?
   Лефмихалыч
 
10 - 19.06.17 - 17:39
(9) ну, почему же? Еще можно вот это говнище облагородить
И ТИПЗНАЧЕНИЯ(ДополнительныеСведения.Объект) = ТИПЗНАЧЕНИЯ(&Объект)
 
 
   Vaflya
 
11 - 19.06.17 - 17:47
(8)
Выбрать
Объект
Поместить ВТ
Где
ДополнительныеСведения.Свойство = &Свойство
    И ДополнительныеСведения.Значение = &Значение
    И Объект Ссылка Документ.Документ;
Выбрать
ВТ.Объект
Где
ВТ.Объект.Дата

понятно, что не палка, но работать будет, и скорость будет зависеть от количества таблиц, но! такой регистр - это так сказать типовое решение, можно рассуждать о печальности использования МНОГОсоставных измерений, но только за пивом или еще чем)
   Vaflya
 
12 - 19.06.17 - 17:50
(6) чуть не так понял..
"ссылка Документ.Документ можно в ВТ, потом из нее - уже тип будет"
надеюсь, что в ВТ уже будет тип, проверять не хочется
   Ёпрст
 
13 - 19.06.17 - 18:01
(11)
И Объект Ссылка Документ.Документ; не даст никакого ускорения.
   h-sp
 
14 - 19.06.17 - 18:03
(13) откуда вдруг тип появится? По идее у Объект составной тип, он же и будет продолжать оставаться.
   Лефмихалыч
 
15 - 19.06.17 - 18:13
(12) это тупик, выбрось из головы.
У тебя проблема в конструкции Объект.Дата. Причина описана в (8). Решение - в (4).
   sapphire
 
16 - 19.06.17 - 18:33
(15) Если Объект как ссылка уже получен, зачем условие на дату?
   Flagman
 
17 - 19.06.17 - 21:09
15. потому что в рамках значения могут быть повторяющимися, и дата нужно для однозначной идентификации.
   Flagman
 
18 - 19.06.17 - 21:12
(4)Выразить это легко сказать...
ВЫРАЗИТЬ( ДополнительныеСведения.Объект КАК Документ.ТИПЗНАЧЕНИЯ(&Объект).Дата МЕЖДУ &НачДата И &КонДата
НО! В выразить параметры не работают...
Пока вижу только через когда все документы выражать... но это же писец!?
   youalex
 
19 - 19.06.17 - 21:26
(18) динамический тупо сделай и не мучайся.
т.е. в тексте запроса будет
ВЫРАЗИТЬ( ДополнительныеСведения.Объект КАК Документ.%ИмяДокумента%).Дата МЕЖДУ &НачДата И &КонДата
Потом через СтрЗаменить поменяешь %ИмяДокумента% на реальное имя(вид)
   RomaH
 
20 - 19.06.17 - 21:32
(19)
ВЫРАЗИТЬ( ДополнительныеСведения.Объект КАК Документ.СуществующийТипДокуменрта)

потом заменить
что бы конструктор работал и не портил
   youalex
 
21 - 19.06.17 - 21:34
(20) это уже вкусовщина)  Я бы предпочел сразу видеть, что вид документа - переменная. А конструктор - да и с ним, им только форматировать удобно.
   Flagman
 
22 - 19.06.17 - 21:42
(19), (20) О как!!! Очень благодарен! Хорошая идея!!!
Куда пива высылать?
   PR2
 
23 - 19.06.17 - 21:45
LOL

А какой тип-то подставлять? :)))
   Flagman
 
24 - 19.06.17 - 21:46
(23) ТипЗНЧ(Объект)
   youalex
 
25 - 19.06.17 - 21:46
(22) Помоги другому)
   PR2
 
26 - 19.06.17 - 21:47
А, или отбор по одному типу что ли?
Чем тогда ССЫЛКА не подходит?
Изобретатели хреновы :))
   PR2
 
27 - 19.06.17 - 21:49
И ДополнительныеСведения.Объект ССЫЛКА Документ.ИмяДокументаКакВМетаданныхДляТогоТипаКоторыйНужно
   youalex
 
28 - 19.06.17 - 21:51
(27) и че это даст. Это не избавит тебя от доп. соединений со всеми таблицами, входящими в ОТ объекта
   Flagman
 
29 - 19.06.17 - 21:53
(27) Тоже не катит!
Ибо получается Ссылка Документ.Типзначения(&Объект)
   PR2
 
30 - 19.06.17 - 21:54
(28) Да правда что ли? :)))
   PR2
 
31 - 19.06.17 - 21:55
(29) Какой нахрен "Ссылка Документ.Типзначения(&Объект)"?
Я же говорю, просто тупо типа "ССЫЛКА Документ.АвансовыйОтчет".
   youalex
 
32 - 19.06.17 - 21:55
(30) Да. Это правда)
   Flagman
 
33 - 19.06.17 - 21:57
(31) тогда я мысль видимо потерял! Дело в том что я незнаю заранее какой тип документа у меня пойдет!
 
  Рекламное место пустует
   PR2
 
34 - 19.06.17 - 21:58
(33) Где ты не знаешь? Перед выполнением запроса?
Тогда как ты перед выполнением запроса умудряешься заполнить параметр "Объект"?
   youalex
 
35 - 19.06.17 - 21:59
(33) У тебя же есть &Объект, ты что-то в этом параметре передаешь в запрос. Из него и вытащи тип через метаданные.
   Flagman
 
36 - 19.06.17 - 22:01
Объект приходит в вызов функции, содержащий этот запрос.
До этого объект ищеться в данных на основании содержащейся в xml инфе, и может быть любым документом метаданных...
   Flagman
 
37 - 19.06.17 - 22:03
(35) ну оттуда я тип вытащу... у меня проблема в выразить была...
тип то переменный
   Flagman
 
38 - 19.06.17 - 22:05
(35) в первом вызове это реализация, во втором уже может пойти требование накладная
   youalex
 
39 - 19.06.17 - 22:05
(37) Получишь тип, точнее имя объекта, подставишь его (через СтрЗаменить)  в текст запроса (в ВЫРАЗИТЬ) - и все
   Flagman
 
40 - 19.06.17 - 22:07
(35)
И ДополнительныеСведения.Объект ССЫЛКА Документ.ЯНЕЗНАЮКАКОЕИМЯСЕЙЧАСОБРАБАТЫВАТЬСЯБУДУТ
   Flagman
 
41 - 19.06.17 - 22:08
(39) не это я понял! Прикольная идея! Хоть и извращение :)
Дальше то проблем нету!
   youalex
 
42 - 19.06.17 - 22:09
Еще варик, но такой, похуже. Если знаешь состав типов, которые могут играть, и если у тебя есть, внезапно, ЖурналДокументов, которые все эти типы включает, можно явно соединиться с этим журналом. А условия - Ссылка и Дата - накладывать на поля Журнала.
   Flagman
 
43 - 19.06.17 - 22:12
(42) Ну да... но... боюсь  это медленнее
   PiterPrg
 
44 - 19.06.17 - 22:13
(38) В этом случае у тебя разные таблицы, ты не напишешь такой запрос, только динамически его строить по типу документа. Как вариант - если все отбираемые документы проведены и делают проводки по какому-то регистру, причем на момент документа - можно связаться по регистратору и делать отбор по периоду.
   Flagman
 
45 - 19.06.17 - 22:13
просто приходит 6-8 тыс. доков в сутки
   Flagman
 
46 - 19.06.17 - 22:15
(38) Эта функция провеят записан ли импортируемый док в базу, или он новый. К сожалению не все существующие могут быть проведены
   PR2
 
47 - 19.06.17 - 22:15
(41) Извращение?!
Слов нет.
   Flagman
 
48 - 19.06.17 - 22:17
(47) Кстати работает:)
Не если есть идея лучше то поделись?
   PR2
 
49 - 19.06.17 - 22:17
Пипец, мир сошел с ума.
Какие, нахрен, еще могут быть варианты, когда нужно просто тупо подставить в запрос нужный параметр?
 
 
   Flagman
 
50 - 19.06.17 - 22:18
НУ нахуя я буху обновил! :) Вот и прилетел геморрой
   Flagman
 
51 - 19.06.17 - 22:19
(49) я не могу придумать как в запрос подставить этот параметр!!!
   PR2
 
52 - 19.06.17 - 22:19
(48) Аааа, LOL
А что, были сомнения, что будет работать? :))))

Еще раз, для тех, кто на бронепоезде.
1. Это лучшая идея
2. Это абсолютно рутинная вещь, не какое-то мегаэкзотическое сложное извращение через задницу, какие тут, нахрен, сомнения? :))
   PR2
 
53 - 19.06.17 - 22:20
(51) Да никак, тебе же сказали, заменяй текст запроса
   PiterPrg
 
54 - 19.06.17 - 22:20
(46) У тебя он в цикле много раз вызывается?
Заюзай менеджер временных таблиц, подготовь ВТ до цикла,
в которую собери Ссылки документов нужных тебе типов и их даты. Соединяйся с  ней и все.
   Flagman
 
55 - 19.06.17 - 22:21
(52) тьфу... это была не ирония?
   youalex
 
56 - 19.06.17 - 22:21
(43) да нет, не должно особо У Журнала Ссылка и Дата - стандартно в индексе сидят.
   PiterPrg
 
57 - 19.06.17 - 22:21
(54) В смысле ссылки в требуемом тебе диапазоне дат. Чтобы всю базу не дублировать :-)
   Flagman
 
58 - 19.06.17 - 22:22
Я сегодня в ДТП попал... в пробке крайним стоял... на 80 кмч в меня прилетео...:(
   PR2
 
59 - 19.06.17 - 22:22
(55) Ты заканчивай, я уже не могу смеяться
Нет, это была не ирония
   Flagman
 
60 - 19.06.17 - 22:22
бампер в багажнике... крышка багажника там же...
   Flagman
 
61 - 19.06.17 - 22:23
(57) эти значения в рамках года уникальны только
   Flagman
 
62 - 19.06.17 - 22:24
шея болит...
машинку жалко...
   Flagman
 
63 - 19.06.17 - 22:25
Пасибо всем учавствовашим!!!
   PiterPrg
 
64 - 19.06.17 - 22:26
(56) Журнал - это хорошо. Класс решение
   h-sp
 
65 - 20.06.17 - 06:05
(60) бампер он же железный. Это наверно у тебя пластик от бампера попал в багажник.
   DrZombi
 
66 - 20.06.17 - 06:58
(0) Составные типы — бесплатный сыр мышеловки производительности
http://catalog.mista.ru/public/184361/

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



Список тем форума
 
Компьютер — устройство разработанное для ускорения и автоматизации человеческих ошибок.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует