Свежая пресса
Изменения в законе «О бухгалтерском учете и финансовой отчетности в Украине»

Опубликовано: 2017.11.10

Уважаемые коллеги-бухгалтера! Спешим сообщить Вам, об изменениях в ЗУ «О бухгалтерском учете и финансовой отчетности в Украине», касающихся изменений некоторых положений, и вступит в силу с 01.01.2018, а уже с 01.01.2019 года вступят в силу тот абзац, касающийся предоставления финотчетности.

Подробнее...
Обновление программы EffectorSaver

Опубликовано: 2017.10.20

Уважаемые пользователи! Спешим сообщить вам о выходе новой версии программы Effector Saver! 

Подробнее...
Осенняя акция от компании FinSoft

Опубликовано: 2017.10.09

Что еще может так скрасить серые осенние будни, как не акция на программный продукт 1С от компании FinSoft

Подробнее...

Обучающие статьи. Урок 7 - Логические условия и другие выражения

Опубликовано: 2016.12.26

Логические условия и выражения

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

Логические выражения - выражения, содержание знаки логических операций и подчиняющихся при вычислении логическим правилам. Результатом таких операций является одно из значений: логическая истина или логическая ложь.

Операции сравнения

Операции сравнения допустимы только для простых типов данных – число, строка, дата.

Операции сравнения «Равно» и «Не равно» можно так же использовать для сравнения ссылочных типов данных.

Например:

Сравнение 2*2 = 4 вернет значение булево – Истина. Т.е. выражение верно.

А вот сравнение 2*2 = 10 вернет значение булево – Ложь. Т.е. выражение не верно. Не в смысле ошибочно, а не верно. Разделим сравнение на две части: 2*2 и 10 или 4.

2*2 это в совокупности априори число 4. По факту мы задаем системе вопрос 4 = 10, да или нет? Система в первом сравнении отвечает, да, 4 = 4, а во втором случае говорит, нет, 4 не равно 10.

Таким образом, можно сравнить даты: ‘20160101’>‘20160202’ - ответ Ложь.

Строки: «Мама» = «Папа» - Ложь, «Мама» = «Мама» - Истина.

Есть и другой вариант сравнения, булевы операции.

Операции булево

При вычислении логических выражений программа руководствуется приоритетом логических операций (в порядке убывания):

  1. Выражение внутри скобок
  2. НЕ
  3. И
  4. ИЛИ

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

Правила логического «И»

Например:

((2 > 1) И (1 < 2)) – Истина.

Почему? (2 > 1) = Истина, (1 < 2) = Истина, значит, оба выражения вернули одно и то же значение. Далее мы сравниваем оператором «И» оба эти значения. Так как они одинаковы и имеют значение Истина, то их сравнение вернет тоже значение Истина.

Левая часть (А) Правая часть (Б) А и Б Пример
Истина Истина Истина (2 < 3) И (10 = 10)
Истина Ложь Ложь (2 < 3) И (10 <> 10)
Ложь Истина Ложь (10 <> 10) И (2 < 3)
Ложь Ложь Ложь (1 = 2) И (3 = 5)

Из таблицы видно, что условие оператора и вернет Истину только в том случае, если оба условия верны.

Правила логического «ИЛИ»

Например:

(1 =1) ИЛИ (2 =2) – Истина.

Почему? (1 = 1) = Истине, (2 = 2) = Ложь, сравнивая оператором «ИЛИ» если верно хотя бы одно выражение сравниваемого условия, сравнение вернет Истину.

Левая часть (А) Правая часть (Б) А и Б Пример
Истина Истина Истина (2 < 3) И (10 = 10)
Истина Ложь Истина (2 < 3) И (10 <> 10)
Ложь Истина Истина (10 <> 10) И (2 < 3)
Ложь Ложь Ложь (1 = 2) И (3 = 5)

Правила логического «НЕ»

Например:

НЕ (1 < 2) – Ложь.

Почему? (1 < 2) = Истине, а с оператором «НЕ» мы инвертируем, переводим в противоположное состояние наш результат. Противоположность Истине – Ложь. Поэтому НЕ (1 < 2) – Ложь.

А Не А Пример
Истина Ложь НЕ (2 < 3)
Ложь Истина НЕ (10 = 1)

Есть так же и другой вариант условия «ИЛИ». Конструкция «Если, Тогда, Иначе, ИначеЕсли».

Простой вариант конструкции:

Если (какое-то сравнение) Тогда
(какой-то код)
КонецЕсли;

Т.е. если результат сравнения возвращает истину, то будет выполнен участок кода, заключенный в эту конструкцию. Если результат сравнения вернет ложь, код заключенный в это условие выполнен не будет.

Листинг 3. Простое условие вывод сообщения по условию.

Листинг кода 1

Конструкцию можно усложнить и она станет абсолютным «ИЛИ»

Если (какое-то сравнение) Тогда
(какой-то код)
Иначе
(какой-то код 2)
КонецЕсли;

Первая часть конструкции уже знакома, добавляется вариант Иначе. В Иначе мы попадаем если наше сравнение возвращает ложь.

Листинг 4. Простое условие вывод сообщения по условию с использованием Иначе.

Листинг кода 2

 

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

 

Есть и более сложная конструкция:

Если (какое-то сравнение) Тогда
(какой-то код)
ИначеЕсли (какое-то сравнение) Тогда
(какой-то код 2)
КонецЕсли;

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

Листинг 5. Простое условие вывод сообщения по условию с Иначе и ИначеЕсли.

Листинг кода 3

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

Если (какое-то сравнение) Тогда
(какой-то код)
ИначеЕсли (какое-то сравнение) Тогда
(какой-то код 2)
Иначе
(какой-то код 3)
КонецЕсли;

Таким образом, если два первых условия вернуть Ложь, то автоматически будет выполнено третье условие.

Листинг 6. Простое условие вывод сообщения по условию с Иначе и ИначеЕсли.

Листинг кода 4

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

В первом блоке используем конструкцию «Если Тогда»

Во втором блоке используем конструкцию «Если Тогда Иначе»

В третьем блоке используем конструкцию «Если Тогда Иначе ИначеЕсли»

Листинг 7. Пример выполнения простых условий.

Листинг кода 5

Давайте разберем пример. У нас появились две новые конструкции

«//» это комментарий – после двух слешей платформа ничего не воспринимает. Т.е. вы можете там писать все что угодно - платформа не будет обращать на это внимание. Это очень удобно, например, закомментировать временно какой-то кусок кода или написать пояснения к коду.

Конструкция «»+Какое-то выражение 1+«»+Какое-то выражение 2+«». Такой прием называется конкатенация. Т.е. соединение бесконечного количества выражений в одно целое.

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

Продолжим усложнять наш пример.

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

Листинг 8. Пример перезаписи переменных.

Листинг кода 6

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

А теперь сделаем несколько вариантов с логическими условиями, например:

Листинг 9. Пример логических условий в условии «Если Тогда».

Листинг кода 7

 

 

Так же, наша компания проводит обучение по двум курсам:

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

 От вас требуются уверенные знания ПК, и желание научиться чему-то новому.