Имя: Пароль:
1C
1С v8
Не вычисляется параметр СКД
0 badboychik
 
20.05.13
17:17
Наблюдаю такой глюк
Есть параметры в СКД - Начало и Конец, которые заданы выражением &Период.ДатаНачала и &Период.ДатаОкончания
Но при программном выполнения СКД они не подставляются, хотя параметр "Период" задан.
Код :

СКД = ПолучитьМакет("Макет1");
ПериодОтчета = Новый СтандартныйПериод(НачалоМесяца(ДатаОстатков), КонецДня(ДатаОстатков));
   
СКД.Параметры.Период.Значение  = ПериодОтчета;
Настройки = СКД.НастройкиПоУмолчанию;
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
1 Mitriy
 
20.05.13
17:20
ну дык, ты же настройки по умолчанию грузишь...
2 badboychik
 
20.05.13
17:23
Поменял местами, все равно не работает. По идее параметры СКД и настройки компоновщика - разные вещи
3 badboychik
 
20.05.13
17:24
Параметры редактируются в компоновщике если они отмечены как доступные для пользователя
4 Mitriy
 
20.05.13
17:33
мда, печалька... у меня тоже не получилось...
5 badboychik
 
20.05.13
17:37
Вот решение, надо все таки настройки использовать. Свой старый шаблонный отчет на СКД поднял и нашел )

Настройки = СКД.НастройкиПоУмолчанию;
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
   
ПериодОтчета = Новый СтандартныйПериод(НачалоМесяца(ДатаОстатков), КонецДня(ДатаОстатков));
// Установка параметров
ППериод          = Новый ПараметрКомпоновкиДанных("Период");
ЗначениеПараметра = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ППериод);
ЗначениеПараметра.Значение = ПериодОтчета;    
   
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
6 badboychik
 
20.05.13
17:42
Если галку доступности у параметра "Период" снять, то (0) работает. "Начало" и "Конец" хоть и не доступные в обоих случаях, но зависят от доступности параметра, из которого вычисляются
7 Mitriy
 
20.05.13
17:49
Вот видишь, а говорил - глюк...
8 badboychik
 
20.05.13
18:01
Еще, если закрыть у "Периода" доступность из настроек, то нужно принудительно поставить "Всегда" в поле "Использование", а не оставлять "Авто"
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший