Отбор на форме выбора по нескольким условиям

1. HaIIpuKoJIe 11.11.21 15:49 Сейчас в теме
СтандартнаяОбработка = Ложь;
	ОписаниеОповещенияЗавершение = Новый ОписаниеОповещения("ОбработатьВыборСпецификацииЗавершение",ЭтаФорма);
	
	ЗначениеОтбора = Новый Структура("ОсновноеИзделиеНоменклатура", Элементы.ОбъектыКалькуляции.Текущиеданные.Номенклатура);
	ПараметрыВыбораПоНоменклатуре = Новый Структура("Отбор", ЗначениеОтбора);

	ОткрытьФорму("Справочник.РесурсныеСпецификации.ФормаВыбора",ПараметрыВыбораПоНоменклатуре,ЭтаФорма,,,,ОписаниеОповещенияЗавершение);

Показать

Подскажите пожалуйста как сделать отбор по нескольким условиям. Нужен отбор по "ОсновноеИзделиеНоменклатура" И "ОсновноеИзделиеВидНоменклатуры". То есть при открытие формы выбора необходимо видеть спецификации для номенклатуры и для видов номенклатуры одновременно.
По теме из базы знаний
Найденные решения
4. Release 11.11.21 16:28 Сейчас в теме
(1) Если я правильно понял задачу:
&НаСервереБезКонтекста
Функция ПолучитьСпецификацииПоНоменклатуре(Номенклатура)
	ТекстЗапроса = "ВЫБРАТЬ
	               |	РесурсныеСпецификации.Ссылка КАК Ссылка
	               |ИЗ
	               |	Справочник.РесурсныеСпецификации КАК РесурсныеСпецификации
	               |ГДЕ
	               |	РесурсныеСпецификации.ОсновноеИзделиеНоменклатура = &ОсновноеИзделиеНоменклатура
	               |	ИЛИ РесурсныеСпецификации.ОсновноеИзделиеВидНоменклатуры = &ОсновноеИзделиеВидНоменклатуры";
	
	Запрос = Новый Запрос;
	
	Запрос.Текст = ТекстЗапроса;
	
	Запрос.УстановитьПараметр("ОсновноеИзделиеНоменклатура", Номенклатура);
	Запрос.УстановитьПараметр("ОсновноеИзделиеВидНоменклатуры", Номенклатура.ВидНоменклатуры);
	
	Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции

//...
	СтандартнаяОбработка = Ложь;
	ОписаниеОповещенияЗавершение = Новый ОписаниеОповещения("ОбработатьВыборСпецификацииЗавершение", ЭтаФорма);
	
	МассивСсылокСпецификаций		= ПолучитьСпецификацииПоНоменклатуре(Элементы.ОбъектыКалькуляции.Текущиеданные.Номенклатура);
	ЗначениеОтбора					= Новый Структура("Ссылка", МассивСсылокСпецификаций);
	ПараметрыВыбораПоНоменклатуре	= Новый Структура("Отбор", ЗначениеОтбора);
	
	ОткрытьФорму("Справочник.РесурсныеСпецификации.ФормаВыбора", ПараметрыВыбораПоНоменклатуре, ЭтаФорма, , , , ОписаниеОповещенияЗавершение);
//...
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 33 11.11.21 15:55 Сейчас в теме
(1) Примерно так:
СтруктураОтбора= Новый Структура;
СтруктураОтбора.Вставить("ПолеА", ЗначениеА);
СтруктураОтбора.Вставить("ПолеБ", ЗначениеБ);
ПараметрыФормы = Новый Структура("Отбор", СтруктураОтбора);

 ОткрытьФорму("Справочник.РесурсныеСпецификации.ФормаВыбора",ПараметрыФормы ...
6. HaIIpuKoJIe 11.11.21 16:41 Сейчас в теме
(2)То есть просто добавить еще одно условие в структуру? У меня не работает так. Там получается условие "И" или "ИЛИ"?
7. Sashares 33 11.11.21 16:46 Сейчас в теме
(6)Да, просто добавить в структуру еще одно поле.
Условие в таком отборе всегда по И.
8. HaIIpuKoJIe 11.11.21 16:54 Сейчас в теме
(7)Спецификация не принадлежит одновременно и номенклатуре и виду номенклатуры.
9. Sashares 33 11.11.21 17:06 Сейчас в теме
(8)То что вы передаете в отбор применяется к динамическому списку, который является основным реквизитом формы, если другого не прописано в открываемой форме в ПриСозданииНаСервере.

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

(8)
Спецификация не принадлежит одновременно и номенклатуре и виду номенклатуры.


Тогда такой вариант не подходит, смотрите вариант в (4)
4. Release 11.11.21 16:28 Сейчас в теме
(1) Если я правильно понял задачу:
&НаСервереБезКонтекста
Функция ПолучитьСпецификацииПоНоменклатуре(Номенклатура)
	ТекстЗапроса = "ВЫБРАТЬ
	               |	РесурсныеСпецификации.Ссылка КАК Ссылка
	               |ИЗ
	               |	Справочник.РесурсныеСпецификации КАК РесурсныеСпецификации
	               |ГДЕ
	               |	РесурсныеСпецификации.ОсновноеИзделиеНоменклатура = &ОсновноеИзделиеНоменклатура
	               |	ИЛИ РесурсныеСпецификации.ОсновноеИзделиеВидНоменклатуры = &ОсновноеИзделиеВидНоменклатуры";
	
	Запрос = Новый Запрос;
	
	Запрос.Текст = ТекстЗапроса;
	
	Запрос.УстановитьПараметр("ОсновноеИзделиеНоменклатура", Номенклатура);
	Запрос.УстановитьПараметр("ОсновноеИзделиеВидНоменклатуры", Номенклатура.ВидНоменклатуры);
	
	Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции

//...
	СтандартнаяОбработка = Ложь;
	ОписаниеОповещенияЗавершение = Новый ОписаниеОповещения("ОбработатьВыборСпецификацииЗавершение", ЭтаФорма);
	
	МассивСсылокСпецификаций		= ПолучитьСпецификацииПоНоменклатуре(Элементы.ОбъектыКалькуляции.Текущиеданные.Номенклатура);
	ЗначениеОтбора					= Новый Структура("Ссылка", МассивСсылокСпецификаций);
	ПараметрыВыбораПоНоменклатуре	= Новый Структура("Отбор", ЗначениеОтбора);
	
	ОткрытьФорму("Справочник.РесурсныеСпецификации.ФормаВыбора", ПараметрыВыбораПоНоменклатуре, ЭтаФорма, , , , ОписаниеОповещенияЗавершение);
//...
Показать
5. Release 11.11.21 16:34 Сейчас в теме
(1) Или получить форму, установить отборы списка, открыть форму.
Для БСП можно использовать: ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка().
Почитать подробнее можно тут: https://wiseadvice-it.ru/o-kompanii/blog/articles/otbor-na-upravlyaemyh-formah-v-1s-8-3/
3. Westonline82 11.11.21 15:56 Сейчас в теме
    ЗначениеОтбора = Новый Структура("ОсновноеИзделиеНоменклатура, ОсновноеИзделиеВидНоменклатуры", Элементы.ОбъектыКалькуляции.Текущиеданные.Номенклатура, ВидНоменклатуры);
    ПараметрыВыбораПоНоменклатуре = Новый Структура("Отбор", ЗначениеОтбора);
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот