Здравствуйте, такой вопрос. Помогите правильно сформулировать код

```1c
    &НаКлиенте
    Процедура ОтборНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    Настройки = Новый НастройкиКомпоновкиДанных;

    Элемент = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Элемент.Использование = Истина;
    Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация");
    Элемент.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    Элемент.ПравоеЗначение = "Тест";
    Элемент.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;

    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("ФиксированныеНастройки", Настройки);

    ОткрытьФорму("Справочник.Организации.ФормаВыбора", ПараметрыФормы, Элементы.);
    КонецПроцедуры
```

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

```1c
    СтандартнаяОбработка = Ложь;
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("РежимВыбора",Истина);
    ПараметрыФормы.Вставить("МножественныйВыбор",Истина); ///Если хотим несколько значений

    ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"ПодборРеализации");

    ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаВыбора",ПараметрыФормы,
    ЭтаФорма, , , , ОбработкаВыбора);
```

/// после выбора организация, выполнится эта процедура и если массив был не пустой, тогда заполнятся данные по процедуре ЗаполнитьДанныеНаСервере
&НаКлиенте
Процедура ПриЗакрытииФормыВыбора(Значение, ДопПараметры) Экспорт

    Если Значение = Неопределено Тогда выбрать - вернется
        Возврат;
    КонецЕсли;

    ЗаполнитьДанныеНаСервере(МассивОрганизаций);

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

```1c
    &НаКлиенте
    Процедура ОтборПриИзменении(Элемент)
    Список.Параметры.УстановитьЗначениеПараметра("Организация", Организация);
    Элементы.Список.Обновить();
    КонецПроцедуры
```

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

```1c
    {ГДЕ
    Организация = &Организация
    }
```
---
Список.Параметры.УстановитьЗначениеПараметра("Организация", Организация);
 Элементы.Список.Обновить();

Хорошо, но скорее всего не подойдет вариант, у меня таблица значений, как с ней можно это реализовать?
---
пришлите код, как она заполняется
---
```1c
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    | СчетНаОплатуПокупателю.Дата КАК ДатаОборотаПоСчетам,
    | СчетНаОплатуПокупателю.Ссылка КАК ДокументСчета,
    | СчетНаОплатуПокупателю.Контрагент КАК Контрагент,
    | СчетНаОплатуПокупателю.Контрагент.ИдентификационныйКодЛичности КАК ИИН,
    | РеализацияТоваровУслугУслуги.Ссылка КАК Реализация
    |ПОМЕСТИТЬ Вр_ТЧ
    |ИЗ
    | Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
    | ПО СчетНаОплатуПокупателю.Ссылка = РеализацияТоваровУслугУслуги.Ссылка.ДокументОснование
    |ГДЕ
    | СчетНаОплатуПокупателю.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    | Вр_ТЧ.ДокументСчета КАК ДокументСчета,
    | Вр_ТЧ.ДатаОборотаПоСчетам КАК ДатаОборотаПоСчетам,
    | Вр_ТЧ.Контрагент КАК Контрагент,
    | Вр_ТЧ.Реализация КАК Реализация,
    | Вр_ТЧ.ИИН КАК ИИН,
    | АктуальныеЭАВР.СостоянияЭАВР КАК СостоянияЭАВР,
    | ЭлектронныйАктВыполненныхРабот.Дата КАК ДатаАВР,
    | ЭлектронныйАктВыполненныхРабот.Ссылка КАК АВР,
    | ЭлектронныйАктВыполненныхРабот.Состояние КАК СостояниеАВР
    |ИЗ
    | Вр_ТЧ КАК Вр_ТЧ
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АктуальныеЭАВР КАК АктуальныеЭАВР
    | ПО Вр_ТЧ.Реализация = АктуальныеЭАВР.ПервичныеДокументыЭАВР
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронныйАктВыполненныхРабот КАК ЭлектронныйАктВыполненныхРабот
    | ПО Вр_ТЧ.Реализация = ЭлектронныйАктВыполненныхРабот.ДокументОснование";

    Запрос = Новый Запрос;
    Запрос.Текст = ТекстЗапроса;
    Запрос.Параметры.Вставить("НачалоПериода", ОбработкаОбъект.НачПериода);
    Запрос.Параметры.Вставить("КонецПериода", КонецДня(ОбработкаОбъект.КонПериода));

    ДанныеСЧ.Загрузить(Запрос.Выполнить().Выгрузить());
```
---
|ГДЕ
| СчетНаОплатуПокупателю.Дата МЕЖДУ &НачалоПериода И &КонецПериода

