![]() |
![]() |
![]() |
|
СКД. Программная установка параметров в управляемой форме отчета. Как? | ☑ | ||
---|---|---|---|---|
0
fisher
12.01.11
✎
11:46
|
Собссно, сабж.
|
|||
1
also
12.01.11
✎
12:00
|
А как в неуправляемой не получается?
|
|||
2
fisher
12.01.11
✎
12:06
|
У меня - нет :)
Вот ищу, кто бы руки вправил... |
|||
3
also
12.01.11
✎
12:08
|
(2) может поподробнее? Что не получается? Как пробовал?
|
|||
4
also
12.01.11
✎
12:15
|
Да все также:
Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаНачала").Использование = Истина; Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаНачала").Значение = БлаБла; |
|||
5
fisher
12.01.11
✎
12:22
|
Кажись, сообразил/вспомнил. Просто когда-то уже долбался с этой хренью, а сейчас опять встала задача, но уже подзабыл в чем проблема была... Тогда таки получалось менять настройки, заменив стандартную кнопку "Сформировать" на свою (командную панель тоже пришлось нестандартную ставить). И по этой кнопке перед компоновкой отчета устанавливал нужные параметры через компоновщик. Но тогда при смене варианта эта сволочь писала ""Вариант отчета был изменен. Сохранить измененный вариант?" и я не мог от этого избавиться.
А сейчас разул глаза - вижу есть свойство "ВариантМодифицирован". По идее, его можно сбросить... |
|||
6
fisher
12.01.11
✎
12:29
|
(4) Кстати, уже добавили гламурный метод
УстановитьЗначениеПараметра(<Параметр>, <Значение>) Параметры: <Параметр> (обязательный) Тип: Строка; ПараметрКомпоновкиДанных. Имя параметра или параметр компоновки данных, значение которого нужно установить. <Значение> (обязательный) Значение, которое нужно установить. |
|||
7
fisher
12.01.11
✎
12:30
|
Описание:
Устанавливает значение параметра и включает свойство Использование. Если параметр с указанным именем не найден, будет вызвано исключение. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. |
|||
8
Beans
12.01.11
✎
12:58
|
а вот пользвоательской настройке мне не удалось установить тип "Граница".
{Отчет.МойОтчет2.МодульОбъекта(63)}: Ошибка при установке значения атрибута контекста (Дата) ПараметрПользовательскойНастройки.Значение.Дата = Граница; по причине: Несоответствие типов Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Параметры = Новый Массив(2); Параметры[0] = КонецДня(ТекущаяДата()); Параметры[1] = ВидГраницы.Включая; Граница = Новый(Тип("Граница"),Параметры); ПараметрДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаОтчета"); ПараметрПользовательскойНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки); ПараметрПользовательскойНастройки.Использование = Истина; ПараметрПользовательскойНастройки.Значение.Дата = Граница; КонецПроцедуры |
|||
9
fisher
12.01.11
✎
14:11
|
(8) Гм... А мне удалось...
|
|||
10
Beans
12.01.11
✎
14:27
|
мене тоже удалось , только перед созаданием пользовательской настройки надо параметру то же присвоить тип граница
Параметры = Новый Массив(2); Параметры[0] = КонецДня(ТекущаяДата()); Параметры[1] = ВидГраницы.Включая; Граница = Новый(Тип("Граница"),Параметры); ПараметрДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаОтчета"); ПараметрДанных.Использование = Истина; ПараметрДанных.Значение = Граница; ПараметрПользовательскойНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки); ПараметрПользовательскойНастройки.Использование = Истина; ПараметрПользовательскойНастройки.Значение = Граница; |
|||
11
fisher
12.01.11
✎
15:17
|
(10) Границу можно и проще инициализировать:
Новый Граница(МояДата, ВидГраницы.Включая); ИМХО, границу в пользовательских настройках некрасиво использовать. Мне кажется, лучше в пользовательских настройках оставлять дату, а оттуда уже транслировать как границу в окончательные настройки при компоновке. Спасибо за пример, кстати. Помог разобраться. Почему-то был уверен, что ПриКомпоновкеРезультата() отрабатывает уже после компоновки. Параметр ДокументРезультат ввёл в заблуждение. Очевидно, он нужен только при нестандартной компоновке. |
|||
12
fisher
12.01.11
✎
16:50
|
(10) Кстати. Программные изменения пользовательских настроек отчета не отражаются в интерактивном окне доступа к пользовательским настройкам. ОбновитьОтображениеДанных() не помогает. Есть идеи?
|
|||
13
fisher
12.01.11
✎
16:51
|
Тьфу. Не ОбновитьОтображениеДанных(), а ОтобразитьИзменениеДанных()
|
|||
14
fisher
12.01.11
✎
16:52
|
Блин. Таки первое. Конец дня сказывается :)
|
|||
15
Beans
12.01.11
✎
20:01
|
ПараметрНоменклатура = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ВыбНоменклатура");
ПараметрПользНоменклатура = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрНоменклатура.ИдентификаторПользовательскойНастройки); Если ПараметрПользНоменклатура <> Неопределено Тогда ПараметрПользНоменклатура.Использование = Истина; ПараметрПользНоменклатура.Значение= Справочники.Номенклатура.НайтиПоНаименованию("Веник"); КонецЕсли; // сохраняем настройки Настройки = ХранилищеСистемныхНастроек; КлючОбъекта ="Отчет.МойОтчет2/Основной/ТекущиеПользовательскиеНастройки"; ИмяПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя; ПН = КомпоновщикНастроек.ПользовательскиеНастройки; Настройки.Сохранить(КлючОбъекта,"",ПН,,ИмяПользователя); |
|||
16
Beans
12.01.11
✎
20:03
|
если че то в пользовательском режиме изменил, размеры формы, настройки отчета .... - хрен потом програмно изменишь.
|
|||
17
fisher
13.01.11
✎
10:54
|
(16) Параметры в пользовательских настройках нормально меняются параллельно - интерактивно и программно. И так и эдак применяется. Если последний раз менялось программно и взвести флаг изменения пользовательских настроек - при закрытии отчета они нормально сохраняются и при последующем открытии считываются. Так что всё ОК, кроме того, что я уже сказал - при программном изменении не могу сообразить как обновить измененные параметры в окне пользовательских настроек. Они там остаются старые (отчет формируется нормально - уже по новым).
|
|||
18
fisher
13.01.11
✎
10:58
|
(15) Не-не-не. Этот костыль не нужен. Достаточно просто
ПользовательскиеНастройкиМодифицированы = Истина; Они будут сохранены штатно в рамках текущего варианта отчета. |
|||
19
fisher
13.01.11
✎
11:04
|
Вообще СКД достаёт своим избыточным многообразием объектной модели. Многие служебные объекты явно можно было унифицировать. А так - куча похожих коллекций и каждая, *ука, со своими мелкими отличиями...
|
|||
20
fisher
13.01.11
✎
11:06
|
И прямо везде сквозит забота о разработчике.
Это очень показательный пример: ПараметрНоменклатура = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ВыбНоменклатура"); ПараметрПользНоменклатура = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрНоменклатура.ИдентификаторПользовательскойНастройки); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |