Имя: Пароль:
1C
1С v8
Значение константы в выражении, параметр СКД
0 Veronikin
 
06.10.20
12:31
Подскажите пожалуйста,
мне нужно в параметр в СКД получить значение константы. Пишу в выражение: ЗНАЧЕНИЕ(Константа.ДатаРеорганизации), ругается - неверные параметры.
Как правильно написать выражение?
1 toypaul
 
гуру
06.10.20
12:36
Константы.ДатаРеорганизации.Получить()
2 mikecool
 
06.10.20
12:36
+1 в параметрах
а сам параметр - в запрос
3 Veronikin
 
06.10.20
12:38
(1) Так выдает ошибку на этапе формирования:
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{ВнешнийОтчет.ДанныеДляРасчетаЛистковНетрудоспособности.МодульОбъекта(16)}: Ошибка при вызове метода контекста (Инициализировать)

по причине:
Ошибка компоновки данных
по причине:
Ошибка инициализации
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка "Константы.ДатаРеорганизации.Получить"
4 mistеr
 
06.10.20
12:40
Константу нельзя получить в выражении СКД. Нужно получить в коде и передать в параметр.
5 Dionisious
 
06.10.20
12:40
Можно таблицу Константы добавить в запрос.
Или в ПриКомпоновкеРезультата установить параметр данных компоновщика настроек.
6 Veronikin
 
06.10.20
12:41
(4) Понятно. Просто на ИТС аналогичный пример разобран, там предлагается через ЗНАЧЕНИЕ()
7 toypaul
 
гуру
06.10.20
12:46
какая-то дискриминация констант ... например Справочники.ХХХ.НайтиПоНаименованию работает
8 Андроны едут
 
06.10.20
12:49
Синтаксическая ошибка "Константы.ДатаРеорганизации.Получить"  скобочек () не хватает
9 Veronikin
 
06.10.20
12:53
(8) В выражении вот так написано: Константы.ДатаРеорганизации.Получить()
10 mistеr
 
06.10.20
13:51
(7) Где работает?
11 bolder
 
06.10.20
14:11
(5) Это правильное решение.Именно так работает в РЛС.
12 toypaul
 
гуру
06.10.20
14:37
(10) в выражении параметра
13 fisher
 
06.10.20
14:46
(6) На ИТС? Константу? Через ЗНАЧЕНИЕ()? Не верю! Покажи где.
14 fisher
 
06.10.20
14:48
(7) В СКД случаются "протечки" в глобальный контекст, хотя должно работать только то, что описано в возможностях языка выражений СКД. На инфостарте даже статьи были на эту тему, где народ находил чего работает из недокументированного и списки составлял. Но я бы поостерегся это использовать. В любой момент зарубить могут.
15 Veronikin
 
06.10.20
17:47
(13) я же написала - аналогично, там перечисление
16 Veronikin
 
06.10.20
17:47
В итоге вот так сделала:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

   Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных;
  
   Параметры.УстановитьЗначениеПараметра("ДатаРеорганизации", Константы.ДатаРеорганизации.Получить());
      
КонецПроцедуры
17 fisher
 
06.10.20
17:56
(15) Тогда понятно. Константы в ЗНАЧЕНИЕ() не поддерживаются. Если открыть справку по ЗНАЧЕНИЕ() - константы отсутствуют в списке допустимых вариантов.
Но, по-моему, ЗНАЧЕНИЕ() вообще нельзя использовать в поле "Выражение" параметров СКД. Этого ключевого слова нет в языке выражений СКД. Это ключевое слово языка запросов.
18 youalex
 
06.10.20
18:08
Можно параметром, а значение параметра указать  на закладке Параметры, в поле "Выражение", стандартно Константы.Константа1.Получить()
19 youalex
 
06.10.20
18:10
в вычисляемые поля - тоже можно тем же макаром