Имя: Пароль:
1C
 
Открытие формы с отбором, дополнительный отбор
0 MegaenCe
 
31.10.23
19:43
Добрый день! Подскажите пожалуйста как организовать отбор.
Есть форма с полем Подразделение, нужно чтобы в форме выбора были только подразделения из определенного списка, и чтобы в этой форме пользователь мог делать отбор по организации. Пишу:

&НаКлиенте
Процедура ПодразделениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

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


Открывается форма с отбором по нужным подразделениям, выбор в реквизит работает. Проблема в следующем: перестал работать отбор по организациям. Когда в форме делаю отбор по любой организации - список очищается.

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


То отбор в форме вообще не работает, пишет - Параметры Отбора, Сортировки, Группировки или список отображаемых полей заданы неверно.
по причине:
Невозможно применить фиксированные настройки. Пересекаются элементы отбора.
1 Волшебник
 
31.10.23
19:42
У вас пересекаются элементы отбора. Невозможно применить фиксированные настройки
2 MegaenCe
 
31.10.23
19:48
(1) непонятно где это смотреть, и почему это возникает: никаких других отборов я не делаю
3 Волшебник
 
31.10.23
19:50
(2) Попробуйте посмотреть это в Отладчике
4 MegaenCe
 
01.11.23
00:03
(3) через отладчик увидела что дело было в пользовательских настройках.
Очистила их в процедуре ПриСозданииНаСервере, и добавила свой отбор.

ПользовательскийОтбор = Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Список.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки);
        
        ПользовательскийОтбор.Элементы.Очистить();

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


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

Теперь ошибка не возникает, но отбор по организации работает некорректно, в списке ничего не отображается если выбрать организацию. Что не так?
5 vicof
 
01.11.23
09:05
Ключевое слово ПолучитьНастройки()
6 vicof
 
01.11.23
09:06