1С:Підприємство 8.3 (8.3.12.1440)
Добрый день уважаемое сообщество. Нужна помощь.Конфигурация самописная.
Делаю Отбор на форме списка.По трём реквизитам. При отборе срабатывает только 1 раз. Второй отбор уже не срабатывает.
Код
&НаСервере
Процедура ВстановитиВідбірМодель()
Если ЗначениеЗаполнено(ВідбірМодель) Тогда
//ТекЭлементОтбора = Список.Отбор.Элементы;
//ТекЭлементОтбора.Очистить();
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МодельТранспортногоЗасобу");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ВідбірМодель;
ЭлементОтбора.Использование = Истина;
ИначеЕсли ЗначениеЗаполнено(ВідбірПідрозділ) Тогда
//ТекЭлементОтбора = Список.Отбор.Элементы;
//ТекЭлементОтбора.Очистить();
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Підрозділ");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ВідбірПідрозділ;
ЭлементОтбора.Использование = Истина;
ИначеЕсли ЗначениеЗаполнено(ВідбірНадходження) Тогда
//ТекЭлементОтбора = Список.Отбор.Элементы;
//ТекЭлементОтбора.Очистить();
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СпосібНадходження");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ВідбірНадходження;
ЭлементОтбора.Использование = Истина;
Иначе
ТекЭлементОтбора = Список.Отбор.Элементы;
ТекЭлементОтбора.Очистить();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВстановитиВідбірНадходження()
Если ЗначениеЗаполнено(ВідбірНадходження) Тогда
ТекЭлементОтбора = Список.Отбор.Элементы;
ТекЭлементОтбора.Очистить();
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СпосібНадходження");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ВідбірНадходження;
ЭлементОтбора.Использование = Истина;
ИначеЕсли ЗначениеЗаполнено(ВідбірМодель) Тогда
//ТекЭлементОтбора = Список.Отбор.Элементы;
//ТекЭлементОтбора.Очистить();
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МодельТранспортногоЗасобу");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ВідбірМодель;
ЭлементОтбора.Использование = Истина;
ИначеЕсли ЗначениеЗаполнено(ВідбірПідрозділ) Тогда
//ТекЭлементОтбора = Список.Отбор.Элементы;
//ТекЭлементОтбора.Очистить();
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Підрозділ");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ВідбірПідрозділ;
Иначе
ТекЭлементОтбора = Список.Отбор.Элементы;
ТекЭлементОтбора.Очистить();
КонецЕсли;
КонецПроцедуры
l2d808, а как может сработать несколько условий, если вы говорите "или так, или так, или так"?
Если правильно понял, то вам нужно каждый отбор поместить в блок Если ... КонецЕсли, а не Если ... ИначеЕсли ... ИначеЕсли.
Vofka @ Вчера, 21:08
,
Vofka @ Вчера, 21:08
,
Помещаю отбор в Если...КонецЕсли
Процедура Відбір()
Если ЗначениеЗаполнено(ВідбірМодель) Тогда
ТекЭлементОтбора = Список.Отбор.Элементы;
ТекЭлементОтбора.Очистить();
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МодельТранспортногоЗасобу");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ВідбірМодель;
ЭлементОтбора.Использование = Истина;
КонецЕсли;
Если ЗначениеЗаполнено(ВідбірПідрозділ) Тогда
ТекЭлементОтбора = Список.Отбор.Элементы;
ТекЭлементОтбора.Очистить();
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Підрозділ");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ВідбірПідрозділ;
ЭлементОтбора.Использование = Истина;
КонецЕсли;
Если ЗначениеЗаполнено(ВідбірНадходження) Тогда
ТекЭлементОтбора = Список.Отбор.Элементы;
ТекЭлементОтбора.Очистить();
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СпосібНадходження");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ВідбірНадходження;
ЭлементОтбора.Использование = Истина;
КонецЕсли;
l2d808 @ Сегодня, 11:18
,
Добрый день.
В каждом блоке Если вы очищаете элементы отбора
ТекЭлементОтбора.Очистить();
Очищаю в каждом Если..КонецЕсли отбора для того чтоб отбор работал не один раз.Если не очищать то при наложении еще раз отбора он не срабатывает.
l2d808 @ Сегодня, 12:12
,
Попробуйте вот так
ТекЭлементОтбора = Список.Отбор.Элементы;
ТекЭлементОтбора.Очистить();
Если ЗначениеЗаполнено(ВідбірМодель) Тогда
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МодельТранспортногоЗасобу");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ВідбірМодель;
ЭлементОтбора.Использование = Истина;
КонецЕсли;
Если ЗначениеЗаполнено(ВідбірПідрозділ) Тогда
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Підрозділ");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ВідбірПідрозділ;
ЭлементОтбора.Использование = Истина;
КонецЕсли;
Если ЗначениеЗаполнено(ВідбірНадходження) Тогда
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СпосібНадходження");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ВідбірНадходження;
ЭлементОтбора.Использование = Истина;
КонецЕсли;
Огромное спасибо.Все получилось как надо.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua