|
Помогите оптимизировать запрос | ☑ | ||
---|---|---|---|---|
0
oslokot
23.08.13
✎
14:10
|
Простой запрос к регистру значений свойств.
Выбираю все значения по указанному свойству, объекты которых не помечены на удаление и соответствуют некоторому наименованию. Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект КАК Объект |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Свойство = &ВыбСвойство | И ЗначенияСвойствОбъектов.Значение В(&ВыбСписокЗначенийСвойств) | И НЕ ЗначенияСвойствОбъектов.Объект.ПометкаУдаления | И ЗначенияСвойствОбъектов.Объект.Наименование ПОДОБНО &ВыбНаименование |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("ВыбСвойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Тип ТПА")); Запрос.УстановитьПараметр("ВыбСписокЗначенийСвойств", ВыбСписокЗначенийСвойств); Запрос.УстановитьПараметр("ВыбНаименование", "шпилька%"); С двумя последними условиями, запрос работает на порядок дольше чем без них. Как написать правильно? Прошу простить, недавно начал изучать запросы. |
26 28 |
||
1
Naumov
23.08.13
✎
14:14
|
с подобно будет всегда долго работать. нет там индекса подходящего
|
7 |
||
2
Ёпрст
23.08.13
✎
14:15
|
ну ясен пень..идёт соединение со всем табличками по объекту в данном случае.
|
10 |
||
3
genosse
23.08.13
✎
14:15
|
Соедини таблицу по полю ЗначенияСвойствОбъектов.Объект с Таблицей объектов нужного типа и оттуда бери данные о ПометкаУдаления и Наименование
|
|||
4
RomaH
naïve
23.08.13
✎
14:16
|
объект у свойства может быть только одного типа?
|
10 |
||
5
Ёпрст
23.08.13
✎
14:16
|
может, тебе у конкретного вида справочника, поискать , не ?
|
12 |
||
6
viktor_vv
23.08.13
✎
14:16
|
Если тебе только по объектам определнного вида, например по справочнику номенклатура, лучше наверное разыменовать
ЗначенияСвойствОбъектов.Объект.ПометкаУдаления добавив Левое соединение справочник.Номенклатура как СпрНом по СпрНом.Ссылка = ЗначенияСвойствОбъектов.Объект и соотвественно педелав условие |
10 20 |
||
7
viktor_vv
23.08.13
✎
14:17
|
(1) Учитыая что слева у него нет "%" то вполне себе попадет в индекс по наименованию.
|
|||
8
Fragster
модератор
23.08.13
✎
14:20
|
убрать автоупорядочивание
|
|||
9
Fragster
модератор
23.08.13
✎
14:20
|
Выразить(ЗначенияСвойствОбъектов.Объект как Траляля).Наименование и .ПометкаУдаления
|
44 |
||
10
oslokot
23.08.13
✎
14:21
|
||||
11
Fragster
модератор
23.08.13
✎
14:23
|
наверное еще Выбрать Различные нужно (ну это уже к результатц)
|
|||
12
oslokot
23.08.13
✎
14:24
|
(5) как в условии задать вид объекта = спр.номенклатура?
|
|||
13
viktor_vv
23.08.13
✎
14:27
|
Добавь еще в где
ЗначенияСвойствОбъектов.Объект Ссылка Справочник.Номенклатура |
14 |
||
14
Ёпрст
23.08.13
✎
14:28
|
(13) не.. проще уж свойства к номенклатуре прилепить..
|
15 16 |
||
15
viktor_vv
23.08.13
✎
14:32
|
(14) Ну это в дополнение к левому соединению с номенклатурой. А может таки да, наоборот к справочнику прикрутить свойства.
|
16 |
||
16
oslokot
23.08.13
✎
14:33
|
19 |
|||
17
viktor_vv
23.08.13
✎
15:13
|
|ИЗ
|Справочник.Номенклатура КАК СпрНом |Внутреннее соединение | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ПО СпрНом.Ссылка = ЗначенияСвойствОбъектов.Объект |Где | И НЕ СпрНом.ПометкаУдаления | И СпрНом.Наименование ПОДОБНО &ВыбНаименование |
21 23 91 97 |
||
18
viktor_vv
23.08.13
✎
15:14
|
И таки в ПО добавь еще
|ПО СпрНом.Ссылка = ЗначенияСвойствОбъектов.Объект |И ЗначенияСвойствОбъектов.Объект Ссылка Справочник.Номенклатура |
|||
19
Bober
23.08.13
✎
15:15
|
(16)
ВЫБРАТЬ Спр.Ссылка Из Справочник.Номенклатуру КАК Спр ГДЕ НЕ Спр.ПометкаУдаления И Спр.Наименование ПОДОБНО &Наименование И Спр.Ссылка В (ВЫБРАТЬ ВЫРАЗИТЬ(РС.Объект КАК Справочник.Номенклатура) ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК РС ГДЕ РС.Свойство = &Свойство И РС.Объект Ссылка Справочник.Номенклатура И РС.Значение В (&ВыбСписокЗначенийСвойств) И ВЫРАЗИТЬ(РС.Объект КАК Справочник.Номенклатура) = Спр.Ссылка) Кстати, какой тип у значений в параметре ВыбСписокЗначенийСвойств |
30 38 42 |
||
20
oslokot
23.08.13
✎
15:20
|
(6) Вот так сделал. Стало гораздо веселей!!!
"ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект КАК Объект, | Номенклатура.Ссылка КАК Ссылка |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура | ПО ЗначенияСвойствОбъектов.Объект = Номенклатура.Ссылка |ГДЕ | ЗначенияСвойствОбъектов.Свойство = &ВыбСвойство | И ЗначенияСвойствОбъектов.Объект ССЫЛКА Справочник.Номенклатура | И ЗначенияСвойствОбъектов.Значение В(&ВыбСписокЗначенийСвойств) | И НЕ Номенклатура.ПометкаУдаления | И Номенклатура.Наименование ПОДОБНО &ВыбНаименование | |УПОРЯДОЧИТЬ ПО | Ссылка"; |
23 25 28 31 33 36 44 97 |
||
21
oslokot
23.08.13
✎
15:23
|
(17) не, лучше запрос прямо к РС, а уж потом соединять с номенклатурой. Или я не прав?
|
22 23 |
||
22
Bober
23.08.13
✎
15:25
|
(21) какой тип у значений свойств?
|
24 |
||
23
viktor_vv
23.08.13
✎
15:26
|
25 91 |
|||
24
oslokot
23.08.13
✎
15:28
|
(22) ВыбСписокЗначенийСвойств это список значений, состоящий из справочников значений свойств
ВыбСписокЗначенийСвойств = Новый СписокЗначений; ВыбСписокЗначенийСвойств.Добавить(Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Метизы")); ВыбСписокЗначенийСвойств.Добавить(Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Фланец")); ВыбСписокЗначенийСвойств.Добавить(Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Прокладка")); |
|||
25
oslokot
23.08.13
✎
15:30
|
||||
26
z01
23.08.13
✎
15:31
|
(0)представь что если бы ты сам и выполнял этот запрос
самое важное это минимум записей на каждом этапе (предположим индексы в базе есть) тогда нужно выбрать "ЗначенияСвойствОбъектов.Объект.Наименование ПОДОБНО &ВыбНаименование " из ЗначенияСвойствОбъектов.Объект, и уже к нему прикручивать остальное, тут наверное можно надеятся что оптимизатор запросов так и поступит, но это уже другая история и на практике нужно конечно проверять |
28 58 |
||
27
Ёпрст
23.08.13
✎
15:32
|
максимум, условия в место соединения воткнуть.. а так, у тебя обычный inner join
|
29 33 36 |
||
28
z01
23.08.13
✎
15:32
|
||||
29
z01
23.08.13
✎
15:34
|
(27)это ты к тому что левое (правое) внешнее быстрее всего?
|
|||
30
Bober
23.08.13
✎
15:37
|
тогда в (19)
И РС.Значение В (&ВыбСписокЗначенийСвойств) заменить на И ВЫРАЗИТЬ(РС.Значение КАК Справочники.ЗначенияСвойствОбъектов) В (&ВыбСписокЗначенийСвойств) |
32 38 48 53 91 93 |
||
31
z01
23.08.13
✎
15:37
|
(20)подольем: я обычно если что-то тормозит не запрос переделывать кидаюсь а индексировать средствами 1С все поля (реквизиты мать их...) задействованные в запросе
|
40 58 72 |
||
32
z01
23.08.13
✎
15:38
|
(30)зачем?
|
35 |
||
33
Ёпрст
23.08.13
✎
15:39
|
37 |
|||
34
Ёпрст
23.08.13
✎
15:39
|
точнее, это он и есть
|
|||
35
Bober
23.08.13
✎
15:40
|
39 41 |
|||
36
oslokot
23.08.13
✎
15:42
|
38 |
|||
37
z01
23.08.13
✎
15:42
|
(33)и как нам воткнуть уcловие в соединение?
|
|||
38
Bober
23.08.13
✎
15:44
|
55 |
|||
39
z01
23.08.13
✎
15:45
|
(35)а если в "И ВЫРАЗИТЬ(РС.Значение КАК Справочники.ЗначенияСвойствОбъектов) В (&ВыбСписокЗначенийСвойств)"
"РС.Значение КАК Справочники.ЗначенияСвойствОбъектов" это не всегда "Справочники.ЗначенияСвойствОбъектов" тогда получается что лучше вот это " И ЗначенияСвойствОбъектов.Объект.Наименование ПОДОБНО &ВыбНаименование" впихнуть в самый нижний подзапрос который вероятнее всего по плану запроса и выполнится первым |
41 |
||
40
oslokot
23.08.13
✎
15:46
|
(31) Что значит индексировать реквизиты? Как?
|
42 43 |
||
41
Bober
23.08.13
✎
15:47
|
46 52 |
|||
42
z01
23.08.13
✎
15:47
|
59 |
|||
43
Bober
23.08.13
✎
15:47
|
(40) в твоем случае ничего индексировать не надо
|
47 59 |
||
44
ptiz
23.08.13
✎
15:48
|
45 |
|||
45
ptiz
23.08.13
✎
15:48
|
тьфу.... не читать (44) :)
просто можно было без явного соединения |
|||
46
z01
23.08.13
✎
15:49
|
(41)если ему по условиям нужно "подобно" то он или забыл что это только по справочнику номенклатура или его всё равно использовать по всем типам " ЗначенияСвойствОбъектов.Объект.Наименование " для общего вида задачи
|
51 |
||
47
z01
23.08.13
✎
15:51
|
(43)в его случае от этого зависит как на самом деле быдет исполняться запрос если конечно база скульная
|
50 |
||
48
genosse
23.08.13
✎
15:52
|
(30) Это полный ноль для данного запроса. Если бы количество свойств было хотябы 1000, тогда думаю 1% от данной доработки мы бы увидели. А так ноль - точнее в пределах измеряемой погрешности.
|
49 |
||
49
Bober
23.08.13
✎
15:53
|
(48) думаю, в РС значений больше 1к
|
53 |
||
50
Bober
23.08.13
✎
15:54
|
(47) все индексы уже есть, что для РС, что для Спр. Джае если скульная
|
|||
51
Bober
23.08.13
✎
15:55
|
(46) с такими запросами даже собеседование не пройдешь в нормальную контору.
|
54 |
||
52
z01
23.08.13
✎
15:56
|
(41)
v8: Помогите оптимизировать запрос "По составным полям может быть много индексов, которые никак не помогают в запросах. В общем случае индексы почти никогда не работают, если в составном поле есть несколько "базовых" типов." даже если вы нарыли косяк платформы м его обход, то всё равно добавление индексов средствами скуля и переписывание запроса на обход конкретных таблиц (пусть даже всех типов по составному полю) будет эффективнее и проще того что вы там написали, хотя за само по себе околонаучное объяснение тормозов составных типов спасибо ))) |
56 |
||
53
genosse
23.08.13
✎
15:57
|
||||
54
z01
23.08.13
✎
15:58
|
(51)нормальные конторы полны бестолковых дятлов понятия не имеющих как строится план исполнения запроса и что он из себя представляет
|
|||
55
oslokot
23.08.13
✎
15:59
|
(38) Сделал как ты сказал. Завис.
"ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | НЕ Номенклатура.ПометкаУдаления | И Номенклатура.Наименование ПОДОБНО &ВыбНаименование | И Номенклатура.Ссылка В | (ВЫБРАТЬ | ВЫРАЗИТЬ(РС.Объект КАК Справочник.Номенклатура) | ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК РС | ГДЕ | РС.Свойство = &ВыбСвойство | И РС.Объект ССЫЛКА Справочник.Номенклатура | И ВЫРАЗИТЬ(РС.Значение КАК Справочник.ЗначенияСвойствОбъектов) В (&ВыбСписокЗначенийСвойств) | И (ВЫРАЗИТЬ(РС.Объект КАК Справочник.Номенклатура)) = Номенклатура.Ссылка)"; |
57 60 61 93 |
||
56
Bober
23.08.13
✎
16:00
|
(52) будь мужиком, возьми профайлер и посмотри как "не работают" индексы при работе с конструкция Ссылка и ВЫразить()
|
63 |
||
57
Bober
23.08.13
✎
16:00
|
(55) УТ 10.3, такая как тебя
|
62 |
||
58
z01
23.08.13
✎
16:01
|
||||
59
oslokot
23.08.13
✎
16:02
|
||||
60
viktor_vv
23.08.13
✎
16:02
|
(55) Таки in скуль будет делать через inner join или merje , только тут еще усугубили условием in в подзапросе.
Делай через внутреннее соединение и не парься. |
66 68 |
||
61
genosse
23.08.13
✎
16:03
|
(55) Оставь свой запрос. У тебя он намного лучше.
|
|||
62
oslokot
23.08.13
✎
16:03
|
(57) КА
|
|||
63
z01
23.08.13
✎
16:03
|
(56)а я и не предлагал их использовать. я говорил о том что нужно нижнего самого уровня подзапросом их выбрать и к ним приджойнить остальное
|
|||
64
viktor_vv
23.08.13
✎
16:03
|
Как раз условие
ЗначенияСвойствОбъектов.Объект ССЫЛКА Справочник.Номенклатура и поможет попасть в индекс по составному полю. |
|||
65
z01
23.08.13
✎
16:06
|
имхо быстрее всего работают запросы построенные как пирамида подзапросов с соблюдением условия минимума записей на каждом уровне, так и будет работать предельно оптимальный план, но не факт что он будет таким если поналепить в соединение условий с использованием "ссылка", "выразить" и прочей околонаучной непредсказуемо работающей чепухи
|
67 |
||
66
viktor_vv
23.08.13
✎
16:07
|
(60)* То есть nested loops или merje join
|
68 |
||
67
viktor_vv
23.08.13
✎
16:08
|
(65) От того в каком порядке ты подзапросы напишешь, вряд ли это как-то повлияет на план выполнения. Я имею ввиду именно порядок подзапросов.
|
71 |
||
68
z01
23.08.13
✎
16:09
|
||||
69
genosse
23.08.13
✎
16:09
|
"как пирамида подзапросов" - ребята, что тут за бред???
|
73 74 |
||
70
genosse
23.08.13
✎
16:09
|
антинаучный флуд чтоли пошел
|
|||
71
z01
23.08.13
✎
16:10
|
(67)в первую очередь скорее всего будет исполнен самый нижний и т.д. наверх
|
|||
72
Полотенчик
23.08.13
✎
16:10
|
(31) вместо оптимизации запроса увеличиваешь время записи и потерю места лишними индексами?
|
|||
73
Bober
23.08.13
✎
16:11
|
(69) пирамида маслоу
|
|||
74
z01
23.08.13
✎
16:11
|
(69) "ВЫБРАТЬ
| Валюты.Ссылка |ИЗ | Справочник.Валюты КАК Валюты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | Валюты.Ссылка КАК Ссылка | ИЗ | Справочник.Валюты КАК Валюты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | Валюты.Ссылка КАК Ссылка | ИЗ | Справочник.Валюты КАК Валюты) КАК ВложенныйЗапрос | ПО Валюты.Ссылка = ВложенныйЗапрос.Ссылка) КАК ВложенныйЗапрос | ПО Валюты.Ссылка = ВложенныйЗапрос.Ссылка" |
78 80 |
||
75
z01
23.08.13
✎
16:12
|
точнее так
ВЫБРАТЬ | Валюты.Ссылка |ИЗ | Справочник.Валюты КАК Валюты | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | Валюты.Ссылка КАК Ссылка | ИЗ | Справочник.Валюты КАК Валюты | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | Валюты.Ссылка КАК Ссылка | ИЗ | Справочник.Валюты КАК Валюты) КАК ВложенныйЗапрос | ПО Валюты.Ссылка = ВложенныйЗапрос.Ссылка) КАК ВложенныйЗапрос | ПО Валюты.Ссылка = ВложенныйЗапрос.Ссылка |
78 80 |
||
76
Bober
23.08.13
✎
16:12
|
Zed's dead baby, Zed's dead
|
|||
77
z01
23.08.13
✎
16:13
|
сорри спешу )))
вот правильный вариант ВЫБРАТЬ | Валюты.Ссылка |ИЗ | (ВЫБРАТЬ | Валюты.Ссылка КАК Ссылка | ИЗ | (ВЫБРАТЬ | Валюты.Ссылка КАК Ссылка | ИЗ | Справочник.Валюты КАК Валюты) КАК ВложенныйЗапрос | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты | ПО Валюты.Ссылка = ВложенныйЗапрос.Ссылка) КАК ВложенныйЗапрос | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты | ПО Валюты.Ссылка = ВложенныйЗапрос.Ссылка ))) |
78 82 |
||
78
Bober
23.08.13
✎
16:13
|
79 80 |
|||
79
z01
23.08.13
✎
16:17
|
(78)это пример пирамиды только справочник там один просто для примера, внизу должен был быть отбор по запросу сабжа возращающий минимум строк и т.д. т.е. задача так компонуется чтобы все условия соблюсти но левыми внешними сделать результат на каждом этапе возвращающающий минимум строк, если ларечникам не понятно то это печалька, удачки вам )))
|
81 83 |
||
80
viktor_vv
23.08.13
✎
16:17
|
82 |
|||
81
z01
23.08.13
✎
16:17
|
(79) и скуль будет летать
|
|||
82
z01
23.08.13
✎
16:18
|
||||
83
viktor_vv
23.08.13
✎
16:19
|
(79) Я таки настаиваю, что порядок написания подзапросов и их вложенность никак не повлияет на план выполнения, а только усугубит проюлему скулю с построением плана.
|
84 86 |
||
84
Bober
23.08.13
✎
16:20
|
(83) +1
|
86 |
||
85
genosse
23.08.13
✎
16:23
|
ветка пятничного ламерского бреда )))
|
87 |
||
86
z01
23.08.13
✎
16:25
|
(83) (84)и правильно, представьте что у вас записей во всех задействованных таблицах от сотен тысяч до миллионов хотя бы. и скуль админы не дают а индексы ларечник шеф вместе с конфой держит. и что вы будете делать? делать так чтобы промежуточные результаты содержали бы минимум строк, последний раз повторяю подумайте как скуль работает, он работает с таблицами а не по волшебству и если у вас в промежуточных результатах миллион записей это и подтормозит всё а я выложил метод который почти 100% сработает как директива построителю.
|
92 |
||
87
z01
23.08.13
✎
16:26
|
(85)да. достали уже. вместо того чтобы пояснить человеку как запрос переписать они ему хвастаются как доказали практически торможение составных данных, а толку то что с того, запрос от этих рассуждений быстрее не сработает
|
|||
88
Bober
23.08.13
✎
16:28
|
давно я так не ржал
|
|||
89
z01
23.08.13
✎
16:28
|
просто мой подход более универсален чем метод обхода проблемы указанный в
http://infostart.ru/public/184361/ вот и бесятся |
|||
90
z01
23.08.13
✎
16:29
|
короче последний раз пишу:
чем искать как отобрать по составному типу лучше отобрать части составного типа и к ним приджойнить таблицу из которй нужно отобрать |
|||
91
oslokot
23.08.13
✎
16:30
|
93 97 |
|||
92
viktor_vv
23.08.13
✎
16:30
|
106 110 122 124 |
|||
93
oslokot
23.08.13
✎
16:31
|
||||
94
Bober
23.08.13
✎
16:32
|
"скуль админы не дают а индексы ларечник шеф вместе с конфой держит" и наш герой, который подсказывает построителю отчета как оптимизатор скля должен работать. ипанись. вы там наверное не учетом занимаетесь, а соревнуетесь, кто больше всех удивит.
|
103 |
||
95
viktor_vv
23.08.13
✎
16:32
|
* во втором sub1.id ->> t1.id
и количество записей в t1 в 100 раз больше чем в t2. |
96 103 119 |
||
96
Bober
23.08.13
✎
16:32
|
(95) как ты жесток.
|
98 |
||
97
oslokot
23.08.13
✎
16:33
|
99 |
|||
98
viktor_vv
23.08.13
✎
16:34
|
(96) А то :).
|
|||
99
Bober
23.08.13
✎
16:34
|
(97) а мы тут уже сменили темы разговора
|
100 102 |
||
100
viktor_vv
23.08.13
✎
16:36
|
(99) Это типа жених и невеста на свадьбе нужны первые 10 минут, в качестве повода побухать :).
|
102 105 |
||
101
oslokot
23.08.13
✎
16:36
|
100 )
|
|||
102
oslokot
23.08.13
✎
16:36
|
||||
103
z01
23.08.13
✎
16:36
|
(95)да хватит уже разводить ))) я же писал что допустим индексы есть, а если нет и поиск значителен то при построении запроса подзапросы следует строить с учетом размера таблиц )))(94)а вы ларечники наверное и никогда не писали запросы под большие базы где реально видно что если его компоновать не так как я рекомендую то он вообще ничего никогда не выдаст за приемлемое время
|
104 106 108 |
||
104
Bober
23.08.13
✎
16:38
|
(103) я на латочника работаю, он файловую базу на флешке носит .
|
108 |
||
105
z01
23.08.13
✎
16:38
|
(100)просто наверное он один раз на выполнение запустил, а со второго пошло и сабжа нет )))
|
|||
106
viktor_vv
23.08.13
✎
16:39
|
107 108 109 |
|||
107
Bober
23.08.13
✎
16:39
|
(106) ответа он не знает, админы не дают доступа к скл серверу.
|
|||
108
z01
23.08.13
✎
16:42
|
(104)да не важно на кого ты работаешь, ларечник это диагноз иногда даже на большие базы люди попадают и всё равно предлагают вместо того чтобы индекс добавить купить сервер в 10 раз дороже
(106) ответ в (103) и у тебя там не совсем наш случай, и я утверждаю что моя метода работает как директива, но имхо это помогает и в частности обойти проблему составных типов даже не думая о них |
110 |
||
109
z01
23.08.13
✎
16:45
|
(106)джойнить нужно к результату подзапроса ))) умники. а у тебя везде левое к sub1 ))
|
|||
110
viktor_vv
23.08.13
✎
16:45
|
111 113 |
|||
111
z01
23.08.13
✎
16:46
|
(110)джойнить нужно к результату подзапроса , а у тебя везде левое к sub1
|
113 |
||
112
Bober
23.08.13
✎
16:48
|
чет скучно здесь стало, зедик уже не веселит.
|
|||
113
z01
23.08.13
✎
16:49
|
||||
114
viktor_vv
23.08.13
✎
16:49
|
Ну а sub1 это разве не результат подзапроса. Мне нужны там все записи из таблицы t1 удовлетворяющие условию a=@p в соединении с таблицей t2.
|
117 |
||
115
oslokot
23.08.13
✎
16:59
|
Подождите Гуру, не расходитесь.
Еще маленький вопрос. как написать по-правильному вот такую кучу условий: ... | И НЕ Наименование ПОДОБНО &ВыбПодСтрокаИсключить1 | И НЕ Наименование ПОДОБНО &ВыбПодСтрокаИсключить2 | И НЕ Наименование ПОДОБНО &ВыбПодСтрокаИсключить3 | И НЕ Наименование ПОДОБНО &ВыбПодСтрокаИсключить4 ... Запрос.УстановитьПараметр("ВыбПодстрокаИсключить1", "яя%"); Запрос.УстановитьПараметр("ВыбПодстрокаИсключить2", "%шайба-гровер%"); Запрос.УстановитьПараметр("ВыбПодстрокаИсключить3", "%шпилька в комплекте%"); Запрос.УстановитьПараметр("ВыбПодстрокаИсключить4", "% простой%"); |
116 118 |
||
116
Bober
23.08.13
✎
17:01
|
(115) Может лучше полнотекстовый поиск включить
|
|||
117
z01
23.08.13
✎
17:04
|
119 |
|||
118
Bober
23.08.13
✎
17:05
|
(115) если запрос вида ВЫБРАТЬ Ссылка ИЗ --- ГДЕ то никак, это и есть нормальная версия. если что-то сложнее, то нужно смотреть запрос.
|
120 |
||
119
viktor_vv
23.08.13
✎
17:05
|
121 |
|||
120
viktor_vv
23.08.13
✎
17:07
|
(118) Он наверное это к соединению со свойствами прилепить хочет.
Наверное лучше сначала по справочнику в пакете загнать во временную таблицу по условию и дальше ее уже использовать со свойствами. |
125 127 |
||
121
z01
23.08.13
✎
17:14
|
(119)ты там к таблице один джойниш таблицу два и отбираешь по условию по полю таблицы 1 во втором случае и отбираешь по условию таблицы 1 и джойнишь к результату таблицу 2 в первом.
первый быстрее так как записей на первом этапе первого (выборка по условию) меньше чем на первом этапе второго (соединение) |
122 |
||
122
viktor_vv
23.08.13
✎
17:17
|
123 |
|||
123
z01
23.08.13
✎
17:27
|
(122)в запросе как в сабже всё уже не так может быть как нам хотелось бы, иначе не было бы сабжа
|
|||
124
viktor_vv
23.08.13
✎
17:31
|
Где-то я могу согласится, что подзапросами как-то может быть можно повлият на составление плана запроса, но это очень не очевидно.
Пример в (92) приведен, чтобы ты не увлекался идеей директив построителю через порядок написания подзапросов " сработает как директива построителю". |
|||
125
oslokot
23.08.13
✎
17:47
|
(120) да, прикрутить к своему запросу. Хорошо, пока оставлю так.
|
126 127 128 |
||
126
Bober
23.08.13
✎
17:58
|
(125) сделать забор данных в отдельном запросе с времянкой
|
|||
127
Bober
23.08.13
✎
17:58
|
||||
128
Bober
23.08.13
✎
18:00
|
(125) вообще такие вещи уже хорошо делать через СКД с использованием расширения запроса для СКД
|
|||
129
oslokot
27.08.13
✎
10:51
|
Всем привет! Помогите усложнить запрос.
На данном этапе он выглядит так: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Объект, | Номенклатура.Наименование КАК Наименование |ИЗ | Справочник.Номенклатура КАК Номенклатура | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов | ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов.Объект | И (ЗначенияСвойствОбъектов.Объект ССЫЛКА Справочник.Номенклатура) |ГДЕ | ЗначенияСвойствОбъектов.Свойство = &ВыбСвойство | И ЗначенияСвойствОбъектов.Значение = &ВыбЗначение | И НЕ Номенклатура.ПометкаУдаления | И НЕ Номенклатура.ЭтоГруппа | |УПОРЯДОЧИТЬ ПО | Номенклатура.Наименование"; Запрос.УстановитьПараметр("ВыбСвойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Тип ТПА")); Запрос.УстановитьПараметр("ВыбЗначение", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Фланец")); Этот простой запрос выбирает номенклатуру по единственному значению свойства "Фланец" Результат: получил всю номенклатуру со свойством "Фланец" А что делать, когда нужно отобрать эти фланцы еще по нескольким свойствам, например "Диаметр", "Давление", "Марка" То есть хочу выбрать фланцы с заданным давлением, диаметром и маркой. Как бы уточненный отбор по свойствам. |
130 137 138 |
||
130
ptiz
27.08.13
✎
10:57
|
(129)
Способ 1: добавлять еще соединения Способ 2: получить РС "ЗначенияСвойствОбъектов" во временную таблицу с отбором: Свойство В (&СписокНужныхСвойств), и дальше - как способ 1, но соединять уже с этой ВТ (тоже несколько соединений). Способ 3: получить РС "ЗначенияСвойствОбъектов" во временную таблицу с отбором: Свойство В (&СписокНужныхСвойств), но сразу делать разные поля с группировкой по полю "Объект". Например: ВЫБОР Объект, МАКСИМУМ(ВЫБОР КОГДА Свойство - &СвойствоФланец ТОГДА Значение ИНАЧЕ NULL КОНЕЦ) КАК Фланец, МАКСИМУМ(ВЫБОР КОГДА Свойство - &СвойствоДиаметр ТОГДА Значение ИНАЧЕ NULL КОНЕЦ) КАК Диаметр .. и потом обойтись одним соединением. Тут можно делать без ВТ, вложенным запросом. |
131 |
||
131
oslokot
27.08.13
✎
11:05
|
(130) а можно поподробнее про получение РС в ВТ? как это пишется?
|
|||
132
ptiz
27.08.13
✎
11:07
|
ВЫБРАТЬ
Поле1, Поле2 ПОМЕСТИТЬ ВТ1 ИЗ Регистр.НашРегистр ; ВЫБРАТЬ Поле1, Поле2 ИЗ ВТ1 |
133 |
||
133
oslokot
27.08.13
✎
11:15
|
(132) угу, спасиб. сейчас попробую
|
|||
134
oslokot
27.08.13
✎
11:58
|
нифига непойму
"ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект КАК Объект, | ЗначенияСвойствОбъектов.Свойство КАК Свойство |ПОМЕСТИТЬ ВТ |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Свойство В(&СписокСвойств) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ.Свойство, | ВТ.Объект |ИЗ | ВТ КАК ВТ"; пустой запрос |
|||
135
oslokot
27.08.13
✎
12:03
|
И еще непонятно, как все это мне поможет?
Ведь выбирать надо значения из разных видов свойств. Свойство | Значение Тип | "Фланец" Диаметр | "50" Давление | "16" Марка | "нж" Нужно выбрать фланцы с диаметром 50, давлением 16 и маркой нж Как все это соединять, каша какая то в голове ( |
|||
136
ptiz
27.08.13
✎
12:08
|
Решение в лоб (способ 1): делать столько соединений, сколько свойств в условиях.
В каждом соединении будет условие вида: ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов_Фланец ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов_Фланец.Объект И ЗначенияСвойствОбъектов_Фланец.Свойство = &СвойствоФланец |
138 |
||
137
Bober
27.08.13
✎
12:21
|
(129) попробуй поработать с СКД
|
138 |
||
138
oslokot
27.08.13
✎
13:52
|
(137) рано пока для меня (
(136) вот так получилось (способ 1), работает хорошо: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Объект, | Номенклатура.Наименование КАК Наименование |ИЗ | Справочник.Номенклатура КАК Номенклатура | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов_ТипТПА | ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов_ТипТПА.Объект | И (ЗначенияСвойствОбъектов_ТипТПА.Свойство = &Свойство_ТипТПА) | И (ЗначенияСвойствОбъектов_ТипТПА.Объект ССЫЛКА Справочник.Номенклатура) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов_Диаметр | ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов_Диаметр.Объект | И (ЗначенияСвойствОбъектов_Диаметр.Свойство = &Свойство_Диаметр) | И (ЗначенияСвойствОбъектов_Диаметр.Объект ССЫЛКА Справочник.Номенклатура) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов_Давление | ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов_Давление.Объект | И (ЗначенияСвойствОбъектов_Давление.Свойство = &Свойство_Давление) | И (ЗначенияСвойствОбъектов_Давление.Объект ССЫЛКА Справочник.Номенклатура) |ГДЕ | ЗначенияСвойствОбъектов_ТипТПА.Свойство = &Свойство_ТипТПА | И ЗначенияСвойствОбъектов_ТипТПА.Значение = &Значение_ТипТПА | И ЗначенияСвойствОбъектов_Диаметр.Свойство = &Свойство_Диаметр | И ЗначенияСвойствОбъектов_Диаметр.Значение = &Значение_Диаметр | И ЗначенияСвойствОбъектов_Давление.Свойство = &Свойство_Давление | И ЗначенияСвойствОбъектов_Давление.Значение = &Значение_Давление | И НЕ Номенклатура.ПометкаУдаления | И НЕ Номенклатура.ЭтоГруппа | |УПОРЯДОЧИТЬ ПО | Номенклатура.Наименование"; Запрос.УстановитьПараметр("Свойство_ТипТПА", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Тип ТПА")); Запрос.УстановитьПараметр("Значение_ТипТПА", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Фланец")); Запрос.УстановитьПараметр("Свойство_Диаметр", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Диаметр")); Запрос.УстановитьПараметр("Значение_Диаметр", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Ду__50")); Запрос.УстановитьПараметр("Свойство_Давление", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Давление")); Запрос.УстановитьПараметр("Значение_Давление", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Ру_16")); Вроде так? ничего лишнего я не наколбасил? Время выполнения составляет примерно 0.068 сек., как и в (129) Оставить так? Или это смотрится как быдло-код? |
139 |
||
139
Ёпрст
27.08.13
✎
13:57
|
(138) выкинуть ГДЕ и все соедеиения.
Оставить только одно внутреннее соедиение. |
141 143 |
||
140
Ёпрст
27.08.13
✎
13:58
|
, ну максимум, условие на Где НЕ Номенклатура.ПометкаУдаления
оставить. |
|||
141
oslokot
27.08.13
✎
14:06
|
(139) как это выкинуть.. А как же я в одном соединении укажу все условия разношерстных видов? не понимаю...
@Епрст покажи примерчик, пожалуйста |
|||
142
oslokot
27.08.13
✎
14:06
|
+ ну проверку ЭтоГруппа выкину, согласен. она не нужна
|
|||
143
oslokot
27.08.13
✎
14:18
|
(139) По типу такого чтоли?
"ВЫБРАТЬ | Номенклатура.Ссылка КАК Объект, | Номенклатура.Наименование КАК Наименование |ИЗ | Справочник.Номенклатура КАК Номенклатура | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов | ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов.Объект | И (ЗначенияСвойствОбъектов.Свойство = &Свойство_ТипТПА) | И (ЗначенияСвойствОбъектов.Свойство = &Свойство_Диаметр) | И (ЗначенияСвойствОбъектов.Свойство = &Свойство_Давление) | И (ЗначенияСвойствОбъектов.Значение = &Значение_ТипТПА) | И (ЗначенияСвойствОбъектов.Значение = &Значение_Диаметр) | И (ЗначенияСвойствОбъектов.Значение = &Значение_Давление) | И (ЗначенияСвойствОбъектов.Объект ССЫЛКА Справочник.Номенклатура) |ГДЕ | НЕ Номенклатура.ПометкаУдаления | |УПОРЯДОЧИТЬ ПО | Номенклатура.Наименование"; Только это естественно не работает |
149 |
||
144
oslokot
27.08.13
✎
14:55
|
Итак. Выкинул все что можно, получилось так:
"ВЫБРАТЬ | Номенклатура.Ссылка КАК Объект, | Номенклатура.Наименование КАК Наименование |ИЗ | Справочник.Номенклатура КАК Номенклатура | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов_ТипТПА | ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов_ТипТПА.Объект | И (ЗначенияСвойствОбъектов_ТипТПА.Свойство = &Свойство_ТипТПА) | И (ЗначенияСвойствОбъектов_ТипТПА.Объект ССЫЛКА Справочник.Номенклатура) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов_Диаметр | ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов_Диаметр.Объект | И (ЗначенияСвойствОбъектов_Диаметр.Свойство = &Свойство_Диаметр) | И (ЗначенияСвойствОбъектов_Диаметр.Объект ССЫЛКА Справочник.Номенклатура) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов_Давление | ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов_Давление.Объект | И (ЗначенияСвойствОбъектов_Давление.Свойство = &Свойство_Давление) | И (ЗначенияСвойствОбъектов_Давление.Объект ССЫЛКА Справочник.Номенклатура) |ГДЕ | ЗначенияСвойствОбъектов_ТипТПА.Значение = &Значение_ТипТПА | И ЗначенияСвойствОбъектов_Диаметр.Значение = &Значение_Диаметр | И ЗначенияСвойствОбъектов_Давление.Значение = &Значение_Давление | И НЕ Номенклатура.ПометкаУдаления | |УПОРЯДОЧИТЬ ПО | Номенклатура.Наименование"; Вопрос, как выкинуть все соединения и оставить одно? |
145 148 |
||
145
ptiz
27.08.13
✎
15:04
|
(144) Использовать "способ 3" :)
|
146 |
||
146
oslokot
27.08.13
✎
15:08
|
(145) :) буду пробовать
Только вот еще одна неотложная проблема образовалась: Хочу выбирать, например, диаметр=50,60...80 и пусто! Загнал В список, все хорошо. Выбираются диаметры все, кроме пустых значений. А очень надо пустое. Как быть? |
150 153 |
||
147
oslokot
27.08.13
✎
15:09
|
+ Понимаю, что в РС пустой записи с диаметром нет.
|
|||
148
viktor_vv
27.08.13
✎
15:09
|
(144)
| ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов.Объект | И (ЗначенияСвойствОбъектов.Объект ССЫЛКА Справочник.Номенклатура) | И ((ЗначенияСвойствОбъектов.Свойство = &Свойство_ТипТПА) | ИЛИ (ЗначенияСвойствОбъектов.Свойство = &Свойство_Диаметр) | ИЛИ (ЗначенияСвойствОбъектов.Свойство = &Свойство_Давление) | ИЛИ (ЗначенияСвойствОбъектов.Значение = &Значение_ТипТПА) | ИЛИ (ЗначенияСвойствОбъектов.Значение = &Значение_Диаметр) | ИЛИ (ЗначенияСвойствОбъектов.Значение = &Значение_Давление)) |
149 |
||
149
viktor_vv
27.08.13
✎
15:10
|
||||
150
viktor_vv
27.08.13
✎
15:13
|
(146) То есть тебе надо и незаполненные значения для назначенных свойств ? В этом случае в регистре записи не будет.
Это надо еще лепить туда назначение свойств. |
151 |
||
151
oslokot
27.08.13
✎
15:18
|
(150) Да, незаполненные значения нужны тоже.
|
152 |
||
152
Bober
27.08.13
✎
15:24
|
(151) ВНУТРЕННЕЕ СОЕДИНЕНИЕ замени на левое соединение и делай проверку на null, неопределено и пустое значение типа свойства
|
154 |
||
153
ptiz
27.08.13
✎
15:26
|
(146) Тогда тебе нужно левое соединение, а условия вида
ЗначенияСвойствОбъектов_Диаметр.Свойство = &Свойство_Диаметр переместить в секцию ГДЕ таким образом: ГДЕ (ЗначенияСвойствОбъектов_Диаметр.Значение В(&СписокСвойства_Диаметр) ИЛИ ЗначенияСвойствОбъектов_Диаметр.Значение ЕСТЬ NULL) И ...другие отборы |
154 155 |
||
154
oslokot
27.08.13
✎
15:27
|
||||
155
oslokot
27.08.13
✎
15:58
|
(153) Ура. Вот так взлетело:
"ВЫБРАТЬ | Номенклатура.Ссылка КАК Объект, | Номенклатура.Наименование КАК Наименование |ИЗ | Справочник.Номенклатура КАК Номенклатура | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов_ТипТПА | ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов_ТипТПА.Объект | И (ЗначенияСвойствОбъектов_ТипТПА.Свойство = &Свойство_ТипТПА) | И (ЗначенияСвойствОбъектов_ТипТПА.Объект ССЫЛКА Справочник.Номенклатура) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов_Диаметр | ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов_Диаметр.Объект | И (ЗначенияСвойствОбъектов_Диаметр.Свойство = &Свойство_Диаметр) | И (ЗначенияСвойствОбъектов_Диаметр.Объект ССЫЛКА Справочник.Номенклатура) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов_Давление | ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов_Давление.Объект | И (ЗначенияСвойствОбъектов_Давление.Свойство = &Свойство_Давление) | И (ЗначенияСвойствОбъектов_Давление.Объект ССЫЛКА Справочник.Номенклатура) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов_Марка | ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов_Марка.Объект | И (ЗначенияСвойствОбъектов_Марка.Свойство = &Свойство_Марка) | И (ЗначенияСвойствОбъектов_Давление.Объект ССЫЛКА Справочник.Номенклатура) |ГДЕ | ЗначенияСвойствОбъектов_ТипТПА.Значение = &Значение_ТипТПА | И (ЗначенияСвойствОбъектов_Диаметр.Значение = &Значение_Диаметр | ИЛИ ЗначенияСвойствОбъектов_Диаметр.Значение ЕСТЬ NULL ) | И (ЗначенияСвойствОбъектов_Давление.Значение = &Значение_Давление | ИЛИ ЗначенияСвойствОбъектов_Давление.Значение ЕСТЬ NULL ) | И (ЗначенияСвойствОбъектов_Марка.Значение В (&Значение_Марка) | ИЛИ ЗначенияСвойствОбъектов_Марка.Значение ЕСТЬ NULL ) | |УПОРЯДОЧИТЬ ПО | Номенклатура.Наименование"; То есть "Тип ТПА" оставил ВНУТРЕННИМ соединением, так как это свойство заполнено всегда, а "Диаметр", "Давление" и "Марка" сделал ЛЕВЫМ соединением с проверкой на NULL Работает. Всё правильно написано? |
156 |
||
156
oslokot
27.08.13
✎
16:12
|
(155) + А еще, как в запросе включить/выключить условие на NULL? Просто нужно иногда выводить пустые, а иногда нет. Ту должна быть наверное конструкция типа
КОГДА &ВыводитьПустые ТОГДА ИНАЧЕ ИСТИНА... Так? |
157 158 |
||
157
oslokot
27.08.13
✎
16:36
|
(156) + Или в восьмерке делается так же как в семерке?
Если ВыводитьПустые Тогда Запрос.Текст = Запрос.Текст + "..."; КонецЕсли; |
|||
158
ptiz
27.08.13
✎
16:43
|
(156) Да, лучше так.
|
159 |
||
159
oslokot
27.08.13
✎
16:56
|
(158) да вот что-то с синтаксисом не так, или с моей ДНК :)
как эта конструкция применяется? Вот она: ВЫБОР КОГДА &ВыбранныйМноюПризнак = ИСТИНА ТОГДА Истина ИНАЧЕ <Текст условия запроса> КОНЕЦ Как ее применить например сюда: | И (ЗначенияСвойствОбъектов_Марка.Значение В (&Значение_Марка) | ИЛИ ЗначенияСвойствОбъектов_Марка.Значение ЕСТЬ NULL ) |
160 164 |
||
160
oslokot
27.08.13
✎
17:06
|
(159) + а, всё, кажется догнал )
|
|||
161
Ёпрст
27.08.13
✎
17:11
|
можешь проще
внутреннее соединение по значение в список/массив значений и свойство в список/массив свойств усё. |
|||
162
Ёпрст
27.08.13
✎
17:15
|
ежели значения свойств могут совпадать у разного вида свойст, тогда через пары + или
По (свойство = свойство1 и значение = значение1) ИЛИ (свойство = свойство2 и значение = значение2) ... ИЛИ (свойство = свойствоN и значение = значениеN) |
|||
163
Ёпрст
27.08.13
✎
17:16
|
в итоге имеешь одно внутреннее соединение
|
164 |
||
164
oslokot
27.08.13
✎
17:26
|
(163) Спасибо, это чуть позже попробую.
(159) Вот типа так сделал условие, работает вроде | И ВЫБОР | КОГДА &ВыводитьПустые | ТОГДА (ЗначенияСвойствОбъектов_Марка.Значение В (&Значение_Марка) | ИЛИ ЗначенияСвойствОбъектов_Марка.Значение ЕСТЬ NULL ) | ИНАЧЕ ЗначенияСвойствОбъектов_Марка.Значение В (&Значение_Марка) | КОНЕЦ Или что-то я опять перемудрил? |
|||
165
Bober
27.08.13
✎
17:37
|
ВЫБОР
КОГДА &ВыводитьПустые ТОГДА ЗначенияСвойствОбъектов_Марка.Значение ЕСТЬ NULL Иначе Истина Конец Или (ЗначенияСвойствОбъектов_Марка.Значение В (&Значение_Марка) |
166 167 |
||
166
oslokot
27.08.13
✎
18:01
|
(165) Спасибо!
Получилось так: ВЫБОР КОГДА &ВыводитьПустые ТОГДА ЗначенияСвойствОбъектов_Марка.Значение В (&Значение_Марка) ИЛИ ЗначенияСвойствОбъектов_Марка.Значение ЕСТЬ NULL ИНАЧЕ ЗначенияСвойствОбъектов_Марка.Значение В (&Значение_Марка) КОНЕЦ Потому что мне нужно выводить при ВыводитьПустые=Истина не только пустые но и со значениями. |
167 |
||
167
Bober
27.08.13
✎
18:12
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |