Как програмно изменить отбор в динамическом списке

1. Tym1980 24.01.20 17:05 Сейчас в теме
На форме присутствует динамический список.
Установил на форму галку "ОтборПоДоговору ", параметр етого реквизита передаю в запрос динамического списка, но увы форма не обновляется

Как обновить отбор в динамическом списке, если я не хочу делать отбор по договору.

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


текс запроса динамического списка
ВЫБРАТЬ
	ДолгиПокупателейПоДокументахОстатки.ДокументОснование КАК ДокументОснование,
	ДолгиПокупателейПоДокументахОстатки.Организация КАК Организация,
	ДолгиПокупателейПоДокументахОстатки.Контрагент КАК Контрагент,
	ДолгиПокупателейПоДокументахОстатки.Договор КАК Договор,
	ДолгиПокупателейПоДокументахОстатки.СуммаОстаток КАК СуммаОстаток
ИЗ
	РегистрНакопления.ДолгиПокупателейПоДокументах.Остатки(
			,
			Организация = &Организация
				И Контрагент = &Контрагент) КАК ДолгиПокупателейПоДокументахОстатки
ГДЕ
	ВЫБОР
	   КОГДА &ОтборПоДоговору
	   ТОГДА ДолгиПокупателейПоДокументахОстатки.Договор = &Договор
	КОНЕЦ

УПОРЯДОЧИТЬ ПО
	ДолгиПокупателейПоДокументахОстатки.ДокументОснование.Дата
Показать
По теме из базы знаний
Найденные решения
10. Tym1980 24.01.20 17:45 Сейчас в теме
Переделал отбор по договору через компановщик.

&НаСервере
Процедура ОтборПоДоговоруПриИзмененииНаСервере()
Этаформа.Список.Отбор.Элементы.Очистить();

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

Если ОтборПоДоговору тогда
Отбор.Использование = Истина;
Иначе
Отбор.Использование = Ложь;
КонецЕсли;
КонецПроцедуры
TuneSoft; kirilyan; 127.0.0.0; dimisa; user1559729; ketr; Velesstroy_OOO; DIOmisus; anna110297; acanta; +10 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. viplelik 34 24.01.20 17:15 Сейчас в теме
(1) Если я правильно понял
Список.ТекстЗапроса = "ВАШ ТЕКСТ ЗАПРОСА"


Если запрос был не произвольный тогда, вначале выполним
Список.ПроизвольныйЗапрос = Истина;
3. Nikifforoff96 24.01.20 17:17 Сейчас в теме
(1)
Список.Параметры.УстановитьЗначениеПараметра("ОтборПоДоговору", ОтборПоДоговору);

Это нужно делать каждый раз после изменения реквизита (установки галки).

может быть, кстати, сработает Элементы.Список.Обновить(), но это не точно, не помню
4. Tym1980 24.01.20 17:25 Сейчас в теме
(3)
не помогает.

При снятии галки через отладчик в "Список.Параметры" остается отбор по договору. Как удалить его оттуда?
5. Nikifforoff96 24.01.20 17:28 Сейчас в теме
(4) Зачем его удалять. Это не отбор, кстати, а параметр для условия в запросе дин. списка.
Просто ты переводишь значение этого параметра в Ложь (когда галка снимается) и в Истину (когда галка ставится)
6. Tym1980 24.01.20 17:29 Сейчас в теме
(5) ОК, но список не обновляется
7. Nikifforoff96 24.01.20 17:31 Сейчас в теме
(6) попробуй после установки параметра
Элементы.Список.Обновить()
9. vadim.semyonov.rzn 24.01.20 17:34 Сейчас в теме
(4) Не надо устанавливать параметры. Лучше использовать возможность отбора прямо в динамическом списке. В типовых конфигурациях делается примерно так: создается реквизит формы нужного типа, при изменении которого вызываем
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
					Список, "Договор", РеквизитФормыДоговор, ВидСравненияКомпоновкиДанных.Равно,, ЗначениеЗаполнено(РеквизитФормыДоговор));
Для сброса отбора ставим обработчик на событие "Очистка", содержащий короткую инструкцию
СтандартнаяОбработка = Истина;
baracuda; hasp_x; crosby; endim; Yan_Malyakov; user926863; eeeio; +7 Ответить
8. viplelik 34 24.01.20 17:33 Сейчас в теме
Есть такой вариант

Это убрать.
ГДЕ
    ВЫБОР
       КОГДА &ОтборПоДоговору
       ТОГДА ДолгиПокупателейПоДокументахОстатки.Договор = &Договор
    КОНЕЦ



А отбор делать так:

Отбор = Список.Отбор;
Отбор.Элементы.Очистить();

ЭлементОтбора = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Договор");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Договор;
10. Tym1980 24.01.20 17:45 Сейчас в теме
Переделал отбор по договору через компановщик.

&НаСервере
Процедура ОтборПоДоговоруПриИзмененииНаСервере()
Этаформа.Список.Отбор.Элементы.Очистить();

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

Если ОтборПоДоговору тогда
Отбор.Использование = Истина;
Иначе
Отбор.Использование = Ложь;
КонецЕсли;
КонецПроцедуры
TuneSoft; kirilyan; 127.0.0.0; dimisa; user1559729; ketr; Velesstroy_OOO; DIOmisus; anna110297; acanta; +10 Ответить
11. viplelik 34 24.01.20 18:22 Сейчас в теме
(10) Так красивее будет
...
Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
Отбор.Использование = ОтборПоДоговору;
КонецПроцедуры
endim; anna110297; config; +3 Ответить
12. MaxS 2854 16.10.21 19:07 Сейчас в теме
Странно, что нигде не предлагают использовать типовые процедуры из БСП. В любой типовой это есть.
Поищите примеры по тексту модулей форм:
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка
mark_oilbass; arxxm; 20121202; SerEvg; JusteRU; ErrorEd88; +6 Ответить
14. crosby 280 25.08.22 14:47 Сейчас в теме
13. kassad 15.12.21 14:31 Сейчас в теме
(12)
процедуры из БСП. В любой типовой это е

да, есть, но если нужно делать что то сложное - отбор со вложенными группировками И ИЛИ, тогда нельзя.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот