Версия для печати темы (https://pro1c.org.ua/index.php?s=4aee0a490c7c42bbda4ba6a35b3d3102&showtopic=14223)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Отбор в ФормеСписка

Автор: kosalex 13.09.13, 8:05

Добрый день. Есть форма списка

Хочу установить отбор по полю "Подготовил"

Пишу так:




Вылазит ошибка:
{Справочник.ВнутренниеДокументы.Форма.ФормаСпискаСПапками.Форма(103)}: Поле объекта не обнаружено (Подготовил)
Список.Отбор.Подготовил.Установить(ТекПользователь);


Что я делаю не так?

Автор: logist 13.09.13, 8:25

Цитата(kosalex @ 13.09.13, 9:05) *
Что я делаю не так?

Форма списка в УФ содержит динамический список, и если вы хотите работать с ним через отбор, то нужно понимать, что отбор в динамическом списке представляет собой поля компоновки данных. Собственно, если бы вы заглянули в синтаксис-помощник вы бы это увидели.
Если это сложно для понимания, то можно работать через параметры, в таком случае в ПриСозданииНаСервере необходимо передать в список параметр, а в запросе списка (включить произвольный запрос) указать использование этого параметра.

Автор: Fynjy 13.09.13, 8:39

Цитата(logist @ 13.09.13, 9:25) *
Форма списка в УФ содержит динамический список, и если вы хотите работать с ним через отбор, то нужно понимать, что отбор в динамическом списке представляет собой поля компоновки данных. Собственно, если бы вы заглянули в синтаксис-помощник вы бы это увидели.
Если это сложно для понимания, то можно работать через параметры, в таком случае в ПриСозданииНаСервере необходимо передать в список параметр, а в запросе списка (включить произвольный запрос) указать использование этого параметра.


Автор: kosalex 13.09.13, 8:59

Спасибо. Написал, работает. Вопрос, а как быть в ситуации если нужно отбирать сразу по нескольким полям? Т.е. если я хочу отбирать по полю "Подготовил" и "Вид Документа". Нужно создавать ещё один "ЭлементОтбора"?

&НаСервере
Функция ПолучитьТекущегоПользователя()
     ТекПользователь = ПользователиКлиентСервер.ТекущийПользователь();
     Возврат ТекПользователь;
КонецФункции


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



Автор: logist 13.09.13, 9:28

Цитата(kosalex @ 13.09.13, 9:59) *
Нужно создавать ещё один "ЭлементОтбора"?

Да.

p.s.
&НаСервереБезКонтекста
Функция ПолучитьТекущегоПользователя()
     Возврат ПользователиКлиентСервер.ТекущийПользователь();
КонецФункции

Автор: kosalex 13.09.13, 9:59

Цитата(logist @ 13.09.13, 10:28) *
Да.

p.s.
&НаСервереБезКонтекста
Функция ПолучитьТекущегоПользователя()
     Возврат ПользователиКлиентСервер.ТекущийПользователь();
КонецФункции



yes smile.gif

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua