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

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

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

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

Пример:
ВЫБРАТЬ
&nbsp&nbsp&nbsp ПродажиОбороты . Организация ,
&nbsp&nbsp&nbsp ПродажиОбороты . Контрагент ,
&nbsp&nbsp&nbsp ПродажиОбороты . ДокументПродажи ,
&nbsp&nbsp&nbsp ПродажиОбороты . Номенклатура ,
&nbsp&nbsp&nbsp ПродажиОбороты . КоличествоОборот ,
&nbsp&nbsp&nbsp ПродажиОбороты . СтоимостьОборот
ИЗ
&nbsp&nbsp&nbsp РегистрНакопления . Продажи . Обороты ( , , , <Организация = &ampОрганизация>) КАК ПродажиОбороты
<ГДЕ
&nbsp&nbsp&nbsp ПродажиОбороты . Контрагент В ИЕРАРХИИ ( &ampКонтрагенты ) >
<ГДЕ&nbsp&nbsp&nbsp
&nbsp&nbsp&nbsp ПродажиОбороты . Номенклатура . ВидНоменклатуры = &ampВидНоменклатуры>

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

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

Содержание

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

  1. В отличие от обычного запроса в запросе для компоновки данных отсутствует предложение ИТОГИ. Вместо этого итоги формируются на закладке «Ресурсы». На этой закладке выбираются поля, по которым необходимо получить итоговые выражения. А на закладке «Настройки» указывается в каком разрезе будут получаться итоги, то есть здесь создаются соответствующие группировки и по ним рассчитываются ресурсы. Более подробно об этом можно прочитать в статье Настройка итогов в схеме компоновки данных 1С.
  2. Следующий момент касается настройки отборов. Существует две возможности выполнения.
  1. Через настройки варианта отчёта. Это можно сделать на вкладке «Настройки» — «Отбор». Если используем этот вариант, то он является наиболее гибким, так как можно указывать разные виды сравнений, которые может выбирать даже пользователь. Кроме того, при использовании этого варианта, условия фильтрации налагаются в самом запросе. Если отчёт базируется на пакетном запросе с использованием временных таблиц, тогда отбор будет воздействовать на все таблицы пакетного запроса, где встречается поле отбора.
  2. На уровне запроса. Если используем запрос, то кроме операции равенство не сможем использовать ничего.
    Исключением является случай, когда нам нужно выполнить «жёсткую» фильтрацию данных по некоторому значению. Допустим, по значению перечисления. Во вкладке «Параметры» можем задать условие. Если включим флаг «Ограничение доступности», то пользователь не сможет отменить это условие.
Читайте также:  Смайлы для ватсапа андроид
  • Сортировку, тоже правильнее накладывать на уровне настроек варианта отчета.
    1. Если в запросе указать некоторое поле сортировки, то пользователь в настройке своего варианта отчета укажет другое поле, тогда наша настройка, выполненная на уровне запроса будет иметь низший приоритет. Сначала будет выполняться сортировка, установленная пользователем в настройке варианта отчета. Поэтому, если нужно выставить сортировку «по умолчанию», то используем настройки варианта отчёта в Конфигураторе.
    2. А если необходимо настроить «жёсткую» сортировку в отчете, чтобы пользователь не смог её поменять? Тогда устанавливаем сортировку на уровне запроса, а на закладке «Наборы данных» настроим ограничение поля. Выделим нужный набор данных и в колонке «Ограничение поля» — «Упорядочивание» поставим галочку.
    3. Параметры виртуальных таблиц.

      • Построение виртуальных таблиц регистров бухгалтерии, регистров накопления, регистров сведений зависит от заданной даты. Это может быть как одна дата, так и интервал, как например, для таблицы остатков и оборотов. СКД создана так, что если в основе отчёта лежит виртуальная таблица, тогда необходимо дать пользователю выбрать, за какой интервал или на какую дату формировать отчёт. СКД автоматически добавляет необходимые параметры периода в схему компоновки.
      • Если в запросе выбрана виртуальная таблица остатков или виртуальная таблица регистров сведений, тогда автоматически добавляется параметр с названием «Период».
      • Если в запросе выбрана виртуальная таблица остатков и оборотов или виртуальная таблица оборотов, тогда автоматически добавляются параметры «НачалоПериода» и «КонецПериода».
      • Что сделать, если нужно получить остатки на конец периода? Существует два способа:
        1. Заходим на вкладку «Параметры» и в параметре «Период» в колонке «Выражения» пишем следующее:
          &КонецПериода. Также включим флаг «Ограничение доступности».
        2. Полностью избавляемся от параметра «Период» и заменяем его на параметр «КонецПериода». Настроим необязательный параметр виртуальной таблицы:
        • Заходим на вкладку «Наборы данных» нажимаем на кнопку «Конструктор запроса…».
        • На вкладке «Компоновка данных» в левом верхнем углу нажимаем кнопку для вызова диалога «Параметры виртуальной таблицы» (это серая квадратная кнопка с изображением шестерёнки на фоне маленькой таблицы).
        • В поле «Период» диалогового окна пишем: &КонецПериода.
        • Теперь в тексте запроса набора данных в параметрах виртуальной таблицы этот параметр появиться в окружении фигурных скобок:

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

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

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

        Читайте также:  Драйвер интел для ноутбуков асер

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

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

          1. Становятся доступными поля из списка выборки запроса и их дочерние поля.
          2. Если выбираем из регистра накопления, то даже не включённые в запрос поля регистра становятся доступными в полях компоновки данных. Но эти поля доступны только для отбора (в условных выражениях)
            и их нельзя будет использовать в качестве выходных полей.
          3. Параметры виртуальных таблиц «Период», «НачалоПериода» и «КонецПериода» становятся
            доступными для отбора.
          4. Если в тексте запроса указано «жёсткое» условие, тогда этот параметр тоже будет добавлен на закладке «Параметры».

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

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

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

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

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

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

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

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

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

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

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

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

          Читайте также:  Посоветуйте увлажнитель воздуха для квартиры

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

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

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

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

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

          СКД (Система Компоновки Данных) – это такая мощная хреновина в 1С с кучей непонятных кнопочек, используемая для интерактивного создания отчетов.

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

          Колонка Использование=Авто/Всегда

          Значение Авто – добавится галочка использованиея параметра. Но при этом, если убрать галочку и попытаться сформировать, то произойдет “Ошибка исполнения отчета”.

          Чтобы избавиться от ошибки, в коде запроса надо взять в фигурные скобки условие отбора, в котором этот параметр используется (источник). Тогда, при незаполненном параметре условие с ним будет игнорироваться.

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

          Но!

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

          Значение Всегда – параметр будет на форме без галочки.

          Колонка Запрещать незаполненные значения=True/False

          (работает независимо от колонки Использование)

          Значение True – отчет не сформируется, пока в параметре не будет введено какое-то значение (будет подчеркиваться красным).

          Значение False – отчет будет формироваться с пустым значением параметра в запросе.

          Ссылка на основную публикацию
          Сервер не поддерживает символы не ascii
          Многие из нас пользуются замечательным FTP сервером FileZilla Server. Думаю, не я один столкнулся с проблемой некорректного отображения русских букв...
          Ресивер пионер vsx 528
          5.1 канальный AV ресивер Pioneer VSX-528 с 6x HDMI, AirPlay, DLNA, MHL, сквозным сигналом Ultra HD 4K и Интернет-радио vTuner....
          Ресивер для нтв плюс какой лучше
          Телекомпания НТВ‑ПЛЮС гарантирует получение качественных услуг, а также обеспечение корректного доступа к каналам и дополнительным сервисам Телекомпании, только при условии...
          Сервера для обновления nod32 бесплатно
          Отличие полной версии от триальной Полные (не триальные) антивирусные базы и программные компоненты Eset Antivirus и Eset Smart Security! Отличия...
          Adblock detector