Всем доброго дня!
Имеется древняя конфа, переписанная CRM (обычные формы).
Имеется отчет, в него нужно добавить следующее:
1) Добавить на форму поле с выбором нужных подразделений (чтобы отчет формировался только по ним) - сделано
2) Если подразделения не выбраны - формировать отчет по всем.

Кусок кода с множественным выбором:

```1c
    Результат = ФормаПодбора.ОткрытьМодально();
    Если Результат <> Неопределено Тогда
    Подразделение.ЗагрузитьЗначения(Результат);
    Иначе
    Спр = Справочники.Подразделения.Выбрать();
    Пока Спр.Следующий() Цикл
    Подразделение.ЗагрузитьЗначения(Спр.Ссылка);
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры

    Кусок кода, при нажатии "Сформировать отчет":
    Запрос.УстановитьПараметр("Подразделение", Подразделение);
    Если Подразделение.Количество() > 0 Тогда
    РезультатЗапроса = Запрос.Выполнить().Выбрать();
    Иначе
    Сообщить ("Выберите подразделения!");
    Возврат;
    КонецЕсли;
```

Если подразделения не выбирать, то заходит в часть Иначе и выдает "Выберите подразделения"

Всем спасибо за помощь!
---
попробуйте так

```1c
    Иначе
    Спр = Справочники.Подразделения.Выбрать();
    мПодр = Новый Массив;
    Пока Спр.Следующий() Цикл
    мПодр.Добавить(Спр.Ссылка);
    КонецЦикла;
    Подразделение.ЗагрузитьЗначения(мПодр);
    КонецЕсли;
```
---
попробуйте так

```1c
    Иначе
    Спр = Справочники.Подразделения.Выбрать();
    мПодр = Новый Массив;
    Пока Спр.Следующий() Цикл
    мПодр.Добавить(Спр.Ссылка);
    КонецЦикла;
    Подразделение.ЗагрузитьЗначения(мПодр);
    КонецЕсли;
```
---
проверил, все равно отчет не формируется, а выдает "Выберите подразделение", т. е. заходит в блок Иначе
---
Ну, а что возвращаете при закрытии модальной формы?
---
закрытии модальной формы? Эм, если просто открывать отчет и не выбирать подразделение, то и форма не открывалась, соответственно ничего не возвращается. Если нажать на выбор подразделения, потом закрыть форму, то выбираются все подразделения.

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

параметр в запросе есть, он отрабатывает. Еще раз задача, внимание, она состоит из 2х частей:
1) Добавить на форму поле с выбором нужных подразделений (чтобы отчет формировался только по ним) - сделано
2) Если подразделения не выбраны - формировать отчет по всем.
---
2) Если подразделения не выбраны - формировать отчет по всем. Тебе об этом и говорят - при установке параметров запроса проверять - если параметр пустой, то его просто не надо использовать!!!

```1c
    |ГДЕ ВЫБОР
    | КОГДА &Подразделение = НЕОПРЕДЕЛЕНО
    | ТОГДА ИСТИНА
    | ИНАЧЕ Таблица.Подразделение В(&Подразделение)
    | КОНЕЦ
```
 или так
```1c
    |ГДЕ &Подразделение = НЕОПРЕДЕЛЕНО ИЛИ Таблица.Подразделение В(&Подразделение)
```
 и рядом
```1c
    Запрос.УстановитьПараметр("Подразделение", ?(Подразделение.Количество(), Подразделение, Неопределено));
```
---
Идея понятна, но как переделать мой запрос все равно не доходит.

у меня кусок условия:

```1c
    | ГДЕ
    | Док.Подразделение В (&Подразделение)
    |;
```

Также, насколько я понимаю, можно проверку заполненности реализовать не в самом запросе в просто в коде, как я и пытался сделать изначально?
---
в коде проверку заполнения параметра уже не модно.
А много сообщений, вопросов и предупреждений в программе это последствия увлечения компьютерными играми, пользователей оно раздражает.
---
коде проверку заполнения параметра уже не модно А по-моему, проверять заполненность параметра в запросе – как раз моветон. Зачем СУБД напрягать лишними проверками.
---
Тогда остается два варианта:
1. Вместо одного отправлять два параметра в запрос. Типа &ЕстьОтборПоПодразделениям и &ОтборПоПодразделениям
2. Динамическое/программное формирование текста запроса.
---
Лично для себя нашёл удобным 2-й вариант в "щадящем" режиме, чтобы запрос можно было открыть в конструкторе:

```1c
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    | Т.Ссылка КАК Ссылка
    |ИЗ
    | Документ.ПриобретениеТоваровУслуг КАК Т
    |ГДЕ
    | Т.Проведен
    | И &Условие");

    МассивУсловий = Новый Массив;

    Если ЗначениеЗаполнено(ОтборРеквизит1) Тогда
    МассивУсловий.Добавить("Т.Реквизит1 = &Реквизит1");
    Запрос.УстановитьПараметр("Реквизит1", ОтборРеквизит1);
    КонецЕсли;

    Если ЗначениеЗаполнено(ОтборРеквизит2) Тогда
    МассивУсловий.Добавить("Т.Реквизит2 = &Реквизит2");
    Запрос.УстановитьПараметр("Реквизит2", ОтборРеквизит2);
    КонецЕсли;

    //...

    Если МассивУсловий.Количество() > 0 Тогда
    Условие = СтрСоединить(МассивУсловий, " И ");
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Условие", Условие);
    Иначе
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "И &Условие", ");
    КонецЕсли;
```
---
Да, но проверять визуально такие тексты на корректность - издевательство над код-ревьюерами )))
---
не подскажете, как реализовать? пытался сделать, но если выбор не открывался, то реквизит Подразделение пустой (а должны быть все подразделения)
---
Заполняйте реквизит Подразделение при открытии отчета всеми подразделениями.
Дальше, если выбор открывается и пользователь выбирает одно подразделение - перезаписываете реквизит Подразделение.
---
можно проверку заполненности реализовать не в самом запросе в просто в коде, Можно. Но давать советы по говнокоду я не буду. Потому что засовывать в запрос в качестве отбора все твои 100500 подразделений - это самострел для последующего увольнения.
---
Да ладно, открыли выбор подразделений, отключили отбор по владельцу и выделили весь список, в чем проблема?
Тем более что организации в запросе нет.
---
проблема в том что так стоит задача. Я условие менять не могу.
---
В условии задачи даже написано ,что нельзя проверять заполнение параметров в запросе, а надо засунуть туда именно все подразделения? А еще интересует - как в задаче приказано писать: "ЛОЖЬ" или "Ложь"?
---
ельзя проверять заполнение параметров в запросе, а надо засуну

Вы решили блеснуть своей ироничностью? полагаю, что перепутали форум. Вопросы я задаю из-за незнания каких-то моментов. И подчеркиваю, это ВОПРОСЫ, а не наезды, ирония и тд, как в Вашем случае
---
Перечитал все твои сообщения. Нашел только один вопросительный знак. Дальше сплошные утверждения, подлежащие дискуссии.
Но все равно до свидания.
---
На закладке "Компоновка данных" установи отбор. Если параметр будет задан, то отбор сработает, если не будет задан, то не сработает.