Здравствуйте!
Не подскажите, как открыть форму выбора справочника с отбором из нескольких элементов?
Нужно отобрать в форме выбора сотрудников по физлицу и дате увольнения, которая либо больше какой-то даты, либо пустая(это условие одновременно нужно)
На форме таблица, в которой нужен отбор, это динамический список
спасибо
Не подскажите, как открыть форму выбора справочника с отбором из нескольких элементов?
Нужно отобрать в форме выбора сотрудников по физлицу и дате увольнения, которая либо больше какой-то даты, либо пустая(это условие одновременно нужно)
На форме таблица, в которой нужен отбор, это динамический список
спасибо
По теме из базы знаний
- Управляемое приложение: правильное программное открытие форм
- Вывод вариантов СКД в таблицы на управляемой форме
- Форма выбора (подбор) в управляемых формах
- Глобальное меню разработчика для управляемых форм
- Удаление документов в фоне (управляемые формы) в транзакции с отбором по типу документов, по периоду и возможностью остановки удаления по времени
Найденные решения
Сделал так
&НаКлиенте
Процедура ТабДанныхСотрудникНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Форма = ОткрытьФорму("Справочник.Сотрудники.ФормаВыбора",,Элемент);
Список = Форма.Список;
Отбор = Список.КомпоновщикНастроек.Настройки.Отбор;
Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ГруппаЭлементовОтбора = Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаЭлементовОтбора.Использование = Истина;
ГруппаЭлементовОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ЭлементОтбора.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ДатаОкончания;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора2 = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ЭлементОтбора2.Использование = Истина;
ЭлементОтбора2.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора3 = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора3.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
ЭлементОтбора3.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора3.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ФизическоеЛицо;
ЭлементОтбора3.Использование = Истина;
ЭлементОтбора3.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
КонецПроцедуры
Показать
(15) такой способ вроде отрабатывает как надо
&НаКлиенте
Процедура ТабДанныхСотрудникНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Форма = ОткрытьФорму("Справочник.Сотрудники.ФормаВыбора",,Элемент);
Список = Форма.Список;
Отбор = Список.КомпоновщикНастроек.Настройки.Отбор;
Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
//Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Очистить();
Для Каждого Стр Из Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
Если ТипЗнч(Стр) = Тип("ОтборКомпоновкиДанных") Тогда
Стр.Элементы.Очистить();
ГруппаЭлементовОтбора = Стр.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаЭлементовОтбора.Использование = Истина;
ГруппаЭлементовОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ЭлементОтбора.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ДатаОкончания;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора2 = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ЭлементОтбора2.Использование = Истина;
ЭлементОтбора2.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора3 = Стр.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора3.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
ЭлементОтбора3.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора3.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ФизическоеЛицо;
ЭлементОтбора3.Использование = Истина;
ЭлементОтбора3.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
КонецЕсли;
КонецЦикла;
ГруппаЭлементовОтбора = Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаЭлементовОтбора.Использование = Истина;
ГруппаЭлементовОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ЭлементОтбора.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ДатаОкончания;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора2 = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ЭлементОтбора2.Использование = Истина;
ЭлементОтбора2.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора3 = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора3.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
ЭлементОтбора3.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора3.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ФизическоеЛицо;
ЭлементОтбора3.Использование = Истина;
ЭлементОтбора3.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
Для Каждого Стр Из Форма.Список.Отбор.Элементы Цикл
Если Стр.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОформленПоТрудовомуДоговору") Тогда
//Форма.Список.Отбор.Удалить(Стр);
Стр.Использование = Ложь;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ну, как-то так:
&НаКлиенте
Форма = ОткрытьФорму("Справочник.Сотрудники.Форма.ФормаСписка"); //Открываем форму
ОтборВладелец = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //Добавлям отбор
ОтборВладелец.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; //Как будем сравнивать
ОтборВладелец.Использование = Истина; // Устанавливаем галку использованияНовый ПолеКомпоновкиДанных("ФизическоеЛицо")
ОтборВладелец.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизЛицо"); //По какому реквизиту будем делать отбор
ОтборВладелец.ПравоеЗначение = Объект.ФЛ; // И само значение отбора
я делаю так
НаКлиенте
НаСервере
НаКлиенте
СписокДокументов = СписокДокументов();
ПараметрыОбъекта = Новый Структура;
Если ЗначениеЗаполнено(СписокДокументов) Тогда
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Ссылка", СписокДокументов));
ОткрытьФорму("Документ.ПередачаМатериаловВЭксплуатацию.ФормаВыбора", ПараметрыФормы, Элемент);
КонецЕсли;
НаСервере
&НаСервереБезКонтекста
Функция СписокДокументов()
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ";
Возврат НекийМассивЗначенийЗапроса
КонецФункции
ПоказатьГруппаЭлементовОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ЭлементОтбора.ПравоеЗначение = 100;
ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ЭлементОтбора.ПравоеЗначение = 200;
Показатьпопробую подобно этому
Сделал так
&НаКлиенте
Процедура ТабДанныхСотрудникНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Форма = ОткрытьФорму("Справочник.Сотрудники.ФормаВыбора",,Элемент);
Список = Форма.Список;
Отбор = Список.КомпоновщикНастроек.Настройки.Отбор;
Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ГруппаЭлементовОтбора = Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаЭлементовОтбора.Использование = Истина;
ГруппаЭлементовОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ЭлементОтбора.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ДатаОкончания;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора2 = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ЭлементОтбора2.Использование = Истина;
ЭлементОтбора2.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора3 = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора3.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
ЭлементОтбора3.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора3.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ФизическоеЛицо;
ЭлементОтбора3.Использование = Истина;
ЭлементОтбора3.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
КонецПроцедуры
Показать
(15) такой способ вроде отрабатывает как надо
&НаКлиенте
Процедура ТабДанныхСотрудникНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Форма = ОткрытьФорму("Справочник.Сотрудники.ФормаВыбора",,Элемент);
Список = Форма.Список;
Отбор = Список.КомпоновщикНастроек.Настройки.Отбор;
Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
//Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Очистить();
Для Каждого Стр Из Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
Если ТипЗнч(Стр) = Тип("ОтборКомпоновкиДанных") Тогда
Стр.Элементы.Очистить();
ГруппаЭлементовОтбора = Стр.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаЭлементовОтбора.Использование = Истина;
ГруппаЭлементовОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ЭлементОтбора.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ДатаОкончания;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора2 = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ЭлементОтбора2.Использование = Истина;
ЭлементОтбора2.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора3 = Стр.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора3.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
ЭлементОтбора3.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора3.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ФизическоеЛицо;
ЭлементОтбора3.Использование = Истина;
ЭлементОтбора3.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
КонецЕсли;
КонецЦикла;
ГруппаЭлементовОтбора = Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаЭлементовОтбора.Использование = Истина;
ГруппаЭлементовОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ЭлементОтбора.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ДатаОкончания;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора2 = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаУвольнения");
ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ЭлементОтбора2.Использование = Истина;
ЭлементОтбора2.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора3 = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора3.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
ЭлементОтбора3.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора3.ПравоеЗначение = Элементы.ТабДанных.ТекущиеДанные.ФизическоеЛицо;
ЭлементОтбора3.Использование = Истина;
ЭлементОтбора3.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
Для Каждого Стр Из Форма.Список.Отбор.Элементы Цикл
Если Стр.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОформленПоТрудовомуДоговору") Тогда
//Форма.Список.Отбор.Удалить(Стр);
Стр.Использование = Ложь;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот