Булево значение в 1с что это как исправить

Преобразование значения к типу булево не может быть выполнено

Часто начинающим программистам 1С 8.3 приходится встречаться со следующей проблемой «преобразование значения к типу булево не может быть выполнено». В таком случае надо знать, как разобраться с этой ошибкой предпринять меры по ее устранению.

Причина на самом деле очень проста. При каком-либо арифметическом действии над переменными числового типа система ожидает увидеть в этом действии два значения числового типа, например:

Система верно отработает это выражение и вернет 4.

Бывают ситуации, когда в таких случаях в переменных оказывается не число, а, например, строка, NULL неопределено, дата и др.

Вот такой пример обязательно выдаст ошибку «Преобразование значения к типу Число не может быть выполнено»:

Потому как платформа не может сложить значения типа число и значения типа дата.

Единственное исключение — сложения со строкой, в которой содержатся только цифры:

Система выдаст результат 4, но если поменять слагаемые местами, система выдаст строковые «22», так как 1С 8 выбирает тип по первому выражению.

Для решения данной проблемы необходимо найти место в коде, в котором вызывается исключение, и исправить его. Также необходимо использовать дополнительные проверки. Например, на тип переменных:

Очень распространенная ошибка — это получение NULL в запросе и использование его в арифметических выражениях:

Запрос = Новый Запрос;Запрос.Текст = “ВЫБРАТЬВыпускПродукцииУслугОбороты.Организация,ВыпускПродукцииУслугОбороты.Продукция,ВыпускПродукцииУслугОбороты.КоличествоОборот,ВыпускПродукцииУслугОбороты.ПлановаяСтоимостьОборотИЗРегистрНакопления.ВыпускПродукцииУслуг.Обороты КАК ВыпускПродукцииУслугОбороты”;Выборка = Запрос.Выполнить().Выбрать();Сч = 0;Пока Выборка.Следующий() ЦиклСч = Сч + Выборка.КоличествоОборот;КонецЦикла;

Здесь в строке Сч = Сч + Выборка.КоличествоОборот вполне вероятно появление данной ошибки в случае получения в качестве значения NULL.

Чтобы избежать данной ошибки, достаточно использовать проверку на NULL ресурсов в запросе:

ЕСТЬNULL(ВыпускПродукцииУслугОбороты.КоличествоОборот,0) КАК КоличествоОборотЕСТЬNULL(ВыпускПродукцииУслугОбороты.ПлановаяСтоимостьОборот,0) КАК ПлановаяС

Если в значении будет значение NULL, то система заменит его на ноль, и в итоге ошибка будет исправлена.

Источник

Программирование в 1С для всех

Многие, кто только начинает изучать программирование, впервые сталкиваются с новым для себя примитивным типом булево. Еще его по-другому называют логический тип. Данный тип назван в честь английского математика Джорджа Буля, который изучал вопросы математической логики.

Прежде чем начать изучать этот примитивный тип, узнаем вообще, что такое булевы или логические выражения.

Булевы выражения это что-то типа вопроса, на который должен быть однозначные ответ или да, или нет.

Так же могу и быть более сложные вопросы:

Кнопка нажата – нет;

Булевы выражения используются во всех условных переходах:

В языке программирования 1С переменную с примитивным типом Булево можно задать явно:

Где Истина и Ложь единственные значения, которые может принимать примитивный тип Булево.

Истина – значит, что какое-то утверждение соответствует действительности (Ответ — Да).

Ложь – значить, что какое-то утверждение, наоборот, не соответствует действительности (Ответ –Нет).

Так же переменные с типом булево могут быть заданы с помощью какого-либо логического выражения.
Например:

В этом случае, в переменой А будет значение Истина, а в переменной типа Б – ложь;

В языке программирования 1С над переменными типа булево можно осуществлять различные операции.

Всего их три – И, ИЛИ и НЕ.

Понять функциональность этих операций помогут следующие таблицы

АБ
ИстинаЛожь
ЛожьИстина
С = А И БАБ
ИстинаИстинаИстина
ЛожьЛожьИстина
ЛожьИстинаЛожь
ЛожьЛожьЛожь
С = А ИЛИ БАБ
ИстинаИстинаИстина
ИстинаЛожьИстина
ИстинаИстинаЛожь
ЛожьЛожьЛожь

А можно ли выполнять данные операции подряд?

Да можно, данные операции будут выполняться слева направо. И иметь следующий уровень старшинства:

Первый: в первую очередь выполняются операции в скобках

Второй: Операция НЕ

Четвертый: Операция ИЛИ.

Чтобы не путаться в операциях, я советую Вам использовать скобки, где только возможно.

В данном случае сначала будет работать операция И между А и С.

Смотрим таблицу А – Ложь, С – Ложь, результат А И С будет Ложь.

Следующим шагом будет выполнение операции ИЛИ между Ложью (Результат предыдущей операции) и значением Б, которое Истина.

Результат будет Истина.

А если нам надо, чтобы прошла сначала операция ИЛИ между С и Б, а потом только операция И между А и тем, что получилось, то для этого необходимо использовать скобки.

Результат будет диаметрально противоположный. Почему? Сейчас разберем. Благодаря скобкам сначала выполняется операция и между С и Б, т.к. С — Ложь, а Б – Истина, результат будет Истина. Потом между значением А (которое Ложь) и значением Истина (результатом предыдущей операции) выполняется операция И. Результат будет Ложь.

Многие начинающие программисты не совсем до конца понимают принципы взаимодействия между переменными типа Булево. Помочь в этом сможет только практика. А практики с переменными типа Булево достаточно в моем задачнике к книге «Программировать в 1С за 11 шагов»

Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

Булево значение в 1с что это как исправить. Смотреть фото Булево значение в 1с что это как исправить. Смотреть картинку Булево значение в 1с что это как исправить. Картинка про Булево значение в 1с что это как исправить. Фото Булево значение в 1с что это как исправить

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Промо-код на скидку в 15% — 48PVXHeYu


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

2 thoughts on “ Примитивный тип Булево ”

Что-то вы напутали. Операция (А И В) будет равна Истина, только если ОБА операнда равны Истина.
Операция (А ИЛИ В) равна Истина, если ХОТЯ БЫ ОДИН из операндов равен Истина.

В таблице у меня так и написано. Где Вы нашли ошибку?

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *