Бю что значит в 1с
Многие, кто только начинает изучать программирование, впервые сталкиваются с новым для себя примитивным типом булево. Еще его по-другому называют логический тип. Данный тип назван в честь английского математика Джорджа Буля, который изучал вопросы математической логики.
Прежде чем начать изучать этот примитивный тип, узнаем вообще, что такое булевы или логические выражения.
Булевы выражения это что-то типа вопроса, на который должен быть однозначные ответ или да, или нет.
Так же могу и быть более сложные вопросы:
Кнопка нажата – да;
Кнопка нажата – нет;
Булевы выражения используются во всех условных переходах:
В языке программирования 1С переменную с примитивным типом Булево можно задать явно:
Где Истина и Ложь единственные значения, которые может принимать примитивный тип Булево.
Ложь – значить, что какое-то утверждение, наоборот, не соответствует действительности (Ответ –Нет).
Так же переменные с типом булево могут быть заданы с помощью какого-либо логического выражения.
Например:
В этом случае, в переменой А будет значение Истина, а в переменной типа Б – ложь;
В языке программирования 1С над переменными типа булево можно осуществлять различные операции.
Всего их три – И, ИЛИ и НЕ.
Понять функциональность этих операций помогут следующие таблицы
А | Б |
Истина | Ложь |
Ложь | Истина |
С = А И Б | А | Б |
Истина | Истина | Истина |
Ложь | Ложь | Истина |
Ложь | Истина | Ложь |
Ложь | Ложь | Ложь |
С = А ИЛИ Б | А | Б |
Истина | Истина | Истина |
Истина | Ложь | Истина |
Истина | Истина | Ложь |
Ложь | Ложь | Ложь |
А можно ли выполнять данные операции подряд?
Да можно, данные операции будут выполняться слева направо. И иметь следующий уровень старшинства:
Первый: в первую очередь выполняются операции в скобках
Второй: Операция НЕ
Третий: Операция И
Четвертый: Операция ИЛИ.
Чтобы не путаться в операциях, я советую Вам использовать скобки, где только возможно.
В данном случае сначала будет работать операция И между А и С.
Смотрим таблицу А – Ложь, С – Ложь, результат А И С будет Ложь.
Следующим шагом будет выполнение операции ИЛИ между Ложью (Результат предыдущей операции) и значением Б, которое Истина.
Результат будет Истина.
А если нам надо, чтобы прошла сначала операция ИЛИ между С и Б, а потом только операция И между А и тем, что получилось, то для этого необходимо использовать скобки.
Многие начинающие программисты не совсем до конца понимают принципы взаимодействия между переменными типа Булево. Помочь в этом сможет только практика. А практики с переменными типа Булево достаточно в моем задачнике к книге «Программировать в 1С за 11 шагов»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Вступайте в мои группы:
2 thoughts on “ Примитивный тип Булево ”
Что-то вы напутали. Операция (А И В) будет равна Истина, только если ОБА операнда равны Истина.
Операция (А ИЛИ В) равна Истина, если ХОТЯ БЫ ОДИН из операндов равен Истина.
Очень часто в программе необходимо реализовать ситуацию, когда нужный код должен срабатывать тогда, когда выполняется определенное логическое условие. Или по другому: когда выполняется какое –то логическое условие, отрабатывает один код, а когда выполняется другое условие, то отрабатывает другой код.
В этой статье мы рассмотрим, каким образом осуществляется отработка логических условий в 1С 8.3.
Оператор Если
Основным оператором условий в языке программирования в 1С, по средством которого осуществляется отработка условий, является оператор Если.
В самом просто случае этот оператор имеет следующий синтаксис:
В том случае, если логическое условие принимает значение Истина, то выполняются операторы после ключевого слова Тогда. Если же это условие не выполняется, то следуют операторы после ключевого слова КонецЕсли.
То есть, может быть, такой вариант.
Или, такой вариант.
Заметьте, что операторы после ключевого с лова КонецЕсли выполняются в любом случае. Выполняется условие или нет. Если же нам нужно, чтобы когда условие выполняется, работали одни операторы, а когда нет – другие, то синтаксис операторе Если усложнится.
В этом случае операторы 1 выполняться тогда, когда логическое условие будет Истина, а операторы 2 выполняться, когда логическое условие будет Ложь.
Если мы возьмем предыдущий пример, то с ключевым словом Иначе он будет выглядеть следующим образом.
Но, очень часто возникают случаи, когда нужно отработать несколько условий. Например, может возникнуть ситуация, когда нужно отработать три условия: число больше нуля, число меньше нуля и число равно нулю. Тогда синтаксис еще усложниться.
В этом случае введено новое ключевое слово ИначеЕсли. Условие, которое установлено после ключевого слова ИначеЕсли будет проверяться тогда, когда условия после ключевого слова Если и после предыдущих ключевых слов ИначеЕсли (при их наличие) не выполняются (возвращается Ложь).
Причем, в этой конструкции ключевое условие Иначе не обязательно к использованию.
В этом случае решение предыдущего примера (с числом) будет выглядеть так:
Или мы можем отработать такое условие.
Обращаю внимание, что проверка условий идет с верху в низ, т.е. сначала проверяется выполнение условий после ключевого слова Если, и если условие выполняются , то отрабатываются операторы, которые идут после этого ключевого слова, потом проверяется выполнении условий после первого условия ИначеЕсли, и выполняются его операторы и т.д. И если ни одно условие не отработалось, то выполняются операторы после ключевого слова Иначе (при его наличии).
Вычислить выражение по условию
В 1С 8.3. в качестве оператора условия можно использовать ни только оператор Если, но также оператор ?(вычислить выражение по условию). Этот оператор имеет следующий синтаксис.
Если логическое выражение Условие принимает значение Истина, то выполняется выражение 1, а иначе выполняется выражение 2.
Например, этот оператор мы можем использовать, если нужно вычислить квадратный корень какого-то числа. Если число под корнем будет меньше нуля, то мы его умножим на -1, а иначе возьмем это же число.
Как вы видите, при помощи этого оператора можно упрощать написание кода, по сути можно писать условие одной строкой.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
С 1 июня текущего года при оформлении платежных поручений на выплату зарплаты понадобится указывать специальные коды типов доходов. Это нововведение поможет банкам определять, с каких сумм можно удерживать долги, а с каких нельзя. Рассмотрим, как осуществить это в 1С.
Есть несколько кодов:
- код 1 указывается при выплате зарплат, премий, отпускных, авторских вознаграждений и других доходов, с которых возможно удержать часть денег по исполнительным документам в соответствии со статьей 99 закона № 229-ФЗ.
- код 2 применяется, чтобы перечислить компенсационные выплаты, различные пособия, к примеру, связанные с материнством, похоронами, вступлением в брак, командировочные и так далее. С этих денег нельзя удерживать никакие налоги согласно статье 101 закона № 229-ФЗ.
- код 3 будет использоваться для средств возмещения вреда здоровью и при начислении компенсационных выплат пострадавшим в катастрофах (радиационных, техногенных) и других доходов, к которым не используются ограничения по взысканию согласно ч. 2 ст. 101 №229-ФЗ.
При других начислениях гражданам, не считающихся их доходом от рабочей деятельности, платежно-расчетные документы не кодируются.
Код должен быть указан в графе 20 «Наз. пл.».
Обратите внимание! С 1 июня банки не будут работать с платежами, в которых не указан тип дохода.
Коды типов дохода в 1С: Бухгалтерия 8 ред. 3.0
В программе имеется возможность указывать код при начислении заработной платы через банк в документе «Ведомость в банк» во вкладке «Зарплата и кадры». Нововведение затронуло как зарплатные ведомости, так и ведомости на счета работникам.
Например: у сотрудника Петрова В. М. из зарплаты удерживаются алименты в размере 25% от дохода (45000*25%=11250 рублей).
Посмотреть это получится в документе «Начисление зарплаты» во вкладке «Заплата и кадры», перейдя во «Все начисления».
Затем создадим ведомость на выплату зарплаты в той же вкладке, перейдя к пункту «Ведомости в банк».
Чтобы указать код типа дохода необходимо в сформированном документе указать дату (начиная с 1 июня), далее в строке «Вид дохода» выбрать нужный.
Существуют такие варианты заполнения:
- Зарплата и другие доходы с ограничением взыскания – 1.
- Доходы, на которые невозможно обратить взыскание (без оговорок) – 2.
- Доходы, на которые невозможно обратить взыскание (с оговорками для алиментов) – 3.
Кроме типов дохода в ведомости имеется колонка «Взыскано». В ней необходимо указывать удержания по работникам, осуществленные во время расчетного периода (как правило, месяца). Делать это требуется для того чтобы банки не взыскали со счета работника больше предела, разрешенного законодательством.
Следующий документ, где имеется возможность указывать коды типа дохода - это «Платёжное поручение» в категории «Банк и касса». Обратите внимание, что программа должна быть обновлена хотя бы до версии 3.0.77.78.
Чтобы возникла строка «Удержание по исполнительному листу» с нужными кодами, дата документа должна быть после 1 июня, а графа «Вид операции» принимать одно из нескольких значений:
- прочее списание;
- перечисление зарплаты сотруднику;
- перечисление работнику по договору подряда;
- перечисление депонированной зарплаты,
Обратите внимание, что в документе имеется строка «Удержание по исполнительному листу» с возможностью выбора кода и в назначении платежа в автоматическом порядке появилась запись //ВЗС//11250-50//. Если расшифровать ее, получится «взысканная сумма».
Это значит, что начисление работнику зарплаты, из которой осуществлено удержание, необходимо оформлять другим документом.
Выплата дохода, при начислении которого не нужно указывать код, к примеру, покупка имущества у физлица, производится с типом операции «Прочее списание», а тип дохода с наименованием «Не производится (это не доход обычного гражданина)» возникает только после того, как вы выберете получателя из справочника «Контрагенты».
Коды типов дохода 1С: Зарплата и управление персоналом, редакция 3.1
В приложении версии 3.1.10.443 и выше существует указание новых кодов типа дохода в таких документах, как «Ведомость в банк» и «Ведомость на счета» в категории «Выплаты».
При заполнении ведомости на начисление зарплаты, внимательно посмотрите на новую графу «Вид дохода».
Значения в нем соответствуют определенным кодам:
- Зарплата и другие доходы с ограничением взыскания – 1.
- Доходы, на которые невозможно обратить взыскание (без оговорок) – 2.
- Доходы, на которые невозможно обратить взыскание (с оговорками) – 3.
- Доходы без ограничения взысканий – тогда код не нужен.
Появилась колонка «Взыскано». В ней нужно указывать удержанные средства по исполнительным листам. Если при заполнении ведомости с кодом 1, к примеру, в ней оказались суммы, которые необходимо перечислить по другим основаниям, необходимо удалить их из документа вручную и сформировать другую ведомость с правильным кодом.
Документы на выплату, начиная с 1 июня создать без указания типа дохода не получится.
Некоторые организации при начислении зарплаты и других доходов гражданам применяют выгрузку реестра перечислений в банк. Чтобы реестры выгружались с указанием кода типов дохода, перейдите в категорию «Выплаты», выберите «Зарплатные проекты», окажитесь в нужном проекте и в графе «Формат файла» нажмите «Стандарт ЭОИ с банком (версия 3.6)».
С редакции 3.1.14 заполнение кода типа дохода при перечислении и заполнении ведомостей будет осуществляться в автоматическом порядке.
Сколько же всего сложного и таинственного нас окружает.
Черные дыры и сновидения. Темная материя и подсознание. Корпускулярно-волновой дуализм и 1С.
И ведь думаешь, что знаешь эту "1Ску" как свои пять пальцев, но стоит случайно копнуть глубже. И очередная багофича. Да ешё и какая!
В этой статье рассмотрим секретный оператор ?
О нём мало кто знает, хоть он и существует как минимум с версии 8.0.
В последнее время я публикую на своём телеграм-канале разные хитрые задачки с подвохом для программистов 1С. Какие-то беру "по памяти", а какие-то "рождаю" в результате экспериментов. Об этом скоро выйдет отдельная статья. И вот в очередном тесте адекватности платформы случайно натыкаюсь на такую конструкцию:
Синтаксис-проверка прошла успешно. Никаких ошибок не высветилось. И, казалось бы, ошибка тогда должна произойти в момент выполнения.
Код успешно выполнился. Удивительно, но сработало! И тут меня понесло.
Как оказалось, знак ? ведёт себя крайне странно. Давайте посмотрим ещё раз прошлый пример.
Мы создаём новую переменную и назначаем ей значение - ?. И в переменной находится Неопределенно. И, казалось бы, это и есть ответ на вопрос. Знак ? означает Неопределено.
Но что же тогда это:
В данном коде сначала идёт объявление переменной "А". И в А установлено числовое значение "1". А далее идёт наше сравнение с ?. Если бы под знаком вопроса скрывалось Неопределено, то мы бы не попали внутрь условия. А по скрину видно, что попали.
Очень странная ошибка. "Переменная не определена (Сообщить)". Ну допустим. Добавим тогда такую переменную:
Данный код компилируется без ошибок. И при выполнении в 1С сообщает "ТЕСТ". То есть значение переменной Сообщить
Выходит, что символ ? указывает на предыдущее слово в коде. В данном случае, перед ? было слово Сообщить. И поэтому 1С изначально поругалась, что такая переменная не определена. А когда мы добавили переменную Сообщить, то всё стало на свои места.
То есть наш код для 1С выглядит так:
А теперь вернемся к нашим предыдущим примерам и разберём что и как сработало.
В данном коде предыдущее слово перед ? - Если. Но оно является ключевым для 1С. Как "Цикл", "Процедура" и так далее. Поэтому, его оператор ? не учитывает и берет в качестве источника значения переменную А.
Скорректируем же этот код так, как его видит 1С:
Теперь всё логично. А = А и поэтому условие выполняется.
А что с нашим самым первым примером?
На самом деле всё так же. Просто заменяем знак вопроса на предыдущее слово.
Да, такой код тоже странный, но в рамках 1С всё логично. Сначала объявляется переменная и в ней Неопределено. А затем происходит присвоение переменной значения из её самой. То есть опять же Неопределено. Можете проверить такой код - это хоть и выглядит странно, но работает. А почитать чуть подробнее можно в статье на ИТС: МояПеременная = 0; МояПеременная = ? + 1; //1 МояПеременная = ? + 1; //2 МояПеременная = ? * 5; //10 МояПеременная = ? / 2; //5 МояПеременная = ? - 6; //-1
А самое интересное, что такая возможность существовала как минимум ещё с версии 8.0 . Специально скачал старую платформу и проверил.
На самом деле такой код можно ещё упросить:
Но такой вариант становится менее надежным. Ведь всё работает до тех пор, пока перед ? находится МояПеременная. Если же вставить после этого какое-то другое "слово", то всё порушится.
Но вот ещё пример:
Мы же помним, что знак ? берет предыдущее слово. Так вот в нашей строке кода это слово "А". Именно так - без "Структура".
Поэтому 1С в таком коде вместо знака вопроса вставит "А"
Но зато появляется новая возможность применения:
В данном коде мы создали структуру и наполнили её объявленными ранее переменными. Тоже бывает удобно, когда нужно передать какой-то набор переменных метода в другой метод через структуру.
А вот ещё пример. Можно передать в какой-то метод или конструктор одно значение несколько раз:
Передавать знак ? можно даже в условный тернарный оператор. Например, этот код приводит отрицательные числа к 0:
А этот приводит отрицательные числа к положительным:
Подобным образом можно присваивать дефолтные значения необязательным параметрам:
Главное помнить, что знак ? берет именно предыдущее слово, поэтому вот так работать НЕ будет:
1С поругается, что Переменная не определена (Структура). Ведь перед последним знаком ? слово Структура
Но что если использовать символ ? в параметрах?
Сделаем процедуру с параметром ? :
Такую процедуру действительно возможно создать. И можно вызывать. Причем 1С понимает, что параметр обязательный и его необходимо передать.
Но мы можем сделать его необязательным:
И параметр не обязан быть единственным. Можно делать разными способами:
А можно использовать Знач
Но вот незадача, ? в параметре метода не использует предыдущее слово (как во всех других случаях). Как обратиться к этому параметру - неизвестно.
В стеке вызовов он отображается:
А попробуем добавить второй параметр ?
1С ругается так:
Формальный параметр с указанным именем уже определен (?)
Опираясь на текст ошибки, мы можем предположить, что 1С объявляет параметр с именем "?"
И когда мы пытаемся добавить ещё один такой параметр, то платформа ругается.
Как обратиться к параметру с именем "?" - неизвестно. Методы Вычислить() и Выполнить() не помогли.
Но, возможно, это всё те вопросы, которые нам ещё предстоит разгадать. Секреты и загадки этой таинственной платформы под кодовым названием 1С.
Понравилась статья?
Поставьте лайк плюс. Пишите свои идеи и комментарии по теме. Статья будет дополняться.
Читайте также: