Имя: Пароль:
1C
1С v8
8.2. Как сделать отбор в форме?
,
0 Sintez123
 
19.11.12
13:40
Гуглил уже везде, внятного ответа за много часов не нашел.

Итак, в отчете надо добавить возможно отбора (содержит, в списке, равно). Скопировал отбор из формы построителя отчета - не смог прикрутить. Прошу дать пример кода. Желательно подробно. Спасибо.
1 shuhard
 
19.11.12
13:43
(0) не от туда копировал
правильный вариант прицеплен в УТ 10.3/КА/УПП к инвентаризации
2 Смешной 1С
 
19.11.12
13:46
ЭлементыОтбора = Список.Отбор.Элементы;
   ПолеКомпоновки = Новый ПолеКомпоновкиДанных(ИмяПоля);
   ЭлементОтбора = ЭлементыОтбора.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновки;
   ЭлементОтбора.ВидСравнения = ВидСравнения;
   ЭлементОтбора.Использование = Истина;
   ЭлементОтбора.ПравоеЗначение = Значение;
3 Смешной 1С
 
19.11.12
13:47
//Установка параметров перед открытием
   Настройки = ЭтотОбъект.КомпоновщикНастроек.Настройки;
   Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Параметр", ЗначениеПараметра);
4 Смешной 1С
 
19.11.12
13:49
// Настройка отбора
   Для каждого ЭлементОтбора Из Отбор Цикл
       
       Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
           ПолеОтбора = ЭлементОтбора.ЛевоеЗначение;
       Иначе
           ПолеОтбора = Новый ПолеКомпоновкиДанных(ЭлементОтбора.Поле);
       КонецЕсли;
       
       Если КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(ПолеОтбора) = Неопределено Тогда
           Продолжить;
       КонецЕсли;
       
       НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
       Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
           ЗаполнитьЗначенияСвойств(НовыйЭлементОтбора, ЭлементОтбора);
       Иначе
           НовыйЭлементОтбора.Использование  = Истина;
           НовыйЭлементОтбора.ЛевоеЗначение  = ПолеОтбора;
           Если ЭлементОтбора.Иерархия Тогда
               Если ТипЗнч(ЭлементОтбора.Значение) = Тип("СписокЗначений") Тогда
                   НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии;
               Иначе
                   НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии;
               КонецЕсли;
           Иначе
               Если ТипЗнч(ЭлементОтбора.Значение) = Тип("СписокЗначений") Тогда
                   НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
               Иначе
                   НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
               КонецЕсли;
           КонецЕсли;
           
           НовыйЭлементОтбора.ПравоеЗначение = ЭлементОтбора.Значение;
           
       КонецЕсли;
               
   КонецЦикла;
5 Смешной 1С
 
19.11.12
13:49
(0)Какой-нибудь из примеров подходит для твоей задачи?
6 Sintez123
 
19.11.12
13:55
(2) не понятно куда прикручивать это

Поле объекта не обнаружено (Отбор)
   ЭлементыОтбора = Список.Отбор.Элементы;
7 Sintez123
 
19.11.12
13:57
(3) Ошибка при вызове метода контекста (УстановитьЗначениеПараметра)
   Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Параметр", Значение);
по причине:
Параметр с указанным именем не найден
8 Sintez123
 
19.11.12
13:59
(4) открылось с пустым полем фильтра без ошибок
9 Смешной 1С
 
19.11.12
14:51
ты их все подряд не пробуй, а подстрой по свою конкретную задачу.
10 Aprobator
 
19.11.12
15:02
(2) о построителе отчета речь.