helpf.pro
Регистрация

v8.2 УП: Как правильно установить отбор в списке

Riva
14.11.2011 12:54Прочитано: 38312
Добрый день, подскажите как правильно программно установить отбор в динамическом списке. Есть результат запроса, мне необходимо добавить отбор с типом "в списке".
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
14.11.2011 13:19Ответ № 1
(0) Riva, что-то типо(вид сравнения поменяй на свой):
Код 1C v 8.2 УП
 // Год - реквизит формы списка.
&НаКлиенте
Процедура ГодПриИзменении(Элемент)
//очистим отборы
Список.Отбор.Элементы.Очистить();
// Установим отбор
ОтфильтроватьПоГоду(Год);
КонецПроцедуры

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


+ еще пример
Код 1C v 8.2 УП
 // Основная таблица для Список  Справочник.Корпуса
// Основная таблица для СписокПомещений Справочник.Помещения

// В форме списка справочника корпуса
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
Если Элементы.Список.ТекущаяСтрока <> Неопределено Тогда
УстановитьОтборУСпискаНаРавенство(СписокПомещений.Отбор,Новый ПолеКомпоновкиДанных("Владелец"),Элементы.Список.ТекущаяСтрока);
//или ОбщегоНазначенияКлиентСервер.УстановитьОтборУСпискаНаРавенство(СписокПомещений.Отбор,Новый ПолеКомпоновкиДанных("Владелец"),Элементы.Список.ТекущаяСтрока);
КонецЕсли;
КонецПроцедуры


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

ЭлементыОтбора = ОтборСКД.Элементы;
ЭлементОтбораДанных = Неопределено;

Для Каждого ЭлементОтбора Из ЭлементыОтбора Цикл
Если ЭлементОтбора.ЛевоеЗначение = ЛевоеЗначение Тогда
Если ЭлементОтбораДанных = Неопределено Тогда
ЭлементОтбораДанных = ЭлементОтбора;
Иначе
ЭлементОтбора.Использование = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;

Если ЭлементОтбораДанных = Неопределено Тогда
ЭлементОтбораДанных = ЭлементыОтбора.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДанных.ЛевоеЗначение = ЛевоеЗначение;
КонецЕсли;

ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораДанных.ПравоеЗначение = ПравоеЗначение;
ЭлементОтбораДанных.Использование = Истина;

КонецПроцедуры

Изменено 14.11.11 13:22:07
Riva
14.11.2011 14:23Ответ № 2
Спасибо за помощь, в итоге у меня получилось так:
Код 1C v 8.2 УП
 
СписокДляОтбора=Новый СписокЗначений;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СписокДляОтбора.Добавить(ВыборкаДетальныеЗаписи.МестоХранения.ссылка);
КонецЦикла;

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

DJ_Serega
16.02.2013 21:22Ответ № 3
Перенесите ответ (2) Riva в хелпник (если его там нет ) ) мне он только что очень помог ;)
ovego
29.11.2013 01:31Ответ № 4
Очень помогло, спасибо!
Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.