Имя: Пароль:
1C
1С v8
СКД - функция НайтиЗначениеПараметра() возвращает значение другого типа
0 Shantaram
 
09.08.21
10:18
В процедуре ПриКомпоновкеДанных() формирую таблицу значений для внешнего набора данных.
Параметры запроса заполняю значениями параметров из СКД с закладки Параметры.
Возникла ситуация, когда ищу параметр с типом ПеречислениеСсылка.КодыОперацийПартииТоваров, то значение найденного параметра оказывается типом "строка".
Параметры.НайтиЗначениеПараметра( Новый ПараметрКомпоновкиДанных("ВыпускПоОперацииСтоимость"))

Кто сталкивался с подобной проблемой и как ее решили?

Можно конечно заполнить параметры программно, или не использовать внешние наборы данных, но интересно разобраться с проблемой.
1 Ботаник Гарден Меран
 
09.08.21
10:25
В СП что написано, какой тип возвращает НайтиЗначениеПараметра()?
2 Shantaram
 
09.08.21
10:38
(1) Возвращаемое значение:
Тип: ЗначениеПараметраКомпоновкиДанных, Неопределено.  
Заполнен значением ПеречислениеСсылка, но функция вернула строку.
3 Ботаник Гарден Меран
 
09.08.21
10:58
Если СП трудно прочитать, можно в типовой код смотреть.

ЗначениеПараметраГоризонт = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Горизонт"));
Горизонт = ?(ЗначениеПараметраГоризонт = Неопределено, 0, ЗначениеПараметраГоризонт.Значение);

""ЗначениеПараметраГоризонт.Значение"" !!!
4 Shantaram
 
09.08.21
10:58
Добавлю, что такая фигня только с типом GеречислениеСсылка.
Если параметры с типом ПланСчетов или СправлочникСсылка, то все ок.
Похоже, баг какой-то :-(
5 Shantaram
 
09.08.21
11:02
(3) zzzz.Значение - там как раз строка.
И то, только в случае если в параметр с типом данных перечислениеСсылка. С другими типами данных возвращается именно значение того типа, какое и положено в параметр
6 Ботаник Гарден Меран
 
09.08.21
11:10
Значит ошибка в месте, где устанавливается значение параметра.
Баги не так часто встречаются.
7 Shantaram
 
09.08.21
11:51
(6) При установке значения параметра, предварительно выбирается тип параметра - это нужное мне перечисление, а далее устанавливается значение. Простора для совершения ошибки вообще нету )