Что означает слово булево в 1с
Что означает слово булево в 1с
Значение Булево 1С — это значение Истина или Ложь. В числовом выражении Ложь это ноль, а Истина — число больше нуля (обычно единица).
Выражение (операция) Булево 1С — это математическое выражение, результатов которого является значение типа Булево 1С, например:
a = 0+1;
b = 2-1;
x = (a = b);
//x = Истина
Далее — подробнее о условных операциях 1С, значениях и выражениях булево 1С.
Условная операция 1С ЕСЛИ выглядит следующим образом:
Если ОПЕРАЦИЯ-БУЛЕВО Тогда
//действия1…
ИначеЕсли ОПЕРАЦИЯ-БУЛЕВО Тогда
//действия2…
Иначе
//действия3…
КонецЕсли;
Булево 1С — это результат вычисления со значениями Истина или Ложь, например:
Массив1 = Новый СписокЗначений();
Если Массив1.Количество() > 0 Тогда
//действия…
КонецЕсли;
//другой вариант, полностью аналогичный
Если НЕ Массив1.Количество() = 0 Тогда
//действия…
КонецЕсли;
Многие функции/методы объектов возвращают успешность выполнения операции как булево 1С, например:
Запрос = Новый Запрос();
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
//действия…
КонецЕсли;
В условной операции 1С можно объединять несколько условий с использованием И и ИЛИ:
Массив1 = Новый СписокЗначений();
Если (Массив1.Количество() > 0 и Массив1.Количество() 100 Тогда
//действия…
КонецЕсли;
Условия булево 1С можно использовать непосредственно в коде программы:
Переменная1 = 5;
флгРезультат = (Переменная1 = 2 + 3); //флгРезультат будет равен ИСТИНА
В условной операции 1С оператор ЕСЛИ ИНАЧЕ ТОГДА можно заменить более кратким выражением. Следующие два варианта равны:
У реквизитов объектов (справочников, документов и т.п.) есть возможность установить тип булево 1С. Также можно создать переменную булево 1С, например:
флгВыполнено = Истина;
Далее, в условиях ЕСЛИ, можно писать равнозначно двумя способами:
//вариант 1
Если флгВыполнено = Истина Тогда
//делаем что-то
КонецЕсли;
//вариант 2
Если флгВыполнено Тогда
//делаем что-то
КонецЕсли;
Второй вариант таит в себе следующую «неприятность»:
Значение и описание типов булево в 1С
Значение Булево в 1С – это значение Истина или Ложь. В числовом выражении Ложь обозначается числом «0», а Истина должна быть в виде числа, которое больше нуля, чаще всего это цифра «1».
Выражение Булево 1С считается математическим выражением, результатом чего является значение типа Булево 1С, например: a = 0+1; b = 2-1; x = (a = b); //x = Истина.
Что бы лучше понять данное значение, надо разобраться в условных операциях 1С, значениях и выражениях булево 1С.
Условная операция 1С ЕСЛИ выглядит следующим образом: Если ОПЕРАЦИЯ-БУЛЕВО Тогда //действия1… ИначеЕсли ОПЕРАЦИЯ-БУЛЕВО Тогда //действия2… Иначе //действия3… КонецЕсли;
Булево 1С – это итог вычисления со значениями Истина или Ложь, например: Массив1 = Новый СписокЗначений(); Если Массив1.Количество() > 0 Тогда //действия…
//другой вариант, полностью аналогичный Если НЕ Массив1.Количество() = 0 Тогда //действия… КонецЕсли;
Многие функции/методы объектов возвращают успешность выполнения операции как булево 1С, например: Запрос = Новый Запрос(); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда //действия… КонецЕсли;
В условной операции 1С можно объединять несколько условий с использованием И и ИЛИ: Массив1 = Новый СписокЗначений(); Если (Массив1.Количество() > 0 и Массив1.Количество() 100 Тогда //действия… КонецЕсли;
Условия булево 1С можно использовать непосредственно в коде программы: Переменная1 = 5; флгРезультат = (Переменная1 = 2 + 3); //флгРезультат будет равен ИСТИНА
В условной операции 1С оператор ЕСЛИ ИНАЧЕ ТОГДА можно заменить более кратким выражением. Следующие варианты равны:
Если затронуть описание типов булево в 1С, то начинающие программисты встречаются, прежде всего, с примитивным типом булево. Иначе он может называться «логический тип». Это название ему было дано в честь английского математика Джорджа Буля, который занимался изучением вопросов логики в математической науке.
Что бы лучше узнать о примитивном типе, надо сначала познакомиться с булевыми или логическими выражениями. Они представляют из себя вопросы, на которые должны быть короткие ответы «да» или «нет».
Так же могут быть вопросы посложнее:
Дверь открыта – нет.
Булевы выражения фигурируют во всех условных переходах:
В языке программирования 1С переменную с примитивным типом Булево можно задать явно:
Где Истина и Ложь единственные значения, которые может принимать примитивный тип Булево.
Истина значит, что какое-то утверждение соответствует действительности (Ответ – Да).
Ложь – значить, что какое-то утверждение, наоборот, не соответствует действительности (Ответ – Нет).
Так же переменные с типом булево могут быть заданы с помощью какого-либо логического выражения. Например:
В этом случае, в переменой А будет значение Истина, а в переменной типа Б – ложь;
В языке программирования 1С над переменными типа булево можно осуществлять различные операции.
Всего их три – И, ИЛИ и НЕ.
Понять функциональность этих операций помогут следующие таблицы
Операция НЕ
Операция И
С = А И Б | А | Б |
Истина | Истина | Истина |
Ложь | Ложь | Истина |
Ложь | Истина | Ложь |
Ложь | Ложь | Ложь |
Операция ИЛИ
С = А ИЛИ Б | А | Б |
Истина | Истина | Истина |
Истина | Ложь | Истина |
Истина | Истина | Ложь |
Ложь | Ложь | Ложь |
Данные операции можно выполнять подряд слева направо. Только они будут иметь следующий уровень старшинства:
Первый: в первую очередь выполняются операции в скобках
Второй: Операция НЕ
Четвертый: Операция ИЛИ.
Чтобы не путаться в операциях, необходимо использовать скобки, где только возможно.
В данном случае сначала будет работать операция И между А и С.
Согласно таблице А – Ложь, С – Ложь, результат А И С будет Ложь.
Следующим шагом будет выполнение операции ИЛИ между Ложью (Результат предыдущей операции) и значением Б, которое Истина.
Результат будет Истина.
А если нам надо, чтобы прошла сначала операция ИЛИ между С и Б, а потом только операция И между А и тем, что получилось, то для этого необходимо использовать скобки:
Результат будет диаметрально противоположный. Благодаря скобкам сначала выполняется операция и между С и Б, т.к. С — Ложь, а Б – Истина, результат будет Истина. Потом между значением А (которое Ложь) и значением Истина (результатом предыдущей операции) выполняется операция И. Результат будет Ложь.
Довольно часто возникает ошибка: булево значение в 1С «преобразование значения к типу булево\число не может быть выполнено», которая на самом деле может быть легко устранена. В первую очередь надо обновить конфигурацию до последнего релиза. Это одно из решений данной проблемы. Но в большинстве случаев возникновение такой ошибки говорит о попытке присвоить числовой переменной не численное значение, в результате внутренний конвертер типов не может преобразовать переменную в число и возникает ошибка.
Если присваивание переменной происходит из тела выборки результата запроса, следует проверить наличие в выборке значений типа NULL. Это значение нельзя использовать в операциях с числами. Значение NULL появляется в запросе при использовании соединений.
В этом случае ошибка может появиться, если в регистре со сведениями цен номенклатуры нет записи по ней.
Решить проблему можно следующим путем: во время обращения к полю выборки необходимо добавить проверку на равенство значению типа NULL. Либо использовать функцию ЕСТЬNULL(x1, x2). Она проверяет на NULL x1, и если Значение NULL обнаружено функция возвращает x2, в обратно случае возвращает x1. В первом случае равенства Выражения1 NULL, Выражение1 будет заменено в результате запроса на заданное Выражение2.
Программирование в 1С для всех
Многие, кто только начинает изучать программирование, впервые сталкиваются с новым для себя примитивным типом булево. Еще его по-другому называют логический тип. Данный тип назван в честь английского математика Джорджа Буля, который изучал вопросы математической логики.
Прежде чем начать изучать этот примитивный тип, узнаем вообще, что такое булевы или логические выражения.
Булевы выражения это что-то типа вопроса, на который должен быть однозначные ответ или да, или нет.
Так же могу и быть более сложные вопросы:
Кнопка нажата – нет;
Булевы выражения используются во всех условных переходах:
В языке программирования 1С переменную с примитивным типом Булево можно задать явно:
Где Истина и Ложь единственные значения, которые может принимать примитивный тип Булево.
Истина – значит, что какое-то утверждение соответствует действительности (Ответ — Да).
Ложь – значить, что какое-то утверждение, наоборот, не соответствует действительности (Ответ –Нет).
Так же переменные с типом булево могут быть заданы с помощью какого-либо логического выражения.
Например:
В этом случае, в переменой А будет значение Истина, а в переменной типа Б – ложь;
В языке программирования 1С над переменными типа булево можно осуществлять различные операции.
Всего их три – И, ИЛИ и НЕ.
Понять функциональность этих операций помогут следующие таблицы
А | Б |
Истина | Ложь |
Ложь | Истина |
С = А И Б | А | Б |
Истина | Истина | Истина |
Ложь | Ложь | Истина |
Ложь | Истина | Ложь |
Ложь | Ложь | Ложь |
С = А ИЛИ Б | А | Б |
Истина | Истина | Истина |
Истина | Ложь | Истина |
Истина | Истина | Ложь |
Ложь | Ложь | Ложь |
А можно ли выполнять данные операции подряд?
Да можно, данные операции будут выполняться слева направо. И иметь следующий уровень старшинства:
Первый: в первую очередь выполняются операции в скобках
Второй: Операция НЕ
Четвертый: Операция ИЛИ.
Чтобы не путаться в операциях, я советую Вам использовать скобки, где только возможно.
В данном случае сначала будет работать операция И между А и С.
Смотрим таблицу А – Ложь, С – Ложь, результат А И С будет Ложь.
Следующим шагом будет выполнение операции ИЛИ между Ложью (Результат предыдущей операции) и значением Б, которое Истина.
Результат будет Истина.
А если нам надо, чтобы прошла сначала операция ИЛИ между С и Б, а потом только операция И между А и тем, что получилось, то для этого необходимо использовать скобки.
Результат будет диаметрально противоположный. Почему? Сейчас разберем. Благодаря скобкам сначала выполняется операция и между С и Б, т.к. С — Ложь, а Б – Истина, результат будет Истина. Потом между значением А (которое Ложь) и значением Истина (результатом предыдущей операции) выполняется операция И. Результат будет Ложь.
Многие начинающие программисты не совсем до конца понимают принципы взаимодействия между переменными типа Булево. Помочь в этом сможет только практика. А практики с переменными типа Булево достаточно в моем задачнике к книге «Программировать в 1С за 11 шагов»
Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
2 thoughts on “ Примитивный тип Булево ”
Что-то вы напутали. Операция (А И В) будет равна Истина, только если ОБА операнда равны Истина.
Операция (А ИЛИ В) равна Истина, если ХОТЯ БЫ ОДИН из операндов равен Истина.
В таблице у меня так и написано. Где Вы нашли ошибку?
Типы значений в 1С 8.3
В данной статье мы подробно рассмотрим основные типы значений в 1С — примитивные, ссылочные, системные типы значений, а также познакомимся с основными приемами работы с типами значений.
Содержание
Вместо предисловия
Статья не ставит целью пересказ встроенной справки или руководства разработчика. Подразумевается, что читатели самостоятельно могут посмотреть необходимую информацию в синтакс-помощнике, глоссарии терминов 1С, или другой документации.
Примитивные типы значений в 1С
Значения примитивных типов не содержат в себе ничего, кроме литерала своего типа. Например, значение типа число может определяться литералом 12345, типа строка — «12345», типа булево — Истина, и т.д.
Всего примитивных типов в 1С шесть:
Значения примитивных типов могут преобразовываться к другим типам. Для явного преобразования используются соответствующие методы глобального контекста — например, Строка(12345) приведет число к строке, Дата(«20210101») — преобразует строку в дату 01.01.2021, и др.
Но самое интересное начинается при неявном преобразовании типов. Значения преобразуются по определенным правилам. Так, например, второй операнд и последующие преобразуются к первому операнду выражения, до тех пор, пока это подразумевается используемыми операторами Т.е. если первым идет число, последующие операнды также будут преобразовываться к числу, если строка — к строке.
Но если в выражении попадается оператор, который работает только с конкретным типом, то будет повторное преобразование к этому типу.
Значение типа Неопределено — это специальное значение, которое используется как значение по умолчанию для полей составных типов, а также для обозначения неуказанного значения. Объявленные переменные, в которые еще не поместили значение, будут иметь тип Неопределено.
Значение Null — это литерал, обозначающий отсутствие значения в выборке данных. Прежде всего это значение используется при работе с запросами, например, при левом соединении двух таблиц, отсутствующие значения в левой таблице будут заменены значениями Null. Также значение Null будет иметь реквизит иерархического справочника для элемента-группы, если в свойствах реквизита указано, что данный реквизит используется только для элементов. Аналогично для реквизитов, которые используются только для групп, их значения в обычных элементах справочника будут равны Null.
Прикладные типы значений
Прикладные типы значений создаются платформой, когда разработчик добавляет новые прикладные объекты — документы, справочники, регистры и т.д. При этом при создании одного прикладного объекта становятся доступны сразу несколько прикладных типов данных. Например, при добавлении в конфигурацию справочника «Пользователи», платформа создаст следующие типы:
Каждый прикладной тип служит для определенной функциональности — например, ссылка нужна для доступа к свойствам конкретного элемента на чтение, объект — для возможности редактировать свойства это элемента, выборка — для перебора коллекции элементов, и т.п.
Изначально прикладные типы платформой не поддерживаются, и существуют только в конкретном прикладном решении. Следует иметь в виду, что при создании двух разных справочников, даже с одинаковым набором реквизитов, например «Покупатели» и «Поставщики», для платформы это будут разные типы данных, несмотря на одинаковый реквизитный состав, и унаследованную базовую функциональность типа «Справочники».
Интерфейсные типы данных в 1С
К интерфейсным типам относятся типы данных, позволяющие организовать интерактивное взаимодействие прикладного решения с пользователем. Прежде всего, это типы, связанные с формами и их элементами, например «КнопкаФормы», «ПолеФормы» и др. Также к интерфейсным типам данных относятся значения, позволяющие работать с избранным, историей, окном клиентского приложения, и т.д.
Общие типы данных
Платформа предоставляет специфичные объекты языка, отвечающие за различную функциональность: ТабличныйДокумент, Диаграмма, ПостроительЗапроса, Картинка и др.
В отличие от примитивных типов, значения общих типов представляют собой совокупность значений свойств конкретного объекта. Каждое значение общего типа называется «экземпляром объекта», и создается ключевым словом Новый — Новый ТекстовыйДокумент, Новый ХранилищеЗначения, и т.д.
Универсальные коллекции значений
Для работы с временными наборами данных в течение сеанса работы пользователя используются универсальные коллекции, такие как Массив, ТаблицаЗначений, Структура и др. Они не являются объектами базы данных, и в ней не хранятся. Универсальные коллекции используются для сбора, группировки, анализа и обработки данных.
Значения типа универсальной коллекции создаются при помощи ключевого слова Новый, например — Новый СписокЗначений, Новый ДеревоЗначений.
Платформа также предоставляет разработчику связанные типы значений, такие как КолонкаТаблицыЗначений, СтрокаДереваЗначений, КлючИЗначение, для работы с содержимым универсальных коллекций.
Следует учитывать, что два одинаковых экземпляра универсальной коллекции для платформы будут разными объектами, даже если эти два экземпляра полностью идентичны.
Составные типы значений
Реквизиты объектов конфигурации могут иметь составной тип. Например, для реквизита «Платежный документ» может быть указаны типы «Приходная накладная», «Авансовый отчет», «Оприходование товаров». В этом случае разработчик указывает, что реквизит имеет составной тип, и отмечает нужные типы на этапе конфигурирования, а пользователь в процессе эксплуатации может выбрать в реквизит значение одного из доступных типов. Следует иметь в виду, что в каждый конкретный момент времени значение имеет только один конкретный тип. Если значение составного типа не указано, тип будет Неопределено. Одновременно двух типов значение составного типа быть не может.
Проверка типа конкретного значения
При реализации прикладной логики, часто возникает необходимость проверить, к какому типу принадлежит то или иное значение. Например, если в параметр процедуры передана структура — реализуется одно поведение, а если единственное значение — то другое.
Для такой проверки используется два метода глобального контекста: Тип и ТипЗнч.
Пример. Реквизит Плательщик имеет составной тип — плательщиками могут быть Сотрудники и Контрагенты. Нам нужно проверить, что выбранное значение реквизита является элементом справочника Контрагенты:
Примитивные типы данных и булевы операции
Указание типа данных при работе в модуле необязательно, т.к. типизация «мягкая» и зависит от значения. Кстати тип меняется при присвоении нового значения.
Пример. Переменная типа число
Примитивные типы данных
1. Null
Литерал использующиеся для определения отсутствующего значения при работе с базой данных (при соединении таблиц).
Значение типа Null можно присвоить переменной: Переменная = Null
2. Неопределено (Undefined)
Значение данного типа применяются, когда необходимо использовать пустое значение, не принадлежащее ни к одному другому типу. Например, такое значение изначально имеют реквизиты с составным типом значения.
3. Число (Number)
Данным типом можно представить любое десятичное число.Максимально допустимая разрядность числа 38 знаков. А разделителем является точка «.».
С данными числового типа можно выполнять основные арифметические операции: сложение(+), вычитание(-), умножение(*) или деление(/).
4. Строка (String)
Значения данного типа содержат строку в формате Unicode произвольной длины.
Литералы: Набор символов заключенных в кавычки.
Для использования кавычек(«») внутри строки необходимо использовать двойные кавычки.
Для переноса строк в модуле, необходимо использовать вертикальную черту ( | )
5. Дата (Date)
Данный тип содержит дату григорианского календаря (с 01 января 0001 года) и время с точностью до секунды.
Литералы: Строка цифр, заключенная в одинарные кавычки вида: ‘ГГГГММДДччммсс’:
ГГГГ — год, 4-е цифры;
ММ — месяц:
ДД — дата;
чч — час в 24-х часовом формате;
мм — минуты;
сс — секунды;
В качестве разделителя можно использовать любые символы пример: ‘ГГГГ-ММ-ДД чч:мм:сс’.
6. Булево (Boolean)
Значения данного типа имеют два значения Истина и Ложь. Значения возвращаются в результате вычисления логических выражений и часто используются в условиях.
Литералы: Истина (True) и Ложь (False)
Булевы операции
Список булевых операций:
Примечание: для управления последовательности необходимо использовать круглые скобки, так же необходимо знать что вычисление происходит слева направо.
Порядок выполнения операций:
Пример 1. Использование И:
Задача: Если выполняются одновременно 2 условия выводим сообщение
Пример 2. Использование ИЛИ:
Задача: Если выполняются одно из 2 условий, выводим сообщение
Пример 3. Использование НЕ:
Задача: Если значение не заполнено то вывести сообщение.