тут после периода задать параметр на организацию

```1c
    {ГДЕ
    Организация = &Организация}
```

и при изменении отбор перестраивать таблицу значений по этом запросу, очищая предыдущие данные
---
Суть поняла, но вопрос теперь как указать чтоб он с отбора брал значение(на реквизит отбора поставила путь к справочнику)
---
```1c
    Запрос = Новый Запрос;
    Запрос.Текст = ТекстЗапроса;
    Запрос.Параметры.Вставить("НачалоПериода", ОбработкаОбъект.НачПериода);
    Запрос.Параметры.Вставить("КонецПериода", КонецДня(ОбработкаОбъект.КонПериода));
    Запрос.Параметры.Вставить("Организация", ОбработкаОбъект.Отбор);
```

В параметрах указала реквизит обработки
---
так по идее и нужно если он в объекте обработки расположен и так называется, не пробовали выполнить?
---
Пробовала, не получается, сейчас делаю через второй запрос, не хочет никак видеть этот параметр, сделала сейчас через массив, в массив все падает, но запрос не выполняется

```1c
    &НаСервере
    Процедура ОтборПриИзмененииНаСервере()

    ДанныеСЧ.Очистить();

    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    ТекстЗапроса1 = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    | СчетНаОплатуПокупателю.Дата КАК ДатаОборотаПоСчетам,
    | СчетНаОплатуПокупателю.Ссылка КАК ДокументСчета,
    | СчетНаОплатуПокупателю.Контрагент КАК Контрагент,
    | СчетНаОплатуПокупателю.Контрагент.ИдентификационныйКодЛичности КАК ИИН,
    | РеализацияТоваровУслугУслуги.Ссылка КАК Реализация,
    | Организации.Ссылка КАК Организация
    |ПОМЕСТИТЬ Вр_ТЧ
    |ИЗ
    | Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
    | ПО СчетНаОплатуПокупателю.Ссылка = РеализацияТоваровУслугУслуги.Ссылка.ДокументОснование
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
    | ПО СчетНаОплатуПокупателю.Организация = Организации.Ссылка
    |ГДЕ
    | СчетНаОплатуПокупателю.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    | И СчетНаОплатуПокупателю.Организация В(&Организация)
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    | Вр_ТЧ.ДокументСчета КАК ДокументСчета,
    | Вр_ТЧ.ДатаОборотаПоСчетам КАК ДатаОборотаПоСчетам,
    | Вр_ТЧ.Контрагент КАК Контрагент,
    | Вр_ТЧ.Реализация КАК Реализация,
    | Вр_ТЧ.ИИН КАК ИИН,
    | АктуальныеЭАВР.СостоянияЭАВР КАК СостоянияЭАВР,
    | ЭлектронныйАктВыполненныхРабот.Дата КАК ДатаАВР,
    | ЭлектронныйАктВыполненныхРабот.Ссылка КАК АВР,
    | ЭлектронныйАктВыполненныхРабот.Состояние КАК СостояниеАВР,
    | Вр_ТЧ.Организация КАК Организация
    |ИЗ
    | Вр_ТЧ КАК Вр_ТЧ
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АктуальныеЭАВР КАК АктуальныеЭАВР
    | ПО Вр_ТЧ.Реализация = АктуальныеЭАВР.ПервичныеДокументыЭАВР
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронныйАктВыполненныхРабот КАК ЭлектронныйАктВыполненныхРабот
    | ПО Вр_ТЧ.Реализация = ЭлектронныйАктВыполненныхРабот.ДокументОснование
    |ГДЕ
    | ЭлектронныйАктВыполненныхРабот.Организация В(&Организация)";

    Запрос1 = Новый Запрос;
    Запрос1.Текст = ТекстЗапроса1;

    Запрос1.Параметры.Вставить("НачалоПериода", ОбработкаОбъект.НачПериода);
    Запрос1.Параметры.Вставить("КонецПериода", КонецДня(ОбработкаОбъект.КонПериода));

    МассивОрганизаций = Новый Массив;
    МассивОрганизаций.Добавить("Простое садовоческое товарищество Заря Капшагай");
    МассивОрганизаций.Добавить(Справочники.Организации.НайтиПоНаименованию("Тест"));

    Запрос1.Параметры.Вставить("Организация", МассивОрганизаций);

    ДанныеСЧ.Загрузить(Запрос1.Выполнить().Выгрузить());

    КонецПроцедуры
```
---
МассивОрганизаций.Добавить("Простое садовоческое товарищество Заря Капшагай");
это что? тут вы просто текст в массив передаете

у вас есть организация с наименованием "Тест" ?
МассивОрганизаций.Добавить(Справочники.Организации.НайтиПоНаименованию("Тест"));
---
Да в первом текст, но он находить его должен, а во втором организация вторая
---
почему вы думаете, что в первом он найдет? вы просто в массив добавляете текст. Не усложняйте, попробуйте просто например найти по коду и добавить в массив, а эти две строки закомментировать
---
Не усложняйте, попробуйте просто например найти по коду А чем отличается поиск по коду от поиска по наименованию? Ну, с точки зрения "не усложнять".
---
я про то что в массив добавлялся текст обычный
---
```1c
    МассивОрганизаций = Новый Массив;
    МассивОрганизаций.Добавить(Справочники.Организации.НайтиПоКоду("000000001"));
    МассивОрганизаций.Добавить(Справочники.Организации.НайтиПоКоду("100000001"));

    Запрос1.Параметры.Вставить("Организация", МассивОрганизаций);

    ДанныеСЧ.Загрузить(Запрос1.Выполнить().Выгрузить());

    КонецПроцедуры
```

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

```1c
    &НаСервере
    Процедура ЗаполнитьДанныеНаСервере()
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    | СчетНаОплатуПокупателю.Дата КАК ДатаОборотаПоСчетам,
    | СчетНаОплатуПокупателю.Ссылка КАК ДокументСчета,
    | СчетНаОплатуПокупателю.Контрагент КАК Контрагент,
    | СчетНаОплатуПокупателю.Контрагент.ИдентификационныйКодЛичности КАК ИИН,
    | РеализацияТоваровУслугУслуги.Ссылка КАК Реализация,
    | Организации.Ссылка КАК Организация
    |ПОМЕСТИТЬ Вр_ТЧ
    |ИЗ
    | Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
    | ПО СчетНаОплатуПокупателю.Ссылка = РеализацияТоваровУслугУслуги.Ссылка.ДокументОснование
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
    | ПО СчетНаОплатуПокупателю.Организация = Организации.Ссылка
    |ГДЕ
    | СчетНаОплатуПокупателю.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    | И СчетНаОплатуПокупателю.Организация = &Организация
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    | Вр_ТЧ.ДокументСчета КАК ДокументСчета,
    | Вр_ТЧ.ДатаОборотаПоСчетам КАК ДатаОборотаПоСчетам,
    | Вр_ТЧ.Контрагент КАК Контрагент,
    | Вр_ТЧ.Реализация КАК Реализация,
    | Вр_ТЧ.ИИН КАК ИИН,
    | АктуальныеЭАВР.СостоянияЭАВР КАК СостоянияЭАВР,
    | ЭлектронныйАктВыполненныхРабот.Дата КАК ДатаАВР,
    | ЭлектронныйАктВыполненныхРабот.Ссылка КАК АВР,
    | ЭлектронныйАктВыполненныхРабот.Состояние КАК СостояниеАВР,
    | Вр_ТЧ.Организация КАК Организация
    |ИЗ
    | Вр_ТЧ КАК Вр_ТЧ
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АктуальныеЭАВР КАК АктуальныеЭАВР
    | ПО Вр_ТЧ.Реализация = АктуальныеЭАВР.ПервичныеДокументыЭАВР
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронныйАктВыполненныхРабот КАК ЭлектронныйАктВыполненныхРабот
    | ПО Вр_ТЧ.Реализация = ЭлектронныйАктВыполненныхРабот.ДокументОснование";

    Запрос = Новый Запрос;
    Запрос.Текст = ТекстЗапроса;
    Запрос.Параметры.Вставить("НачалоПериода", ОбработкаОбъект.НачПериода);
    Запрос.Параметры.Вставить("КонецПериода", КонецДня(ОбработкаОбъект.КонПериода));

    ДанныеСЧ.Загрузить(Запрос.Выполнить().Выгрузить());

    КонецПроцедуры
```

А потом второй при изменении

