Все проекты English Написать директору Вебинары
Импортозамещение
Выбор региона
Ваш город:Минск
Поиск

Уроки программирования 1С: Примитивный тип данных Булево

Время чтения: ~3 мин.

Актуальность проверена: 06 . 10 . 2024

На прошлых уроках программирования 1С мы изучили примитивные типы данных ЧислоСтрока и Дата ознакомьтесь с этими материалами, прежде чем приступить к изучению этого.

Программирование 1С: примитивный тип данных Булево

Булево –  один из базовых типов данных логических выражений.

Значения типа Булево имеют два значения Истина и Ложь, задаваемых соответствующими литералами. Часто применяется в различных логических вычислениях. 

Для демонстрации работы с типом данных мы разработаем простой логический вычислитель Светофор.

Программирование 1С: логический вычислитель Светофор

Идея проста – мы имеем 3 реквизита типа «Булево»:

  • Красный
  • Желтый
  • Зеленый

Соответственно каждый этот реквизит может быть либо «активен» (то есть иметь значение Истина), либо «отключен» (то есть иметь значение Ложь).

Перенесем реквизиты на форму обработки.

Обратите внимание ؘ– мы использовали инструменты оформления элементов. В данном случае мы изменили цвет текста в настройках поля.

Далее создадим реквизит типа Строка, который назовем Реакция пешехода и также перенесем его на форму. Задача нашей обработки – при вводе определенной комбинации «цветов светофора», выводить в стоке результат – ожидаемое действие пешехода.

Для чистоты процедуры мы создадим обработчик события, который будет обнулять булевы реквизиты при открытии обработки. Создаем обработчик &НаКлиенте, который запускается ПриОткрытии через контекстное меню по щелчку на форме.

Конфигуратор автоматически подставил часть кода, которая задает условие запуска обработчика..

Задаем содержимое обработчика:

Красный=Ложь;Желтый=Ложь;Зеленый=Ложь;

Обратите внимание, что значение булева реквизита «Ложь» нельзя брать в кавычки, иначе программа прочитает его как Строку.

Полный курс программиста 1С – с нуля до разработчика, способного решать практические учетные задачи в любой области.

Программирование 1С: составление кода

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

  1. Если горит Красный, а Зеленый и Желтый не горят - пешеход должен стоять.
  2. Если Вместе с Красным загорелся Желтый , а Зеленый не горит-пешеход должен приготовиться к движению.
  3. Если горит Зеленый, а Красный и Желтый не горят – пешеход должен переходить проезжую часть.
  4. Если горит Зеленый и Желтый, а Красный не горит - Пешеход должен поторопиться закончить движение.

Мы ранее ознакомились с универсальным хранилищем данных Массив, которая хранит данные и позволяет их вызвать по порядковому номеру. Попробуем реализовать хранение ситуаций через эту функцию. Создаем новую процедуру Ситуации (НомерСитуации), задача которой – возвращать порядковый номер ситуации из массива.

Другой вариант – использовать универсальное хранилище значений Соответствие, которое устанавливает связь между двумя данными – в данном случае Числом и Строкой. В данном примере мы используем синтаксис Вставить (записывает данные в хранилище) и Получить (получает из хранилища значение). Этот синтаксис также можно использовать с хранилищем Массив.

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

  • Если включился Красный, то Желтый и Зеленый должны быть выключены, команда «Стой».
  • Если включился Желтый, то возможно 2 варианта:
- Включен Красный, тогда Зеленый должен быть выключен, команда «Внимание»
- Включен Зеленый, тогда Красный должен быть выключен, команда «Торопись!»
  • Если включился Зеленый, то Желтый и Красный должны быть выключены, команда «Иди».

Теперь необходимо перевести логические выражения в код. Задача упрощается понятным синтаксисом: Команда Если открывает логическое выражение, КонецЕсли – закрывает. Команды И, Тогда и Иначе используются внутри обработчика Если.

Пишем первый обработчик «Если включился Красный, то Желтый и Зеленый должны быть выключены, команда «Стой»:

  1. «Если включился Красный» – создаем обработчик события ПриИзменении реквизита Красный. Внутри открываем логическое выражение Если, и задаем условие Красный=Истина
  2. «То Желтый и Зеленый должны быть выключены» – используем выражение Тогда и задаем условия Желтый=Ложь;Зеленый=Ложь;
  3. «Команда «Стой» – мы задаем номер ситуации и запускаем процедуру получения данных из массива НомерСитуации=0;Ситуации(НомерСитуации);
  4. Логическое выражение не может закончился без команды Иначе, поскольку процедура должна выполнить какое-либо действие и в том случае, когда условия не выполнены. Иначе РеакцияПешехода=Неопределено; КонецЕсли; КонецПроцедуры.

В итоге у нас получился вот такой код:

Следующий обработчик будет состоять из 2-х частей: когда с желтым работает красный, и когда с желтым работает зеленый. Создаем обработчик ПриИзменении реквизита Желтый. Код будем писать аналогично, за тем исключением, что внутри обработчика мы опишем процедуру Если 2 раза.

Последний обработчик для Зеленого сигнала светофора будет выглядеть аналогично.

Проверим работу Светофора в режиме 1С:Предприятие, включая последовательно флажки реквизитов Красный, Желтый, Зеленый, Желтый, Красный и получая в соответствии с ситуацией строковые значения реквизита РеакцияПешехода.

Освойте навыки разработчика 1С на очных специализированных курсах от крупнейшей компании-франчайзи 1С.

Хотите получать подобные статьи по четвергам?
Быть в курсе изменений в законодательстве?
Подпишитесь на рассылку

Нет времени читать? Пришлем вам на почту!

Я даю Согласие на обработку персональных данных в соответствии с Политикой Конфиденциальности

Подскажем решение для вашей задачи

Заказать помощь ИТ-специалиста