|  | Настройки.Отбор 
 Волшебник, evorle145 , toypaul , Gucci76 , COLT , maxab72 , СвинТуз , Ненавижу 1С , Умный Слоненок , ZaЖизнь , pet07 , Буковка , youalex , Михаил Козлов , lexushka , laeg , Страждущий , ЕRPe , formista2000 , mikecool , DemonShinji2 , Hawk_1c , Silgis , Admin_Net_1C , Fedor-1971 , Ёпрст , Indian , bmitkin , SleepyHead , RVN , Мультук , lxndr , Prog_man , Amfiaray , elka302 , chelentano , serpentt , RomaH , denk32 , osa1C , Ал_Ив , Ivanich , Смотрящий , skafandr , AlexKimp | ☑ | 
    
        | 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) пользователь может удалить элемент отбора     |  |