Имя: Пароль:
1C
1C 7.7
v7: Поставщик данных - журнал регистрации: не проходит отбор по виду
,
0 Zhuravlik
 
19.07.13
10:42
Добрый день. Почему-то не работает вот этот код:

    ЭлемОтбора = пдРегЖурнал.Отбор.Добавить("ТырПыр");
    ЭлемОтбора.УстановитьТипИЗначение(11, "АвансовыйОтчет");
    пдРегЖурнал.Отбор.Установить(0);

Из доки:
... УстановитьТипИЗначение([ТипОтбора],[ЗначениеОтбора])...

   Типом элемента отбора могут быть:
...
     *  11 - вид объекта. *
Значение = Строка;

Имеется в виду что? Вид объекта в смысле - идентификатор объекта в метаданных, или что-то другое?
Потому что отбор на конкретно заданный вид просто не работает (ничего не изменяется), а на строку типа "Документ" или "Справочник" - вообще выдает пустоту.
1 Mikeware
 
19.07.13
10:55
А посмотреть-то самому отладчиком - не судьба?
хотя бы во что процессируется запрос...
2 Zhuravlik
 
19.07.13
11:01
(1) Прогнал через отладчик, ничего конкретного не увидел.
Кроме того, что и так известно) ЭлемОтбора.УстановитьТипИЗначение(11, "АвансовыйОтчет"); - возвращает 0
3 Ёпрст
 
19.07.13
11:10
"Документ.АвансовыйОтчет"
4 Zhuravlik
 
19.07.13
11:15
(4) Пустота
5 Zhuravlik
 
19.07.13
11:16
+ Как и Справочник.*Вид*, это я сразу попробовал....
6 Zhuravlik
 
19.07.13
11:18
Еще пробовал по строке из представления от начала до "№", тоже не катит
7 Ёпрст
 
19.07.13
11:21
ТабличноеПоле.ПоставщикДанных.ИзменитьФильтр(11, "Документ.АвансовыйОтчет");
8 Ёпрст
 
19.07.13
11:25
gbkznm

ТабличноеПоле.ПоставщикДанных.ИзменитьФильтр(2, "Документ.АвансовыйОтчет");
9 Zhuravlik
 
19.07.13
11:28
(7) Так пустота
Вот так работает:
   пдРегЖурнал.ИзменитьФильтр(140, "Документ.АвансовыйОтчет");        
   пдРегЖурнал.УстановитьФильтр();
Но хотелось бы именно отбором воспользоваться, собственно ради этого все и затевалось...
10 Ёпрст
 
19.07.13
11:32
дык пихай по аналогии 140 и значение
11 Zhuravlik
 
19.07.13
11:35
(10) Через отбор не катит. Оно и в доке прописано, что там тип значения - 11...
12 Zhuravlik
 
19.07.13
11:41
(10) Ёпрст, а где скачать актуальную 1С++? У меня версия 3.2.3.20 от 15.03.2013, кто-то говорил что это не последний релиз, а я старше не смог найти.
13 Ёпрст
 
19.07.13
11:46
должно работать с 11 и "Документ.АвансовыйОтчет"
14 Zhuravlik
 
19.07.13
11:49
(14) Не работает, в то время как успешно выполняется аналогичный код с другими фильтрами. Например 6 - DocOpen
15 Zhuravlik
 
19.07.13
11:54
11 - Docs.АвансовыйОтчет - тоже нет
16 Ёпрст
 
19.07.13
12:00
17 Ёпрст
 
19.07.13
12:01
дык ты отбор ставь поставщику, а не табличному полю.
18 Ёпрст
 
19.07.13
12:01
у тя в (0) не верно же.
19 Zhuravlik
 
19.07.13
12:01
(16) Спасибо, сейчас на нем попробую.
(18) Верно, пдРегЖурнал - это и есть объект поставщика
з.ы.
Вот так прокатывает:
   ЭлемОтбора = пдРегЖурнал.Отбор.Добавить("ыапап");
   ЭлемОтбора.УстановитьТипИЗначение(10, "Авансовый отчет");
   пдРегЖурнал.Отбор.Установить(0);

т.е. из представления до "№", странно что с 11 не работает
20 Ёпрст
 
19.07.13
12:02
пдРегЖурнал - это поставщик данных у тебя ?
21 Ёпрст
 
19.07.13
12:02
проще забить и использовать фильтр
22 Ёпрст
 
19.07.13
12:02
который работает
23 Zhuravlik
 
19.07.13
12:03
(20) Да
(21) Там слишком большую таблицу соответствий нужно расписывать, чтобы сделать как хочу. Через отборы проще, и можно легко получить синоним события или категории.
24 Ёпрст
 
19.07.13
12:07
(23)почему ?
всё тоже самое
25 Zhuravlik
 
19.07.13
12:15
(24) Я хочу иметь возможность установить быстрый фильтр по текущему значению текущей колонки, причем чтобы была возможность одновременно использовать несколько фильтров. Для этого я расписываю таблицу соответствий:

   //{итз_ТипыОтбора - Содержит в себе сопоставление номера отбора с именем колонки ТП
       //Используется для быстрого фильтра
   
       итз_ТипыОтбора = СоздатьОбъект("ИндексированнаяТаблица");
       
       //3 - пользователь;
       //5 - тип события;
       //6 - событие;
       //7 - категория;
       //9 - объект;
       //10 - представление;
       //11 - вид объекта.    
   
       итз_ТипыОтбора.НоваяКолонка("ид");//Идентификатор, имя поля В ТП
       итз_ТипыОтбора.НоваяКолонка("нм");//Номер категории
       итз_ТипыОтбора.НоваяКолонка("фл");//флаг, 1 - отбор установлен, 0 - нет
           
       итз_ТипыОтбора.НоваяСтрока();
       итз_ТипыОтбора.нм = 3;
       итз_ТипыОтбора.ид = "Пользователь";
       
       итз_ТипыОтбора.НоваяСтрока();
       итз_ТипыОтбора.нм = 5;
       итз_ТипыОтбора.ид = "ТипСобытия";
       
       итз_ТипыОтбора.НоваяСтрока();
       итз_ТипыОтбора.нм = 6;
       итз_ТипыОтбора.ид = "Событие";
       
       итз_ТипыОтбора.НоваяСтрока();
       итз_ТипыОтбора.нм = 7;
       итз_ТипыОтбора.ид = "Категория";    
       
       итз_ТипыОтбора.НоваяСтрока();
       итз_ТипыОтбора.нм = 9;
       итз_ТипыОтбора.ид = "Объект";
       
       итз_ТипыОтбора.НоваяСтрока();
       итз_ТипыОтбора.нм = 10;
       итз_ТипыОтбора.ид = "ВидОбъекта";        
   
       итз_ТипыОтбора.ДобавитьИндекс("ИНД_ид", "ид");
       итз_ТипыОтбора.ДобавитьИндекс("ИНД_нм", "нм");
       итз_ТипыОтбора.ЗаполнитьКолонку(,"фл", 0);
   
   //}

При нажатии на кнопку быстрого фильтра по имени колонки получаю номер отбора, устанавливаю флаг того, что отбор задан, и формирую значение отбора по значению в акт. ячейке ТП.

А с фильтрами так не прокатит. Либо нужно жестко прописать все возможные варианты, а их для этого слишком много.
26 Zhuravlik
 
19.07.13
12:17
+ http://infostart.ru/public/193966/, да вы уже видели)
27 Ёпрст
 
19.07.13
12:26
и что мешает заместо отбора установить фильтр для этого значения ?
28 Ёпрст
 
19.07.13
12:27
тупо если тип 11 то не отбор.установить, а фильтр использовать с 140 и вид объекта
29 Ёпрст
 
19.07.13
12:27
усё.
30 Zhuravlik
 
19.07.13
12:30
(29) А если до этого были заданы другие отборы? Например я хочу отфильтровать по виду объекта и по пользователю? Как будут между собой дружить два разных метода?
31 Ёпрст
 
19.07.13
12:31
проверь, я не пользуюсь, у меня ЖР был отключен, за ненадобностью совсем.
32 Zhuravlik
 
19.07.13
12:59
(31) Работает... Да, наверное так и сделаю, спасибо :)
33 Zhuravlik
 
19.07.13
13:52
(31) Нет, все-же через 10 лучше. Если фильтровать по событию "Создан", то установка фильтра возращает пустоту
34 Ёпрст
 
19.07.13
13:54
тогда делай всё через фильтр
35 Ёпрст
 
19.07.13
13:54
в конфе со всеми классами валяется готовый пример
36 Zhuravlik
 
19.07.13
14:52
(34) А почему фильтр лучше отбора?
(35) Я смотрел
37 dedmoroz777
 
19.07.13
14:54
(35)А что за конфа? Глянуть можно?
38 Zhuravlik
 
19.07.13
14:58
39 Ёпрст
 
19.07.13
15:04
(36) он хотя бы работает :)
А так, это одно и тоже (почти), на самом деле
40 Zhuravlik
 
19.07.13
15:13
(39) Сделаю все-таки с отбором, буду тестить. Будут ошибки - перепишу на фильтры.
Но пока, за час - полет нормальный) (в см. с отбором по "10")