|
Десятичная запятая в тернарном операторе 🠗 (Волшебник 19.09.2022 18:06) | ☑ | ||
---|---|---|---|---|
0
ДядяМитяй
19.09.22
✎
15:29
|
Всех приветствую.
Есть некая формула, в которую подставляются значения из регистров, потом Вычислить() и все работает. В формуле может быть оператор ?(*условие, *выражение1, *выражение2). И все работало, пока не появились десятичные дроби. Поскольку настройками ОС десятичный разделитель определен как запятая, то в операторе эта запятая воспринимается как разделитель выражений. Наверняка на этот случай предусмотрены какие-то специальный "скобки". Не смог найти информации. Может кто знает? |
|||
1
Fragster
гуру
19.09.22
✎
15:31
|
Причем здесь тернарный оператор?
А = вычислить("100,0") Встроенный язык: Строка кода 1: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {<Неизвестный модуль>(1,4)}: Ошибка в выражении 100<<?>>,0 |
|||
2
RomanYS
19.09.22
✎
15:32
|
(0) явно пиши числа в формате с точкой и без группировок. Можно XMLСтрока(Число) вместо формата
|
|||
3
Fragster
гуру
19.09.22
✎
15:32
|
если значения из регистров, то используй при подстановке XMLСтрока
|
|||
4
Fragster
гуру
19.09.22
✎
15:32
|
(2) блин(
|
|||
5
ASU_Diamond
19.09.22
✎
15:33
|
Значения в регистрах строковые?
|
|||
6
ДядяМитяй
19.09.22
✎
15:35
|
(5) числовые
|
|||
7
Кирпич
19.09.22
✎
15:38
|
(0) Во дает. В языке 1С числа с точкой пишутся. Чего ты понавыдумывал про тернарные операторы.
|
|||
8
ДядяМитяй
19.09.22
✎
15:42
|
(7) в 1С числа пишутся по умолчанию как настроено в ОС
|
|||
9
Кирпич
19.09.22
✎
15:47
|
(8) отдохни. ты перепрограммировал немножко.
|
|||
10
Fragster
гуру
19.09.22
✎
15:47
|
(8) Где ты был 8 лет?
вычислить работает с языком 1с. в языке 1с разделитель - точка. Иначе не работает. |
|||
11
RomanYS
19.09.22
✎
15:54
|
(8) ты путаешь представление чисел в предприятии и литералы в конфигураторе. Здесь только точки и никаких группировок
|
|||
12
ДядяМитяй
19.09.22
✎
15:58
|
Ну да, поскольку итоговое выражение все равно строка, можно СтрЗаменить(Результат.ТарифЗаТочку, ",", ".") хоть тарифЗаТочку это число.
Но теоретический вопрос остался - можно ли написать запятую, чтобы она воспринималась как запятая, а не элемент оператора? |
|||
13
Кирпич
19.09.22
✎
16:00
|
(12) ступай уже
|
|||
14
ДядяМитяй
19.09.22
✎
16:02
|
(11) мда... некорректно выразился изнутри своей проблемы). Имелось в виду, что в формуле число будет приведено к строке в соответствии с настройками винды.
|
|||
15
Кирпич
19.09.22
✎
16:11
|
(12) СтрЗаменить() лучше не надо. Лучше Формат()
|
|||
16
RomanYS
19.09.22
✎
16:17
|
(12) СтрЗаменить(Результат.ТарифЗаТочку, ",", ".")
получишь ошибку когда тариф станет больше 1000. >>Но теоретический вопрос остался - можно ли написать запятую, чтобы она воспринималась как запятая, а не элемент оператора? Она и воспринимается как запятая, а запятые в численных литералах запрещены. Ты похоже ничего не понял. (15) Лучше (3) |
|||
17
Волшебник
модератор
19.09.22
✎
18:06
|
В языке программирования 1С десятичная запятая обозначается точкой и только так, независимо от настроек ОС и 1С.
Если где-то пролезла запятая, значит её надо превратить в точку. Это уже Ваша проблема. |
|||
18
НафНаф
19.09.22
✎
18:48
|
(0) вы неявно число в строку превратили где-то
|
|||
19
rudnitskij
19.09.22
✎
21:46
|
СтрЗаменить(Результат.ТарифЗаТочку, ",", ".") - если Результат.ТарифЗаТочку имеет числовой тип, то стрзаменить тоже ошибку вернет
|
|||
20
NorthWind
20.09.22
✎
06:46
|
(0) в синтаксисе языков программирования, в том числе в языке 1С, разделитель дробей точка вне зависимости от того, как настроен формат в ОС. Поэтому получается что вы подаете на вход Выполнить некорректное выражение... Нужно явно приводить числа к тому виду, который понимается интерпретатором.
|
|||
21
NorthWind
20.09.22
✎
06:50
|
Ой, уже было сказано. Прошу прощения
|
|||
22
ASU_Diamond
20.09.22
✎
06:54
|
Мне интересно, что за задача, где вычисления с использованием значений регистров идёт через Вычислить()
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |