Имя: Пароль:
1C
1С v8
быстрый поиск по доп сведениям
0 vasbur
 
09.10.14
09:52
Есть у меня БП 2.0
В ней есть много-много РТУ, у них есть допсвойство "ОченьВажноеДопсвойство", значение которого пишется в "значенияСвойствОбъектов".

Мне нужно быстро-быстро выбирать документы за заданный период, имеющие фиксированное значение допсвойства. Как это можно сделать?

Если выбирать по документам - то придется лопатить много-много документов с другими значениями допсвойств.

Если выбирать по регистру "значениеСвойствОбъектов" - то придется лопатить много-много документов, относящихся к другим периодам.
1 Cube
 
09.10.14
09:53
(0) Запросом.
2 vasbur
 
09.10.14
09:54
(1) не любой запрос быстро работает
3 vasbur
 
09.10.14
10:44
Up
4 mehfk
 
09.10.14
10:48
Покажи запрос, который есть.
5 vasbur
 
09.10.14
10:50
(4) пока нет запроса.
вопрос в том, как написать максимально быстрый запрос для решения этой задачи
6 Banned
 
09.10.14
10:54
(5) Напиши сначала, вдруг получится быстро
7 mehfk
 
09.10.14
10:55
написать руками или с помощью конструктора.
8 Cube
 
09.10.14
10:56
(7) На стуле или в кресле.
9 Cube
 
09.10.14
10:56
(6) :)
10 Banned
 
09.10.14
10:57
(7) Можешь при помощи программиста написать, я не возражаю...
11 ssh2QQ6
 
09.10.14
10:58
(5) > пока нет запроса

значит пока нет и проблемы со скоростью его работы
12 mehfk
 
09.10.14
10:58
(10) Ты не мне советуй, ты топикстартеру советуй
13 Cube
 
09.10.14
11:14
(12) Я тебя в (8) тоже с ТС перепутал))
14 vasbur
 
09.10.14
12:09
Собственно, есть два очевидных варианта:
Вариант 1:
ВЫБРАТЬ
    ЗначенияСвойствОбъектов.Объект
ИЗ
    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
    ЗначенияСвойствОбъектов.Свойство = &Свойство
    И ЗначенияСвойствОбъектов.Объект.Дата МЕЖДУ &Дата1 И &Дата2

Вариант 2:
ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        ПО РеализацияТоваровУслуг.Ссылка = ЗначенияСвойствОбъектов.Объект
            И (ЗначенияСвойствОбъектов.Свойство = &Свойство)
ГДЕ
    РеализацияТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2
15 Defender aka LINN
 
09.10.14
12:14
ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Документ.РеализацияТоваровУслуг).Дата МЕЖДУ &Дата1 И &Дата2
16 Cube
 
09.10.14
12:15
Вариант 2.01:
ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        ПО РеализацияТоваровУслуг.Ссылка = ЗначенияСвойствОбъектов.Объект
            И (ЗначенияСвойствОбъектов.Свойство = &Свойство)
            И (еализацияТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2)
17 vasbur
 
09.10.14
12:19
(16) Все равно долго будет: нужно сначала выбрать все записи из регистра по свойству, а потом уже будет фильтрация по типу документа и дате
18 Krolik Bezobraznik
 
09.10.14
12:21
(17) Вы время замерили, долго это сколько? Так из спортивного интереса.
19 vasbur
 
09.10.14
12:23
(18) не не замерял.
можно же силой мысли задачи решать.
20 Cube
 
09.10.14
12:52
(18) +100
21 Cube
 
09.10.14
12:52
(19) Устриц не ел, но осуждаю.
22 Cube
 
09.10.14
12:53
(21) Или как там было?))
23 vasbur
 
09.10.14
13:06
(22) Электричество можно изучать по учебникам, а можно методом сования пальцев в розетку
24 Cube
 
09.10.14
13:09
(23) Ну так и читай учебники, что ж ты пальцы в розетку суешь по совету писателей с мисты?)))))
25 hhhh
 
09.10.14
13:09
(23) ну это, реквизит "Свойство" точно-точно проиндексирован у вас?
26 vasbur
 
09.10.14
13:14
(25) в типовой бухии он не проиндексирован :(
27 RomanYS
 
09.10.14
13:25
Есть еще третий вариант (про скорость ничего сказать не могу):

ВЫБРАТЬ
    РТУ.Ссылка
ИЗ
    Документ.РеализацияТоваровУслуг КАК РТУ
ГДЕ
    РТУ.Ссылка В
            (ВЫБРАТЬ
                ЗначенияСвойствОбъектов.Объект
            ИЗ
                РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
            ГДЕ
                ЗначенияСвойствОбъектов.Свойство = &Свойство)
    И РТУ.Дата МЕЖДУ &Дата1 И &Дата2
28 hhhh
 
09.10.14
13:25
(26) ну проиндексируй.

и не задавай вопросов: "нужно сначала выбрать все записи из регистра по свойству"

SQL он на то и SQL, там нет сначала и потом, там параллельно всё.
29 vasbur
 
09.10.14
13:29
(28) нужно чтобы на типовой БП 2.0 работало.
30 RomanYS
 
09.10.14
13:32
когда мы увидим результаты замеров?
31 ssh2QQ6
 
09.10.14
13:42
(26) Специально индексировать не нужно. При отборе по объекту и свойству и так будет использован кластерный индекс, который создает сама платформа

Измерение1 + [Измерение2 +...] (Кластерный)
32 vasbur
 
09.10.14
13:43
(30) когда реализация будет
пока я интерфейсный прототип пишу, попутно пытаясь понять, что технически реализуемо, а что  - нет.
33 vasbur
 
09.10.14
13:44
(31) вот что такое индекс Измерение1 + [Измерение2 +...] (Кластерный) ?
В частности, по какому ключу упорядочек "индекс1" в случае если его тип - составной?
34 ssh2QQ6
 
09.10.14
13:45
(33) "Индекс, включающий все измерения в том порядке, в котором они заданы при конфигурировании. Индекс кластерный, если регистр независимый."
http://its.1c.ru/db/metod8dev#content:1590:1
35 RomanYS
 
09.10.14
13:47
(32) а засунуть запросы в консоль и посмотреть не проще? может тему и создавать не стоило...
36 vasbur
 
09.10.14
13:50
(34) я правильно понимаю, что отдельного индекса по Измерение2 нет? Т.е. если отбирать записи только по "ЗначенияСвойствОбъектов.Свойство = &Свойство" - то индекс использоваться не будет и скуль будет все записи регистра лопатить?
37 vasbur
 
09.10.14
13:51
(35) вы правда считаете, что однократный запуск на тестовой площадке даст понимание производительности запроса в различных боевых ситуациях?
38 ssh2QQ6
 
09.10.14
13:52
(36) не будет использоваться
39 vasbur
 
09.10.14
13:53
(38) Засада.
Т.е. по-любому нужно сначала выбирать документы, а потом линковать к ним записи регистра. Пичалка, чо,
40 mehfk
 
09.10.14
13:54
ВЫБРАТЬ
    ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Документ.РеализацияТоваровУслуг) КАК Документ
ИЗ
    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
    ЗначенияСвойствОбъектов.Свойство = &Свойство
    И ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Значение КАК МойТип) = &Значение
    И ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Документ.РеализацияТоваровУслуг).Дата МЕЖДУ &НачДата И &КонДата
41 RomanYS
 
09.10.14
13:55
(37) ты же не тиражное решение пишешь,
если тестовая площадка имеет характеристики сравнимые с боевой, то какую-то информацию замер конечно же даст, даже однократный
42 vasbur
 
09.10.14
13:56
(40) в этом случае не будет использоваться индекс, т.е, запрос сначала выберет все записи регистра сведений а потом уже будет лопатить
43 vasbur
 
09.10.14
13:56
(41) тиражное, в том-то и дело
44 vasbur
 
09.10.14
14:01
ан нет: Измерение "Свойство" - ведущее, поэтому индексируется (хоть в конфигураторе и стоит значение "не индексировать")

Тогда вопрос остается таким:  вот у нас есть индекс Измерение2+Измерение1, в каком порядке идут ключи в измерении1?
45 mehfk
 
09.10.14
14:03
(44) Ты заставил меня посмотреть план запроса. Показать?
46 vasbur
 
09.10.14
14:04
(45) покажи
47 vasbur
 
09.10.14
14:05
(40) чорт, я про значение-то забыл. Спасибо.
вобщем, никак только по индексам не построить
48 mehfk
 
09.10.14
14:06
49 vasbur
 
09.10.14
14:08
(48) тк вижу в первый раз - мало что понял
50 mehfk
 
09.10.14
14:11
О_о, какой тогда был смысл об индексах рассуждать если все равно ничего не понятно
51 vasbur
 
09.10.14
14:13
(50) просто я с инструментом этим не сталкивался
Индексы - достаточно общая вещь так-то
52 DexterMorgan
 
09.10.14
14:35
(51) причем здесь инструмент если ты не понимаешь чем index seek отличается от index scan и  table scan
53 vasbur
 
09.10.14
14:37
(52) Помоему, это специфичные скульные понятия
54 DexterMorgan
 
09.10.14
14:38
(53) т.е. с таким "специфичным" инструментом как SQL ты не сталкивался?
55 vasbur
 
09.10.14
14:42
(54) сталкивался, но но в таком объеме :)
но я, конечно догадываюсь, что означают index seek, index scan,  table scan
56 vasbur
 
09.10.14
14:42
(54)* но не в таком объеме
57 cons74
 
09.10.14
14:51
(0) а чего бы просто реквизит на РТУ не повесить?
58 vasbur
 
09.10.14
18:54
(57) должно на типовой работать
59 hhhh
 
09.10.14
18:58
(58) тогда забудь про скорость
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс