Команда если в 1с
В любом языке программирования существуют операторы ветвления (условные операторы). Когда в зависимости от истинности некоторого условия выполняется один либо другой набор команд.
В языке программирования 1С этой цели служит конструкция
В логических выражениях могут применяться математические операторы сравнения (=, >, <, >=, <=, <>) и булевы операции (И, ИЛИ, НЕ). Важно понимать, что логическое выражение должно возвращать либо Ложь либо Истина.
И тогда становиться ясно, что в качестве него могут использоваться и булевы переменные и даже функции. Вот пара примеров:
А теперь рассмотрим одну особенность, связанную с использованием булевых операций. Допустим у нас есть вот такая конструкция:
Совершенно очевидно, что если у нас ЛогическоеВыражение_1 = Истина, то проверять на истинность ЛогическоеВыражение_2 нет никакого смысла, т.к. в этом случае все равно ЛогическоеВыражение_1 ИЛИ ЛогическоеВыражение_2 = Истина. И начиная с версии 8.0 платформа так и поступает, т.е. последующие логические выражения будет вычисляться только в том случае, если уже вычисленные не позволяют однозначно определить результат в целом. Знание этого факта позволяет избежать ошибок и сократить количество кода.
В качестве примера обратимся к распространенной ситуации, когда у нас есть реквизит составного типа и нам надо проверить его на заполненность. Пусть у нас есть реквизит составного типа Контрагент, который может принимать тип Справочник.Физлица либо Справочник.Организации. На время этого примера забудем про функцию ЗначениеЗаполнено(). Как известно когда у нас еще не выбран тип составного реквизита, его значение равно Неопределено. Таким образом реквизит незаполнен, когда его значение неопределено либо пустая ссылка. И мы можем записать наше условие в двух вариантах:
Так вот, корректно будет работать только первый вариант, потому что когда тип у нас еще не выбран и значение реквизита равно Неопределено для него не существует метода Пустая() и второй вариант в этом случае завершится с ошибкой, а в первом варианте платформа не будет проверять значение на пустую ссылку, если тип не определен, т.к. ей будет достаточно первого услови. Как видим, иногда от перестановки слагаемых результат очень даже меняется.
В некоторых случаях можно применять сокращенную запись конструкции с условием. Синтаксис ее следующий:
Как правило применяется, когда надо присвоить переменной разные значения в зависимости от выполнения какого-то условия. Также удобно применять при формировании динамических запросов. С ее помощью мы сможем, например, вот такой код:
В чем суть этого оператора? В ходе выполнения программы часто могут возникать ошибки, такие как деление на ноль, корень из отрицательного числа и прочие. Эти ошибки приводят к «крушению» программы – это значит, что программа прекратит свою работу и ни какие операторы после ошибки выполняться не будут. Чтобы обойти исключительную ситуацию и продолжить выполнение программы, в языке программирования 1С существует оператор Попытка…Исключение.
Рассмотрим его синтаксис.
Попытка
//операторы попытки
Исключение
//операторы исключения.
КонецПопытки
Разберем этот синтаксис.
Ключевое слово Попытка открывает список операторов, выполнение которых может привести к исключительной ситуации, все операторы между ключевыми словами Попытка и Исключение это Операторы попытки.
Ключевое слово Исключение открывает список операторов, которые будут выполняться в том случае, если вызвана исключительная ситуация операторами попытки. Т.е. если во время выполнения программы один из операторов попытки вызвал ошибку выполнения программы (исключительную ситуацию), то выполнение данного оператора прерывается и управление передается на первый Оператор исключения. Причем обращаю Ваше внимание, что управление будет передано и в том случае, если исключительную ситуацию вызвали функции и процедуры, разработанные программистом и применяемые в качестве операторов попытки. Естественно, что если ошибка произошла в процедуре или функции, то ее выполнение будет прервано.
Описание ошибки в 1С
В коде выше я использовал собственное выражение для описания ошибки, но можно использовать метод ОписаниеОшибки(), который возвращается описание ошибки с точки зрения разработчиков платформы 1С. Это функция, которая возвращает текст с описанием ошибки. Например, код выше можно переделать так:
Тогда, при выполнении выйдет «стандартизированное» описание ошибки.
Оператор ВызватьИсключение в 1С
Оператор ВызватьИсключение можно использовать отдельно для «эмуляции» вызова исключение. Например, при выполнении этой команды формы:
Будет вызвано исключение.
Причём, в открывавшемся окне можно посмотреть место в коде, где было вызвано исключение.
Попытка внутри попытки в 1С
В платформе 1С 8.3 можно один оператор попытки разместить в другом операторе. Например, на управляемой форме обработки разместим несколько реквизитов с типом Число.
И по команде с формы попытаемся вычислить корень из каждого реквизита, при этом сделаем это в двух вложенных операторах попытки.
И результат работы этой обработки:
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
В предыдущей статье мы научились создавать подсистемы 1С, а в этой статье научимся, как при помощи подсистем можно настраивать интерфейс пользовательского приложения.
Ссылка на предыдущую статью: подсистемы в 1С.
Для написания статьи я использовал учебную базу из книги «Основы разработки в 1С: Такси» со следующими подсистемами.
Свойство конфигурации «Командный интерфейс»
Мы можем самостоятельно конфигурировать расположение подсистем в пользовательском режиме. Делается это в свойстве конфигурации «Командный интерфейс». Для того, чтобы попасть в это свойство, необходимо вызвать контекстное меню конфигурации (выделить самый верхний узел конфигурации, и вызвать правой кнопкой мышки контекстное меню), в этом контекстном меню интересует команда «Свойства».
После выполнения команды «Свойства» контекстного меню, откроется палитра свойств конфигурации, где нас интересует свойство «Командный интерфейс».
После нажатия гиперссылки «Открыть» этого свойства, откроется окно командного интерфейса. В этом окне мы можем передвигать иконки подсистем, настраивать общее отображение (колонка Видимость), и настраивать отображение по ролям (колонка соответствующей роли).
Заметьте, у колонок ролей могут быть «серые» флажки, это значит, что если у роли установлен такой «серый» флажок, то для данной роли у подсистемы будет такая же видимость, которая установлена в колонке Видимость.
В этом случае роль Администратор будет видеть подсистему Закупки
Если мы отключим видимость подсистемы в свойстве Командный интерфейс, то ее в пользовательском режиме по умолчанию видно не будет (мы отключили подсистему Закупки).
Но пользователь, может включить её. Для этого нужно зайти в настройку панелей разделов.
Для платформы версий 8.15 и выше
Для платформы версий ниже 8.15.
И в открывшемся окне «Настройка панелей разделов», при помощи кнопки «Добавить» переместить нужный раздел в список «Выбранные раздел». В этом же списке вы можете перемещать разделы между собой по своему усмотрению.
Если же мы хотим, чтобы подсистема вообще не была доступна пользователю. То необходимо отключить у нужной роли право на просмотр этой подсистемы.
Для этого открываем дополнительные настройки отключаемой для роли подсистемы.
В этих дополнительных настройках нас интересует закладка Права, где у нужной роли необходимо снять флаг с права Просмотр.
После этого, пользователь не увидит эту подсистему, и не сможет добавить её, используя настройку панелей разделов.
Командный интерфейс подсистемы
Мы можем настраивать видимость нужной нам подсистемы при помощи командного интерфейса. Есть два способа попасть в командный интерфейс подсистемы.
Используя кнопку «Командный интерфейс» в редакторе подсистемы.
Используя команду «Открыть командный интерфейс» контекстного меню подсистемы.
В командном интерфейсе подсистемы по умолчанию существует всего 6 групп: три группы команд навигации (панель навигации), и три группы команд действий (панель действий).
Вы можете перемещать команды навигации между группами команд навигации, и перемещать команды действий между группами команд действий. Но команду навигации нельзя переместить в группу команд действий. И наоборот, команду действия нельзя переместить в команду навигации.
Перемещать команду внутри группы можно при помощи кнопок контекстного меню (для этого нужно выделить нужную команду).
После перемещения команды, в названии группы команд появится словосочетание «Ручной порядок».
Если вы хотите вернуть расположение команд, как было по умолчанию, то необходимо выделить нужную группу, вызвать контекстное меню и выполнить команду «Восстановить автоматический порядок».
Если вы хотите, чтобы команда располагалась в другой группе, то можно мышкой «перетащить» эту команду в нужную группу.
Или воспользоваться иконкой команды на верхней панели.
После тех или иных действий, команда переместится в нужную группу.
В командном интерфейсе подсистемы имеются также колонка Видимость и колонки видимости по ролям.
Флажки в этих колонках отвечают за видимостью команд подсистемы.
Если флаг снят у соответствующей команды в колонке Видимость, то пользователь не увидит эту команду в интерфейсе подсистемы. У колонок ролей имеется возможность установить «серый» флаг. Это значит, что видимость этой команды для данной роли будет такая, какая установлена по умолчанию в колонке «Видимость».
Например, в этом случае, роль не будет видеть команду.
В случае остальных состояний флага, все точно также как и для колонки Видимость.
Стоит флаг – пользователь с этой ролью видит команду.
Флаг снят – не видит.
Но в тоже время, если видимость на какую-либо команду снята в командном интерфейсе подсистемы в конфигураторе 1С, то её можно установить обратно в пользовательском режиме.
Для этого необходимо зайти либо в настройки навигации, либо в настройки действий подсистемы в пользовательском режиме, в зависимости от того видимость какой команды (навигации или действий) вы хотите установить.
Откроется окно настроек, где можно переместить выбранную команду или при помощи кнопки «Добавить», или мышкой.
После перемещения команды
Она появится в командном интерфейсе подсистемы.
Команда «Все подсистемы»
У разработчика имеется возможность посмотреть на командный интерфейс всех подсистем сразу. Для этого необходимо выделить корневой узел ветки Подсистемы, вызвать контекстное меню, в котором выполнить команду «Все подсистемы»
После этого откроется окно «Все подсистемы», где вы можете работать со всеми подсистемами сразу.
Заметьте, если у подсистемы имеются подчиненные подсистемы, то в этом окне вы можете посмотреть, как всё выглядит в иерархии. На скрине выше это наглядно показано. Что нельзя сделать в командном интерфейсе отдельной подсистемы.
Также, в этом окне вы можете редактировать состав нужной вам подсистемы.
В остальном настройки похожи: можно перемещать команды между группами внутри подсистемы, устанавливать видимость и т.д.
Другие статьи по вопросам конфигурирования
Подробно вопросы разработки подсистем рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомиться с разработкой управляемого приложения.
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Эти книги плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Как и в любом языке программирования, во встроенном языке 1С 8 присутствует условный оператор. Он позволяет выполнять определенный набор операторов, в зависимости от выполнения логического выражения. Использование условия в 1с позволяет организовать ветвление алгоритма, в зависимости от различных параметров работы системы.
Синтаксис условий 1С
В общем виде условный оператор выглядит следующим образом:
Из приведенного синтаксиса, можно сказать об основных особенностях оператора:
Примеры использования условий в 1С
От теории перейдем к практике. Приведем несколько примеров использования условий. Обработку с разобранными примерами можно скачать Здесь.
Простые условия
В случае равенства чисел алгоритм будет отрабатывать также, как и в первом примере. А вот в случае их неравенства, выполнятся операторы после Иначе. Тут нет смысла использовать дополнительные условия, так как числа либо равны друг другу, либо нет.
Составные условия
Пример 3. Пусть у нас есть три числовые переменные Число1,Число2 и Число3. Разделить Число1 либо на Число2, либо на Число3. Делить на 0 нельзя, делитель будем выбирать исходя из этого условия.
Теперь в условие добавился блок ИначеЕсли. Условный оператор отработает следующим образом:
Условия 1С со сложными логическими выражениями
Пример 4. Разделить Число1 на сумму переменных Число2 и Число3. Чтобы не получить ошибку деления, произвести проверку на 0.
- Вычисляется значение первой части условия (Число2 = 0);
- Если ее значение Ложь, вычисление второй части (Число3 = 0) производится не будет, выполнятся операторы расположенные после Иначе;
- Если его значение Истина:
- Если ее значение Ложь, выполнятся операторы расположенные после Иначе;
- Если ее значение Истина, выполнятся операторы расположенные после Тогда.
Пример 5. Разделить Число1 на произведение переменных Число2 и Число3. Чтобы не получить ошибку деления, произвести проверку на 0.
Читайте также: