Язык запросов 1с фигурные скобки + видео обзор

Содержание
  1. Что обозначают фигурные скобки в запросе?
  2. 1С СКД. Параметры и необязательные параметры.
  3. Параметры в запросе 1С СКД.
  4. Расширение языка запросов для СКД.
  5. Выбрать.
  6. Параметры виртуальных таблиц.
  7. Особенности настройки страницы “Параметры” СКД.
  8. Страница “Параметры” блока “Настройки” страницы “Настройки”.
  9. Параметры СКД на форме.
  10. Резюме.
  11. Система компоновки данных (СКД). Часть 2.
  12. Содержание
  13. Набор данных — запрос.
  14. Параметры виртуальных таблиц.
  15. Расширение языка запросов.
  16. Как работает автозаполнение доступных полей схемы компоновки данных?
  17. Как самостоятельно заполнить поля схемы компоновки данных?
  18. 1С запрос фигурные скобки
  19. Выбрать.
  20. Параметры виртуальных таблиц.
  21. Содержание
  22. Набор данных — запрос.
  23. Параметры виртуальных таблиц.
  24. Расширение языка запросов.
  25. Как работает автозаполнение доступных полей схемы компоновки данных?
  26. Как самостоятельно заполнить поля схемы компоновки данных?
  27. Видео

Что обозначают фигурные скобки в запросе?

Фигурными скобками в запросе выделяются конструкции, предназначенные для обработки построителем отчета.

Существует два способа, с помощью которых построитель отчета может определить, какими настройками он может «управлять».

Если в тексте запроса нет специальных указаний построителю отчета, он сформирует список настроек по умолчанию при вызове метода ЗаполнитьНастройки(). Если же разработчик хочет определить собственный состав настроек, отличный от формируемого по умолчанию, он должен вставить в текст запроса специальные указания для построителя отчета, которые и оформляются фигурными скобками.

В частности, разработчик может указать, какие поля сможет выбирать пользователь (конструкция ВЫБРАТЬ), на какие поля он сможет накладывать ограничения (конструкция ГДЕ), какие поля могут быть использованы для сортировки (конструкция УПОРЯДОЧИТЬ ПО) и по каким полям могут быть рассчитаны итоги (конструкция ИТОГИ ПО).

В следующем примере пользователь сможет управлять размещением измерений Номенклатура и Склад в строках или колонках результирующей таблицы:

ПостроительОтчета.Текст =
«ВЫБРАТЬ
| ОстаткиТоваровКомпанииОстаткиИОбороты.Номенклатура КАК Номенклатура,
| ОстаткиТоваровКомпанииОстаткиИОбороты.Номенклатура.Представление,
| ОстаткиТоваровКомпанииОстаткиИОбороты.СкладКомпании КАК Склад,
| ОстаткиТоваровКомпанииОстаткиИОбороты.СкладКомпании.Представление,
| ОстаткиТоваровКомпанииОстаткиИОбороты.Заказ КАК Заказ,
| ОстаткиТоваровКомпанииОстаткиИОбороты.Заказ.Представление,
| ОстаткиТоваровКомпанииОстаткиИОбороты.ЦенаВРознице КАК Цена,
| ОстаткиТоваровКомпанииОстаткиИОбороты.ХарактеристикаНоменклатуры КАК Характеристика,
| ОстаткиТоваровКомпанииОстаткиИОбороты.ХарактеристикаНоменклатуры.Представление,
| ОстаткиТоваровКомпанииОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
| ОстаткиТоваровКомпанииОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
| ОстаткиТоваровКомпанииОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
| ОстаткиТоваровКомпанииОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
|ИЗ
| РегистрНакопления.ОстаткиТоваровКомпании.ОстаткиИОбороты КАК ОстаткиТоваровКомпанииОстаткиИОбороты
|
| < ИТОГИ ПО Н оменклатура, Склад >
|
|ИТОГИ СУММА(КоличествоНачальныйОстаток), СУММА(КоличествоПриход), СУММА(КоличествоРасход), СУММА(КоличествоКонечныйОстаток) ПО
| ОБЩИЕ»;

Источник

1С СКД. Параметры и необязательные параметры.

В данной статье мы рассмотрим практически все возможности и множество нюансов, которые относятся к параметрам в Системе Компоновки Данных 1С (в сокращении — СКД). Параметры в запросе СКД, фигурные скобочки в запросе СКД — оно же Расширение языка запросов для СКД, особенности настройки страницы “Параметры” СКД, вывод параметров на форму, программная установка параметров, мягкие и жесткие параметры.

Параметры в запросе 1С СКД.

Параметры могут использоваться практически в любом месте запроса и выполнять самые различные функции.

Параметры обозначаются знаком & после которого следует имя параметра.

Параметр может быть полем запроса, частью произвольного выражения поля запроса, условием для виртуальной таблицы, частью выражения в отборе запроса и так далее:

При построении запроса конструктором на вкладке “Условия” если не стоит галочка “Произвольное”, то конструктор считает что в правом значении параметр и он записывается без символа &.

Язык запросов 1с фигурные скобки

Таким образом этот блок настраивается в конструкторе.

Если значение параметра не задано, то построение СКД будет невозможно и будет выдана ошибка, поэтому такие параметры называют “обязательными” или “жесткими”.

Расширение языка запросов для СКД.

Выбрать.

