Установка необязательного параметра запроса

10.02.23

Разработка - Запросы

Как установить необязательный параметр запроса без изменения его текста.

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

 

 

Например, в нем есть условие.

ВЫБРАТЬ Док.Ссылка ИЗ Документы.Реализация КАК Док
ГДЕ Док.Организация = &Организация

 

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

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

Но это не наш метод. Мы будем использовать такую конструкцию:

ГДЕ (&ОтборПоОрганизации = ЛОЖЬ ИЛИ Док.Организация = &Организация)

 

Тогда в модуле формы в процедуре ПриОткрытии нам нужно установить параметр ОтборПоОрганизации

ОтборПоОрганизации = ЗначениеЗаполнено(Организация);
Запрос.УстановитьПараметр("ОтборПоОрганизации", ОтборПоОрганизации);

 

Такой же код будет и в процедуре ОрганизацияПриИзменении

При этом несмотря на то, что в условии запроса есть оператор ИЛИ, такое условие не приводит к замедлению запроса, индекс все равно используется.

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

Запросы параметры динамический список

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

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

10000 руб.

02.09.2020    268166    1495    421    

1179

Инструментарий разработчика Запросы Программист 1С 8.3 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Структура запроса. Обработка визуально показывает, из какого количества подзапросов состоит запрос.

2 стартмани

06.07.2026    3373    45    XSlava    20    

44

Запросы Программист 1С 8.3 Россия Бесплатно (free)

Визуальный «Конструктор запроса» 1С, встроенный прямо в VS Code, — аналог конструктора из Конфигуратора и EDT, но без запуска платформы. Расширение читает конфигурацию, выгруженную в файлы, позволяет собрать запрос мышью и генерирует корректный текст на языке запросов 1С (SDBL). Открывает уже существующий текст запроса из кода для правки и — что особенно ценно — сохраняет комментарии при цикле «открыть - править - сохранить». Подходит тем, кто пишет код 1С в VS Code, держит под рукой множество проектов и не хочет ради одного запроса запускать тяжёлый Конфигуратор или EDT.

26.06.2026    7260    Alex_YAM    5    

33

WEB-интеграция Запросы Программист 1С 8.3 Абонемент ($m)

Post1C - это внешняя обработка, которая превращает 1С в полноценный инструмент для тестирования REST API. Всё управление сосредоточено в одном окне: настройка запроса, выполнение, просмотр ответа и генерация кода - без переключения между формами. Аналог Postman, но работающий в привычной среде 1С.

1 стартмани

02.04.2026    2980    82    priem_nv    24    

66

Инструментарий разработчика Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.

1 стартмани

16.05.2025    12068    155    zup_dev    32    

86

Инструментарий разработчика Запросы Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Абонемент ($m)

В данной публикации рассказывается о решении, которое позволяет находить сразу все ошибки в тексте запроса за раз, а не только самую первую.

2 стартмани

05.03.2025    6863    24    XilDen    12    

29

Обновление 1С Запросы Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Абонемент ($m)

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

3 стартмани

06.02.2025    6132    37    XilDen    26    

42
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. sapervodichka 7617 10.02.23 09:23 Сейчас в теме
Выбор &Организация = Значение(Справочник.Организации.ПустаяСсылка) Тогда Истина Иначе Док.Организация = &Организация Конец
Irwin; abasovit; Rjhev; DrAku1a; GutaGroup; demon_infernal; TitBit_infostart; +7 Ответить
3. SergMuravev 907 10.02.23 10:37 Сейчас в теме
(1) ВЫБОР - это функция. Ее использование в условиях запроса и условиях соединения приводит к невозможности использования индекса и радикальному замедлению работы запроса.
6. sapervodichka 7617 10.02.23 10:40 Сейчас в теме
(3) а о каком индексе идет речь если обход всех организаций ведется? (если только поле Организация стоит индексировать в документе, а если не стоит?...)
8. SergMuravev 907 10.02.23 11:29 Сейчас в теме
(6)
о каком индексе идет речь


Как правило, это не единственное условие в запросе. Короткий запрос был приведен для упрощения восприятия.
9. tarasovt 10.02.23 15:00 Сейчас в теме
(6) а если я передам в параметр НЕОПРЕДЕЛЕНО))
10. sapervodichka 7617 10.02.23 15:39 Сейчас в теме
(9) &Организация В (Значение(Справочник.Организации.ПустаяСсылка), НЕОПРЕДЕЛЕНО, NULL)
12. SergMuravev 907 10.02.23 18:55 Сейчас в теме
(10) Тоже хана использованию индекса. Не учите плохому )
13. sapervodichka 7617 10.02.23 20:37 Сейчас в теме
(12) а ты научись учить и контекст выделать: показать как и учить плохому - это совершенно разные вещи (про твой индекс я уже два раза ответил, его для реквизитов документа нет, если не поставить вручную)
14. SergMuravev 907 10.02.23 20:40 Сейчас в теме
(13) тыкать не нужно, равно как и командовать.
15. sapervodichka 7617 10.02.23 21:12 Сейчас в теме
(14) тыкать и говорить ты как равному - это разные вещи, пока тогда (показанный в статье отбор является 100% стандартным из любой конфигурации: Использовать отбор + сам отбор, лично мне не особо интересен)
2. SerVer1C 1104 10.02.23 09:52 Сейчас в теме
ГДЕ &Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) ИЛИ Док.Организация = &Организация
EvgeniyOlxovskiy; DrAku1a; akR00b; +3 Ответить
4. SergMuravev 907 10.02.23 10:39 Сейчас в теме
(2) Тоже вариант неправильный, выведутся результаты только с незаполненной организацией, а нужны все результаты без отбора
5. SerVer1C 1104 10.02.23 10:40 Сейчас в теме
(4) Проверяли?
sapervodichka; +1 Ответить
11. SergMuravev 907 10.02.23 18:52 Сейчас в теме
(5) Ошибся, вариант правильный, можно и так. Насчет использования индекса не могу сказать, план запроса не проверял для такого условия.
7. sapervodichka 7617 10.02.23 10:52 Сейчас в теме
(4) у SerVer1C рабочий вариант =)) в моём я его тык-тык написал поиск по индексу использоваться не будет, но у Организации и индекса то по умолчанию нет, это же реквизит (в системные индексы по умолчанию не входит если не отметить к индексированию). В остальном ты прав +100 Выбор не индексируется, а вот у SerVer1C как раз норм вариант
16. TMV 1 10.02.23 22:36 Сейчас в теме
Это ж отчет на СКД. Какие параметры при открытии формы?! Все гораздо проще:
ВЫБРАТЬ
	АвансовыйОтчет.Ссылка КАК Ссылка
ИЗ
	Документ.АвансовыйОтчет КАК АвансовыйОтчет
{ГДЕ
	АвансовыйОтчет.Организация.*}
ixijixi; EvgeniyOlxovskiy; аколит; DrAku1a; bilex; Рамзес; Zergej; Dimkasan; Invocater; +9 Ответить
17. SergMuravev 907 18.02.23 19:55 Сейчас в теме
Про такой вариант я знаю, можно и так. Но я описал универсальный подход для любых запросов. В том числе и в отчетах на СКД, формах с динамическими списками и т.д.
18. exciter 18.03.23 18:24 Сейчас в теме
И (НЕ &ОтборПоОрганизации или Организация = &Организация)
19. user7912838383 7 25.11.23 12:33 Сейчас в теме
А как в параметрах виртуальной таблицы не пробовали? У меня не получается, скобки убираются конструктором и ошибка.

РегистрНакопления.ЗаказыПокупателей.Остатки(
| ,
| &ОтборПоКонтрагент = ЛОЖЬ
| ИЛИ ЗаказПокупателя.Контрагент = &Контрагент) КАК РегистрНакопленияЗаказыПокупателейОстатки
20. user7912838383 7 25.11.23 21:27 Сейчас в теме
(19) получилось:

|ИЗ
| РегистрНакопления.ЗаказыПокупателей.Остатки(
| ,
| (&ОтборПоКонтрагенту = ЛОЖЬ
| ИЛИ ЗаказПокупателя.Контрагент = &Контрагент)
| И (&ОтборПоОрганизации = ЛОЖЬ
| ИЛИ ЗаказПокупателя.Организация = &Организация)
| И (&ОтборПоПодразделениюОрганизации = ЛОЖЬ
| ИЛИ ЗаказПокупателя.СтруктурнаяЕдиницаПродажи = &ПодразделениеОрганизации)) КАК РегистрНакопленияЗаказыПокупателейОстатки
21. user7912838383 7 06.02.24 13:04 Сейчас в теме
Почему не добавили второй параметр, что б получился рабочий вариант?

Работать будет так:

ГДЕ (&ОтборПоОрганизации = ЛОЖЬ ИЛИ Док.Организация = &Организация)

.........

ОтборПоОрганизации = ЗначениеЗаполнено(Организация);
Запрос.УстановитьПараметр("ОтборПоОрганизации", ОтборПоОрганизации);
Запрос.УстановитьПараметр("Организация", Организация);
rrustam11983; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация