Select) - - - - 1 - - - 8

У даній статті розглянуто пропозицію ВИБРАТИ, його місце і роль в мові запитів 1С: Підприємство 8.

Пропозиція ВИБРАТИ є єдиним обов'язковим елементом будь-якого запиту, тому вивчення мови запитів починається саме з нього. Основна мета пропозиції ВИБРАТИ полягає в тому, щоб вказати поля вибірки, які повинні потрапити в результат запиту.

Нижче розглянуті наступні теми:

Місце пропозиції ВИБРАТИ в структурі запиту

Структуру запиту 1С: Підприємство 8 можна представити у вигляді такої схеми:

Select) - - - - 1 - - - 8

З наведеної схеми можна зробити наступні висновки:

  • У будь-який запит має бути хоча б одне речення ВИБРАТИ.
  • У списку полів вибірки має бути опис хоча б одного поля вибірки, яке в загальному випадку є вираженням.

Приклади запитів з пропозицією ВИБРАТИ

1. Вибірка всіх полів (крім віртуальних) з таблиць

Замість перерахування списку полів можна вказати зірочку ( "*") і тоді в результат запиту потраплять всі поля таблиці-джерела, крім віртуальних. наприклад:

// звернення до таблиці довідника
ВИБРАТИ * З Справочнік.Номенклатура

// звернення до таблиці документа
ВИБРАТИ * З Документ.РасходнийКассовийОрдер

// звернення до основної таблиці регістра накопичення
ВИБРАТИ * З РегістрНакопленія.ПродажіКомпаніі

// звернення до віртуальної таблиці регістра накопичення
ВИБРАТИ * З РегістрНакопленія.ПродажіКомпаніі.Обороти

Зауваження: У мові запитів є можливість обійтися без пропозиції ІЗ, якщо опис поля містить повний шлях до нього із зазначенням таблиці-джерела, наприклад,

// вибірка всіх невіртуальних полів з таблиці довідника
ВИБРАТИ Справочнік.Номенклатура. *

// вибірка певних полів з таблиці довідника
ВИБРАТИ
Справочнік.Номенклатура.Код,
Справочнік.Номенклатура.Наіменованіе,
Справочнік.Номенклатура.Представленіе // віртуальне поле

2. Вибірка тільки певних полів з таблиць

Найпростішим способом є перерахування кількох полів з таблиці-джерела запиту, тоді тільки ці поля потраплять в результат запиту.

// звернення до таблиці довідника
ВИБРАТИ Код, Найменування, Артикул, СтранаПроісхожденія
З Справочнік.Номенклатура

// звернення до таблиці документа
ВИБРАТИ Номер, Дата, ПодразделеніеКомпаніі, СуммаДокумента
З Документ.РасходнийКассовийОрдер

3. Віртуальні поля

Деякі поля в таблицях-джерелах віртуальні, наприклад, поле «Подання» для таблиці довідника і документа, або поле «момент часу» для документа. Це означає, що вони не зберігаються в базі даних, а генеруються «на льоту». Віртуальні поля не включаються в результат запиту, коли замість списку полів вказана зірочка ( "*"), їх потрібно вказувати явно, наприклад «ВИБРАТИ *, Подання З Справочнік.Товари». Таке рішення було прийнято для прискорення виконання класичного запиту «ВИБРАТИ * З. ». В цьому випадку не потрібно генерувати уявлення для елементів довідників і документів, отже запити будуть виконуватися швидше.

// звернення до таблиці довідника (вибрати два звичайних поля і одне віртуальне)
ВИБРАТИ Код, Найменування, Подання
З Справочнік.Номенклатура

// звернення до таблиці документа (вибрати все невіртуальні поля і два віртуальних)
ВИБРАТИ *, Подання, момент часу
З Документ.РасходнийКассовийОрдер

4. разименованія посилальних полів

В 1С: Підприємство 8 допускається звернення до властивостей об'єктів через одну або кілька точок, наприклад, «Номенклатура.Поставщік.Страна». Це дозволяє значно спростити написання запитів. Завжди використовуйте разименованія полів там, де це можливо, щоб не ускладнювати запити зайвими конструкціями.

5. Псевдоніми полів (ключове слово ЯК / AS)

Для поля може бути призначений псевдонім за допомогою ключового слова ЯК. Це дозволяє звертатися до поля за псевдонімом при вказівці підсумків і порядку сортування, а також при обході вибірки з результату запиту, наприклад:

Ключове слово ЯК є необов'язковим, тобто вищенаведений запит можна записати так:

6. Звернення до табличній частині як вкладеної таблиці

У цьому випадку поле результату запиту матиме тип РезультатЗапроса, тобто містити вкладений результат запиту, сформований на основі табличній частині.

// отримання табличній частині як вкладеної таблиці результату запиту
ВИБРАТИ Номер, Дата, Товари
З Документ.АвансовийОтчет