Этот блок располагается в запросе типа выборка данных пакета запросов СКД в первом запросе объединения между перечнем полей и “ИЗ” и заключается в фигурные скобки.

В этом блоке мы перечисляем поля, которые пользователь может выбирать для вывода, группировки и упорядочивания. Конструкция «.*» в параметре “Марка.*” позволяет выбирать для вывода, группировки и упорядочивания дочерние поля значения, например, Марка.Код. Слово “КАК” позволяет задать псевдоним, например, “Ссылка КАК Машина”. Поля в этом блоке попадают в перечень полей набора, даже если отключено автозаполнение. Если автозаполнение включено, то упомянутые поля попадают в соответствии с тем, как они настроены расширением кода, то есть если ссылочное поле без конструкции “.*” дочерние поля доступны не будут, если указан псевдоним — именно он попадет в перечень полей набора.

Язык запросов 1с фигурные скобки

Таким образом этот блок настраивается в конструкторе.

При автоматическом заполнении полей набора данных, для не включенных в блок расширения “ВЫБРАТЬ”, добавляются все поля списка выборки и их дочерние поля. Они становятся доступными для выбора, упорядочивания, группировки, отбора. Также добавляются поля, которые упомянуты в параметре “Условия” виртуальных таблиц как доступные для отбора.

Отбор, установленный в пользовательских настройках, будет действовать не только на основной запрос, но и на все запросы в пакете. Но это не всегда соответствует логике отчета, к примеру, если помимо отобранной номенклатуры и сумм по ней нужно выводить общую сумму продаж для сравнения. В таких случаях нам нужны специфические отборы в каждом запросе пакета.

Блок расширения “ГДЕ” может быть расположен после или вместо обычного блока “ГДЕ” в любом запросе, подзапросе, запросах объединения и заключается в фигурные скобки. Для присвоения отбору псевдонима используется конструкция “КАК”. Псевдоним нужно использовать чтобы отбор производился конструкцией расширения языка запросов, но не происходил автоматически по наименованию поля.

Если автозаполнение полей набора отключено, поля из этого блока попадают в перечень полей набора доступными только для отбора, использование дочерних полей зависит от наличия конструкции “.*”.

Если автозаполнение включено, и это поле включено в блок расширения “ВЫБРАТЬ” тогда настройки обоих блоков объединяются. Если не включено в “ВЫБРАТЬ” то поля попадают доступными для вывода, группировки, отбора и упорядочивания.

Язык запросов 1с фигурные скобки

В случае если нужно дополнительно установить какое то ограничение полю, то можно вручную установить галочку в соответствующее поле перечня полей набора данных СКД.

Параметры в блоке «ГДЕ» не обязательны для заполнения, поэтому эти параметры называют “необязательными” или “мягкими”.

Также в блоке “ГДЕ” вместо параметра может быть произвольное выражение с использованием конструкции ВЫБОР или параметров со страницы “Параметры” СКД. Правда в последнем случае вид сравнения необходимо указывать конкретно.

Нужно с осторожностью использовать вид сравнения МЕЖДУ поскольку:

Если параметры НачалоПериода и КонецПериода не будут заданы, то система получит документы за весь период.

Если параметры НачалоПериода и КонецПериода будут заданы, то система получит документы за указанный период.

Если какой-то один из параметров не будет задан, то система выдаст ошибку.

Один из вариантов решения это разбить МЕЖДУ на два условия чтобы система не выдавала ошибку в случае одного незаполненного параметра.

Это же замечание относится к любым выражением с использованием нескольких параметров.

Параметры виртуальных таблиц.

В параметрах виртуальных таблиц в отличие от предыдущих блоков, каждый параметр заключается в фигурные скобки. В полях относящихся к периоду название параметра ставится с &. Пример &ДатаНачала. В поле “Условие” параметры оформляются аналогично блоку “ГДЕ”.

Поведение параметров из поля “Условие” при снятии или установке галочки “Автозаполнение” также аналогично блоку «ГДЕ».

Параметры из полей периода попадают на страницу “Параметры” СКД. Если автозаполнение включено и в поле периода параметр не вписан, параметры с именем поля периода будут автоматически созданы на странице “Параметры” СКД.

Язык запросов 1с фигурные скобки

Таким образом, эти параметры заполняются в конструкторе запроса. Для открытия формы “Параметры виртуальной таблицы” нужно выбрать виртуальную таблицу в списке таблиц и нажать выделенную синим кнопку. Также тут у таблиц есть булевый реквизит “Обязательная” и числовой реквизит “Номер группы”. Если признак обязательности таблицы не установлен, то она будет добавляться в результирующий запрос только в случае, когда хотя бы одно поле из нее задействовано в компоновке. Номер группы заполняется для необязательных таблиц и обозначает группу таблиц, которые будут добавлены в результирующий запрос только, когда из этой группы таблиц задействовано хотя бы одно поле.

В параметрах виртуальных таблиц возможно совместное использование “жестких” параметров запросов и “мягких” параметров компоновки данных.

В этом примере если в настройках установлено значение параметра &НачалоПериода, то будет использоваться его значение. В противном случае в качестве значения параметра виртуальной таблицы будет использоваться значение “жесткого” параметра “&Начало”.

Если автозаполнение включено и в поля периода не вписаны “мягкие” параметры компоновки данных то параметры с именем поля периода будут автоматически созданы на странице “Параметры” СКД и текст запроса:

будет соответствовать следующему:

В этом случае “мягкие” параметры также будут иметь приоритет над “жесткими”.

Особенности настройки страницы “Параметры” СКД.

Язык запросов 1с фигурные скобки

Обзорный вид страницы.

Язык запросов 1с фигурные скобки

На эту страницу автоматически добавляются все параметры из запроса. Можно добавлять свой параметр в для использования его в вычисляемых полях например.

Строка параметра имеет следующие реквизиты:

Имя — это имя параметра, с помощью которого к его значению можно обращаться в тексте запроса, в вычисляемых полях и других местах где доступны выражения.

Заголовок — название, выводимое пользователю.

Тип — определяет тип параметра. Иногда при выборе дат периода, пользователю не нужно указывать время. Тогда нажав на “…” можно указать состав даты — Дата.

Язык запросов 1с фигурные скобки

Таким же образом можно указать формат числа для численного параметра и длину строки для строкового.

Доступные значения — определяет перечень доступных значений. Представляет собой список значений со стандартными полями — значение и представление, где значение типа параметра. Для ссылочного типа доступны для выбора только предопределенные данные.

Доступен список значений — определяет доступность параметру принимать значение “список значения”.

Значение — предустановленное значение параметра. Типа параметра. Для ссылочного типа доступны для выбора только предопределенные данные.

Выражение — выражение, значение которого примет параметр. Что примечательно здесь могут использоваться как функции встроенного языка запросов, так и функции встроенного языка программирования и даже функции из общих модулей. К примеру, параметру ТекДата присваивается значение функции встроенного языка программирования ТекущаяДата().

Также в примере к реквизиту “Тип” можно было в выражениях использовать функции встроенного языка запросов, особенность применения этих функций в данном месте такова, что строковые параметры функций надо брать в кавычки.

и в запросе можно было бы писать проще поскольку в параметрах уже будет содержаться начало и конец периода:

Язык запросов 1с фигурные скобки

Иногда, для повышения удобства пользователю для выбора периода лучше дать не два поля с типом Дата, а одно поле с типом Стандартный Период. Тогда, к примеру, создаем три параметра: “Период” с типом СтандартныйПериод, “ПериодНачало” и “ПериодОкончание” с типом Дата. Первый параметр без ограничения доступности. Вторые с ним. В выражение “ПериодНачало” пишем “&Период.ДатаНачала”, в “ПериодОкончания” — “&Период.ДатаОкончания”.

Язык запросов 1с фигурные скобки

Даты начала и конца стандартного периода также содержат и время. ДатаНачала имеет время 00:00:00, а ДатаОкончания 23:59:59. Получится что пользователь выберет стандартный период в “Период” а разработчик будет использовать корректные “ПериодНачало” и “ПериодОкончание”.

Язык запросов 1с фигурные скобки

Параметр функциональной опции — используется в механизме функциональных опций.

Включать в доступные поля — включает параметр в доступные поля для выбора в настройках.

Ограничение доступности — ограничивает возможность изменения значения параметра пользователем.

Запрещать незаполненные значения — если установлено и значение параметра не заполнено — отчет не сформируется и выдаст ошибку.

Использование — устанавливает использование параметра. Если установлено Авто и параметр используется в запросе или выражениях, а пользователь перед формированием не установит галочку около параметра — отчет при формировании выдаст ошибку. Пользователь может установить эту галочку непосредственно, или она установится автоматически при изменении значения параметра. Если установлено Всегда, то этой проверки на то, что пользователь заполнил этот параметр — не будет.

Параметры редактирования — содержит настройки редактирования как у поля формы.

Язык запросов 1с фигурные скобки

Страница “Параметры” блока “Настройки” страницы “Настройки”.

Язык запросов 1с фигурные скобки

В настройках варианта мы можем установить галочку “Отображать недоступные параметры”, это можно использовать если для разных вариантов мы хотим использовать разный набор параметров.

У параметров в табличной части мы можем установить значение по умолчанию для варианта, включить использование по умолчанию установив галочку слева. Нажав на кнопку, расположенную справа внизу, мы открываем окно пользовательских настроек параметра.

Язык запросов 1с фигурные скобки

В пользовательских настройках мы можем включить параметр в пользовательские настройки. Установим режим редактирования обычный. Тогда он будет доступен в форме, вызываемой кнопкой “Настройки…”.

Язык запросов 1с фигурные скобки

Если Режим редактирования установить Быстрый доступ, то параметр появится на форме.

Язык запросов 1с фигурные скобки

Если у параметра “Период” представление заполнить строкой “ПеРиОд”, то вместо название будет показано содержания поля представление.

Параметры СКД на форме.

Если у отчета СКД нет формы, то платформа создаст автоматическую, на которой будут табличный документ результата, кнопки управления и быстрые пользовательские настройки.

Язык запросов 1с фигурные скобки

Можно создать свою форму для отчета и вывести на нее табличное поле со всеми пользовательскими настройками. Вот так:

Язык запросов 1с фигурные скобки

Для этого в созданной форме в конфигураторе вытаскиваем на форму Пользовательские настройки из Компоновщика отчета.

Язык запросов 1с фигурные скобки

В некоторых случаях параметр не прост, и для его расчета нужен некий алгоритм с циклом или ветвлениями. К примеру если отчет формируем в понедельник то в отчете сравниваются продажи по дням позапрошлой и прошлой недели, а в остальные дни недели сравниваются продажи по дням прошлой и текущей недели. Получается у нас от значения дня недели текущего дня зависит сразу четыре параметра: &НачалоПрошлойНедели, &КонецПрошлойНедели, &НачалоТекущейНедели и &КонецТекущейНедели. А еще нам надо дать возможность пользователю формировать отчет как будто он сформирован вчера или неделю назад. В таком случае мы создаем реквизит формы ТекДата типа Дата. Выводим его на форму. В событии ПриИзменении() пишем.

Таким образом можно программно менять параметры из формы.

Резюме.

Параметры это ключевой инструмент для управления отчетом. Использование параметров дает возможность решить множество прикладных задач, таких как калькуляция на основе информации в базе и значений введенных интерактивно для конкретной калькуляции и многих других. В данной статье рассмотрены практически все относящиеся к параметрам механизмы и особенности. Рамках статьи не рассмотрен блок “Характеристики” Расширения языка запросов для СКД поскольку он не касается параметров. Не рассмотрена настройка параметра “Параметр функциональной опции” поскольку ее описание лучше включить в статью по функциональным опциям.

Источник

Система компоновки данных (СКД). Часть 2.

Доброго времени суток, мои читатели! Сегодня мы с вами продолжим рассматривать основы системы компоновки. В первой части этой серии статей вы узнали, что такое СКД и познакомились с основными составляющими СКД. Также рассмотрели входные данные для построения отчёта и узнали основные этапы выполнения отчета на СКД. Кроме того у многих была возможность проверить свои знания, пройдя небольшой тест. А теперь можете взглянуть на содержание статьи и увидеть, что будет рассмотрено в ней.

Содержание

Набор данных — запрос.

Параметры виртуальных таблиц.

Фигурные скобки указывают на расширение языка запросов компоновки данных. Также это указывает на то, что этот параметр является необязательным. Это означает, что если он не будет определён в схеме компоновки данных, то остатки будут получены на текущую дату.

Расширение языка запросов.

Это специальные инструкции, которые заключены в фигурные скобки в тексте запроса. В этих инструкциях указываются поля и параметры, которыми можно оперировать при настройке варианта отчёта. Данные из фигурных скобок будут присутствовать в схеме компоновки даже в том случае, когда флажок «Автозаполнение» отключен.

Когда создаётся набор данных запрос, по умолчанию происходит автоматическое заполнение доступных полей схемы компоновки данных на основании созданного запроса (флажок «Автозаполнение» установлен на закладке «Наборы данных»).

Как работает автозаполнение доступных полей схемы компоновки данных?

Если флажок «Автозаполнение» снят, то поля схемы компоновки данных очищаются, но остаются параметры, заключённые в фигурные скобки в тексте запроса.

Как самостоятельно заполнить поля схемы компоновки данных?

Снимаем флажок «Автозаполнение» на закладке «Наборы данных».

Нажимаем на кнопку «Конструктор запроса…». Сформируем следующий запрос:

На вкладке «Таблицы» можем задать параметры виртуальных таблиц для всех таблиц.

Теперь на вкладке «Компоновка данных» выбираем закладку «Поля». Здесь задаём поля выборки, которые
будут представлены в схеме компоновки.

Поле «И..» означает, что будут включены в выборку дочерние записи
полей сложного типа, таких как справочники и документы и т.п. Если поле примитивного типа, такого как число, то поставить флаг в поле «И..» будет невозможно.

Выберем два поля «Номенклатура» и «Количество». Для поля «Номенклатура» установим флаг «И..»,
чтобы выбирались дочерние записи. Получиться следующий запрос:

В новом запросе, в фигурных скобках, появилась ещё одна секция ВЫБРАТЬ — это текст расширения, который указывает на поля, которые будут доступны в компоновке. Поле «Номенклатура.*» указывает, что будет доступно поле «Номенклатура» и её дочерние реквизиты, такие как «Код», «Наименование» и т.п. Итак, мы заполнили поля компоновки самостоятельно.

Но сейчас мы не можем использовать поля в условиях компоновки. Если зайти на закладку «Настройки» и выбрать вкладку «Отбор», то нельзя установить условия ни на одно поле, которое мы выбрали в предыдущем пункте. Почему?

Наложение условий на параметры виртуальной таблицы также нужно указывать на вкладке «Компоновка данных» Конструктора запроса. В левом верхнем углу нажимаем кнопку для вызова диалога «Параметры виртуальной таблицы»
(это серая квадратная кнопка с изображением шестерёнки на фоне маленькой таблицы). В поле «Условие» диалогового окна пишем: Номенклатура. Теперь в тексте запроса набора данных в параметрах виртуальной таблицы этот параметр «Номенклатура» появиться в окружении фигурных скобок:

В обычном языке запросов указание параметра выглядит так: Номенклатура = &Номенклатура. Но в расширении языка запросов это записывается по-другому. Указывается только название поля. Здесь мы не указываем операцию равенства, неравенства или в иерархии, так как пользователь сам будет выбирать нужную операцию в своих настройках.

На вкладке «Компоновка данных» Конструктора запроса мы видим ёще одну закладку, «Условия». Она нужна, чтобы указать в расширении языка запросов условия на предложение ГДЕ. Выберем поле «Количество». Теперь это поле доступно в условиях на закладке «Настройки» — «Отбор». А в тексте запроса появились новые строчки, заключенные в фигурные скобки.

Если отбор по полю количество будет указан, то в итоговый запрос будет вставлено это предложение. Где вид условия и значение сравнения будет определяться по настройке варианта отчёта.

Итак, я думаю, что на сегодня материала достаточно. Если остались непонятные моменты, то не стесняйтесь спрашивать, ведь для этого и предусмотрена возможность комментирования. Уже подготовлен тест для закрепления этого материала, так что пройдите его, чтобы улучшить знания!

А в третей части этой серии уроков мы рассмотрим функции языка выражений СКД, поговорим об особенностях работы системы компоновки, а также разберем основные настройки полей компоновки. Успехов, в понимании этого нелегкого материала!

В конце статьи можете посмотреть небольшое видео (7 минут), которое поможет вам еще эффективнее решать задачи по СКД:

Также у вас есть возможность скачать книгу по основам СКД

Источник

1С запрос фигурные скобки

В данной статье мы рассмотрим практически все возможности и множество нюансов, которые относятся к параметрам в Системе Компоновки Данных 1С (в сокращении — СКД). Параметры в запросе СКД, фигурные скобочки в запросе СКД — оно же Расширение языка запросов для СКД, особенности настройки страницы “Параметры” СКД, вывод параметров на форму, программная установка параметров, мягкие и жесткие параметры.

Параметры могут использоваться практически в любом месте запроса и выполнять самые различные функции.

Параметры обозначаются знаком & после которого следует имя параметра.

Параметр может быть полем запроса, частью произвольного выражения поля запроса, условием для виртуальной таблицы, частью выражения в отборе запроса и так далее:

При построении запроса конструктором на вкладке “Условия” если не стоит галочка “Произвольное”, то конструктор считает что в правом значении параметр и он записывается без символа &.

Язык запросов 1с фигурные скобки

Таким образом этот блок настраивается в конструкторе.

Если значение параметра не задано, то построение СКД будет невозможно и будет выдана ошибка, поэтому такие параметры называют “обязательными” или “жесткими”.

Выбрать.

Этот блок располагается в запросе типа выборка данных пакета запросов СКД в первом запросе объединения между перечнем полей и “ИЗ” и заключается в фигурные скобки.

В этом блоке мы перечисляем поля, которые пользователь может выбирать для вывода, группировки и упорядочивания. Конструкция «.*» в параметре “Марка.*” позволяет выбирать для вывода, группировки и упорядочивания дочерние поля значения, например, Марка.Код. Слово “КАК” позволяет задать псевдоним, например, “Ссылка КАК Машина”. Поля в этом блоке попадают в перечень полей набора, даже если отключено автозаполнение. Если автозаполнение включено, то упомянутые поля попадают в соответствии с тем, как они настроены расширением кода, то есть если ссылочное поле без конструкции “.*” дочерние поля доступны не будут, если указан псевдоним — именно он попадет в перечень полей набора.

Язык запросов 1с фигурные скобки

Таким образом этот блок настраивается в конструкторе.

При автоматическом заполнении полей набора данных, для не включенных в блок расширения “ВЫБРАТЬ”, добавляются все поля списка выборки и их дочерние поля. Они становятся доступными для выбора, упорядочивания, группировки, отбора. Также добавляются поля, которые упомянуты в параметре “Условия” виртуальных таблиц как доступные для отбора.

Отбор, установленный в пользовательских настройках, будет действовать не только на основной запрос, но и на все запросы в пакете. Но это не всегда соответствует логике отчета, к примеру, если помимо отобранной номенклатуры и сумм по ней нужно выводить общую сумму продаж для сравнения. В таких случаях нам нужны специфические отборы в каждом запросе пакета.

Блок расширения “ГДЕ” может быть расположен после или вместо обычного блока “ГДЕ” в любом запросе, подзапросе, запросах объединения и заключается в фигурные скобки. Для присвоения отбору псевдонима используется конструкция “КАК”. Псевдоним нужно использовать чтобы отбор производился конструкцией расширения языка запросов, но не происходил автоматически по наименованию поля.

Если автозаполнение полей набора отключено, поля из этого блока попадают в перечень полей набора доступными только для отбора, использование дочерних полей зависит от наличия конструкции “.*”.

Если автозаполнение включено, и это поле включено в блок расширения “ВЫБРАТЬ” тогда настройки обоих блоков объединяются. Если не включено в “ВЫБРАТЬ” то поля попадают доступными для вывода, группировки, отбора и упорядочивания.

Язык запросов 1с фигурные скобки

В случае если нужно дополнительно установить какое то ограничение полю, то можно вручную установить галочку в соответствующее поле перечня полей набора данных СКД.

Параметры в блоке «ГДЕ» не обязательны для заполнения, поэтому эти параметры называют “необязательными” или “мягкими”.

Также в блоке “ГДЕ” вместо параметра может быть произвольное выражение с использованием конструкции ВЫБОР или параметров со страницы “Параметры” СКД. Правда в последнем случае вид сравнения необходимо указывать конкретно.

Нужно с осторожностью использовать вид сравнения МЕЖДУ поскольку:

Если параметры НачалоПериода и КонецПериода не будут заданы, то система получит документы за весь период.

Если параметры НачалоПериода и КонецПериода будут заданы, то система получит документы за указанный период.

Если какой-то один из параметров не будет задан, то система выдаст ошибку.

Один из вариантов решения это разбить МЕЖДУ на два условия чтобы система не выдавала ошибку в случае одного незаполненного параметра.

Это же замечание относится к любым выражением с использованием нескольких параметров.

Параметры виртуальных таблиц.

В параметрах виртуальных таблиц в отличие от предыдущих блоков, каждый параметр заключается в фигурные скобки. В полях относящихся к периоду название параметра ставится с &. Пример &ДатаНачала. В поле “Условие” параметры оформляются аналогично блоку “ГДЕ”.

Поведение параметров из поля “Условие” при снятии или установке галочки “Автозаполнение” также аналогично блоку «ГДЕ».

Параметры из полей периода попадают на страницу “Параметры” СКД. Если автозаполнение включено и в поле периода параметр не вписан, параметры с именем поля периода будут автоматически созданы на странице “Параметры” СКД.

Язык запросов 1с фигурные скобки

Таким образом, эти параметры заполняются в конструкторе запроса. Для открытия формы “Параметры виртуальной таблицы” нужно выбрать виртуальную таблицу в списке таблиц и нажать выделенную синим кнопку. Также тут у таблиц есть булевый реквизит “Обязательная” и числовой реквизит “Номер группы”. Если признак обязательности таблицы не установлен, то она будет добавляться в результирующий запрос только в случае, когда хотя бы одно поле из нее задействовано в компоновке. Номер группы заполняется для необязательных таблиц и обозначает группу таблиц, которые будут добавлены в результирующий запрос только, когда из этой группы таблиц задействовано хотя бы одно поле.

В параметрах виртуальных таблиц возможно совместное использование “жестких” параметров запросов и “мягких” параметров компоновки данных.

В этом примере если в настройках установлено значение параметра &НачалоПериода, то будет использоваться его значение. В противном случае в качестве значения параметра виртуальной таблицы будет использоваться значение “жесткого” параметра “&Начало”.

Если автозаполнение включено и в поля периода не вписаны “мягкие” параметры компоновки данных то параметры с именем поля периода будут автоматически созданы на странице “Параметры” СКД и текст запроса:

будет соответствовать следующему:

В этом случае “мягкие” параметры также будут иметь приоритет над “жесткими”.

Язык запросов 1с фигурные скобки

Обзорный вид страницы.

Язык запросов 1с фигурные скобки

На эту страницу автоматически добавляются все параметры из запроса. Можно добавлять свой параметр в для использования его в вычисляемых полях например.

Строка параметра имеет следующие реквизиты:

Имя — это имя параметра, с помощью которого к его значению можно обращаться в тексте запроса, в вычисляемых полях и других местах где доступны выражения.

Заголовок — название, выводимое пользователю.

Тип — определяет тип параметра. Иногда при выборе дат периода, пользователю не нужно указывать время. Тогда нажав на “…” можно указать состав даты — Дата.

Язык запросов 1с фигурные скобки

Таким же образом можно указать формат числа для численного параметра и длину строки для строкового.

Доступные значения — определяет перечень доступных значений. Представляет собой список значений со стандартными полями — значение и представление, где значение типа параметра. Для ссылочного типа доступны для выбора только предопределенные данные.

Доступен список значений — определяет доступность параметру принимать значение “список значения”.

Значение — предустановленное значение параметра. Типа параметра. Для ссылочного типа доступны для выбора только предопределенные данные.

Выражение — выражение, значение которого примет параметр. Что примечательно здесь могут использоваться как функции встроенного языка запросов, так и функции встроенного языка программирования и даже функции из общих модулей. К примеру, параметру ТекДата присваивается значение функции встроенного языка программирования ТекущаяДата().

Также в примере к реквизиту “Тип” можно было в выражениях использовать функции встроенного языка запросов, особенность применения этих функций в данном месте такова, что строковые параметры функций надо брать в кавычки.

и в запросе можно было бы писать проще поскольку в параметрах уже будет содержаться начало и конец периода:

Язык запросов 1с фигурные скобки

Иногда, для повышения удобства пользователю для выбора периода лучше дать не два поля с типом Дата, а одно поле с типом Стандартный Период. Тогда, к примеру, создаем три параметра: “Период” с типом СтандартныйПериод, “ПериодНачало” и “ПериодОкончание” с типом Дата. Первый параметр без ограничения доступности. Вторые с ним. В выражение “ПериодНачало” пишем “&Период.ДатаНачала”, в “ПериодОкончания” — “&Период.ДатаОкончания”.

Язык запросов 1с фигурные скобки

Даты начала и конца стандартного периода также содержат и время. ДатаНачала имеет время 00:00:00, а ДатаОкончания 23:59:59. Получится что пользователь выберет стандартный период в “Период” а разработчик будет использовать корректные “ПериодНачало” и “ПериодОкончание”.

Язык запросов 1с фигурные скобки

Параметр функциональной опции — используется в механизме функциональных опций.

Включать в доступные поля — включает параметр в доступные поля для выбора в настройках.

Ограничение доступности — ограничивает возможность изменения значения параметра пользователем.

Запрещать незаполненные значения — если установлено и значение параметра не заполнено — отчет не сформируется и выдаст ошибку.

Использование — устанавливает использование параметра. Если установлено Авто и параметр используется в запросе или выражениях, а пользователь перед формированием не установит галочку около параметра — отчет при формировании выдаст ошибку. Пользователь может установить эту галочку непосредственно, или она установится автоматически при изменении значения параметра. Если установлено Всегда, то этой проверки на то, что пользователь заполнил этот параметр — не будет.

Параметры редактирования — содержит настройки редактирования как у поля формы.

Язык запросов 1с фигурные скобки

Язык запросов 1с фигурные скобки

В настройках варианта мы можем установить галочку “Отображать недоступные параметры”, это можно использовать если для разных вариантов мы хотим использовать разный набор параметров.

У параметров в табличной части мы можем установить значение по умолчанию для варианта, включить использование по умолчанию установив галочку слева. Нажав на кнопку, расположенную справа внизу, мы открываем окно пользовательских настроек параметра.

Язык запросов 1с фигурные скобки

В пользовательских настройках мы можем включить параметр в пользовательские настройки. Установим режим редактирования обычный. Тогда он будет доступен в форме, вызываемой кнопкой “Настройки…”.

Язык запросов 1с фигурные скобки

Если Режим редактирования установить Быстрый доступ, то параметр появится на форме.

Язык запросов 1с фигурные скобки

Если у параметра “Период” представление заполнить строкой “ПеРиОд”, то вместо название будет показано содержания поля представление.

Если у отчета СКД нет формы, то платформа создаст автоматическую, на которой будут табличный документ результата, кнопки управления и быстрые пользовательские настройки.

Язык запросов 1с фигурные скобки

Можно создать свою форму для отчета и вывести на нее табличное поле со всеми пользовательскими настройками. Вот так:

Язык запросов 1с фигурные скобки

Для этого в созданной форме в конфигураторе вытаскиваем на форму Пользовательские настройки из Компоновщика отчета.

Язык запросов 1с фигурные скобки

В некоторых случаях параметр не прост, и для его расчета нужен некий алгоритм с циклом или ветвлениями. К примеру если отчет формируем в понедельник то в отчете сравниваются продажи по дням позапрошлой и прошлой недели, а в остальные дни недели сравниваются продажи по дням прошлой и текущей недели. Получается у нас от значения дня недели текущего дня зависит сразу четыре параметра: &НачалоПрошлойНедели, &КонецПрошлойНедели, &НачалоТекущейНедели и &КонецТекущейНедели. А еще нам надо дать возможность пользователю формировать отчет как будто он сформирован вчера или неделю назад. В таком случае мы создаем реквизит формы ТекДата типа Дата. Выводим его на форму. В событии ПриИзменении() пишем.

Язык запросов 1с фигурные скобки

Доброго времени суток, мои читатели! Сегодня мы с вами продолжим рассматривать основы системы компоновки. В первой части этой серии статей вы узнали, что такое СКД и познакомились с основными составляющими СКД. Также рассмотрели входные данные для построения отчёта и узнали основные этапы выполнения отчета на СКД. Кроме того у многих была возможность проверить свои знания, пройдя небольшой тест. А теперь можете взглянуть на содержание статьи и увидеть, что будет рассмотрено в ней.

Содержание

Набор данных — запрос.

Параметры виртуальных таблиц.

Фигурные скобки указывают на расширение языка запросов компоновки данных. Также это указывает на то, что этот параметр является необязательным. Это означает, что если он не будет определён в схеме компоновки данных, то остатки будут получены на текущую дату.

Расширение языка запросов.

Это специальные инструкции, которые заключены в фигурные скобки в тексте запроса. В этих инструкциях указываются поля и параметры, которыми можно оперировать при настройке варианта отчёта. Данные из фигурных скобок будут присутствовать в схеме компоновки даже в том случае, когда флажок «Автозаполнение» отключен.

Когда создаётся набор данных запрос, по умолчанию происходит автоматическое заполнение доступных полей схемы компоновки данных на основании созданного запроса (флажок «Автозаполнение» установлен на закладке «Наборы данных»).

Как работает автозаполнение доступных полей схемы компоновки данных?

Если флажок «Автозаполнение» снят, то поля схемы компоновки данных очищаются, но остаются параметры, заключённые в фигурные скобки в тексте запроса.

Как самостоятельно заполнить поля схемы компоновки данных?

Снимаем флажок «Автозаполнение» на закладке «Наборы данных».

Нажимаем на кнопку «Конструктор запроса…». Сформируем следующий запрос:

На вкладке «Таблицы» можем задать параметры виртуальных таблиц для всех таблиц.

Теперь на вкладке «Компоновка данных» выбираем закладку «Поля». Здесь задаём поля выборки, которые
будут представлены в схеме компоновки.

Поле «И..» означает, что будут включены в выборку дочерние записи
полей сложного типа, таких как справочники и документы и т.п. Если поле примитивного типа, такого как число, то поставить флаг в поле «И..» будет невозможно.

Выберем два поля «Номенклатура» и «Количество». Для поля «Номенклатура» установим флаг «И..»,
чтобы выбирались дочерние записи. Получиться следующий запрос:

В новом запросе, в фигурных скобках, появилась ещё одна секция ВЫБРАТЬ — это текст расширения, который указывает на поля, которые будут доступны в компоновке. Поле «Номенклатура.*» указывает, что будет доступно поле «Номенклатура» и её дочерние реквизиты, такие как «Код», «Наименование» и т.п. Итак, мы заполнили поля компоновки самостоятельно.

