Имя: Пароль:
1C
1С v8
СКД. Отбор по свойствам номенклатуры. Связь по владельцу значения свойства
, ,
0 SeiOkami
 
03.02.13
17:05
В общем суть такова. Написал отчет на СКД. На закладке конструктора запроса "Характеристики" сделал так: http://s4.hostingkartinok.com/uploads/images/2013/02/f655ce4ad8ef7bd34a252a2e81f43146.png

Теперь в настройках СКД у меня появился отбор по свойствам номенклатуры. Супер... Вот только, когда выбираешь в условии значение свойства, то выдаются не значения этого свойства, полностью весь список значений. Как это можно исправить? Может кто уже решил проблемку?
1 Naumov
 
03.02.13
17:45
откуда этот диалог выбора угадает владельца?
2 SeiOkami
 
03.02.13
17:49
(1), вопрос в другом. Как решить эту проблемку? Если это не СКД (см. типовые отчеты), то отбор устанавливать легко
3 Новиков
 
03.02.13
18:27
(2) вроде никак ты это не полечишь.
4 Пеппи
 
03.02.13
18:29
(3) Можно, почему же никак
5 Новиков
 
03.02.13
18:42
как?
6 SeiOkami
 
03.02.13
18:52
(4), спаси, Пеппи
7 Пеппи
 
03.02.13
18:56
8 Новиков
 
03.02.13
19:02
=) Вопрос, насколько я понял, был в в настройке без рисований своих форм и еже с ними. А на голой схеме компновки + настройки компоновки, получить резалт в (0).

Кроме того, по ссылке не будет катить, когда ты работаешь в шаблоне типового отчета, ибо его, тоже надо будет тогда курочить.
9 SeiOkami
 
03.02.13
19:06
(7), ну это как вариант... Просто я думал, что есть другой способ(
10 Пеппи
 
03.02.13
19:07
(8) по другому никак, увы)

шаблон типового отчета можно и не курочить, можно и по другому, но без изврата никак (
11 SeiOkami
 
03.02.13
19:09
(10), спасибо, буду теперь значит извращаться)
12 Новиков
 
03.02.13
19:13
(10) ну поэтому, если в типовой смотреть отчет - то там все и показываются :)
(11) если ты в типовых на шаблоне типового - извращаться не стоит. Если не в типовых, и не на шаблоне - наверное стоит :)
13 SeiOkami
 
03.02.13
19:19
(12), не совсем понял
14 SeiOkami
 
03.02.13
19:23
(13), в типовом отчете УПП "Выпуск продукции СКД" такая же проблемка
15 Новиков
 
03.02.13
19:50
я об этом же.
16 SeiOkami
 
03.02.13
21:21
Эм... а может кто код подсказать? Я не пойму как можно получить владельца значений свойств, чтобы указать отбор. Нет такого поля =(
17 SeiOkami
 
03.02.13
21:42
up
18 SeiOkami
 
03.02.13
21:52
вот мой код:

Если ТипЗнч(Элемент.Значение) = Тип("СправочникСсылка.ЗначенияСвойствОбъектов") тогда
       СтандартнаяОбработка = Ложь;
       
       ФормаВыбора = Справочники.ЗначенияСвойствОбъектов.ПолучитьФормуВыбора();
       ФормаВыбора.Отбор.Владелец.Значение = ???;
       ФормаВыбора.Отбор.Владелец.Использование = ИСТИНА;
       ФормаВыбора.ОткрытьМодально();
   КонецЕсли;

Как мне вытянуть значение?
19 SeiOkami
 
04.02.13
12:06
/up/
20 cw014
 
04.02.13
12:08
1) Вместо
       ФормаВыбора.Отбор.Владелец.Значение = ???;
       ФормаВыбора.Отбор.Владелец.Использование = ИСТИНА;

пишешь

ФормаВыбора.Отбор.Владелец.Установить(???);

2) Значение = ФормаВыбора.ОткрытьМодально();
21 SeiOkami
 
04.02.13
12:09
(20), где взять то, что установить?
22 SeiOkami
 
04.02.13
12:09
(20), вопрос в том, как получить значение для фильтра
23 SeiOkami
 
04.02.13
12:10
(20), я вообще на вскидку код написал, а потом понял, что владельца то у меня не где взять =)
24 SeiOkami
 
04.02.13
12:41
[up]
25 kabanoff
 
04.02.13
14:18
Как вариант - заполнить доступные значения отбора при инициализации настроек отчета:

   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ЗначенияСвойствОбъектов.Ссылка
   |ИЗ
   |    Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
   |ГДЕ
   |    ЗначенияСвойствОбъектов.Владелец = &Владелец";
   
   Запрос.УстановитьПараметр("Владелец", ТвоеСвойство);
   
   Выборка = Запрос.Выполнить().Выбрать();
   
   ДоступныеЗначения = Новый СписокЗначений;
   
   Пока Выборка.Следующий() Цикл
       ДоступныеЗначения.Добавить(Выборка.Ссылка);
   КонецЦикла;
   
   ДоступноеПолеОтбора = КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Номенклатура.[Доп. свойство: Наименование твоего свойства]")); //вставляешь путь к своему свойству
   ДоступноеПолеОтбора.ДоступныеЗначения = ДоступныеЗначения;
   
   ПолеОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ПолеОтбора.ЛевоеЗначение = ДоступноеПолеОтбора.Поле;

Но для этого придется перебрать все поля, где может использоваться эта характеристика.
Также если пользователь захочет самостоятельно добавить поле в отбор, то такой финт не сработает.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс