Имя: Пароль:
1C
 
Настройки.Отбор
,
0 pet07
 
20.11.24
13:04
Не работает ЭлементОтбора.Использование = Ложь;. Отбор все равно применяется. Что я делаю не так?

&НаКлиенте
Процедура УстановитьОтборПоДате()
	ОтборыСписка = Список.КомпоновщикНастроек.Настройки.Отбор;
	Для Каждого ЭлементОтбора ИЗ ОтборыСписка.Элементы Цикл 
		
		ЭлементОтбора.Использование = Ложь;	   
		
		Если ЭлементОтбора.Представление = "НачалоПериода" Тогда   
			Если ЗначениеЗаполнено(ОсновнойПериод.ДатаНачала) Тогда   
				ЭлементОтбора.ПравоеЗначение = ОсновнойПериод.ДатаНачала;
				//ЭлементОтбора.Использование = Истина;  
			КонецЕсли;	 
			
		ИначеЕсли ЭлементОтбора.Представление = "КонецПериода" Тогда	
			Если ЗначениеЗаполнено(ОсновнойПериод.ДатаОкончания) Тогда
				ЭлементОтбора.ПравоеЗначение = ОсновнойПериод.ДатаОкончания;
				//ЭлементОтбора.Использование = Истина; 	
			КонецЕсли;		
		КонецЕсли;	 
		
	КонецЦикла;
КонецПроцедуры
1 osa1C
 
20.11.24
07:59
(0) Какой результат ты хочешь получить?
2 SleepyHead
 
гуру
20.11.24
08:28
(0) Уверен, что условие срабатывает? Что в ЭлементОтбора.Представление строка "КонецПериода" а не что-то другое?

Пройдись отладчиком, проверь.
3 toypaul
 
гуру
20.11.24
08:35
(0) У динамического списка есть свойство Период. Отбор по периоду (если это про него речь). Нужно делать через это свойство. И скорее всего оно и срабатывает.
4 Ненавижу 1С
 
гуру
20.11.24
08:35
Полагаться на представление в коде, это моветон. Тем более, что представление скорее всего "Конец периода" или другое.
5 toypaul
 
гуру
20.11.24
08:36
+ (3) немного не так. не у ДС, а у таблицы формы, которая с ДС связана
6 Ненавижу 1С
 
гуру
20.11.24
08:36
(3) это неправда. Нет такого свойства у динамического списка.
7 pet07
 
20.11.24
09:11
ОсновнойПериод - это я добавил в форму реквизит СтандартныйПериод. НачалоПериода (и Конец также) - это представление в ДинамическийСписок - Настройки - Отбор:
Период - Больше или Равно - ПроизвольнаяДата.
Если в ОсновнойПериод в интерфейсе установить и начало и конец, то все работает. Я хочу обработать ситуации, когда не задано начало, конец или оба.
8 Ненавижу 1С
 
гуру
20.11.24
09:35
ладно, представления то заданы?
9 pet07
 
20.11.24
10:02
ДинамическийСписок - Настройки - Отбор:
Период - Больше или Равно - ПроизвольнаяДата - НачалоПериода
         Меньше или Равно                      КонецПериода

Я закомментировал
//ЭлементОтбора.Использование = Истина;
и все равно работает отбор! На это свойство 1с не обращает внимания.
10 Ненавижу 1С
 
гуру
20.11.24
10:13
я понял, автор писатель, а не читатель
11 pet07
 
20.11.24
10:29
Автор - еще и фотограф! Вот скриншот из окна настроек:
https://ibb.co/s61kx4j
12 mikecool
 
20.11.24
10:39
программа работает так, как ее запрограммировали...
13 pet07
 
20.11.24
10:54
Что сделать, чтобы она работала как нужно?
14 pet07
 
20.11.24
13:05
Вот так работает:
Процедура УстановитьОтборПоДате()
	ОтборыСписка = Список.КомпоновщикНастроек.Настройки.Отбор; 
	Для Каждого ЭлементОтбора ИЗ ОтборыСписка.Элементы Цикл 
		
		Идентификатор = ЭлементОтбора.ИдентификаторПользовательскойНастройки;	
		ЭлементПользовательскойНастройки = Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Идентификатор);
		ЭлементПользовательскойНастройки.Использование = Ложь;	 
		
		Если ЭлементОтбора.Представление = "НачалоПериода" Тогда   
			Если ЗначениеЗаполнено(ОсновнойПериод.ДатаНачала) Тогда   
				ЭлементОтбора.ПравоеЗначение = ОсновнойПериод.ДатаНачала;
				ЭлементПользовательскойНастройки.Использование = Истина;  
			КонецЕсли;	 
			
		ИначеЕсли ЭлементОтбора.Представление = "КонецПериода" Тогда	
			Если ЗначениеЗаполнено(ОсновнойПериод.ДатаОкончания) Тогда
				ЭлементОтбора.ПравоеЗначение = ОсновнойПериод.ДатаОкончания;
				ЭлементПользовательскойНастройки.Использование = Истина; 	
			КонецЕсли;		
		КонецЕсли;		 
		
	КонецЦикла;
КонецПроцедуры


Как вам, не чрезмерное усложнение? Можно было как-то проще?
15 Ненавижу 1С
 
гуру
20.11.24
12:09
(14) пользователь может удалить элемент отбора