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

21.04.20

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

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

 

 

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

 

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

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

 

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

 

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

 

1С СКД

 

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

 

1С СКД

 

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

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

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

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

 

1С СКД

 

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

 

1С СКД

 

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

 

1С СКД

 

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

 

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

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

 

1С СКД

 

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

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

 

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

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

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

 

1С СКД

 

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

 

1С СКД

 

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

 

1С СКД

 

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

 

1С СКД

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

 

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

 

1С СКД

 

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

 

1С СКД

 

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

 

1С СКД

 

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

 

 

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

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


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

СКД Курсы

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

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

13000 руб.

02.09.2020    119922    656    389    

701

Генератор схемы компоновки данных (СКД), написание кода схемы программно

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

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

3 стартмани

05.02.2024    3889    24    obmailok    17    

63

Набор-объект для СКД по тексту или запросу

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

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

1 стартмани

31.01.2024    1964    2    Yashazz    0    

29

СКД на JavaScript в 1С

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

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

2 стартмани

11.12.2023    8029    20    John_d    25    

122

Использование менеджера временных таблиц в СКД

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

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

05.12.2023    4528    PROSTO-1C    13    

61

Модель СКД

Инструментарий разработчика СКД Платформа 1С v8.3 Система компоновки данных Абонемент ($m)

DSL для работы с СКД.

1 стартмани

15.11.2023    5710    15    kalyaka    5    

85

Пользовательские настройки отчетов 1С. Часть 1. Простые и расширенные настройки

СКД Инструкции пользователю Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

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

18.09.2023    6332    accounting_cons    5    

29

Разрыв страницы в СКД. Легко!

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

Когда отчет надо разделить по страницам, это всегда проблема для разработчика. Поскольку в СКД нет стандартных вариантов, как это сделать. Нашел (на свой взгляд) самое простое и оптимальное решение.

01.09.2023    4407    KVIKS    15    

80
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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 Сейчас в теме
По последнему примеру, чтобы не отключать Автозаполнение можно прибегнуть к такому приему: Для первого запроса (ВТ Приход) в компоновщике указываем отбор на контрагента, но называем другим именем (Например КонтрагентОтборНеИспользуется). После этого появится поле КонтрагентОтборНеИспользуется в выбранных полях. У него устанавливаем ограничение по условию. Профит - автозаполнение работает, отбор работает только на нужных таблицах.
user1728007; dvsidelnikov; +2 Ответить
Оставьте свое сообщение