Но сейчас мы не можем использовать поля в условиях компоновки. Если зайти на закладку «Настройки» и выбрать вкладку «Отбор», то нельзя установить условия ни на одно поле, которое мы выбрали в предыдущем пункте. Почему?

Наложение условий на параметры виртуальной таблицы также нужно указывать на вкладке «Компоновка данных» Конструктора запроса. В левом верхнем углу нажимаем кнопку для вызова диалога «Параметры виртуальной таблицы»
(это серая квадратная кнопка с изображением шестерёнки на фоне маленькой таблицы). В поле «Условие» диалогового окна пишем: Номенклатура. Теперь в тексте запроса набора данных в параметрах виртуальной таблицы этот параметр «Номенклатура» появиться в окружении фигурных скобок:

В обычном языке запросов указание параметра выглядит так: Номенклатура = &Номенклатура. Но в расширении языка запросов это записывается по-другому. Указывается только название поля. Здесь мы не указываем операцию равенства, неравенства или в иерархии, так как пользователь сам будет выбирать нужную операцию в своих настройках.

На вкладке «Компоновка данных» Конструктора запроса мы видим ёще одну закладку, «Условия». Она нужна, чтобы указать в расширении языка запросов условия на предложение ГДЕ. Выберем поле «Количество». Теперь это поле доступно в условиях на закладке «Настройки» — «Отбор». А в тексте запроса появились новые строчки, заключенные в фигурные скобки.

Если отбор по полю количество будет указан, то в итоговый запрос будет вставлено это предложение. Где вид условия и значение сравнения будет определяться по настройке варианта отчёта.

Итак, я думаю, что на сегодня материала достаточно. Если остались непонятные моменты, то не стесняйтесь спрашивать, ведь для этого и предусмотрена возможность комментирования. Скоро будет подготовлен тест для закрепления этого материала, так что подпишитесь на обновления на нашем сайте, чтобы не пропустить!

А в третей части этой серии уроков мы рассмотрим функции языка выражений СКД, поговорим об особенностях работы системы компоновки, а также разберем основные настройки полей компоновки. Успехов, в понимании этого нелегкого материала!

В конце статьи хочу посоветовать вам бесплатный курс по компоновке данных от Сотникова Анатолия. Это курс от опытного программиста. Он на отдельной базе покажет вам, как строить отчеты в СКД. Вам только нужно внимательно слушать и запоминать! Вы получите ответы на такие вопросы:

Наверное, не стоит самому стараться бороздить интернет в поисках нужной информации? Тем более все готово для применения. Только начните! Все подробности о том, что есть в бесплатных видеоуроках на странице автора

Вот один из уроков о закладке компоновки данных в запросе:

1с. СКД. Необязательный параметр.
Если в отчете СКД вы используете параметры, и на момент формирования отчета хотя-бы один из них окажется не заполнен, то произойдет ошибка «Ошибка исполнения отчета» и отчет не сформируется. Чтобы сделать не обязательным параметр используемый в отборе виртуальной таблицы или в условии ГДЕ, в коде запроса его надо взять в фигурные скобки. Тогда, при незаполненном параметре условие с ним будет игнорироваться.

Есть одно неудобство. Нельзя использовать в одних скобках условие с более чем одним параметром. В этом случае ошибка о незаполненном параметре возникает всё равно. Как быть? В условии виртуальной таблицы оставить условие с одним параметром в скобках, а остальные вынести в ГДЕ. Причем для каждого условия сделать отдельное ГДЕ, которое и взять в скобки. Тогда это работает.

Скобки надо добавлять в последний момент, когда отчет уже отлажен. Если после добавления скобок вы откроете запрос в Конструкторе запросов, то он склеит все конструкции ГДЕ в одну. И кстати, условия взятые в фигурные скобки в Конструкторе запроса видны не будут, но сохранятся при перезаписи запроса.

Источник

Видео

Язык запросов 1С 8.3: ИЗ, ГДЕ, УПОРЯДОЧИТЬ

Язык запросов 1С 8.3:  ИЗ, ГДЕ, УПОРЯДОЧИТЬ

Уроки по СКД. Расширение языка запросов для СКД. Секция выбрать

Уроки по СКД. Расширение языка запросов для СКД. Секция выбрать

Запросы в 1С за 3 часа

Запросы в 1С за 3 часа

Запросы 1С, зачем они нужны и как их понять? Урок 6

Запросы 1С, зачем они нужны и как их понять? Урок 6

Бумажный вариант книги Язык запросов 1С от зубов

Бумажный вариант книги Язык запросов 1С от зубов

Использование запросов 1С в коде

Использование запросов 1С в коде

1С Язык запросов - Соединение и Объединение таблиц, Произвольные выражения - Урок 11

1С Язык запросов  - Соединение и Объединение таблиц, Произвольные выражения  - Урок 11

Язык запросов 1С. Урок 6. Объединения, временные таблицы и пакет запросов

Язык запросов 1С. Урок 6. Объединения, временные таблицы и пакет запросов

Запросы в 1С. Занятие 1.

Запросы в 1С. Занятие 1.

Язык запросов 1С для пользователей. Урок №1. Консоль запросов. Справочники.

Язык запросов 1С для пользователей.  Урок №1. Консоль запросов. Справочники.
Поделиться или сохранить к себе:
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных, принимаю Политику конфиденциальности и условия Пользовательского соглашения.