Найти тему

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

Оглавление

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

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

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

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

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

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

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

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

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

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

-2

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

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

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

-3

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

-4

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

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

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

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

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

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

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

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

-5

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

-6

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

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

- Включен Красный, тогда Зеленый должен быть выключен, команда «Внимание»- Включен Зеленый, тогда Красный должен быть выключен, команда «Торопись!»

  • Если включился Зеленый, то Желтый и Красный должны быть выключены, команда «Иди».

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

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

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

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

-7

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

-8

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

-9

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

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