Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 02:05

Обновление на форме списка справочника регистра сведений после отбора

Автор kaf_info, 17 июн 2016, 18:08

0 Пользователей и 1 гость просматривают эту тему.

kaf_info

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

LexaK

скорее всего у вас срабатывает условие сравнение с пустым статусом,
добавьте в ваш динамический запрос в условие что-то вроде

//ваш запрос динамического списка
Выбрать
...
Где
...
    ( рег.Статус = &ПараметрСтатус
или  &ПараметрСтатус = Значение(Перечисление.СтатусСтудента.ПустаяСсылка) //добавьте это условие (ну или по типу переменной смотрите что у вас там)
    )
...

Если статус задан - будут выбраны студенты с заданным статусом
Если статус не задан (т.е. пустой) - тогда будет выбрано все
если помогло нажмите: Спасибо!

kaf_info

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


Может быть в процедуре кнопки очистки этого поля отбора обновить форму?

М

LexaK

так это еще проще.
Логика такая, если пользователь выбрал Статус, то устанавливаете отбор.
если статус очищен, тоже очищаете отбор.
вот как можно модифицировать ваш код


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

    //здесь правильно, по любому чистим/сбрасываем отбор
    ТекОтбор=Список.Отбор.Элементы;
    ТекОтбор.Очистить();

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

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


если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск