Имя: Пароль:
1C
 
програмно установить параметр СКД
0 karlson85
 
19.05.10
22:02
Есть отчет на СКД, создал для него форму, в модуле ПриОткрытии, хочу установить значение одному из 3-х параметров:
делаю так:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
   Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Дизайнер")).Значение=ПолучитьТекущегоПользователя();
КонецПроцедуры

В результате форма открывается, а значение не подставляется, что я делаю не так?
1 gr13
 
19.05.10
22:15
2 karlson85
 
19.05.10
22:18
искал я в поисковиках, там только под 8.1, в 8.2 упр. форма - это не работает
3 karlson85
 
20.05.10
09:35
help
4 Defender aka LINN
 
20.05.10
09:45
А использование кто ставить будет?
5 AmoreMe
 
20.05.10
09:52
Процедура ПриОткрытии()
   ПараметрДанныхМастер = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2];
   ПараметрДанныхМастер.Значение = ПараметрыСеанса.ТекущийПользователь.ФизЛицо;    
КонецПроцедуры

//Можно и так но про галочку использование не забудьте :) вкладка параметры данных
6 Aprobator
 
20.05.10
10:07
(4) если не подставляется значение, то до использования еще дожить надо.
7 karlson85
 
20.05.10
10:09
Неа, не помогает, значение использование уже в конфигураторе поставлено, ну я прописал тоже, но не помогло, может в управляемом приложении как-то по другому надо?
8 Elena_KR
 
20.05.10
10:24
Попробуйте загрузить настройки, которые меняете :
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
Параметр =Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Дизайнер"));
Параметр.Значение = ПолучитьТекущегоПользователя();  КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
9 Elena_KR
 
20.05.10
10:26
Да и нужно делать на сервере, насколько мне не изменяет память, так как меняем объект сам
10 johnbay
 
20.05.10
10:26
(0) Версия платформы какая? У меня в упр форме процедура приоткрытии не отрабатывает вообще... платформа 8.2.10.82
Делаю все в ПриСозданииНаСервере()
11 karlson85
 
20.05.10
11:11
Версия платформы 8.2.10.82.
И на сервере пробывал, в отладчике вижу что значение присвоилось, форма открывается, пусто
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
   Параметр =Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Дизайнер"));
   Параметр.Значение = ШиПБиблиотекаСервер.ПолучитьТекущегоПользователя();  
   Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
КонецПроцедуры
12 CyberNut
 
20.05.10
11:12
Подпишусь на тему, тоже сталкивался с этой бедой.
13 Aprobator
 
20.05.10
11:33
(11) хм - а в типовых ниче такого нету? Сдается мне что тут надо посмотреть в сторону ЗначениеВРеквизитФормы, хотя могу ошибаться.
14 Ksandr
 
20.05.10
11:36
А устанавливать перед формированием отчета и программно выводить?
15 johnbay
 
20.05.10
11:53
(11) Попробуй вместо своего кода такой:
Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Дизайнер"));
Параметр.Значение = ШиПБиблиотекаСервер.ПолучитьТекущегоПользователя();
16 Aprobator
 
20.05.10
11:58
(14) а фиг его знает. Отладчиком после открытия формы (пришей бы к какой нить левой кнопке команду, а к ней событие для отлова) посмотри, что пасется в КомпоновщикНастроек.Настройки.ПараметрыДанных - видится ли там это значение. Если видится, то надо точно играться с ЗначениемВРеквизит и т.п., а нет - надо думать дальше.
17 Aprobator
 
20.05.10
11:58
+(16) имеется в виду при наличии (11)
18 karlson85
 
20.05.10
12:18
(15) пробывал, не работает.
(14) попробывал так:
&НаКлиенте
Процедура Команда1(Команда) //команда кнопки
  РРР();
КонецПроцедуры
&НаСервере
Процедура РРР()
   Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
   Параметр =Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Дизайнер"));
КонецПроцедуры
в Параметр.Значение пусто
19 Aprobator
 
20.05.10
12:21
(18) ну значит до формы параметр не дошел. Как там компоновщик настроек к форме привязан? Через какой реквизит формы?
20 karlson85
 
20.05.10
12:30
(19) У формы есть основной реквизит Отчет, типа ОтчетОбъект, у него есть свойство КомпановщикНастроек
21 Aprobator
 
20.05.10
12:34
(20) ну дык попробуй в (11) в конце ЗначениеВРеквизитФормы(Отчет, "Отчет");
тока синтаксис проверь, на всякий случай.
22 Aprobator
 
20.05.10
12:38
+(21) а может даже и ЗначениеВДаныеФормы(Отчет, "Отчет"). В общем посмотри в этом направлении. Не взлетит бум думать дальше.
23 Aprobator
 
20.05.10
12:41
+(22) щаз кстати у ся все это попробую.
24 Aprobator
 
20.05.10
12:42
отпишусь по результатам.
25 karlson85
 
20.05.10
12:55
Вообщем мне удалось добится заполнения этого значения только так:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
   ЭтаФорма.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[2].Значение=ШиПБиблиотекаСервер.ПолучитьТекущегоПользователя();
КонецПроцедуры

Тут конечно мне две вещи не нравится:
1) - идет лишнее обращение к серверу
2) не находит он мне параметр Дизайнер через ЭтаФорма.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти("Дизайнер")
26 Aprobator
 
20.05.10
13:02
(25) пока еще копаюсь, но первое что бросилось в глаза - вариант отчета. То чего я в 8.1 не видел. Не исключено, что перед тем как устанавливать значения параметров необходимо как то спозиционироваться на варианте отчета.
27 karlson85
 
20.05.10
13:02
2-ю проблему решил так:
Параметр=ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Дизайнер"));
Параметр.Значение=ШиПБиблиотекаСервер.ПолучитьТекущегоПользователя();

Но я так думаю, должен быть метод оптималнее, чтоб сразу на сервере этот параметр заполнился, есть у кого еще какие идеи?
28 Aprobator
 
20.05.10
13:29
хм - как то странно. У меня почему то (0) все отрабатывает. Ты пардон параметры на форму как выводишь? Релиз платформы 8.2.9.356.
29 karlson85
 
20.05.10
13:34
НУ как я понял оно отрабатывает, но вот еще один глюк, у меня есть еще два параметра типа дата, хочу их тоже установить так:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
       
   Параметр1=ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
   Параметр1.Значение=НачалоМесяца(ТекущаяДата());    
   
   Параметр2=ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода"));
   Параметр2.Значение=КонецМесяца(ТекущаяДата());
   
   Параметр3=ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Дизайнер"));
   Параметр3.Значение=ШиПБиблиотекаСервер.ПолучитьТекущегоПользователя();

КонецПроцедуры

А он мне только дизайнера проставляет, странно?
30 Aprobator
 
20.05.10
13:39
(29) у меня отрабатывает без ЭтаФорма. У тебя Отчет - Основной реквизит формы? Галочка там стоит? Названия параметров не перепутал?
31 karlson85
 
20.05.10
13:51
Хм...., да тут интересная особенность есть, если мы у параметра ставим галочку "Включать в пользовательские настройки", то вот так:

Параметр2=ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода"));
Параметр2.Значение=КонецМесяца(ТекущаяДата());

не прокатывает, нужно непосредственно устанавливать пользовательские настройки так:

Параметр2=ЭтаФорма.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0];
Параметр2.Значение=НачалоМесяца(ТекущаяДата());

Вот только я никак не могу победить чтоб ображение шло не как к элементу массива типа Элементы[1], делаю так:

Параметр2=ЭтаФорма.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти("НачалоПериода");

возвращает неопределено
32 Aprobator
 
20.05.10
14:02
нефига не понял, а причем здесь пользовательские поля и параметры? "НачалоПериода" и "КонецПериода" в пользовательские поля запихнуты что ли? Зачем?
33 karlson85
 
20.05.10
14:04
Чтобы юзеры могли задавать период
34 Aprobator
 
20.05.10
14:06
а параметры чем не катят?
35 karlson85
 
20.05.10
14:10
это и есть параметры
36 Aprobator
 
20.05.10
14:16
т.е. период добавляется в пользовательские поля через новое ПолеВыбор, а не параметр Запроса?
37 Aprobator
 
20.05.10
14:18
+(36) а сек  - счас дочитаю )
38 karlson85
 
20.05.10
14:21
В запросе есть переменные НачалоПериода и КонецПериода, они попали в параметры, я их еще добавил в польз. настройки
39 Aprobator
 
20.05.10
14:28
а блин - увидел )
40 Aprobator
 
20.05.10
14:45
о - нашел:

   ИдентификаторПользНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьИдентификаторПоОбъекту(Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Дата1")));
   ПараметрПользовНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ИдентификаторПользНастройки);
   ПараметрПользовНастройки.Значение = ТекущаяДата();
   ПараметрПользовНастройки.Использование = Истина;



соррь если че - я 8.2 можно сказать тока недели 2 юзаю - местами туплю.
41 Aprobator
 
20.05.10
14:46
+40 пользовательские настройки тока щаз понял как работают и нафиг нужны ).
42 karlson85
 
20.05.10
15:09
угу, спасибо, все проблемы решены :)
43 Aprobator
 
20.05.10
15:11
и тебе спасибо - все таки мой скил в 8.2 чуть подрос ).
44 karlson85
 
21.05.10
16:52
(40) в веб клиенте валится с ошибкой :)
45 Aprobator
 
24.05.10
13:56
(44) Странно, в СП вроде никаких ограничений не прописано. Че пишет то хоть?
46 karlson85
 
02.06.10
09:51
(45)в 8.2.11.22 проблем не наблюдаю, в 8.2.10 выходила ошибку, не помню что писал
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.