Отбор на форме выбора по нескольким условиям
СтандартнаяОбработка = Ложь;
ОписаниеОповещенияЗавершение = Новый ОписаниеОповещения("ОбработатьВыборСпецификацииЗавершение",ЭтаФорма);
ЗначениеОтбора = Новый Структура("ОсновноеИзделиеНоменклатура", Элементы.ОбъектыКалькуляции.Текущиеданные.Номенклатура);
ПараметрыВыбораПоНоменклатуре = Новый Структура("Отбор", ЗначениеОтбора);
ОткрытьФорму("Справочник.РесурсныеСпецификации.ФормаВыбора",ПараметрыВыбораПоНоменклатуре,ЭтаФорма,,,,ОписаниеОповещенияЗавершение);
ПоказатьПодскажите пожалуйста как сделать отбор по нескольким условиям. Нужен отбор по "ОсновноеИзделиеНоменклатура" И "ОсновноеИзделиеВидНоменклатуры". То есть при открытие формы выбора необходимо видеть спецификации для номенклатуры и для видов номенклатуры одновременно.
По теме из базы знаний
- Групповая обработка документов (на управляемых формах)
- Программисту на заметку: отбор в динамическом списке формы выбора справочника по вхождению значения отбора в заданный список значений
- Меняем стандартную форму выбора для реквизита формы на свою форму с запросом
- Форма выбора (подбор) в управляемых формах
- Форма выбора с отбором. Пять вариантов настройки отбора
Найденные решения
(1) Если я правильно понял задачу:
&НаСервереБезКонтекста
Функция ПолучитьСпецификацииПоНоменклатуре(Номенклатура)
ТекстЗапроса = "ВЫБРАТЬ
| РесурсныеСпецификации.Ссылка КАК Ссылка
|ИЗ
| Справочник.РесурсныеСпецификации КАК РесурсныеСпецификации
|ГДЕ
| РесурсныеСпецификации.ОсновноеИзделиеНоменклатура = &ОсновноеИзделиеНоменклатура
| ИЛИ РесурсныеСпецификации.ОсновноеИзделиеВидНоменклатуры = &ОсновноеИзделиеВидНоменклатуры";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ОсновноеИзделиеНоменклатура", Номенклатура);
Запрос.УстановитьПараметр("ОсновноеИзделиеВидНоменклатуры", Номенклатура.ВидНоменклатуры);
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
//...
СтандартнаяОбработка = Ложь;
ОписаниеОповещенияЗавершение = Новый ОписаниеОповещения("ОбработатьВыборСпецификацииЗавершение", ЭтаФорма);
МассивСсылокСпецификаций = ПолучитьСпецификацииПоНоменклатуре(Элементы.ОбъектыКалькуляции.Текущиеданные.Номенклатура);
ЗначениеОтбора = Новый Структура("Ссылка", МассивСсылокСпецификаций);
ПараметрыВыбораПоНоменклатуре = Новый Структура("Отбор", ЗначениеОтбора);
ОткрытьФорму("Справочник.РесурсныеСпецификации.ФормаВыбора", ПараметрыВыбораПоНоменклатуре, ЭтаФорма, , , , ОписаниеОповещенияЗавершение);
//...
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Примерно так:
СтруктураОтбора= Новый Структура;
СтруктураОтбора.Вставить("ПолеА", ЗначениеА);
СтруктураОтбора.Вставить("ПолеБ", ЗначениеБ);
ПараметрыФормы = Новый Структура("Отбор", СтруктураОтбора);
ОткрытьФорму("Справочник.РесурсныеСпецификации.ФормаВыбора",ПараметрыФормы ...
(8)То что вы передаете в отбор применяется к динамическому списку, который является основным реквизитом формы, если другого не прописано в открываемой форме в ПриСозданииНаСервере.
Если в динамическом списке таких полей, которые вы задаете в отборе нет, то отбор по такому полю не применится.
(8)
Тогда такой вариант не подходит, смотрите вариант в (4)
Если в динамическом списке таких полей, которые вы задаете в отборе нет, то отбор по такому полю не применится.
(8)
Спецификация не принадлежит одновременно и номенклатуре и виду номенклатуры.
Тогда такой вариант не подходит, смотрите вариант в (4)
(1) Если я правильно понял задачу:
&НаСервереБезКонтекста
Функция ПолучитьСпецификацииПоНоменклатуре(Номенклатура)
ТекстЗапроса = "ВЫБРАТЬ
| РесурсныеСпецификации.Ссылка КАК Ссылка
|ИЗ
| Справочник.РесурсныеСпецификации КАК РесурсныеСпецификации
|ГДЕ
| РесурсныеСпецификации.ОсновноеИзделиеНоменклатура = &ОсновноеИзделиеНоменклатура
| ИЛИ РесурсныеСпецификации.ОсновноеИзделиеВидНоменклатуры = &ОсновноеИзделиеВидНоменклатуры";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ОсновноеИзделиеНоменклатура", Номенклатура);
Запрос.УстановитьПараметр("ОсновноеИзделиеВидНоменклатуры", Номенклатура.ВидНоменклатуры);
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
//...
СтандартнаяОбработка = Ложь;
ОписаниеОповещенияЗавершение = Новый ОписаниеОповещения("ОбработатьВыборСпецификацииЗавершение", ЭтаФорма);
МассивСсылокСпецификаций = ПолучитьСпецификацииПоНоменклатуре(Элементы.ОбъектыКалькуляции.Текущиеданные.Номенклатура);
ЗначениеОтбора = Новый Структура("Ссылка", МассивСсылокСпецификаций);
ПараметрыВыбораПоНоменклатуре = Новый Структура("Отбор", ЗначениеОтбора);
ОткрытьФорму("Справочник.РесурсныеСпецификации.ФормаВыбора", ПараметрыВыбораПоНоменклатуре, ЭтаФорма, , , , ОписаниеОповещенияЗавершение);
//...
Показать
(1) Или получить форму, установить отборы списка, открыть форму.
Для БСП можно использовать: ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка().
Почитать подробнее можно тут:https://wiseadvice-it.ru/o-kompanii/blog/articles/otbor-na-upravlyaemyh-formah-v-1s-8-3/
Для БСП можно использовать: ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка().
Почитать подробнее можно тут:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот