Имя: Пароль:
1C
1С v8
Помогите отобрать по значению реквизита?
,
0 NoobiC
 
30.08.12
16:34
Понимаю, что пишу ерунду, но не могу понять, как забахать. При начале выбора из справочника подразделений надо вывести список с отбором по значению реквизита1. Пишу следующее в процедуре НачалоВыбора:
   ФормаВыбора = Справочники.ПодразделенияОрганизаций.ПолучитьФормуВыбора(,Элемент);
   Отбор = ФормаВыбора.Отбор;
   Отбор.Реквизит1.Использование = Истина;
   Отбор.Реквизит1.Значение.Установить(ИСТИНА);
   ФормаВыбора.Открыть();
---
или скажите где прочесть. Первый раз с отбором сталкиваюсь.
Спасибо!
1 MAnt
 
30.08.12
16:37
Отбор.Реквизит1.Значение.Установить(ИСТИНА);
Вместо истина ставьте нужное значение.
2 NoobiC
 
30.08.12
16:39
(1) нужное значение и есть ИСТИНА :). Там булевый реквизит
Но чото ругается на строку:
Отбор.Реквизит1.Значение.Установить(ИСТИНА);
Значение не является значением объектного типа (Установить)
3 MAnt
 
30.08.12
16:45
Отбор.Реквизит1.Значение = Истина;
Отбор.Реквизит1.ВидСравнения = ВидСравнения.Равно;
4 HEKPOH
 
30.08.12
16:46
Отбор.Реквизит1.Установить(ИСТИНА);
5 pessok
 
30.08.12
16:48
(4) +
6 NoobiC
 
30.08.12
16:55
Не работает :(
Вот этот код:
   ФормаВыбора = Справочники.ПодразделенияОрганизаций.ПолучитьФормуВыбора(,Элемент);
   Отбор = ФормаВыбора.Отбор;
   Отбор.Реквизит1.Использование = Истина;
   Отбор.Реквизит1.ВидСравнения = ВидСравнения.Равно;
   Отбор.Реквизит1.Установить(ИСТИНА);
   ФормаВыбора.Открыть();

Открывает пустой справочник. Т.е. ни один элемент не попадает в отбор(.
7 HEKPOH
 
30.08.12
17:01
(6) протестировал. работает, если тип значения строка.
8 HEKPOH
 
30.08.12
17:03
+ (7) протестировал и на типе булево. тоже все работает)

ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(,Кнопка);
   Отбор = ФормаВыбора.Отбор;
   Отбор.Услуга.Использование = Истина;
   Отбор.Услуга.ВидСравнения = ВидСравнения.Равно;
   Отбор.Услуга.Установить(истина);
   ФормаВыбора.Открыть();
9 GoldenCalf
 
30.08.12
17:06
А реквизит1 имеет значение Истина хотя бы для одного элемента?
10 GoldenCalf
 
30.08.12
17:07
И кстати ПодразделенияОрганизаций скорее всего подчинен Организациям
11 HEKPOH
 
30.08.12
17:08
(10) плюспиццот!!! именно в этом все дело! было такое в практике, но забыл)
12 HEKPOH
 
30.08.12
17:12
ставь еще отбор на владельца, потому как при таком отборе, как здесь описан, владелец = ПустаяСсылка()
13 NoobiC
 
30.08.12
17:13
СтандартнаяОбработка = Ложь;
   ФормаВыбора = Справочники.ПодразделенияОрганизаций.ПолучитьФормуВыбора();
   Отбор = ФормаВыбора.Отбор;
   Отбор.Владелец.Установить(глЗначениеПеременной("ОсновнаяОрганизация"));
   Отбор.Реквизит1.Использование = Истина;
   Отбор.Реквизит1.ВидСравнения = ВидСравнения.Равно;
   Отбор.Реквизит1.Установить(ИСТИНА);
   ФормаВыбора.Открыть();
---
Сделал так. Тот же болт(. Да где же я туплю??
14 HEKPOH
 
30.08.12
17:14
(13) открой в пердприятии на форме фильтр и увидишь, в чем дело
15 MAnt
 
30.08.12
17:15
(10) Я с таким не сталкивался. Чем мешает подчинение? Допустим стоит отбор по Подразделению организации и нет отбора по организации (нет галочки использовать). Почему не должен сработать отбор?
16 Ненавижу 1С
 
гуру
30.08.12
17:16
СтандартнаяОбработка = Ложь;
   ФормаВыбора = Справочники.ПодразделенияОрганизаций.ПолучитьФормуВыбора();
   Отбор = ФормаВыбора.Отбор;
   Отбор.Владелец.Установить(глЗначениеПеременной("ОсновнаяОрганизация"));
   Отбор.Реквизит1.Установить(ИСТИНА);
   ФормаВыбора.Открыть();
17 HEKPOH
 
30.08.12
17:18
(16) +
18 HEKPOH
 
30.08.12
17:18
(15) потому что автоматом проставляется отбор по владельцу при открытии формы подразделений. отбор наследуется из вызывающей формы, т.е. владельца нет
19 pessok
 
30.08.12
17:20
(18) а если использование = нет?
20 HEKPOH
 
30.08.12
17:27
тогда отбор снимается)
отбор.Владелец.Установить(Организация, ложь);
21 almakano
 
30.08.12
17:37
Лучше всего отбирать через параметры произвольного запроса.
- на форме в реквизитах выбрать этот список
- в свойствах объекта установить галочку "Произвольный запрос"
- нажать рядом "Настройка списка: открыть"

Текст запроса изменить следующим образом:
"Выбрать ... ИЗ ... ГДЕ
ВЫБОР КОГДА &ЕстьПарам1 ТОГДА СправочникКлиенты.Наименование ПОДОБНО &Парам1 ИНАЧЕ ИСТИНА КОНЕЦ
И ВЫБОР КОГДА &ЕстьПарам2 ТОГДА СправочникКлиенты.Моб_тел ПОДОБНО &Парам2 ИНАЧЕ ИСТИНА КОНЕЦ "

Далее установить событие формы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
 СписокФормы.Параметры.УстановитьЗначениеПараметра("ЕстьПарам1", 0);
 СписокФормы.Параметры.УстановитьЗначениеПараметра("ЕстьПарам2", 0);
 СписокФормы.Параметры.УстановитьЗначениеПараметра("Парам1", 0);
 СписокФормы.Параметры.УстановитьЗначениеПараметра("Парам2", 0);
КонецПроцедуры

И повесить на РеквизитФормы типа Поле
Процедура ПриИзменении(Элемент, Текст = NULL)
 Текст=?(Текст = NULL,Элемент.ТекстРедактирования, Текст);
 Вкл=?(Текст = NULL И Элемент.ТекстРедактирования = "", 0, 1);
 СписокФормы.Параметры.УстановитьЗначениеПараметра(Элемент.Имя, Вкл);
 СписокФормы.Параметры.УстановитьЗначениеПараметра(Элемент.Заголовок, Текст);
КонецПроцедуры

+ есть нюансы 8=D
22 Reset
 
30.08.12
17:40
(21) Спецом зарегался, чтоб запостить? :)

У ТС-а форма не управляемая(вроде).
23 NoobiC
 
30.08.12
18:05
Не, не управляемая, хвала богам.
Блин. Делаю в православном отборе Реквизит1 равно ДА и... ни фига. Пусто. В конфигураторе стоит использовать полнотекстовый поиск, не индексировать и все такое же.
Так что самое интересное: делаю Реквизит1 равно НЕТ и..... работает. Шозабред?
Спасибо большое всем откликнувшимся. Буду думать, что не так с реквизитом.