Имя: Пароль:
1C
1С v8
УФ+СКД. Странное поведение
0 Анютик
 
13.05.13
16:44
Есть Отчет на СКД. В самом отчете 3 схемы. По 2 формируется ТЗ, передается как внешний объект в третью и выводится на экран.Основная схема - первая, ее же настройки юзаются. Считываю их из пользовательских настроек ПриКомпоновкеРезультата() так Настройки = КомпоновщикНастроек.ПолучитьНастройки().
Однако, почему-то так не считываются параметры данных(у меня они стандартные - НачалоПериода и КонецПериода). Как их считать?
1 mxs089
 
13.05.13
16:45
КомпоновщикНастроек.Параметры. и т.д.
2 Анютик
 
13.05.13
16:47
ПараметрДанныхНачалоПериода = Настройки.ПараметрыДанных.Элементы[0];
   ПараметрДанныхНачалоПериода.Значение = НачалоДня(КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].Значение);
   ПараметрДанныхНачалоПериода.Использование = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].Использование;

вот такой код приводит к неадекватному поведению настроек
3 Анютик
 
13.05.13
16:47
после первого формирования значение параметра очищается, а после второго вообще параметр пропадает
4 Анютик
 
13.05.13
16:47
хотя если не УФ в отчете нормально все работало
5 mxs089
 
13.05.13
16:49
КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы
6 Анютик
 
13.05.13
16:50
а в нем ничего нет) только в пользовательских. вернее, есть нулевая дата с отключенным использованием
7 Chin
 
13.05.13
16:52
Так добавь в компановке параметры в пользовательские настройки
8 Анютик
 
13.05.13
16:56
не, в пользовательских они есть и заполнены, а в самих настройках - есть, но не заполнены. мне из пользовательских надо их продублировать в основные.
9 Chin
 
13.05.13
17:03
А что отладчик в (2) показывает?
10 Анютик
 
13.05.13
17:12
при первом нажатии сформировать параметр передается. при втором пропадают оба параметра из элементов
11 Chin
 
13.05.13
17:28
(10) А как ты запускаешь схемы? Ты же наверное перезаполняешь настройки компоновщика настроек для каждой схемы? Первый раз прочитала пользовательские, заполнила обыные Параметры данных. Во второй схеме у тебя пользовательские не заполнены, а ты так же их начинаешь читать?

Вообще, если проблема только с Началом и Концом периода - первый раз прочла, занеси в переменные и потом подставляй. Либо вообще сделай жесткую настройку периода на форме с привязкой к реквизитам самого отчета.
12 Анютик
 
13.05.13
17:32
(11) да, конечно перечитываю для каждой схемы, как иначе-то. Просто непонятно, почему трабла только с периодом. Сейчас вот добавила свои параметры. Пробую, как отработает с моими. Может, глюк какой. Иначе бы с отбором тож проблемы были бы. Ну мне так кажется
13 Анютик
 
13.05.13
17:33
не, со своими параметрами то же самое. Т.е. мне при чтении первой схемы их запомнить, а в следующие просто подставлять...сейчас сварганим. А что тогда с отбором? почему он работает?
14 fisher
 
13.05.13
17:34
В УФ надо работать не через "Настройки" а через "ПользовательскиеНастройки". Там не совсем тривиально, т.к. они связаны. Как-то так:
Функция ПолучитьПользовательскийПараметр(ИмяПараметра, КомпоновщикНастроек)
   
   НайденныйПараметр = Неопределено;
   
   НайденныйПараметрВарианта = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
   
   Если НайденныйПараметрВарианта <> Неопределено Тогда
       
       НайденныйПараметр = ПолучитьПредопределенныйЭлементПользовательскихНастроек(НайденныйПараметрВарианта, КомпоновщикНастроек.ПользовательскиеНастройки);
       
   КонецЕсли;
   
   Возврат НайденныйПараметр;
   
КонецФункции

Функция ПолучитьПредопределенныйЭлементПользовательскихНастроек(ЭлементНастроекВарианта, ПользовательскиеНастройки)
   
   НайденныйЭлемент = Неопределено;
   
   Если ЭлементНастроекВарианта <> Неопределено Тогда
       
       НайденныйЭлемент = ПользовательскиеНастройки.Элементы.Найти(ЭлементНастроекВарианта.ИдентификаторПользовательскойНастройки);
       
   КонецЕсли;
       
   Возврат НайденныйЭлемент;
   
КонецФункции
15 Chin
 
13.05.13
17:34
(13) Отбор как счтываешь, тоже из пользовательских настроек?
16 Анютик
 
13.05.13
17:37
(14) понять бы как
(15) да
короче. в 1 и 2 схемах были параметры НачалоПериода и КонецПериода. В третьей их- не было. Добила ручками - заработало. Остался вопрос - как связаны настройки. Почему отбор работает без доп танцев, а параметры - нет.
17 Chin
 
13.05.13
17:44
(16) Просто повезло. Потому как с учетом (14) я бы не ручался в какой последовательности окажуться настроки отчета в структуре пользовательских настроек. В пользовательских накстройка и параметры и отборы в перемешку, а идентифицируются они по идентификатору. Видимо тебе просто повезло. Но то как ты делаешь, да ёще жестко обращаясь к индексу пользовательской настройки может привести к тому, что при определенных обстоятельствах отчет отработает неправильно.
18 Анютик
 
13.05.13
18:09
не, настройки я считываю без обращения к индексу.
Настройки = КомпоновщикНастроек.ПолучитьНастройки().

Вариант из (0) после (16) оказался рабочим
19 Chin
 
13.05.13
18:17
(18) А вот и с обращением:
КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0]

:)
20 Анютик
 
13.05.13
18:43
(19) да я уже варианты искала...хоть как-то.
21 Анютик
 
13.05.13
18:43
короче, забей. Спасибо за обсуждение!
22 Chin
 
13.05.13
18:47
(21) Забил! :)
Основная теорема систематики: Новые системы плодят новые проблемы.