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

21.04.20

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

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

 

 

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

 

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

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

 

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

 

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

 

1С СКД

 

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

 

1С СКД

 

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

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

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

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

 

1С СКД

 

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

 

1С СКД

 

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

 

1С СКД

 

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

 

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

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

 

1С СКД

 

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

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

 

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

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

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

 

1С СКД

 

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

 

1С СКД

 

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

 

1С СКД

 

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

 

1С СКД

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

 

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

 

1С СКД

 

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

 

1С СКД

 

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

 

1С СКД

 

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

 

 

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

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


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

Вступайте в нашу телеграмм-группу Инфостарт

СКД Курсы

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

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

16500 руб.

02.09.2020    246365    1353    419    

1131

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    5076    286    shapa_pro    25    

66

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    15797    ovetgana    112    

105

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    9203    krasnoshchekovpavel    5    

67

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    8387    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    15550    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    13120    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    9600    AlexeyPROSTO_1C    1    

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