Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 17:32

Помогите новичку разобраться с фильтрацией на форме списка

Автор roman01, 20 апр 2020, 06:35

0 Пользователей и 1 гость просматривают эту тему.

roman01

Добрый день, уважаемые коллеги.
Начинаю осваивать 1С (использую 8.3). Естественно, появляется много вопросов и проблем. Часто проблемы на пустом месте.

Суть в следующем: есть у меня база заявок пользователей на ресурсы предприятия.
Есть исполнители заявок - пользователи системы.
Мне нужно сделать фильтр: пользователь зашел в систему, в форме списка нажал на кнопку и исполнителю показываются только его заявки.

Все это решается с помощью стандартного фильтра 1С, но хочется сделать именно по нажатию на кнопку.

Вот как организовать фильтр я понять и не могу.

Решил начать с чего попроще, а именно не с табличной части, а с реквизита ВидЗаявки - в базе значения: "Интернет", "1С", "Ресурсы", но и тут фиаско...

В общем, где то я сильно не прав.

Вот что у меня есть в конфигураторе (см. вложение):

Вот код, который я написал:

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

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

&НаКлиенте
Процедура ФильтрПоПользователю()
ФильтрПоПользователюНаСервере();
КонецПроцедуры



Этот код выполняется по нажатию на кнопку на форме списка.

В результате таблица пуста, т.е. совпадений нет.

В базе однозначно есть данные, с этой стороны проблем нет.

alexandr_ll

Какой тип значения имеет реквизит "ВидЗаявки"? Поскольку вы сравниваете со строкой ("Интернет"), то и реквизит должен быть строкой.

roman01

Реквизит ВидЗаявки имеет тип СправочникСсылка.ВидыЗаявок
В свою очередь в справочнике ВидыЗаявок я использовал стандартный реквизит Наименование.

LexaK

 в вашем случае, вот это
ЭлементОтбора.ПравоеЗначение = "Интернет";
замените на это

ЭлементОтбора.ПравоеЗначение = Справочники.ВидыЗаявок.НайтиПоНаименованию("Интернет");//"Интернет";


или создайте предопределенные элементы справочника, тогда можно будет обращаться так

ЭлементОтбора.ПравоеЗначение = Справочники.ВидыЗаявок.Интернет;//предопределенный Интернет, Ресурсы и др.;


если помогло нажмите: Спасибо!

roman01

Спасибо, добрый человек! Разобрался - я действительно сравнивал теплое с мягким!

Похожие темы (5)

Рейтинг@Mail.ru

Поиск