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