```1c
    &НаСервере
    Процедура ОтборПриИзмененииНаСервере()

    ДанныеСЧ.Очистить();

    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    ТекстЗапроса1 = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    | СчетНаОплатуПокупателю.Дата КАК ДатаОборотаПоСчетам,
    | СчетНаОплатуПокупателю.Ссылка КАК ДокументСчета,
    | СчетНаОплатуПокупателю.Контрагент КАК Контрагент,
    | СчетНаОплатуПокупателю.Контрагент.ИдентификационныйКодЛичности КАК ИИН,
    | РеализацияТоваровУслугУслуги.Ссылка КАК Реализация,
    | Организации.Ссылка КАК Организация
    |ПОМЕСТИТЬ Вр_ТЧ
    |ИЗ
    | Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
    | ПО СчетНаОплатуПокупателю.Ссылка = РеализацияТоваровУслугУслуги.Ссылка.ДокументОснование
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
    | ПО СчетНаОплатуПокупателю.Организация = Организации.Ссылка
    |ГДЕ
    | СчетНаОплатуПокупателю.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    | И СчетНаОплатуПокупателю.Организация В(&Организация)
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    | Вр_ТЧ.ДокументСчета КАК ДокументСчета,
    | Вр_ТЧ.ДатаОборотаПоСчетам КАК ДатаОборотаПоСчетам,
    | Вр_ТЧ.Контрагент КАК Контрагент,
    | Вр_ТЧ.Реализация КАК Реализация,
    | Вр_ТЧ.ИИН КАК ИИН,
    | АктуальныеЭАВР.СостоянияЭАВР КАК СостоянияЭАВР,
    | ЭлектронныйАктВыполненныхРабот.Дата КАК ДатаАВР,
    | ЭлектронныйАктВыполненныхРабот.Ссылка КАК АВР,
    | ЭлектронныйАктВыполненныхРабот.Состояние КАК СостояниеАВР,
    | Вр_ТЧ.Организация КАК Организация
    |ИЗ
    | Вр_ТЧ КАК Вр_ТЧ
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АктуальныеЭАВР КАК АктуальныеЭАВР
    | ПО Вр_ТЧ.Реализация = АктуальныеЭАВР.ПервичныеДокументыЭАВР
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронныйАктВыполненныхРабот КАК ЭлектронныйАктВыполненныхРабот
    | ПО Вр_ТЧ.Реализация = ЭлектронныйАктВыполненныхРабот.ДокументОснование";

    Запрос1 = Новый Запрос;
    Запрос1.Текст = ТекстЗапроса1;

    Запрос1.Параметры.Вставить("НачалоПериода", ОбработкаОбъект.НачПериода);
    Запрос1.Параметры.Вставить("КонецПериода", КонецДня(ОбработкаОбъект.КонПериода));

    МассивОрганизаций = Новый Массив;
    МассивОрганизаций.Добавить(Справочники.Организации.НайтиПоКоду("000000001"));
    МассивОрганизаций.Добавить(Справочники.Организации.НайтиПоКоду("100000001"));

    Запрос1.Параметры.Вставить("Организация", МассивОрганизаций);

    ДанныеСЧ.Загрузить(Запрос1.Выполнить().Выгрузить());

    КонецПроцедуры
```
---
в первом коде у вас есть отбор по организации, а саму организацию в параметр никакой не передаете.

а вообще дублирование кода не очень хорошая вещь, если различия не значительны, в первый код можно передавать например массив с организациями, а во втором коде просто выполнять первый код с передачей массива организаций (или по отбору как нужно)
---
Это как?
---
в этой процедуре ЗаполнитьДанныеНаСервере() выполняется сам запрос, к процедуре добавляете параметр ЗаполнитьДанныеНаСервере(массивОрганизаций)
в запрос передаете параметр массива

```1c
    Запрос1.Параметры.Вставить("Организация", массивОрганизаций);
```

а в этой процедуре вызываете первую

```1c
    Процедура ОтборПриИзмененииНаСервере()
    МассивОрганизаций = Новый Массив;
    МассивОрганизаций.Добавить(Справочники.Организации.НайтиПоКоду("000000001"));
    МассивОрганизаций.Добавить(Справочники.Организации.НайтиПоКоду("100000001"));

    ЗаполнитьДанныеНаСервере(МассивОрганизаций);
    КонецПроцедуры
```
---
Запрос1.Параметры.Вставить("Организация", массивОрганизаций);
Поняла, но это немного усложняет, потому что не знаю как обратиться на клиенте к этому массиву)
---
как вариант на клиенте передавать значение Неопределено вместо массива, а в запросе сделать не обязательным

```1c
    {ГДЕ
    Организация в (&Организация)}
```

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

```1c
    Если массивОрганизаций <> Неопределено Тогда
    Запрос1.УстановитьПараметр("Организация", массивОрганизаций);
    КонецЕсли;
```
---
&НаСервере
Процедура ЗаполнитьДанныеНаСервере(МассивОрганизаций)
 ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
 ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
                | СчетНаОплатуПокупателю.Дата КАК ДатаОборотаПоСчетам,
                | СчетНаОплатуПокупателю.Ссылка КАК ДокументСчета,
                | СчетНаОплатуПокупателю.Контрагент КАК Контрагент,
                | СчетНаОплатуПокупателю.Контрагент.ИдентификационныйКодЛичности КАК ИИН,
                | РеализацияТоваровУслугУслуги.Ссылка КАК Реализация,
                | Организации.Ссылка КАК Организация
                |ПОМЕСТИТЬ Вр_ТЧ
                |ИЗ
                | Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
                | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
                | ПО СчетНаОплатуПокупателю.Ссылка = РеализацияТоваровУслугУслуги.Ссылка.ДокументОснование
                | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
                | ПО СчетНаОплатуПокупателю.Организация = Организации.Ссылка
                |ГДЕ
                | СчетНаОплатуПокупателю.Дата МЕЖДУ &НачалоПериода И &КонецПериода
                | И СчетНаОплатуПокупателю.Организация В (&Организация)
                |;
                |
                |////////////////////////////////////////////////////////////­////////////////////
                |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
                | Вр_ТЧ.ДокументСчета КАК ДокументСчета,
                | Вр_ТЧ.ДатаОборотаПоСчетам КАК ДатаОборотаПоСчетам,
                | Вр_ТЧ.Контрагент КАК Контрагент,
                | Вр_ТЧ.Реализация КАК Реализация,
                | Вр_ТЧ.ИИН КАК ИИН,
                | АктуальныеЭАВР.СостоянияЭАВР КАК СостоянияЭАВР,
                | ЭлектронныйАктВыполненныхРабот.Дата КАК ДатаАВР,
                | ЭлектронныйАктВыполненныхРабот.Ссылка КАК АВР,
                | ЭлектронныйАктВыполненныхРабот.Состояние КАК СостояниеАВР,
                | Вр_ТЧ.Организация КАК Организация
                |ИЗ
                | Вр_ТЧ КАК Вр_ТЧ
                | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АктуальныеЭАВР КАК АктуальныеЭАВР
                | ПО Вр_ТЧ.Реализация = АктуальныеЭАВР.ПервичныеДокументыЭАВР
                | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронныйАктВыполненныхРабот КАК ЭлектронныйАктВыполненныхРабот
                | ПО Вр_ТЧ.Реализация = ЭлектронныйАктВыполненныхРабот.ДокументОснование";

 Запрос = Новый Запрос;
 Запрос.Текст = ТекстЗапроса;
 Запрос.Параметры.Вставить("НачалоПериода", ОбработкаОбъект.НачПериода);
 Запрос.Параметры.Вставить("КонецПериода", КонецДня(ОбработкаОбъект.КонПериода));

 Если МассивОрганизаций <> Неопределено Тогда
  Запрос.УстановитьПараметр("Организация", МассивОрганизаций);
 КонецЕсли;

 ДанныеСЧ.Загрузить(Запрос.Выполнить().Выгрузить());

КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДанные(Команда)
 ЗаполнитьДанныеНаСервере(Неопределено);
 ПроверитьИИНКонтрагентов(Неопределено);
КонецПроцедуры

Увы не помогло,, ругается что параметр на задан
---
вместо
```1c
    |ГДЕ
    | СчетНаОплатуПокупателю.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    | И СчетНаОплатуПокупателю.Организация В (&Организация)
```

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

```1c
    |ГДЕ
    | СчетНаОплатуПокупателю.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    | {ГДЕ СчетНаОплатуПокупателю.Организация В (&Организация)}
```
---
{ГДЕ СчетНаОплатуПокупателю.Организация В (&Организация)} а да получилось но все равно по двум сразу показывает, видимо нужно через условие сделать
---
так все правильно, вы же в массив два значения добавляете, поэтому по ним и выводит
---
Хотела сделать через условие к значению реквизита "Отбор", но что то не идет
---
в эту клиентскую процедуру ОтборНачалоВыбора добавить прописать данный код

