Имя: Пароль:
1C
1С v8
Передача параметров в отчет СКД
,
0 vinogradъ
 
01.11.12
09:32
Нужно открыть готовый отчет на СКД с передачей в него параметра и отбора.

&НаКлиенте
Процедура ПриОткрытии(Отказ)
   Период = ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
   Если Период <> Неопределено Тогда        
       Период.Значение.ДатаНачала = ТекущаяДата();
       Период.Значение.ДатаОкончания = ТекущаяДата();
       Период.Использование = Истина;        
   КонецЕсли;
КонецПроцедуры
По поиску нашел похожее, но там не понятно как было найдено решение.
v8: v8: СКД: Отбор
Проблема та же: в отладчике вижу в параметрах текущую дату, а в итоге на форме в параметрах имею сохраненное значение, установленное при последнем формировании отчета.
Помогите клюшечнику кто-чем может.
1 vinogradъ
 
01.11.12
09:36
п.с. Параметр передается, проблема в его приеме и установке значения на форме в пользовательских настройках
2 jenny_tea
 
01.11.12
09:38
На форме делаешь поле типа Дата, ну как обычно при изменении я лично делаю следующее:
ЗначениеПараметра          = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НазваниеПараметраВКомпоновке"));;
   ЗначениеПараметра.Значение = НашеЗначение;
       ЗначениеПараметра.Использование = Истина;
3 jenny_tea
 
01.11.12
09:39
это если параметр типа дата в моем примере, в твоем примерно ка кв том что ты нашел, могу написать как значение отбора тоже установить
4 vinogradъ
 
01.11.12
09:45
Параметр (Период (Стандартный период)) вынесен в пользовательские настройки, так что дополнительного поля не нужно.
Сделал:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
   //Период = ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
   ЗначениеПараметра = ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));
   Если ЗначениеПараметра <> Неопределено Тогда        
       ЗначениеПараметра.Значение.ДатаНачала = ТекущаяДата();
       ЗначениеПараметра.Значение.ДатаОкончания = ТекущаяДата();
       ЗначениеПараметра.Использование = Истина;    
       Сообщить("!");        
   КонецЕсли;
КонецПроцедуры
Разницы никакой: текущей даты нет, в периоде прошлое выбранное значение
5 vinogradъ
 
01.11.12
09:56
6 jenny_tea
 
01.11.12
10:02
я это для обычной формы делала. там все немного по-другому
7 vinogradъ
 
01.11.12
10:08
(6) Понятно, спасибо. Буду ждать УэФника.
8 vinogradъ
 
01.11.12
10:17
Продолжаю наблюдения.
При закрытии формы отчета говорит, что вариант отчета был изменен и предлагает сохранить новый вариант, хотя визуально значение параметра не было изменено.
9 samozvanec
 
01.11.12
10:36
возможно, после того как ты устанавливаешь параметр, срабатывает загрузка пользовательской настройки
10 samozvanec
 
01.11.12
10:43
а вобще вот дернул из базы

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

&НаСервере
Процедура ЗаполнитьПользовательскуюНастройку(Параметр)
   ПользовательскийПараметр = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Параметр.ИдентификаторПользовательскойНастройки);
   Если НЕ ЗначениеЗаполнено(ПользовательскийПараметр.Значение) Тогда
       ПользовательскийПараметр.Значение = Параметр.Значение;
   КонецЕсли;
КонецПроцедуры
11 samozvanec
 
01.11.12
10:45
Параметр.Использование = Истина;
вместо этого
Параметр.Использование = Использование;

для поднятия уровня кошерности
12 vinogradъ
 
01.11.12
10:55
Алилуйя! samozvanec, спасибо!
&НаКлиенте
Процедура ПриОткрытии(Отказ)    
   Параметр = ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
   Если Параметр <> Неопределено Тогда        
       Параметр.Значение.ДатаНачала = ТекущаяДата();
       Параметр.Значение.ДатаОкончания = ТекущаяДата();
       Параметр.Использование = Истина;    
       ПользовательскийПараметр = ЭтаФорма.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Параметр.ИдентификаторПользовательскойНастройки);        
       ПользовательскийПараметр.Значение = Параметр.Значение;        
   КонецЕсли;        
КонецПроцедуры
13 samozvanec
 
01.11.12
11:12
в пользовательской настройке параметра может не быть, словишь ошибку
14 vinogradъ
 
01.11.12
11:34
(13) работает

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