Булево значение в 1с что это
На прошлых уроках программирования 1С мы изучили примитивные типы данных Число , Строка и Дата ознакомьтесь с этими материалами, прежде чем приступить к изучению этого.
Программирование 1С: примитивный тип данных Буллево
Буллево – один из базовых типов данных логических выражений.
Значения типа Буллево имеют два значения Истина и Ложь , задаваемых соответствующими литералами. Часто применяется в различных логических вычислениях.
Для демонстрации работы с типом данных мы разработаем простой логический вычислитель Светофор .
Программирование 1С: логический вычислитель Светофор
Идея проста – мы имеем 3 реквизита типа «Буллево»:
Соответственно каждый этот реквизит может быть либо « активен » (то есть иметь значение Истина), либо «отключен» (то есть иметь значение Ложь).
Перенесем реквизиты на форму обработки.
Обратите внимание ؘ– мы использовали инструменты оформления элементов. В данном случае мы изменили цвет текста в настройках поля.
Далее создадим реквизит типа Строка , который назовем Реакция пешехода и также перенесем его на форму. Задача нашей обработки – при вводе определенной комбинации «цветов светофора», выводить в стоке результат – ожидаемое действие пешехода.
Для чистоты процедуры мы создадим обработчик события, который будет обнулять буллевы реквизиты при открытии обработки. Создаем обработчик &НаКлиенте , который запускается ПриОткрытии через контекстное меню по щелчку на форме.
Конфигуратор автоматически подставил часть кода, которая задает условие запуска обработчика..
Задаем содержимое обработчика:
Красный=Ложь;Желтый=Ложь;Зеленый=Ложь;
Обратите внимание, что значение буллева реквизита «Ложь» нельзя брать в кавычки, иначе программа прочитает его как Строку.
Полный курс программиста 1С – с нуля до разработчика, способного решать практические учетные задачи в любой области.
Программирование 1С: составление кода
Далее определимся с логической частью нашей обработки, которую мы позднее преобразуем в код.
- Если горит Красный, а Зеленый и Желтый не горят - пешеход должен стоять.
- Если Вместе с Красным загорелся Желтый , а Зеленый не горит-пешеход должен приготовиться к движению.
- Если горит Зеленый, а Красный и Желтый не горят – пешеход должен переходить проезжую часть.
- Если горит Зеленый и Желтый, а Красный не горит - Пешеход должен поторопиться закончить движение.
Мы ранее ознакомились с универсальным хранилищем данных Массив , которая хранит данные и позволяет их вызвать по порядковому номеру. Попробуем реализовать хранение ситуаций через эту функцию. Создаем новую процедуру Ситуации (НомерСитуации) , задача которой – возвращать порядковый номер ситуации из массива.
Другой вариант – использовать универсальное хранилище значений Соответствие , которое устанавливает связь между двумя данными – в данном случае Числом и Строкой. В данном примере мы используем синтаксис Вставить (записывает данные в хранилище) и Получить (получает из хранилища значение). Этот синтаксис также можно использовать с хранилищем Массив .
Далее мы приступаем к созданию логических выражений. Сначала смоделируем их обычным языком.
- Если включился Красный , то Желтый и Зеленый должны быть выключены, команда «Стой».
- Если включился Желтый , то возможно 2 варианта:
- Включен Красный , тогда Зеленый должен быть выключен, команда «Внимание»- Включен Зеленый , тогда Красный должен быть выключен, команда «Торопись!»
- Если включился Зеленый , то Желтый и Красный должны быть выключены, команда «Иди».
Теперь необходимо перевести логические выражения в код. Задача упрощается понятным синтаксисом: Команда Если открывает логическое выражение, КонецЕсли – закрывает. Команды И , Тогда и Иначе используются внутри обработчика Если .
Пишем первый обработчик «Если включился Красный, то Желтый и Зеленый должны быть выключены, команда «Стой»:
- «Если включился Красный» – создаем обработчик события ПриИзменении реквизита Красный . Внутри открываем логическое выражение Если , и задаем условие Красный=Истина
- «То Желтый и Зеленый должны быть выключены» – используем выражение Тогда и задаем условия Желтый=Ложь;Зеленый=Ложь ;
- «Команда «Стой» – мы задаем номер ситуации и запускаем процедуру получения данных из массива НомерСитуации=0;Ситуации(НомерСитуации);
- Логическое выражение не может закончился без команды Иначе , поскольку процедура должна выполнить какое-либо действие и в том случае, когда условия не выполнены. Иначе РеакцияПешехода=Неопределено; КонецЕсли; КонецПроцедуры.
В итоге у нас получился вот такой код:
Следующий обработчик будет состоять из 2-х частей: когда с желтым работает красный, и когда с желтым работает зеленый. Создаем обработчик ПриИзменении реквизита Желтый . Код будем писать аналогично, за тем исключением, что внутри обработчика мы опишем процедуру Если 2 раза.
Последний обработчик для Зеленого сигнала светофора будет выглядеть аналогично.
На прошлых уроках программирования 1С мы изучили примитивные типы данных Число, Строка и Дата ознакомьтесь с этими материалами, прежде чем приступить к изучению этого.
Программирование 1С: примитивный тип данных Булево
Булево – один из базовых типов данных логических выражений.
Значения типа Булево имеют два значения Истина и Ложь, задаваемых соответствующими литералами. Часто применяется в различных логических вычислениях.
Для демонстрации работы с типом данных мы разработаем простой логический вычислитель Светофор.
Программирование 1С: логический вычислитель Светофор
Идея проста – мы имеем 3 реквизита типа «Булево»:
Соответственно каждый этот реквизит может быть либо «активен» (то есть иметь значение Истина), либо «отключен» (то есть иметь значение Ложь).
Перенесем реквизиты на форму обработки.
Далее создадим реквизит типа Строка, который назовем Реакция пешехода и также перенесем его на форму. Задача нашей обработки – при вводе определенной комбинации «цветов светофора», выводить в стоке результат – ожидаемое действие пешехода.
Для чистоты процедуры мы создадим обработчик события, который будет обнулять булевы реквизиты при открытии обработки. Создаем обработчик &НаКлиенте, который запускается ПриОткрытии через контекстное меню по щелчку на форме.
Конфигуратор автоматически подставил часть кода, которая задает условие запуска обработчика..
Задаем содержимое обработчика:
Красный=Ложь;Желтый=Ложь;Зеленый=Ложь;
Обратите внимание, что значение булева реквизита «Ложь» нельзя брать в кавычки, иначе программа прочитает его как Строку.
Полный курс программиста 1С – с нуля до разработчика, способного решать практические учетные задачи в любой области.
Программирование 1С: составление кода
Далее определимся с логической частью нашей обработки, которую мы позднее преобразуем в код.
- Если горит Красный, а Зеленый и Желтый не горят - пешеход должен стоять.
- Если Вместе с Красным загорелся Желтый , а Зеленый не горит-пешеход должен приготовиться к движению.
- Если горит Зеленый, а Красный и Желтый не горят – пешеход должен переходить проезжую часть.
- Если горит Зеленый и Желтый, а Красный не горит - Пешеход должен поторопиться закончить движение.
Мы ранее ознакомились с универсальным хранилищем данных Массив, которая хранит данные и позволяет их вызвать по порядковому номеру. Попробуем реализовать хранение ситуаций через эту функцию. Создаем новую процедуру Ситуации (НомерСитуации), задача которой – возвращать порядковый номер ситуации из массива.
Другой вариант – использовать универсальное хранилище значений Соответствие, которое устанавливает связь между двумя данными – в данном случае Числом и Строкой. В данном примере мы используем синтаксис Вставить (записывает данные в хранилище) и Получить (получает из хранилища значение). Этот синтаксис также можно использовать с хранилищем Массив.
Далее мы приступаем к созданию логических выражений. Сначала смоделируем их обычным языком.
- Если включился Красный, то Желтый и Зеленый должны быть выключены, команда «Стой».
- Если включился Желтый, то возможно 2 варианта:
- Если включился Зеленый, то Желтый и Красный должны быть выключены, команда «Иди».
Теперь необходимо перевести логические выражения в код. Задача упрощается понятным синтаксисом: Команда Если открывает логическое выражение, КонецЕсли – закрывает. Команды И, Тогда и Иначе используются внутри обработчика Если.
Пишем первый обработчик «Если включился Красный, то Желтый и Зеленый должны быть выключены, команда «Стой»:
- «Если включился Красный» – создаем обработчик события ПриИзменении реквизита Красный. Внутри открываем логическое выражение Если, и задаем условие Красный=Истина
- «То Желтый и Зеленый должны быть выключены» – используем выражение Тогда и задаем условия Желтый=Ложь;Зеленый=Ложь;
- «Команда «Стой» – мы задаем номер ситуации и запускаем процедуру получения данных из массива НомерСитуации=0;Ситуации(НомерСитуации);
- Логическое выражение не может закончился без команды Иначе, поскольку процедура должна выполнить какое-либо действие и в том случае, когда условия не выполнены. Иначе РеакцияПешехода=Неопределено; КонецЕсли; КонецПроцедуры.
В итоге у нас получился вот такой код:
Следующий обработчик будет состоять из 2-х частей: когда с желтым работает красный, и когда с желтым работает зеленый. Создаем обработчик ПриИзменении реквизита Желтый. Код будем писать аналогично, за тем исключением, что внутри обработчика мы опишем процедуру Если 2 раза.
Последний обработчик для Зеленого сигнала светофора будет выглядеть аналогично.
Проверим работу Светофора в режиме 1С:Предприятие, включая последовательно флажки реквизитов Красный, Желтый, Зеленый, Желтый, Красный и получая в соответствии с ситуацией строковые значения реквизита РеакцияПешехода.
Освойте навыки разработчика 1С на очных специализированных курсах от крупнейшей компании-франчайзи 1С.
Выражение Булево 1С считается математическим выражением, результатом чего является значение типа Булево 1С, например: a = 0+1; b = 2-1; x = (a = b); //x = Истина.
Что бы лучше понять данное значение, надо разобраться в условных операциях 1С, значениях и выражениях булево 1С.
Условная операция 1С ЕСЛИ выглядит следующим образом: Если ОПЕРАЦИЯ-БУЛЕВО Тогда //действия1… ИначеЕсли ОПЕРАЦИЯ-БУЛЕВО Тогда //действия2… Иначе //действия3… КонецЕсли;
//другой вариант, полностью аналогичный Если НЕ Массив1.Количество() = 0 Тогда //действия… КонецЕсли;
Многие функции/методы объектов возвращают успешность выполнения операции как булево 1С, например: Запрос = Новый Запрос(); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда //действия… КонецЕсли;
В условной операции 1С можно объединять несколько условий с использованием И и ИЛИ: Массив1 = Новый СписокЗначений(); Если (Массив1.Количество() > 0 и Массив1.Количество() < 10) или Массив.Количество() > 100 Тогда //действия… КонецЕсли;
Условия булево 1С можно использовать непосредственно в коде программы: Переменная1 = 5; флгРезультат = (Переменная1 = 2 + 3); //флгРезультат будет равен ИСТИНА
В условной операции 1С оператор ЕСЛИ ИНАЧЕ ТОГДА можно заменить более кратким выражением. Следующие варианты равны:
- У реквизитов объектов (справочников, документов и т.п.) есть возможность установить тип булево 1С. Также можно создать переменную булево 1С, например: флгВыполнено = Истина;
- Далее, в условиях ЕСЛИ, можно писать равнозначно двумя способами: //вариант 1 Если флгВыполнено = Истина Тогда //делаем что-то КонецЕсли;
- //вариант 2 Если флгВыполнено Тогда //делаем что-то КонецЕсли.
Если затронуть описание типов булево в 1С, то начинающие программисты встречаются, прежде всего, с примитивным типом булево. Иначе он может называться «логический тип». Это название ему было дано в честь английского математика Джорджа Буля, который занимался изучением вопросов логики в математической науке.
Что бы лучше узнать о примитивном типе, надо сначала познакомиться с булевыми или логическими выражениями. Они представляют из себя вопросы, на которые должны быть короткие ответы «да» или «нет».
Так же могут быть вопросы посложнее:
Булевы выражения фигурируют во всех условных переходах:
В языке программирования 1С переменную с примитивным типом Булево можно задать явно:
Где Истина и Ложь единственные значения, которые может принимать примитивный тип Булево.
Так же переменные с типом булево могут быть заданы с помощью какого-либо логического выражения. Например:
В этом случае, в переменой А будет значение Истина, а в переменной типа Б – ложь;
В языке программирования 1С над переменными типа булево можно осуществлять различные операции.
Всего их три – И, ИЛИ и НЕ.
Понять функциональность этих операций помогут следующие таблицы
Операция НЕ
Операция И
С = А И Б | А | Б |
Истина | Истина | Истина |
Ложь | Ложь | Истина |
Ложь | Истина | Ложь |
Ложь | Ложь | Ложь |
Операция ИЛИ
С = А ИЛИ Б | А | Б |
Истина | Истина | Истина |
Истина | Ложь | Истина |
Истина | Истина | Ложь |
Ложь | Ложь | Ложь |
Данные операции можно выполнять подряд слева направо. Только они будут иметь следующий уровень старшинства:
Первый: в первую очередь выполняются операции в скобках
Второй: Операция НЕ
Третий: Операция И
Четвертый: Операция ИЛИ.
Чтобы не путаться в операциях, необходимо использовать скобки, где только возможно.
В данном случае сначала будет работать операция И между А и С.
Согласно таблице А – Ложь, С – Ложь, результат А И С будет Ложь.
Следующим шагом будет выполнение операции ИЛИ между Ложью (Результат предыдущей операции) и значением Б, которое Истина.
Результат будет Истина.
А если нам надо, чтобы прошла сначала операция ИЛИ между С и Б, а потом только операция И между А и тем, что получилось, то для этого необходимо использовать скобки:
Результат будет диаметрально противоположный. Благодаря скобкам сначала выполняется операция и между С и Б, т.к. С — Ложь, а Б – Истина, результат будет Истина. Потом между значением А (которое Ложь) и значением Истина (результатом предыдущей операции) выполняется операция И. Результат будет Ложь.
Довольно часто возникает ошибка: булево значение в 1С «преобразование значения к типу булево\число не может быть выполнено», которая на самом деле может быть легко устранена. В первую очередь надо обновить конфигурацию до последнего релиза. Это одно из решений данной проблемы. Но в большинстве случаев возникновение такой ошибки говорит о попытке присвоить числовой переменной не численное значение, в результате внутренний конвертер типов не может преобразовать переменную в число и возникает ошибка.
Если присваивание переменной происходит из тела выборки результата запроса, следует проверить наличие в выборке значений типа NULL. Это значение нельзя использовать в операциях с числами. Значение NULL появляется в запросе при использовании соединений.
В этом случае ошибка может появиться, если в регистре со сведениями цен номенклатуры нет записи по ней.
Решить проблему можно следующим путем: во время обращения к полю выборки необходимо добавить проверку на равенство значению типа NULL. Либо использовать функцию ЕСТЬNULL(x1, x2). Она проверяет на NULL x1, и если Значение NULL обнаружено функция возвращает x2, в обратно случае возвращает x1. В первом случае равенства Выражения1 NULL, Выражение1 будет заменено в результате запроса на заданное Выражение2.
Основа любой учетной системы – это данные: наименование контрагента, сумма счета, дата проведения реализации. Базовые типы данных в программировании называются примитивными, и в среде разработки «1С:Предприятие 8» таких типов 7:
- null – задает отсутствие значения;
- число – задает любое десятичное число;
- строка – задает символьную строку, в том числе текст;
- дата – задает дату и время;
- буллево – задает логический результат «правда» или «ложь»;
- тип – идентифицирует тип данных у значения»;
- неопределенно – используется, когда необходимо задать значение, не принадлежащее ни к одному другому типу.
Вы можете подробно ознакомиться с этим и другими понятиями внутреннего языка, открыв в режиме конфигуратора справочник «Синаксис-помощник», который находится в разделе «Справка».
Полный курс программиста «1С» – с нуля до разработчика, способного решать практические учетные задачи в любой области.
Взаимодействие данных. Создание обработки «Калькулятор»
Функционирование учетной системы на платформе «1С:Предприятие 8» осуществляется благодаря взаимодействию данных между собой. Чтобы научиться работать с данными и осуществлять их базовое взаимодействие, разработайте несложную обработку «Калькулятор» – простейший манипулятор данными типа число.
Откройте конфигурацию («Конфигурация» – «Открыть конфигурацию»). Затем создайте новый документ для разработки («Файл» – «Новый»). В открывшемся окне выберите тип документа «Внешняя обработка».
Задайте разработке имя. В данном случае «Калькулятор». Создайте новую форму через «Конструктор форм». Для этого разработайте главное окно обработки. Чтобы это сделать, нажмите правой кнопкой на «Формы», далее – «Добавить».
Тип формы – «Форма обработки». Имя формы можно изменить, но в данном случае делать этого необязательно. Нажмите «Готово».
Вы увидите окно настройки формы. В правой части располагаются элементы формы, в левой – реквизиты. Внизу наглядное представление формы. В первую очередь создаете реквизит «Число1» (тип – число, длина – 10, точность – 2).
Далее необходимо добавить в форму элемент «Поле», через который будет задаваться реквизит «Число1». Для этого в свойствах поля необходимо указать в строке «ПутьКДанным» реквизит «Число1». Чтобы облегчить задачу, перетяните мышкой реквизит из правой части окна в левую. Соответствующее поле будет создано автоматически.
Далее повторите действие еще 3 раза. В результате у вас должно получиться 3 реквизита и соответствующие им 3 поля:
- «Число1» (Тип – Число);
- «Число2» (Тип – Число);
- «Результат» (Тип – Число).
Поля можно для удобства объединить в группу. Для этого создайте элемент («Группа» – «Обычная группа») и перетяните его мышью в новую группу.
Далее нажмите на «Команды» (вкладка расположена в правой части окна) и создайте их для осуществления основных алгебраических операций:
- сложить;
- вычесть;
- умножить;
- разделить;
- получить остаток от деления.
Затем перетяните команды в левую часть, чтобы создать советующие им элементы-кнопки. Кнопки, как и поля, можно объединить в группу для удобства.
Итак, вы создали форму калькулятора. Теперь необходимо прописать алгоритмы вычисления, которые называются процедурами. Процедуры задаются кодом, который прописывается во вкладке «Модуль» внизу конструктора формы.
Создание процедуры начинается с написания директивы «&НаКлиенте», которая означает, что процедура выполняется у вас на компьютере, а не на сервере.
Правила вычислений открываются словом «Процедура». Затем назначается объект выполнения процедуры следующим образом: «Название объекта (Тип объекта)». В данном случае строка будет иметь вид:
Процедура Сложить (Команда),
«Сложить» – название объекта, «Команда» – тип объекта.
Следующая строка задает алгоритм процедуры. Для процедуры арифметического вычисления используются реквизиты, участвующие в вычислении, и арифметические символы «+», «-», «*», «/» и другие. Таким образом, следующая строка будет иметь вид:
Результат=Число1+Число2;
Следующая строка заканчивает процедуру словом «КонецПроцедуры». Для процедуры сложения код будет выглядеть так:
Процедура Сложить (Команда),
Результат=Число1+Число2;
КонецПроцедуры
Далее аналогично напишите код для остальных операций (остаток от деления «Числа1» от «Числа2» задается символом «%»). Вы должны получить следующий результат:
Вы закончили создание обработки! Теперь ее можно будет сохранить на компьютере и загрузить в конфигурацию «1С» в режиме пользователя. После этого доступ к ней будет осуществляться через список «Внешние отчеты и обработки».
Освойте навыки разработчика «1С» на очных специализированных курсах от международного ИТ-интегратора «Первый Бит».
Читайте также: