воскресенье, 28 января 2018 г.

Конструктор запросов

Запросы в 1С обеспечивают табличный способ доступа к данным. Язык запросов заточен под удобное чтение и преобразование больших массивов информации; изменять данные с его помощью нельзя. Язык запросов - это отдельный язык, не являющийся частью встроенного языка 1С:Предприятие; он достаточно сходен с SQL.
Запрос всегда начинается с ключевого слова ВЫБРАТЬ; собственно кроме него в запросе может и не быть других ключевых слов, если секция ВЫБРАТЬ полностью описывает источник и результат запроса, например:
ВЫБРАТЬ Справочник.Контрагенты.ИНН
На практике такая ситуация редка, тексты запросов сложные, и в запросах для этого описываются следующие секции:
  • группировка
  • объединения разных таблиц-источников
  • условия, ограничивающие выборку
  • порядок представления результата
  • расчет итогов по каким-либо полям
Запросы можно набирать просто вручную, но намного удобнее использовать специальный инструмент - конструктор запросов:
Рассмотрим далее вопросы экзамена по общим моментам табличной модели и запросов.

***
Вопрос 07.04 экзамена 1С:Профессионал по платформе. Для повышения скорости выполнения запроса необходимо:
  1. Задавать параметры большинства реальных таблиц
  2. Задавать параметры большинства виртуальных таблиц
  3. Вместо задания параметров у реальной или виртуальной таблицы использовать отбор, заданный конструкцией языка запросов "ГДЕ"
  4. Верны ответы 1 и 2
Верный ответ второй. Правильно параметризованный запрос работает с таблицей итогов регистра, а не с основной таблицей, такой способ доступа быстрее.

***
Вопрос 07.15 экзамена 1С:Профессионал по платформе. Можно ли, используя конструктор запроса, повлиять на порядок записей в результирующей таблице запроса?
  1. Нельзя
  2. Это можно сделать на закладке "Порядок"
  3. Это можно сделать на закладке "Объединения/Псевдонимы"
  4. Верны ответы 2 и 3
Правильный ответ четвертый. Закладка Порядок для этого предназначена очевидно; поля тут можно двигать стрелками, либо включить Автоупорядочивание (по основному представлению объекта):
На закладке Объединения/Псевдонимы также можно регулировать порядок полей:

***
Вопрос 07.34 экзамена 1С:Профессионал по платформе. При описании группировки в тексте запроса:
  1. Все поля должны делиться на те, по которым производится группировка, и на агрегатные функции (рассчитываемые поля)
  2. Все поля должны делиться на те, по которым производится группировка, на агрегатные функции (рассчитываемые поля) и на поля вложенных таблиц
  3. Чем выше определяется группировка, тем выше должно определяться поле в запросе
  4. Перечисленные ограничения не действуют
Правильный ответ второй. Вложенные таблицы не попадают ни в группируемые, ни в агрегируемые поля.

***
Вопрос 07.35 экзамена 1С:Профессионал по платформе. Левое внешнее соединение означает, что в результат соединения войдут:
  1. Все данные из таблицы №2 и они будут дополнены данными из таблицы №1, для которых выполняется условие соединения
  2. Данные из обеих таблиц, для которых выполняется условие соединения, но поля, которые берутся из таблицы №1, будут идти первыми (слева)
  3. Все данные из таблицы №1 и они будут дополнены данными из таблицы №2, для которых выполняется условие соединения
Правильный ответ первый. Из левой таблицы будет выбрано все, из правой - только совпадающее по ключу с левой.

***
Вопрос 07.36 экзамена 1С:Профессионал по платформе. С помощью какой агрегатной функции можно узнать количество записей в результате запроса?
  1. КОЛИЧЕСТВО()
  2. КОЛИЧЕСТВО(*)
  3. КОЛИЧЕСТВО(Различные …)
  4. СУММА
Правильный ответ второй - функция КОЛИЧЕСТВО, и в ней нужно специфицировать, по каким полям считать количество (в примере по всем).

8 комментариев:

  1. Вопрос 7.35 Выделен ответ № 3, а в пояснении "правильный ответ № 1". Так какой правильный?

    ОтветитьУдалить
    Ответы
    1. Правильный ответ третий, проверено на edu.1c.ru, пояснение подтверждает правильность третьего ответа

      Удалить
  2. вопрос 7.15. Верны ответы 2 и 3. Не согласен. На закладке "Объединения/Псевдонимы" можно менять порядок полей, а не порядок записей.

    ОтветитьУдалить
    Ответы
    1. Присоединяюсь. Тоже непонятен это момент. Порядок полей и порядок записей это как-бы совершенно разные вещи. Я бы на тестировании ответил, что верный вариант 2, но теперь вот вопрос...

      Удалить
    2. Возможно, ответ 2 и 3, потому что на закладке Объединения можно менять порядок запросов, и это влечет за собой изменение порядка записей

      Удалить
    3. ё-моё... а ведь точно! наколоть хотели каверзным вопросом

      Удалить
  3. варианты вопроса 7.04 немного изменились:

    7.4 Для повышения скорости выполнения запроса с условием (в случае, когда
    это не противоречит прикладной логике) необходимо:
    1. Задать соответствующий параметр реальной таблицы
    2. Задать соответствующий параметр виртуальной таблицы
    3. Вместо задания параметров у реальной или виртуальной таблицы использовать отбор,
    заданный конструкцией языка запросов "ГДЕ"
    4. Вместо задания параметров у реальной или виртуальной таблицы использовать отбор,
    заданный конструкцией языка запросов "ИМЕЮЩИЕ"
    5. Верны ответы 1 и 2

    ответ тот же - вариант 2, проверено в официальном тренажере 1с

    ОтветитьУдалить
  4. Этот комментарий был удален автором.

    ОтветитьУдалить