|
Булево("Да") - ошибка преобразования | ☑ | ||
---|---|---|---|---|
0
Chameleon1980
30.05.23
✎
09:39
|
Привет всем.
До недавнего времени свято верил в Булево("Да") Но истина оказалась другой. Имеем две базы почти идентичные платформа одна и та-же: 1С:Предприятие 8.3 (8.3.21.1674) ОС одна и та-же на одной базе выполнение кода Булево("Да") = Истина на другой - Булево("Да") приводит к ошибке преобразования типа вангую, что где-то в настройках конфы? может кто навскидку подсказать, куда можно посмотреть? Вопрос очень важный. |
|||
1
Волшебник
30.05.23
✎
09:46
|
Не пытайтесь преобразовать строку в булево. Используйте настоящее булевое значение Истина или Ложь.
Если нужно преобразовать строку, то делайте так: БулевоеЗначение = (значение = "Да"); |
|||
2
Волшебник
30.05.23
✎
09:48
|
(0) Конфигуратор / Администрирование / Региональные установки
снять флаг "Использовать системные", задать "Логическое Истина" и "Логическое Ложь" |
|||
3
Dmitry1c
30.05.23
✎
10:23
|
(0) что это вообще?
|
|||
4
Bigbro
30.05.23
✎
10:53
|
это попытки использовать Да/Нет вместо Истина/Ложь..
с разной степенью успешности. |
|||
5
Donkey_hot
30.05.23
✎
11:33
|
(4) Это даже печальнее по сравнению с использованием для этих целей нуля и единицы.
|
|||
6
DrZombi
гуру
30.05.23
✎
12:09
|
Помница в 7.7 вообще особо не доверяли 1С :)
|
|||
7
rudnitskij
30.05.23
✎
17:20
|
(0) Если вы брезгуете писать ИСТИНА или ЛОЖЬ - преобразуйте с помощью Булево() цифры. Там ноль преобразует в ЛОЖЬ, а все цифры в истину, и от региональных установок ничего не зависит
|
|||
8
eddy_n
31.05.23
✎
07:32
|
(7) Верно подмечено. Можно не записывать Количество() > 0. Достаточно Количество().
|
|||
9
НафНаф
31.05.23
✎
09:08
|
(7) числа
|
|||
10
Chai Nic
31.05.23
✎
09:14
|
(7) А это документировано, такое преобразование? Если нет, то в очередном релизе платформы может сломаться.
|
|||
11
Chai Nic
31.05.23
✎
09:15
|
(0) Но зачем? Не могу представить, когда это может пригодиться.
|
|||
12
KJlag
31.05.23
✎
09:16
|
(10)
Булево (Boolean) Синтаксис: Булево(<Значение>) Параметры: <Значение> (обязательный) Тип: Число, Булево, Строка. Исходное значение. Возвращаемое значение: Тип: Булево. Полученное значение. Описание: Преобразует полученный параметр в значение типа Булево. Преобразование числа к типу Булево производится по следующим правилам: 0 преобразуется в Ложь; остальные значения преобразуются в Истина. |
|||
13
Chai Nic
31.05.23
✎
09:19
|
(12) Отсюда вывод, что любая строка, в том числе "0" - будет восприниматься как Истина. А число 0 - Ложь.
Но опять же не понятно, нафига всё это? |
|||
14
Fedor-1971
31.05.23
✎
09:53
|
(13) Платформа 8.3.19.1522 не совсем такая логика
Булево(0) = Ложь Булево(цифра не 0) = Истина Булево("А") - ошибка преобразования Булево("истина") = Истина таки, корректно преобразуются только числа и строки "Истина", "Ложь", "Да", "Нет", любая другая строка = ошибка преобразования (8) по уму, и для души, корректнее писать: НЕ Количество() = 0 т.е. Количество() вернёт цифру, а проверка оной на "НЕ 0" займет 1 такт процессора, а "> 0", если правильно помню, 3 такта Преобразование Булево(Количество()) - добавляет накладные расходы на вызов функции На большом потоке проверок можно оптимизировать время работы кода на минуты, но проблема в том, что сейчас на это не обращают внимание при разработке |
|||
15
KJlag
31.05.23
✎
10:00
|
(13)
там это относится к числам: Преобразование ЧИСЛА к типу Булево производится по следующим правилам: 0 преобразуется в Ложь; остальные значения преобразуются в Истина. как происходит преобразование строки не вкурсе, особо это не юзал. скорее всего как говорит (14) |
|||
16
Андрюха
31.05.23
✎
11:20
|
(1) БулевоеЗначение = (СтрСравнить(Значение, "Да") = 0);
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |