Имя: Пароль:
1C
1С v8
СКД
0 Wolkness
 
20.11.12
15:37
На форме КомпоновщикНастроек.Настройки.Отбор

Как в нем сделать связь по типу для характеристик. Чтобы при выборе из правого значения выходили значения именно для данной характеристики из справочника ЗначенияСвойствОбъектов. А сейчас выдает все значения.
1 Wolkness
 
21.11.12
10:38
Может кто подскажет - в СКД на форме отчета как сделать отбор по характеристике и чтобы выходили открывались только нужные свойства владельца а не все значения.
2 Wolkness
 
21.11.12
10:42
Мне нужна подсказка как это реализовать
3 Irek-kazan
 
21.11.12
10:43
запросом, получить еще одно поле хар-ка?
4 Wolkness
 
21.11.12
10:47
С запросом проблем нет. Используется закладка характеристики в самой схеме компоновки. У меня проблема как для пользователя удобно реализовать интерфейс отбора по характеристикам. Все значения хранятся в справочнике значениСвойств и при отборе открываются все значения из этого справочника. а это не нужно. Нужны только нужные значения как при отборе по владельцу.
5 Defender aka LINN
 
21.11.12
11:05
(4) Поле отбора - это обычное табличное поле. А у обычного табличного поля обычно есть всяческие события
6 vmv
 
21.11.12
11:19
+(5)


&НаКлиенте
Процедура КмнНсПлзНсПриИзменении(Элемент)
   
   ЗнчПараметраНсКд = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьОбъектПоИдентификатору(Элементы.КмнНсПлзНс.ТекущаяСтрока);
   Если ЗнчПараметраНсКд = Неопределено Тогда
       Возврат;
   КонецЕсли;
   
   Если ТипЗнч(ЗнчПараметраНсКд) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
       
       ЗнчПараметраНсКдПараметр = ЗнчПараметраНсКд.Параметр;
       
       Если ЗнчПараметраНсКдПараметр = (Новый ПараметрКомпоновкиДанных("Организация")) Тогда
           ЗнчОрганизация = Add_ComM_ОтчетыС.ПолучитьЗнчПараметраПн(Отчет.КомпоновщикНастроек, "Организация", Истина);
           Если ЗнчОрганизация = Неопределено Тогда
               РфОрганизация = ПредопределенноеЗначение("Справочник.Организации.ПустаяСсылка");
           Иначе    
               РфОрганизация = ЗнчОрганизация;
           КонецЕсли;
           
       ИначеЕсли ЗнчПараметраНсКдПараметр = (Новый ПараметрКомпоновкиДанных("СтнПериод")) Тогда
           УспешнаяПроверка =
           СтнПериодУспешнаяПроверка(ЗнчПараметраНсКд.Значение,
           РфСтнПериод.ДатаНачала, РфСтнПериод.ДатаОкончания);
           
           ИдентичныГраницыПериодов =
           (РфСтнПериод.ДатаНачала    = ЗнчПараметраНсКд.Значение.ДатаНачала)      И
           (РфСтнПериод.ДатаОкончания = ЗнчПараметраНсКд.Значение.ДатаОкончания);
           
           Если НЕ ИдентичныГраницыПериодов Тогда
               
               Если НЕ ЗнчПараметраНсКд.Использование Тогда
                   ЗнчПараметраНсКд.Использование = Истина;
               КонецЕсли;
               
               Если НЕ ЗнчПараметраНсКд.Значение = РфСтнПериод Тогда
                   Если ЗнчПараметраНсКд.Значение.Вариант = ВариантСтандартногоПериода.ПроизвольныйПериод Тогда
                       РфСтнПериод = Новый СтандартныйПериод(ЗнчПараметраНсКд.Значение.ДатаНачала, ЗнчПараметраНсКд.Значение.ДатаОкончания);
                   Иначе
                       РфСтнПериод = Новый СтандартныйПериод(ЗнчПараметраНсКд.Значение.Вариант);
                   КонецЕсли;
               КонецЕсли;
               
               СерверИнициализацияРфСтнПериод();
               
           КонецЕсли;
           
       ИначеЕсли ЗнчПараметраНсКдПараметр = (Новый ПараметрКомпоновкиДанных("Периодичность")) Тогда
           ЗнчПериодичность = Add_ComM_ОтчетыС.ПолучитьЗнчПараметраПн(Отчет.КомпоновщикНастроек, "Периодичность", Истина);
           Если ЗнчПериодичность = Неопределено Тогда
               РфПериодичность = ПредопределенноеЗначение("Перечисление.Периодичность.ПустаяСсылка");
           Иначе    
               РфПериодичность = ЗнчПериодичность;
           КонецЕсли;
           
       ИначеЕсли ЗнчПараметраНсКдПараметр = (Новый ПараметрКомпоновкиДанных("СсылкаГруппы")) Тогда    
           СерверИнициализацияЗаголовок();    
           
       КонецЕсли;
       
   КонецЕсли;
   
   
КонецПроцедуры

&НаКлиенте
Процедура КмнНсПлзНсВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   
   ЗнчПараметраНсКд = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьОбъектПоИдентификатору(ВыбраннаяСтрока);
   Если ЗнчПараметраНсКд = Неопределено Тогда
       Возврат;
   КонецЕсли;
   
   Если ТипЗнч(ЗнчПараметраНсКд) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
       
       ЗнчПараметраНсКдПараметр = ЗнчПараметраНсКд.Параметр;
       
       Если ЗнчПараметраНсКдПараметр = (Новый ПараметрКомпоновкиДанных("СтнПериод")) Тогда
           
           СтандартнаяОбработка = Ложь;
           СтнПериодВыбран = Add_ComM_ОтчетыК.ПолучитьВыборСтандартногоПериода(ЗнчПараметраНсКд.Значение);
           
           Если СтнПериодВыбран <> Неопределено  Тогда
               ЗнчПараметраНсКд.Значение = СтнПериодВыбран;
               КмнНсПлзНсПриИзменении(Неопределено);
               
           КонецЕсли;
           
       КонецЕсли;

   КонецЕсли;
   
КонецПроцедуры

// ----- Обработчики элементов формы: ТаблицаФормы "КмнНсПлзНс.Значение", обработчики колонки таблицы формы

&НаКлиенте
Процедура КмнНсПлзНсЗначениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   
   // КмнНсПлзНс - КомпоновщикНастроек, ПользовательскиеНастройкиКомпоновкиДанных
   
   ЗнчПараметраНсКд = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьОбъектПоИдентификатору(Элементы.КмнНсПлзНс.ТекущаяСтрока);
   Если ЗнчПараметраНсКд = Неопределено Тогда
       Возврат;
   КонецЕсли;
   
   Если ТипЗнч(ЗнчПараметраНсКд) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
       
       ЗнчПараметраНсКдПараметр = ЗнчПараметраНсКд.Параметр;
       
       Если ЗнчПараметраНсКдПараметр = (Новый ПараметрКомпоновкиДанных("СтнПериод")) Тогда
           
           СтандартнаяОбработка = Ложь;
           
           ДанныеВыбора = Новый СписокЗначений;
           
           ДанныеВыбора.Добавить(Новый СтандартныйПериод(ВариантСтандартногоПериода.ПрошлыйМесяц));
           ДанныеВыбора.Добавить(Новый СтандартныйПериод(ВариантСтандартногоПериода.ПрошлыйКвартал));
           ДанныеВыбора.Добавить(Новый СтандартныйПериод(ВариантСтандартногоПериода.ПрошлоеПолугодие));
           ДанныеВыбора.Добавить(Новый СтандартныйПериод(ВариантСтандартногоПериода.ПрошлыйГод));
           
           ДанныеВыбора.Добавить(Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтотМесяц));
           ДанныеВыбора.Добавить(Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтотКвартал));
           ДанныеВыбора.Добавить(Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтоПолугодие));
           ДанныеВыбора.Добавить(Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтотГод));
           
           ДанныеВыбора.Добавить(Новый СтандартныйПериод(ЗнчПараметраНсКд.Значение.ДатаНачала, ЗнчПараметраНсКд.Значение.ДатаОкончания));
           
       ИначеЕсли ЗнчПараметраНсКдПараметр = (Новый ПараметрКомпоновкиДанных("Периодичность")) Тогда    
           
           СтандартнаяОбработка = Ложь;
           
           ДанныеВыбора = ПериодичностьПолучитьДанныеВыбора();
           
       КонецЕсли;
       
   КонецЕсли;
   
КонецПроцедуры