```1c
    СтандартнаяОбработка = Ложь;
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("РежимВыбора",Истина);
    ПараметрыФормы.Вставить("МножественныйВыбор",Истина); ///Если хотим несколько значений

    ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"ПодборРеализации");

    ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаВыбора",ПараметрыФормы,
    ЭтаФорма, , , , ОбработкаВыбора);
```

/// после выбора организация, выполнится эта процедура и если массив был не пустой, тогда заполнятся данные по процедуре ЗаполнитьДанныеНаСервере
&НаКлиенте
Процедура ПриЗакрытииФормыВыбора(Значение, ДопПараметры) Экспорт

    Если Значение = Неопределено Тогда выбрать - вернется
        Возврат;
    КонецЕсли;

    ЗаполнитьДанныеНаСервере(МассивОрганизаций);

КонецПроцедуры
---
[IS-QUOTE]&НаКлиенте
&НаСервере
Процедура ОтборПриИзмененииНаСервере()

 СтандартнаяОбработка = Ложь;
 ПараметрыФормы = Новый Структура;
 ПараметрыФормы.Вставить("РежимВыбора",Истина);
 ПараметрыФормы.Вставить("МножественныйВыбор",Истина); ///Если хотим несколько значений

 ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"ПодборРеализации");

 ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаВыбора",ПараметрыФормы,
 ЭтаФорма, , , , ОбработкаВыбора);
КонецПроцедуры

&НаКлиенте
Процедура ОтборПриИзменении(Элемент)
 ОтборПриИзмененииНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытииФормыВыбора(Значение, ДопПараметры) Экспорт

 Если Значение = Неопределено Тогда
  Возврат;
 КонецЕсли;

 ЗаполнитьДанныеНаСервере(МассивОрганизаций);

КонецПроцедуры
Имеете в виду так? А что вот подразумевается под закрытием формы выбора и ругается на описаниеоповещания что неизвестная переменная
---
не совсем, то что вы поместили в ОтборПриИзмененииНаСервере, нужно выполнять на клиенте, перенесите этот код в ОтборНачалоВыбора на клиенте. (на сервере вы не сможете открыть форму подбора)

а ОтборПриИзмененииНаСервере не нужно тогда

все будет выполняться
ОтборНачалоВыбора (открытие формы)
ПриЗакрытииФормыВыбора(обработка завершения выбора организаций)
ЗаполнитьДанныеНаСервере( заполнение данных)
---
&НаКлиенте
Процедура ПриЗакрытииФормыВыбора(Значение, ДопПараметры) Экспорт

 Если Значение = Неопределено Тогда
  Возврат ;
 КонецЕсли;

 ЗаполнитьДанныеНаСервере(Неопределено);

КонецПроцедуры
А что можете подсказать сюда в возврат написать?
---
ничего не надо писать, в данном случай пустой возврат означает что процедура дальше не будет выполнятся
---
Поняла, но так же два значения возвращается, возможно что нужно где то еще условие добавить?
---
какие значение возвращает? по идее массив ПриЗакрытииФормыВыбора тут после выбора тот, который вы выбираете в форме подбора. Там также 2 значения?
---
Да все верно, так же два значения возвращает
---
ну а вы сколько выбираете в форме подбора?
---
1 значение
---
ПриЗакрытииФормыВыбора тут, Значение массив из двух организаций?
---
В этот массив ничего не вводила, но при открытии формы значения два
---
а наверно в этом дело, в этой строке справочник открываете? тут вместо реализации должен быть справочник - организации-форма выбора

```1c
    ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаВыбора",ПараметрыФормы,
    ЭтаФорма, , , , ОбработкаВыбора);

    ОткрытьФорму("Справочник.Организации.ФормаВыбора",ПараметрыФормы,
    ЭтаФорма, , , , ОбработкаВыбора);
```
---
нет так же пооменяла вместо реализации на справочник
---
а всего в вашей базе больше 2 организаций?
---
```1c
    &НаКлиенте
    Процедура ПриЗакрытииФормыВыбора(Значение, ДопПараметры) Экспорт

    Если Значение = Неопределено Тогда
    Возврат;
    КонецЕсли;

    ЗаполнитьДанныеНаСервере(Неопределено);

    КонецПроцедуры

    &НаКлиенте
    Процедура ОтборНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("РежимВыбора",Истина);
    ПараметрыФормы.Вставить("МножественныйВыбор",Истина); ///Если хотим несколько значений

    ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"ПодборОрганизации");

    ОткрытьФорму("Справочник.Организации.ФормаВыбора",ПараметрыФормы,
    ЭтаФорма, , , , ОбработкаВыбора);
    КонецПроцедуры
```

  У меня вот так сейчас
---
вместо неопределено тут должно быть Значение с массивом организаций

```1c
    ЗаполнитьДанныеНаСервере(Значение );
```
---
ЗаполнитьДанныеНаСервере(Значение );
А как тогда правильно обратиться к значению Массива? или нужно что то отдельное заводить для этого
---
Значение по идее и будет массив с элементами, в отладке посмотрите какого типа
---
Значение получает тип ссылки на справочник, но как на клиенте его обозначить не знаю
пробовала вот так
ЗаполнитьДанныеНаСервере(ПредопределенноеЗначение("Справочник.Организации.Ссылка"));
---
нет, ссылка и нужна, просто достаточно так передать

```1c
    ЗаполнитьДанныеНаСервере(Значение );
```
---
Он все равно не передает, если так оставить
---
в этой процедуре ЗаполнитьДанныеНаСервере, параметр МассивОрганизаций пустой? в отладке
---
Да пустой
---
не может такого быть, если в ЗаполнитьДанныеНаСервере передаете не пустой массив или ссылку, то и в самой процедуре должно быть не пустое значение
---
Не могу ничего сказать... я заполняю данные, потом в отборе выбираю, в поцедуре выбора падает, а вот в процедуре заполнения массив неопределенно и пустой
---
А нет простите ошиблась, передается в массив все верно
---
в итоге все правильно работает или как?
---
Нет отбор не делается, в списке все так же все документы по двум организациям
---
попробуйте запрос в консоле запросов, все так же будет или нет
---
В консоли запроса параметр организации не добавляется
---
вручную создайте параметр просто
---
Так нет, не выходит, вручную добавила и список не вышел
---
добавили параметр, с типом организации, и выбрали новую организацию? А по этой организации есть данные?
---
Нет, обе выбирала, не выводит ни по одной из них
---
пришлите скрин запроса в консоле
---
Выбрала период, документы вышли, но только 1 организацию показывает, даже если менять в параметре на другую
---
во первых имя параметра должно быть к в запросе, то есть Организация, во вторых Тест это есть такая организация?
---
Да это вторая организация
---
в параметрах, имя Параметр, поменяйте на Организация и период увеличьте , у вас там время одинаковое начало и окончания
---
Исправила, даже на сегодня создала документ для второй организации, все равно не берет запрос
---
период начало и окончания какой стоит? дата документа точно в него попадает?
---
29.08.2024 0:00:00 - 29.08.2024 11:22:25
Да попадает - 29.08.2024 11:22:23 дата документа
---
лучше дату окончания поставить на конец дня, а то доли секунд тоже могут решать)
---
Да исправила и выводит
---
возможно в коде тоже период не тот, который нужно указываете, поэтому что-то не выводило
---
Но в самой обработке же все равно две выводит, что тогда с этим делать?
---
```1c
    Если массивОрганизаций <> Неопределено Тогда
    Запрос1.УстановитьПараметр("Организация", массивОрганизаций);
    КонецЕсли;
```

это условие выполняется, параметр устанавливается?
---
Да устанавливается
---
опять же период начало и окончания какой особенно время?
---
На форме у меня только дату видит
---
разные дни, так что я думаю должно попадать, тогда странно...
---
еще раз в обработке что выводит, покажите скрин?
---
а сам период хотя бы работает или тоже нет?) если сократить по датам
---
Работает да
---
блин тогда не понятно, ну попробуйте убрать фигурные скобки у параметра организации и ГДЕ заменить на И, чтобы организация тоже была обязательным
---
да исправила теперь работает, а на форме у меня кнопка заполнить данные, что вот теперь с ней делать)
---
ну можно ее оставить конечно, только проблема в том, что если не передать массив организаций, отбор не выполнится. Также не сработает отбор, если массив организаций не будет заполнено... Поэтому вроде как и нужно было использовать не обязательный параметр, но у вас почему то он не отрабатывает
---
Хорошо, спасибо