|   |   | 
| 
 | Булево("Да") - ошибка преобразования | ☑ | ||
|---|---|---|---|---|
| 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);     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |