Имя: Пароль:
1C
1С v8
как установить отбор в скд при открытии формы отчета
0 ботаникус
 
18.01.12
18:35
нужно чтобы при открытии отчета в пользовательских настройках стоял отбор. Делаю так, но ничего не выходит, значение отбора не заполнено
Коллекция = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
       Для Каждого ЭлементНастройки Из Коллекция Цикл
           Если ТипЗнч(ЭлементНастройки) = Тип("ЭлементОтбораКомпоновкиДанных")тогда
               Если ТипЗнч(ЭлементНастройки.ПравоеЗначение) = Тип("СправочникСсылка.Клиенты") Тогда
                   ЭлементНастройки.ПравоеЗначение = ПараметрыСеанса.ТекущийПользователь.Клиент;
               КонецЕсли;
           КонецЕсли;
       КонецЦикла;
что не так?
1 МурЬка
 
18.01.12
18:38
Кроме значения нужно включать использование и устанавливать вид сравнения, ЕМНИП
2 ботаникус
 
18.01.12
18:40
(1)пробовал, не помогает
3 МурЬка
 
18.01.12
18:50
(2) Если не выводит даже само устанавливаемое значение, есть два варианта:
- не ПравоеЗначение, а ЛевоеЗначение или Значение
- у текущего пользователя клиент не установлен
4 ботаникус
 
18.01.12
18:56
дело не в этом, вроде разобрался
после создания отрабатывает
ПриЗагрузкеПользовательскихНастроекНаСервере, код надо писать там
5 МурЬка
 
18.01.12
18:57
Вот это работает

           настройки = КомпоновщикНастроек.Настройки;

       эл = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
       эл.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
       Эл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НоменклатурнаяГруппа");
       эл.ПравоеЗначение = НоменклатурнаяГруппа;
       НомГруппа = НоменклатурнаяГруппа.Наименование;
       эл.Использование = истина;
6 silent007
 
04.02.12
18:34
Я это сделал вот так. Мне нужно было установит при открытии
отбор по произвольному полю "СписокКлиентов.Контрагент".
Отчет открывается из модуля команды справочника контрагенты
в форму отчета в качестве параметра передается структура с
отбором по контрагенту

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