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

21.04.20

Разработка - СКД

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

 

 

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

 

Необязательное условие

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

 

ВЫБРАТЬ
	РасходнаяНакладная.Номер,
	РасходнаяНакладная.Дата,
	РасходнаяНакладная.СуммаПоДокументу
ИЗ
	Документ.РасходнаяНакладная КАК РасходнаяНакладная
{ГДЕ
	(РасходнаяНакладная.Дата >= &НачалоПериода),
	(РасходнаяНакладная.Дата <= &КонецПериода)}

 

Если мы не задаем ни один параметр, выполняется запрос:

 

1С СКД

 

Если мы задаем, например, дату начала, то выполняется другой запрос:

 

1С СКД

 

Необязательная таблица

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

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

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

 

1С СКД

 

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

 

1С СКД

 

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

 

1С СКД

 

Данный отчет мы создавали в рамках нашего курса по практическому применению СКД

 

Необязательный параметр

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

 

1С СКД

 

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

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

 

Управление местом применения отбора и доступностью

Иногда при разработке отчета на СКД возникает необходимость в тонкой настройке места применения отбора.

Рассмотрим на таком (пусть искусственном) примере. Допустим нам в отчете нужно вывести все расходные накладные и все приходные накладные, связанные с номенклатурой из расходных накладных. Напишем такой запрос:

 

1С СКД

 

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

 

1С СКД

 

Без отбора отчет работает нормально:

 

1С СКД

 

С отбором работает неверно (пропал поставщик):

 

1С СКД

Почему так случилось, разберем в следующем разделе «Особенности работы запросов в СКД».

 

Изменим запрос таким образом:

 

1С СКД

 

Самое главное здесь отключить опцию «Автозаполнение». Только в этом случае система понимает, что отбор по контрагенту нам нужен только в последнем запросе пакета и отчет работает, так как нам нужно:

 

1С СКД

 

Важно также заметить как заполнились ограничения доступности полей:

 

1С СКД

 

И в режиме предприятия соответственно для отбора доступны только такие поля:

 

 

Серия статей по СКД

Предыдущая статья .., Следующая статья ...


Автор курсов образовательного проекта Profession Store. Павел Шемякин

СКД Курсы

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159416    872    399    

861

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

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

15.05.2024    8684    implecs_team    6    

47

Инструментарий разработчика СКД Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

3 стартмани

05.02.2024    6995    56    obmailok    21    

79

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

31.01.2024    3148    5    Yashazz    1    

34

СКД WEB-интеграция Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    10804    23    John_d    25    

124

СКД Программист Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

05.12.2023    8016    PROSTO-1C    15    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. MarryJane 31 12.04.20 23:00 Сейчас в теме
Самое главное здесь отключить опцию «Автозаполнение». Только в этом случае система понимает, что отбор по контрагенту нам нужен только в последнем запросе пакета и отчет работает, так как нам нужно: - Вот эта вещь самая очень интересная, недавно на нее только набрел и думал какой то глюк
vulli; Summer_13; toypaul; +3 Ответить
2. toypaul 63 13.04.20 08:15 Сейчас в теме
(1) Таких подводных камней не мало. Ждите следующие части статьи :)
3. Megaiff 20.04.20 12:17 Сейчас в теме
Ну еще бы не только скрины но и тексты чтобы можно было быстро поиграться в консоли и посмотреть самому ) но это так по желанию автора
4. toypaul 63 20.04.20 13:39 Сейчас в теме
(3) Такое замечание было перед публикацией. Чтобы тексты делать, нужно гораздо больше времени потратить. Это раз. Два, чтобы из проверить (большую часть) нужна моя тестовая база. В следующих публикация постараемся картинки заменять на тексты
5. TimurD 6 25.03.22 09:18 Сейчас в теме
По последнему примеру, чтобы не отключать Автозаполнение можно прибегнуть к такому приему: Для первого запроса (ВТ Приход) в компоновщике указываем отбор на контрагента, но называем другим именем (Например КонтрагентОтборНеИспользуется). После этого появится поле КонтрагентОтборНеИспользуется в выбранных полях. У него устанавливаем ограничение по условию. Профит - автозаполнение работает, отбор работает только на нужных таблицах.
mrdug; user1728007; dvsidelnikov; +3 Ответить
Оставьте свое сообщение