|
Упростить метод фильтрации списка при НачалеВыбора 1с8.2 управ.приложение | ☑ | ||
---|---|---|---|---|
0
ser-korvin
30.03.12
✎
11:47
|
В доке, в табличном поле при начале выбора элемента, необходимо настроить фильтр по заранее выьранному реквизиту в форме этого документа. На 8.1 это легко решается таким кодом:
Процедура НачислениеЗарплатыФИОНачалоВыбора(Элемент, СтандартнаяОбработка) СтандартнаяОбработка=Ложь; Форма = Справочники.Работник.ПолучитьФормуВыбора(,Элемент,); Форма.СправочникСписок.Отбор.Отдел.ВидСравнения = ВидСравнения.Равно; Форма.СправочникСписок.Отбор.Отдел.Значение = ЭтотОбъект.Отдел; Форма.СправочникСписок.Отбор.Отдел.Использование = Истина; Форма.Открыть(); КонецПроцедуры А в 8.2 упр.прилож. я решил тока так: &НаСервере Функция ПолучитьСписокПользователей() Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | Сотрудник.Наименование |ИЗ | Справочник.Сотрудник КАК Сотрудник |ГДЕ | Сотрудник.Отдел = &Отдел"; Запрос.УстановитьПараметр("Отдел", Объект.Отдел); Список = Новый СписокЗначений; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл; Список.Добавить(Выборка.Наименование); КонецЦикла; Возврат(Список); КонецФункции &НаКлиенте Процедура НачислениеЗарплатыФИОНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Список = ПолучитьСписокПользователей(); СтандартнаяОбработка = Ложь; Форма = ПолучитьФорму("Справочник.Сотрудник.ФормаВыбора"); ЭлементОтбора = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; ЭлементОтбора.Использование = Истина; ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; ЭлементОтбора.ПравоеЗначение = Список; ТекЗнач = Форма.ОткрытьМодально(); КонецПроцедуры Уверен можно проще решить, подскажите как. |
|||
1
Ns33
30.03.12
✎
11:57
|
В 8.2 даже кодить ничего не надо, используй свойство "Связи параметров выбора" реквизитов объектов конфигурации (такое же свойство есть и у элементов формы, отображающие данный реквизит).
|
|||
2
acsent
30.03.12
✎
12:04
|
&НаКлиенте
Процедура ДоговорКонтрагентаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) ГоловнаяОрганизация = блОбщегоНазначения.ПолучитьЗначениеРеквизита(Объект.Организация, "ГоловнаяОрганизация"); Если ЗначениеЗаполнено(ГоловнаяОрганизация) Тогда НовыйПараметр = Новый ПараметрВыбора("Отбор.Организация", ГоловнаяОрганизация); Иначе НовыйПараметр = Новый ПараметрВыбора("Отбор.Организация", Объект.Организация); КонецЕсли; Массив = Новый Массив; Массив.Добавить(НовыйПараметр); ПараметрыВыбора = Новый ФиксированныйМассив(Массив); Элемент.ПараметрыВыбора = ПараметрыВыбора; КонецПроцедуры |
|||
3
ser-korvin
30.03.12
✎
12:07
|
(1) Спасибо, понял. Получилось.
(2) Возьму на заметку, если будет нужен фильр не из формы. Спасибо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |