![]() |
![]() |
![]() |
|
В чем смысл расширения языка запросов для СКД? | ☑ | ||
---|---|---|---|---|
0
Буратинко
05.10.10
✎
12:47
|
В конструкторе запроса на закладке "Компоновка данных" можно указать поля для выбора пользователей в запрос. Причем эти поля можно выбирать только из уже выбранных полей на закладке "Таблицы и поля".
Получается какое-то задвоение.... Причем сгенерированный запрос действительно эти поля содержит дважды: первый раз без фигурных скобок, а второй раз- с ними. В 8.1 Построитель отчета использовал подобные расширения, чтобы не выбирать лишних данных и поля указывались в тексте запроса только один раз в фигурных скобках. В чем смысл? |
|||
1
Kashemir
05.10.10
✎
12:48
|
Такой же смысл как и в построителе
|
|||
2
Буратинко
05.10.10
✎
12:50
|
(1) а почем записывается дважды?
|
|||
3
Kashemir
05.10.10
✎
12:51
|
(2) "Потом" чтобы знать как скомпоновать запрос выполнения при заданных настройках пользователя.
|
|||
4
IronDemon
05.10.10
✎
12:52
|
Потому что есть волшебная кнопочка "Автозаполнение".
|
|||
5
Буратинко
05.10.10
✎
12:55
|
(3) А что построитель отчета не мог скомпоновать без лишнего текста?
(4) а причем тут автозаполнение? Указывать свойства полей необходимо в любом случае (даже если они используются не всегда) |
|||
6
Kashemir
05.10.10
✎
12:57
|
(5) Если ты не будешь использовать директивы компоновки твой запрос будет выполнятся в полном "оригинальном" виде при любых настройках пользователя.
|
|||
7
Буратинко
05.10.10
✎
12:59
|
(6) Это понятно. Вопрос в другом: зачем дублировать текст запроса? Ведь в построителе отчета такого не было.
|
|||
8
IronDemon
05.10.10
✎
13:01
|
(7) Было
|
|||
9
Буратинко
05.10.10
✎
13:01
|
(6) может это ошибка? Ведь она дает выбирать только из полей, которые уже выбраны. А должна давать выбирать из всех полей таблиц указанных на закладке "Таблицы" закладки "Компановка данных"...
|
|||
10
Буратинко
05.10.10
✎
13:02
|
(8) не было. Там поля перечислялись один раз (или в фигурных скобках или без).
|
|||
11
Kashemir
05.10.10
✎
13:03
|
(7) Под полный "дублированием запроса", если я тебя понял, подразумевается исключение выборки вложенной таблицы, в случае если ее поля не используются. Смотри в конструкторе запроса на закладке компоновки данный подзакладку таблицы и в ней обрати внимание на признак "обязательности".
|
|||
12
Kashemir
05.10.10
✎
13:05
|
(9) Закладка выбранные поля позволяет назначать на каком уровне вложенности запроса то или другое поле можно убирать из выборки запроса, в случае если оно не используется.
|
|||
13
Буратинко
05.10.10
✎
13:07
|
(11) Да нет, же. Почему сгенерированный текст запроса содержит оба поля:
Валюта {Валюта} Ведь надо только (так было в построителе отчета): {Валюта} |
|||
14
Kashemir
05.10.10
✎
13:08
|
(13) Потому что ты задал псевдоним поля.
|
|||
15
Буратинко
05.10.10
✎
19:18
|
(1)
Так ведь система компоновки и должна этим заниматься (с учетом настроек пользователя формировать обращение к БД). Зачем еще какие-то дополнительные настройки? В 1с создал справочник с двумя реквизитами и создал Отчет. Его Основная схема компановки данных содержит набор данных "запрос": SELECT Catalog1.Attribute1, Catalog1.Attribute2 AS Attribute2 {SELECT Attribute2} FROM Catalog.Catalog1 AS Catalog1 (То есть второй реквизит справочника добавлен в поля на закладке "компановка данных" построителя запроса, а первый- не добавлен). Открываю 1с и Profiler и строю отчеты: 1. Вывести детальные записи с обоими реквизитами: SELECT T1._Fld8, T1._Fld9 FROM _Reference7 T1 WITH(NOLOCK) 2. Вывести детальные записи ТОЛЬКО с полем 1: SELECT T1._Fld8 FROM _Reference7 T1 WITH(NOLOCK) 3. Вывести детальные записи ТОЛЬКО с полем 2: SELECT T1._Fld9 FROM _Reference7 T1 WITH(NOLOCK) Видно, что никаких лишних полей в запрос не попадает. Поэтому вопрос остается в силе: В чем смысл расширения языка запросов для СКД? |
|||
16
Буратинко
06.10.10
✎
10:53
|
А! Вот видите, молчите!
Тоже задумались зачем эта фигня сбоку прикручена! |
|||
17
detec
06.10.10
✎
10:56
|
(16) Лично я заметил, что в отчётах конфигураций под управляемым приложением эта муть в фигурных скобках отсутствует. Не могу навскидку припомнить отчёт, где они используются.
|
|||
18
Kashemir
06.10.10
✎
10:59
|
(15) В этом случае идет работа только с финальными полями, не участвующими в соединениях/условиях/расчетах вычисляемых/пользовательских полей/группировках - в данной ситуации очевидно оптимизатор запроса схемы может самостоятельно отбросить поля. Заверни этот же запрос во вложенный и поиграйся с директивами условной выборки на верхнем и вложенном уровне запроса.
|
|||
19
Буратинко
06.10.10
✎
11:11
|
(18) что такое "директивами условной выборки на верхнем и вложенном уровне запроса"?
И что такое "Заверни этот же запрос во вложенный"? |
|||
20
Буратинко
06.10.10
✎
11:13
|
(12) а эта информация откуда? (где можно почитать?)
|
|||
21
Буратинко
06.10.10
✎
11:20
|
Действительно на закладке "Компановка данных", "Таблицы" конструктора запроса есть колонка "Номер группы", но единственное на что она влияет- возможность объединенения / разъединения обращения к таблицам.
То есть, если номер группы одинаковый и вы обращаетесь к одной из таблиц, то автоматически будет произведено объединение основной таблицы со всеми таблицами ее группы. |
|||
22
Kashemir
06.10.10
✎
11:24
|
(19)
1) Другими словами поля выборки в фигурных скобках 2) Вложенный запрос - http://www.google.com.ua/#hl=ru&source=hp&biw=1504&bih=693&q=вложенный+запрос&aq=f&aqi=g3g-s1g2g-s1g3&aql=&oq=&gs_rfai=&fp=56dd34124cca0658 (20) Где почитать - не подскажу. Вот примеры запросов для эсперементов с настройками. Попробуй поиграться настройками и посмотреть на финальные запросы. Кстати - для схемы финальный запрос проще вытаскивать из собранного макета, чем ловить в профайлере // ПЕРВЫЙ ВЫБРАТЬ ВложенныйЗапрос.Период, ВложенныйЗапрос.Валюта, ВложенныйЗапрос.Страна, ВложенныйЗапрос.Курс ИЗ (ВЫБРАТЬ КурсыВалютСрезПоследних.Период КАК Период, КурсыВалютСрезПоследних.Валюта КАК Валюта, КурсыВалютСрезПоследних.Страна КАК Страна, КурсыВалютСрезПоследних.Курс КАК Курс {ВЫБРАТЬ Период, Валюта.*, Страна.*, Курс} ИЗ РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних) КАК ВложенныйЗапрос // ВТОРОЙ ВЫБРАТЬ ВложенныйЗапрос.Период КАК Период, ВложенныйЗапрос.Валюта КАК Валюта, ВложенныйЗапрос.Страна КАК Страна, ВложенныйЗапрос.Курс КАК Курс {ВЫБРАТЬ Период, Валюта.*, Страна.*, Курс} ИЗ (ВЫБРАТЬ КурсыВалютСрезПоследних.Период КАК Период, КурсыВалютСрезПоследних.Валюта КАК Валюта, КурсыВалютСрезПоследних.Страна КАК Страна, КурсыВалютСрезПоследних.Курс КАК Курс ИЗ РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних) КАК ВложенныйЗапрос |
|||
23
Kashemir
06.10.10
✎
11:27
|
(21) "но единственное на что она влияет- возможность объединенения / разъединения обращения к таблицам."
___________ Т.е. возможность отрезать часть вложенных запросов при ненадобности - это так мало ? |
|||
24
hhhh
06.10.10
✎
11:34
|
(16) там есть все поля и поля, которые доступны пользователю. Ну не настолько в 1С лохи, чтобы абсолютно все поля запроса вываливать пользователю на экран.
|
|||
25
Буратинко
06.10.10
✎
12:54
|
(22) поиграюсь.
(23) я отвечал на (12) Да, считаю, что это достаточно важное поле, но оно имеет не ту функциональность, что описано в (12) (24) не понятно. Так вы считаете, что расширение языка запросов для СКД- излишество или наоборот- крайне важная добавка? |
|||
26
Kashemir
06.10.10
✎
12:59
|
(25) Не следует путать опциальность присоединения целых таблиц и опциональную выборку конкретных полей таблицы.
|
|||
27
le_
06.10.10
✎
13:36
|
Кстати, по этому вопросу, похоже, вообще нет ничего в литературе. И никакой документации. Т.е., 1С придумала что-то, а все остальные должны догадываться, для чего это нужно...
|
|||
28
Буратинко
06.10.10
✎
15:43
|
(22) Поигрался и вывод такой: опциональные поля имеет смысл использовать ТОЛЬКО во вложенных запросах (в этом случае с их помощью во вложенном запросе можно сократить количество выбираемых полей). То есть использование опциональных полей на самом верхнем уровне запроса- бессмысленное стесывание пальцев об клавиатуру.
(26) не путаю (27) я только на диске ИТС в документации нашел сухую справку, что дескать вот так можно написать. Но ни для чего, ни последствий- ничего нет. (Хорошо я в свое время работал с 8.0. Поэтому знаю для чего фигурные скобки используют и, простите за выражение, произвел аналитическое продолжение фигурных скобок. |
|||
29
Буратинко
07.10.10
✎
10:27
|
Поля запроса могут либо использоваться в соединениях, либо в качестве полей в вышестоящих секциях "ВЫБРАТЬ". Что сложного в определении нужно ли нам то или иное поле? Самое смешное, что если мы дадим подсказку: дескать это поле может быть не нужным, то программа вдруг поумнеет и все сделает.
Тоже самое касается таблиц: еще можно было представить, что данное объединение используется не для получения полей, а для фильтрации исходной таблицы. Но ведь все объединения ЛЕВЫЕ! Что трудного в самостоятельном определении выборки полей из таблицы? Вот так и не понял этого функционала прикрученного сбоку. |
|||
30
Kashemir
07.10.10
✎
10:49
|
(29) Понимание придет с первым отчетом на запросе "повышенной сложности" :)
|
|||
31
Буратинко
07.10.10
✎
15:52
|
(30) Причем тут понимание? Когда реально платформа сама может все сделать без дополнительных глупых настроек.
|
|||
32
Kashemir
07.10.10
✎
17:09
|
(31) Платформа может сделать "сама" только в однозначных ситуациях.
|
|||
33
le_
07.10.10
✎
17:16
|
Может кто-нибудь привести пример простейшего запроса, в котором не обойтись без описанного выше?
|
|||
34
Буратинко
07.10.10
✎
18:09
|
(33) думаю платформа не перерабатывалась, а развивалась примитивным дописыванием нового. Вот и получилось, что некоторые куски функционала стали взаимопротиворечивы. Хотя похоже разработчик не хочет тратить на это время.
|
|||
35
acsent
07.10.10
✎
18:12
|
Скобочки {} - это возможность задать список доступных полей (отборов) для пользователя. Остальное все - побочные эффекты
|
|||
36
Буратинко
07.10.10
✎
18:14
|
(35) бред какой! хоть со скобочками, хоть без- все равно доступно. А ограничения устанавливаются для каждого поля отдельно в таблице "Поля"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |