В чем смысл расширения языка запросов для СКД? #508853


#0 by Буратинко
В конструкторе запроса на закладке "Компоновка данных" можно указать поля для выбора пользователей в запрос. Причем эти поля можно выбирать только из уже выбранных полей на закладке "Таблицы и поля". Получается какое-то задвоение.... Причем сгенерированный запрос действительно эти поля содержит дважды: первый раз без фигурных скобок, а второй раз- с ними. В 8.1 Построитель отчета использовал подобные расширения, чтобы не выбирать лишних данных и поля указывались в тексте запроса только один раз в фигурных скобках. В чем смысл?
#1 by Kashemir
Такой же смысл как и в построителе
#2 by Буратинко
а почем записывается дважды?
#3 by Kashemir
"Потом" чтобы знать как скомпоновать запрос выполнения при заданных настройках пользователя.
#4 by IronDemon
Потому что есть волшебная кнопочка "Автозаполнение".
#5 by Буратинко
А что построитель отчета не мог скомпоновать без лишнего текста? а причем тут автозаполнение? Указывать свойства полей необходимо в любом случае (даже если они используются не всегда)
#6 by Kashemir
Если ты не будешь использовать директивы компоновки твой запрос будет выполнятся в полном "оригинальном" виде при любых настройках пользователя.
#7 by Буратинко
Это понятно. Вопрос в другом: зачем дублировать текст запроса? Ведь в построителе отчета такого не было.
#8 by IronDemon
Было
#9 by Буратинко
может это ошибка? Ведь она дает выбирать только из полей, которые уже выбраны. А должна давать выбирать из всех полей таблиц указанных на закладке "Таблицы" закладки "Компановка данных"...
#10 by Буратинко
не было. Там поля перечислялись один раз (или в фигурных скобках или без).
#11 by Kashemir
Под полный "дублированием запроса", если я тебя понял,  подразумевается исключение выборки вложенной таблицы, в случае если ее поля не используются. Смотри в конструкторе запроса на закладке компоновки данный подзакладку таблицы и в ней обрати внимание на признак "обязательности".
#12 by Kashemir
Закладка выбранные поля позволяет назначать на каком уровне вложенности запроса то или другое поле можно убирать из выборки запроса, в случае если оно не используется.
#13 by Буратинко
Да нет, же. Почему сгенерированный текст запроса содержит оба поля: Валюта {Валюта} Ведь надо только (так было в построителе отчета): {Валюта}
#14 by Kashemir
Потому что ты задал псевдоним поля.
#15 by Буратинко
Так ведь система компоновки и должна этим заниматься (с учетом настроек пользователя формировать обращение к БД). Зачем еще какие-то дополнительные настройки? В 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 by Буратинко
А! Вот видите, молчите! Тоже задумались зачем эта фигня сбоку прикручена!
#17 by detec
Лично я заметил, что в отчётах конфигураций под управляемым приложением эта муть в фигурных скобках отсутствует. Не могу навскидку припомнить отчёт, где они используются.
#18 by Kashemir
В этом случае идет работа только с финальными полями, не участвующими в соединениях/условиях/расчетах вычисляемых/пользовательских полей/группировках - в данной ситуации очевидно оптимизатор запроса схемы может самостоятельно отбросить поля. Заверни этот же запрос во вложенный и поиграйся с директивами условной выборки на верхнем и вложенном уровне запроса.
#19 by Буратинко
что такое "директивами условной выборки на верхнем и вложенном уровне запроса"? И что такое "Заверни этот же запрос во вложенный"?
#20 by Буратинко
а эта информация откуда? (где можно почитать?)
#21 by Буратинко
Действительно на закладке "Компановка данных", "Таблицы" конструктора запроса есть колонка "Номер группы", но единственное на что она влияет- возможность объединенения / разъединения обращения к таблицам. То есть, если номер группы одинаковый и вы обращаетесь к одной из таблиц, то автоматически будет произведено объединение основной таблицы со всеми таблицами ее группы.
#22 by Kashemir
1) Другими словами поля выборки в фигурных скобках 2) Вложенный запрос - Где почитать - не подскажу. Вот примеры запросов для эсперементов с настройками. Попробуй поиграться настройками и посмотреть на финальные запросы. Кстати - для схемы финальный запрос проще вытаскивать из собранного макета, чем ловить в профайлере    ИЗ        РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних) КАК ВложенныйЗапрос
#23 by Kashemir
"но единственное на что она влияет- возможность объединенения / разъединения обращения к таблицам." ___________ Т.е. возможность отрезать часть вложенных запросов при ненадобности - это так мало ?
#24 by hhhh
там есть все поля и поля, которые доступны пользователю. Ну не настолько в 1С лохи, чтобы абсолютно все поля запроса вываливать пользователю на экран.
#25 by Буратинко
поиграюсь. я отвечал на Да, считаю, что это достаточно важное поле, но оно имеет не ту функциональность, что описано в не понятно. Так вы считаете, что расширение языка запросов для СКД- излишество или наоборот- крайне важная добавка?
#26 by Kashemir
Не следует путать опциальность присоединения целых таблиц и опциональную выборку конкретных полей таблицы.
#27 by le_
Кстати, по этому вопросу, похоже, вообще нет ничего в литературе. И никакой документации. Т.е., 1С придумала что-то, а все остальные должны догадываться, для чего это нужно...
#28 by Буратинко
Поигрался и вывод такой: опциональные поля имеет смысл использовать ТОЛЬКО во вложенных запросах (в этом случае с их помощью во вложенном запросе можно сократить количество выбираемых полей). То есть использование опциональных полей на самом верхнем уровне запроса- бессмысленное стесывание пальцев об клавиатуру. не путаю я только на диске ИТС в документации нашел сухую справку, что дескать вот так можно написать. Но ни для чего, ни последствий- ничего нет. (Хорошо я в свое время работал с 8.0. Поэтому знаю для чего фигурные скобки используют и, простите за выражение, произвел аналитическое продолжение фигурных скобок.
#29 by Буратинко
Поля запроса могут либо использоваться в соединениях, либо в качестве полей в вышестоящих секциях "ВЫБРАТЬ". Что сложного в определении нужно ли нам то или иное поле? Самое смешное, что если мы дадим подсказку: дескать это поле может быть не нужным, то программа вдруг поумнеет и все сделает. Тоже самое касается таблиц: еще можно было представить, что данное объединение используется не для получения полей, а для фильтрации исходной таблицы. Но ведь все объединения ЛЕВЫЕ! Что трудного в самостоятельном определении выборки полей из таблицы? Вот так и не понял этого функционала прикрученного сбоку.
#30 by Kashemir
Понимание придет с первым отчетом на запросе "повышенной сложности" :)
#31 by Буратинко
Причем тут понимание? Когда реально платформа сама может все сделать без дополнительных глупых настроек.
#32 by Kashemir
Платформа может сделать "сама" только в однозначных ситуациях.
#33 by le_
Может кто-нибудь привести пример простейшего запроса, в котором не обойтись без описанного выше?
#34 by Буратинко
думаю платформа не перерабатывалась, а развивалась примитивным дописыванием нового. Вот и получилось, что некоторые куски функционала стали взаимопротиворечивы. Хотя похоже разработчик не хочет тратить на это время.
#35 by acsent
Скобочки {} - это возможность задать список доступных полей (отборов) для пользователя. Остальное все - побочные эффекты
#36 by Буратинко
бред какой! хоть со скобочками, хоть без- все равно доступно. А ограничения устанавливаются для каждого поля отдельно в таблице "Поля"
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С