// отримання кількох колонок табличній частині як вкладеної таблиці
ВИБРАТИ Номер, Дата, Товари. (Номенклатура, Кількість)
З Документ.АвансовийОтчет

Зверніть увагу, що якщо виконати наступний запит, то в результаті запиту буде дві вкладені таблиці: в першій - одна колонка Номенклатура, а в другій - колонка Кількість:

ВИБРАТИ Номер, Дата, Товари.Номенклатура, Товари.Колічество
З Документ.АвансовийОтчет

7. Звернення до табличній частині як таблиці-джерела

При такому способі звернення ім'я вкладеної таблиці фігурує в назві таблиці-джерела (пропозиція ІЗ або повні імена полів) і в результаті запиту немає вкладених таблиць.

// вибірка всіх полів з табличній частині
ВИБРАТИ * З Документ.АвансовийОтчет.Товари

// вибірка певних полів з табличній частині
ВИБРАТИ Номенклатура, Кількість, Ціна, Сума
З Документ.АвансовийОтчет.Товари

// завдання псевдонімів для полів табличній частині
ВИБРАТИ Документ.АвансовийОтчет.Товари. (Номенклатура, Сума ЯК СуммаПоСтроке)

8. Ключове слово РІЗНІ / DISTINCT

Ключове слово РІЗНІ дозволяє залишити в результаті запиту тільки відрізняються рядки.

ВИБРАТИ РІЗНІ Відповідальний
З Документ.АвансовийОтчет

9. Ключове слово ПЕРШІ / TOP

Дане ключове слово дозволяє обмежити вибірку декількома першими записами. Часто це ключове слово застосовується в комбінації з сортуванням (пропозиція УПОРЯДОЧИТЬ ПО).

ВИБРАТИ ПЕРШІ 10 Номер, Дата, СуммаДокумента
З Документ.АвансовийОтчет
УПОРЯДОЧИТЬ ПО СуммаДокумента спадання

10. Вирази в списку полів вибірки

Як опису поля вибірки може бути вираз, що використовує такі елементи:

  • Літерали типів: число, рядок (в лапках), булево (значення Істина і Брехня), Null, Не визначено. [Зауваження. Щоб вказати літерал типу "дата", можна скористатися ключовим словом мови запитів ДАТАВРЕМЯ або передати дату через параметр запиту].
  • Параметри запиту (зі знаком )
  • ім'я поля
  • Ім'я табличній частині
  • Розіменування посилального поля (через одну або кілька точок)
  • Арифметичні операції (+, -, /, *) [Зауваження. операція отримання залишку% в мові запитів не підтримує]
  • Операція конкатенації рядків (+) [Зауваження. операцію конкатенації не можна використовувати для віртуальних полів]
  • Вбудовані функції мови запитів (ДЕНЬ, МІСЯЦЬ, РІК і т.д.)
  • Агрегатні функції (СУМА, МІНІМУМ, МАКСИМУМ, СЕРЕДНЯ, КІЛЬКІСТЬ)
  • Операція вибору ВИБІР / CASE - дозволяє отримати одне з можливих значень відповідно до вказаних умов.
  • Операція приведення типів ВИРАЗИТИ / CAST

Нижче наведено кілька прикладів з виразами в списку полів вибірки:

// арифметичні операції
ВИБРАТИ
номенклатура,
Кількість * Ціна ЯК РасчСумма1,
Сума / кількість ЯК РасчСумма2
З Документ.АвансовийОтчет.Товари

// конкатенація рядків
ВИБРАТИ "Співробітник" + Ответственний.Наіменованіе
З Документ.АвансовийОтчет

// агрегатні функції
ВИБРАТИ
ПодразделеніеКомпаніі,
СУМА (СуммаДокумента),
МАКСИМУМ (СуммаДокумента),
МІНІМУМ (СуммаДокумента),
СЕРЕДНЯ (СуммаДокумента),
КІЛЬКІСТЬ (*)
З Документ.АвансовийОтчет
Згруповані за ПодразделеніеКомпаніі

// операція вибору
ВИБРАТИ Найменування,
ВИБІР
КОЛИ СтранаПроісхожденія.Наіменованіе = "КИТАЙ" ТОДІ "Азія"
КОЛИ СтранаПроісхожденія.Наіменованіе = "ТАЙВАНЬ" ТОДІ "Азія"
КОЛИ СтранаПроісхожденія.Наіменованіе = "США" ТОДІ "Америка"
КОЛИ СтранаПроісхожденія.Наіменованіе = "КАНАДА" ТОДІ "Америка"
ІНАКШЕ "Інше"
КІНЕЦЬ ЯК Країна
З Справочнік.Номенклатура

Таким чином, пропозиція ВИБРАТИ є найважливішим елементом мови запитів, оскільки дозволяє вказати необхідні поля результату запиту. Гнучкі можливості пропозиції ВИБРАТИ дозволяють використовувати мову запитів для вирішення найрізноманітніших завдань.

Схожі статті