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