Логические операции (1с предприятие). Логические операции (1с предприятие) 1с если тогда 3 варианта

Сейчас программа 1С существует в разных версиях и обличьях, люди работают в «семерке» т.е. в 1С 7.7 и в «восьмерке» которые бывают 8.0, 8.1, 8.2 и 8.3. На практике, на текущий момент 99.9% пользователей программы 1С работают в 7.7, 8.2, и 8.3 , чем же они отличаются?

Программа 1С 7.7 известная многим своим уже довольно устаревшим интерфейсом, все-же она имеет преимущество в размерах баз и в скорости запуска и работ, а значит имеет место быть на рынке программ автоматизации учета, хотя сейчас данную программу уже и не продают, но люди ей пользуются, и фирма 1С до сих пор поддерживает эту программу, т.е. для нее выходят обновления.
Но тема статьи все же не о 7.7 а об отличиях 8.2 и 8.3. (и для информации отличие между 7.7 и 8.* значительны на столько, что базы для семерки не запустятся на платформе 8.* и наоборот, т.е. 7.7 и 8.* это как-бы совсем разные программы, а вот 8.2 и 8.3 очень похожи, просто 8.3 новее)

Программа 1С состоит из платформы 1С и баз 1С, т.е. платформа 1С это программа которая запускает базы 1С.

Для пользователя: когда мы кликаем по ярлыку 1С и открывается список баз 1С, мы видим часть платформы 1С или когда мы выбираем базу и кликаем по кнопке «Конфигуратор» т.е. заходим в конфигуратор 1С мы также можно сказать видим часть платформы 1С, но когда мы открываем базу нажатием на копку «1С:Предприятие» мы уже видим базу, с ее настройками, «менюшками», кнопками, картинками и т.п. то это уже база 1С которая бывает разной в зависимости от ее типа, т.е. конфигурации базы 1С
База 1С состоит из конфигурации (т.е. ее настроек) и данных (т.е. информации в ней).

Существуют разные конфигурации 1С для разного учета, т.е., например, для бухгалтерского учет может быть конфигурация под названием «Бухгалтерия предприятия» или другие, для торговли может использоваться конфигурация например «Управление торговлей» или «Розница» или другие, для учета кадров и расчета зарплаты, например «Зарплата и управление персоналом», также существуют конфигурации для комплексного учета, например для автоматизации завода.
Конфигураций существуют много, несколько сотен разных конфигураций для разного учета.

Все эти конфигурации могут создаваться для работы в 1С 7.7 или 8.2 или 8.3 в чем же отличия и зачем тут написано про конфигурации если 8.2 и 8.3 и даже 7.7 это платформы? Сейчас разберемся.

Каждая платформа имеет в себе разные возможности для создания конфигураций, и чем выше версия платформы, тем больше у этой платформы функционала и возможностей.
Если нам нужна база 1С с конфигурацией скажем «Бухгалтерия предприятия», с версией релиза например «3.0.60.44» и мы попытаемся найти о ней информацию, то мы выясним что для работы этой конфигурации и этого релиза на потребуется платформа не ниже чем 8.3, более того не ниже чем 8.3.10.2466, это значит платформа 8.2 нам уже не подойдет!

Конфигураций для платформы 1С 8.* и существует много но их можно разделить на 2 подвида это конфигурации (1) c «обычными формами», и (2) c «управляемыми формами»
«Обычные» — значит такие же как и были раньше, например похожие на 1С 7.7, а «Управляемые» это более современные формы, более красивые, которыми легче управлять при их создании.

Как понять в моей базе 1С формы обычные или управляемые?

Если в верху программы вы видите строку «менюшек» с названиями такие как «Файл», «Правка», или «Операции», «Сервис», «Окна», «Справка», а главное вы можете нажать на них и вниз «выпадет» подменю с выбором подпунктов, значит у вас конфигурация с обычными формами.

Если у вас в верху нет подобных «менюшек», но есть в верху или слева либо в других частях программы ссылки, на на веб-сайте, т.е. вы на них наводите и они тут же становятся подчеркнутыми, они могут иметь названия такие как «Главное», или «Продажи», «Закупки», «Администрирование» или «НСИ и администрирование» или другие подобные ссылки или картинки, и при нажатии на них у вас не «выпадает» список подменю, а открывается в центре программы информация или отдельное окно, значит у вас конфигурация с «управляемыми формами», они как правило более красивые и современные на вид. Если вы знаете что у вас интерфейс «Такси», значит это точно управляемые формы.

Ранее, когда еще не было платформы 8.3 а была только 8.2 и обычные формы, тогда только начали разрабатываться конфигурации на управляемых формах, появилась платформа 8.3 и у чуть позже у многих людей платформа 8.3 начала ассоциироваться с управляемыми формами, а уже платформа 8.2 с обычными. Так и укрепилось понятие, что у кого-то 1С 8.2 (т.е. база 1С с конфигурацией на обычных формах) , а у кого-то 1С 8.3 (т.е. база 1С с конфигурацией на управляемых формах).
На самом деле платформа 8.3 новее чем 8.2 а значит может работать со всеми конфигурациями для 1С 8.*, НО! Если у вас платформа 8.3, а база с конфигурацией на обычных формах, то про вас могут сказать что у вас 1С 8.2 и это важно понимать!

Также важно понимать что у вас может быть платформа 8.2 а конфигурация на управляемых формах, то про вас могут сказать что у вас 1С 8.3! Многим так быстрее, удобнее и привычнее.
Т.е. большинству без разницы какая у них платформа и если у них база с обычными формами — то это 1С 8.2! если с управляемыми — то 8.3!

Исходя из данного факта и устоявшегося мнения в терминах, на нашем сайте вы можете встретить обработки 8.2 или 8.3 это не означает что для обработки важно какая у вас платформа, это означает что она, обработка, будет работать либо в базе с обычными формами либо только с управляемыми , а бывают еще универсальные обработки у них в названии будет написано (8.2 и 8.3) или (8.2/8.3) или (8.2-8.3) или (8.*)

Ниже примеры некоторых популярных конфигураций 1С на обычных формах т.е. называют 1С 8.2:
— Бухгалтерия предприятием 2.0.*.*
— Управление торговлей 10.3.*.*
— Розница 1.1.*.*
— Зарплата и управление персоналом 2.5.*.*

Теперь примеры некоторых популярных конфигураций 1С на управляемых формах т.е. такие называют 1С 8.3:
— Бухгалтерия предприятием 3.0.*.*
— Управление торговлей 11.*.*.*
— Розница 2.*.*.*
— Зарплата и управление персоналом 3.*.*.*
— Управление нашей фирмой 1.6.*.*

Краткая версия всей статьи или ответ на вопрос: какая у меня 1С 8.2 или 8.3?

Если у вас в базе 1С после того как вы ее откроете в верху есть строка из «менюшек» с названиями к примеру «Файл», «Правка», или «Операции», «Сервис», «Окна», «Справка», и при нажатии вниз «выпадет» подменю с выбором подпунктов, то такую базу называют 1С 8.2 и для нее могут подойти только те обработки, отчеты, расширения, в названиях которых есть «8.2» и не подойдут те обработки, в названии которых есть «8.3»

Если нет такой строки из «менюшек», а есть ссылки, при наведении на которых эти ссылки сразу подчеркиваются, они могут иметь названия Главное» или «Руководителю» или «Продажи», «Закупки», «Администрирование» или «НСИ и администрирование» или другие подобные ссылки или даже картинки. значит — это база 1С 8.3 и для нее могут подойти только те обработки, отчеты, расширения, в названиях которых есть «8.3» и не подойдут те обработки в названии которых есть «8.2»

Исключение это универсальные обработки, отчеты в названиях которых есть и 8.2 и 8.3 т.е. в названии будет написано (8.2 и 8.3) или (8.2/8.3) или (8.2-8.3) или (8.*)



Полный синтаксис (нажмите, чтобы раскрыть)

Условный оператор "Если"

Описание:

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

Синтаксис:

Параметры:

Если Ключевое слово, которое начинает структуру оператора условного выполнения. <Логическое выражение> Логическое выражение . Тогда Операторы, следующие за Тогда выполняются, если результатом логического выражения является значение Истина . // Операторы Исполняемый оператор или последовательность таких операторов. ИначеЕсли Логическое выражение, следующее за ключевым словом ИначеЕсли , вычисляется только тогда, когда условия в Если и всех предшествующих ИначеЕсли оказались равны Ложь . Операторы, следующие за конструкцией ИначеЕсли - Тогда , выполняются, если результат логического выражения в данном ИначеЕсли равен Истина . Иначе Операторы, следующие за ключевым словом Иначе , выполняются, если результаты логических выражений в конструкции Если и всех предшествующих конструкциях ИначеЕсли оказались равны Ложь . КонецЕсли Ключевое слово, которое завершает структуру оператора условного выполнения.

Тернарный условный оператор

Описание:

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

Синтаксис:

? (< Логическое выражение> , < Выражение 1 > , < Выражение 2 > )

Параметры:

Возвращаемое значение:

Результат вычисления одного из результирующих выражений.

&НаКлиенте Процедура ВыполнитьКод(Команда) /// Как составить оператор Если в 1с 8.3, 8.2 Если 1 > 0 Тогда // Истина // блок операторов Сообщить("Компьютер выполнит все команды из этого блока." ) ; Сообщить("Один больше нуля." ) ; КонецЕсли ; Если 1 < 0 Тогда // Ложь Сообщить("Один меньше нуля." ) ; Иначе Сообщить("Сработает именно эта ветка условного оператора (#А)." ) ; Сообщить("Один больше нуля." ) ; КонецЕсли ; Если 1 < 0 Тогда // Ложь Сообщить("Один меньше нуля." ) ; ИначеЕсли 1 = 0 Тогда // Ложь Сообщить("Один равен нулю." ) ; Иначе Сообщить("Сработает именно эта ветка условного оператора (#Б)." ) ; Сообщить("Один больше нуля." ) ; КонецЕсли ; /// Как составить тернарный оператор? в 1с 8.3, 8.2 Текст = ? (1 > 2 , "Один больше двух." , "Один не больше двух." ) ; Сообщить(Текст) ; // выведет "Один не больше двух." КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере

Условия в запросах применяются, когда необходимо выбрать не все записи из таблицы информационной базы 1С, а только соответствующие одному или нескольким критериям отбора.

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

Ключевое слово «ГДЕ»

Ключевое слово ГДЕ используется в запросах 1С, когда условие применяется к записям, отбираемым из информационной базы. При этом фильтрация записей происходит на этапе их выбора из таблицы информационной базы.

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

Если необходимо отобрать выплаты на сумму не менее 10 000, то запрос будет выглядеть следующим образом

Запрос. Текст= "ВЫБРАТЬ
| Выплаты.Сотрудник,
| Выплаты.Зарплата
|ИЗ
| Выплаты
|ГДЕ
| Выплаты.Зарплата >=10000"

Результатом выполнения запроса будет следующая таблица.

Ключевое слово «ИМЕЮЩИЕ»

Ключевое слово ИМЕЮЩИЕ в запросах 1С применяется, когда необходимо произвести отбор среди уже выбранных записей. Напрмиер, это ключевое слово применяется, когда нужно произвести фильтрацию сгруппированных записей в результате запроса.

Вернемся к примеру, рассмотренному выше. Допустим, необходимо выбрать из таблицы Выплаты сотрудников, которые в сумме получили больше 20 000. Для этого, сначала нужно ввести группировку по полю Сотрудник , подсчитать сумму по полю Зарплата для каждого сотрудника, а потом из полученных записей отобрать те, которые удовлетворяют условию.

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

Запрос. Текст= "ВЫБРАТЬ
| Выплаты.Сотрудник,
| СУММА(Выплаты.Зарплата) КАК Зарплата
|ИЗ
| Выплаты
|СГРУППИРОВАТЬ ПО
| Выплаты.Сотрудник
|ИМЕЮЩИЕ
| СУММА(Выплаты.Зарплата) > 20000"

Результат выполнения этого запроса будет таким.

На этом примере наглядно видна разница между ключевыми словами ГДЕ и ИМЕЮЩИЕ. Если бы мы использовали слово ГДЕ вместо ИМЕЮЩИЕ , то сначала был бы произведен отбор записей с зарплатой больше 20000, а потом по ним подсчитана сумма по каждому сотруднику. В результате мы получили бы пустой результат запроса, т.к. ни один сотрудник не получал больше 20000 за одну выплату.

Условия отбора в вирутальных таблицах регистров

Виртуальные таблицы есть у всех регистров в системе 1С:Предприятие: регистров накопления, регистров сведений, регистров бухгалтерии. Задать условия к виртуальным таблицам можно двумя способами:

  1. через параметры виртуальной таблица;
  2. через секции запроса ГДЕ или ИМЕЮЩИЕ.

Различия между секциями ГДЕ и ИМЕЮЩИЕ мы уже рассматривали. Чтобы было понятно, чем условия в этих секциях запроса отличаются от условий в параметрах виртуальной таблицы, нужно понять, что же такое виртуальные таблицы регистров в 1С. Важной их особенностью является то, что они не существуют в информационной базе. Это инструмент, предоставляемый нам платформой 1С:предприятие для оптимизации работы конфигурации.

Таким образом, если условие прописано в параметрах виртуальной таблицы, то оно применяется на этапе ее формирования из записей реальной таблица регистра. А если в секциях ГДЕ или ИМЕЮЩИЕ , то — к записям уже сформированной виртуальной таблицы.

Рассмотрим пример. Дана таблица периодического регистра сведений КурсыВалют .

Требуется выбрать на наименьшую дату валюты, курс которых меньше 30 р.

Запрос с условием в параметрах виртуальной таблицы будет выглядет так:

В этом случае мы получим одну запись: Доллар 28,3 от 01.02.2007. Это будет верное решение задачи.

Если же мы поместим условие в секцию ГДЕ, то результат запроса будет пустым, поскольку сначала будет сделан срез первых по каждой валюте (в результате получим две записи от 01.01.2007 Доллар 30,25 и Евро 40,5 ), а потом из них будут выбраны записи, удовлетворяющие условию. Но обе полученные записи условию Курс < 30 не удовлетворяют.

Число в 1С 8 — значение примитивного типа Число . Числовым типом может быть представлено любое десятичное число. С числовыми данными возможно совершать основные арифметические операции: сложение, вычитание, умножение и деление. Максимальное количество разрядов для числа в 1с 8: 38 знаков.

Литералы числа: набор цифр вида: [+|-]{0|1|2|3|4|5|6|7|8|9}[.{0|1|2|3|4|5|6|7|8|9}] В качестве разделителя целой и дробной части используется «.» (точка).

Пример 1. Создадим числовую переменную

ЧислоПи = 3.14;

Преобразование значений другого типа в число

Преобразовать в число можно значения строкового типа, либо логического типа (Булево ). Значение типа Булево преобразуется в число по следующим правилам:

  • Ложь преобразуется в 0;
  • Истина преобразуется в 1.

Значение типа Строка преобразуется в число в том случае, если оно является строковым представлением литерала численного типа.

Для преобразования существует специальная функция Число(<Значение>) , которая возвращает полученное число, если преобразование удалось и выдает сообщение об ошибке в противном случае.

Пример 2. Преобразовать в 1с число строку «1.25»

Строка = "1.25"; ПолученноеЧисло = Число(Строка);

После выполнения данного кода в переменной ПолученноеЧисло будет содержаться числовое значение 1.25

Пример 3. Преобразовать в число строку «Привет мир!»

Строка = "Привет мир!"; ПолученноеЧисло = Число(Строка);

При попытке выполнить данный код будет выдано сообщение об ошибке: «Преобразование значения к типу Число не может быть выполнено».

Функции работы со значениями типа Число в 1с 8.3

В данном разделе будут рассмотрены основные функции работы с числами в 1с 8 и приведены примеры их использования.

Цел

Цел(<Число>) . Возвращает целую часть числа переданного в параметре.

Пример 4. Определить делится ли число 121 на 11.

Делимое = 121; Делитель = 11; Результат = Делимое / Делитель; Если Цел(Результат) = Результат Тогда Сообщить("Делится нацело"); Иначе Сообщить("Не делится нацело"); КонецЕсли;

Результатом выполнения данного кода будет вывод на экран сообщения «Делится нацело».

Окр

Окр(<Число>, <Разрядность>, <РежимОкругления> ). Функция округляет число, переданное в первом параметре, до знака после запятой переданного во втором параметре. Значение разрядности может быть и нулевым (округление до целого) и отрицательным (округление до соответствующего разряда целой части). Параметр РежимОкругления может принимать значения:

  • 0 (или РежимОкругления.Окр15как10) . Округляет в меньшую сторону, то есть при округлении 1.5 будет возвращено 1;
  • 1 (или РежимОкругления.Окр15как20) . Округляет в большую сторону, то есть при округлении 1.5 будет возвращено 2;

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

Массив = Новый Массив; Шаг = 0.1; Число = 1; Пока Число < 1.9 Цикл Число = Число + Шаг; Массив.Добавить(Число); КонецЦикла; Для Каждого Стр Из Массив Цикл Сообщить("Исходное: "+Стр+" В меньшую: "+Окр(Стр,0,0)+" В большую:"+Окр(Стр,0,1)); КонецЦикла;

Pow

Pow(<Основание>, <Показатель>) . Возводит число переданное в первом параметре в степень переданную во втором параметре.

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

Число = 144; КвКорень = Pow(Число, 1/2); Число = Pow(КвКорень, 2); Сообщить(Число);

Результатом исполнения кода будет вывод на экран числа 144.

Прочие функции работы со значениями типа Число в 1с 8.3

  • Log(<Число>) . Получает натуральный логарифм числа, переданного в параметре;
  • Log10(<Число>) . Получает десятичный логарифм числа, переданного в параметре;
  • Sin(<Угол>) . Получает синус угла, заданного в радианах. Угол передается в параметр;
  • Cos(<Угол>) . Получает косинус угла;
  • Tan(<Угол>) . Получает тангенс угла;
  • ASin(<Угол>) . Получает арксинус угла;
  • ACos(<Угол>) . Получает арккосинус угла;
  • ATan(<Угол>) . Получает арктангенс угла;
  • Exp(<Число>). Получает экспоненту от числа переданного в параметр.

Применяются следующие логические операции:

НЕ логическое НЕ (отрицание); И логическое И;

ИЛИ логическое ИЛИ.

Операндами логических операций должны быть логические выражения. В табл. 2.5 приведены результаты логических операций над логическими выражениями ЛВ1 и ЛВ2, принимающими значения истина (И) или ложь (Л).

Таблица истинности

Таблица 2.5

ЛВ1 ЛВ2 ЛВ1 И ЛВ2 ЛВ1 ИЛИ ЛВ2 НЕ ЛВ1
И И И И Л
И Л Л И Л
Л И Л И И
Л Л Л Л И

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

2.6.5. ПРИОРИТЕТ ВЫПОЛНЕНИЯ ОПЕРАЦИЙ

Все операции 1С выполняются в выражении слева направо в соответствии с их приоритетом (старшинством), то есть, если две последовательные операции имеют равный приоритет, первоначально выполняется левая операция. Подвыражения, заключенные в круглые скобки, вычисляются в первую очередь. В табл. 2.6 операции 1С расположены в порядке убывания их приоритета.

Приоритет выполнения операций

Таблица 2. б

% *,/ +, НЕ И ИЛИ <, <=, >, >=, =, <>

Замечание. Каждая ячейка таблицы содержит операции с равным приоритетом.

Пример:

8 % 2 * 3 // Вернет 0
8 % (2 * 3) // Вернет 2

Поскольку логические операции старше операций отношения, то ошибочно следующее логическое выражение:

3>2и4< 5 // Так неверно

так как первоначально оценивается логическое подвыражение 2и 4

операнды которого не есть истина или ложь. А это неверно.

Зато верно логическое выражение

(3 > 2) и (4 < 5) // Это истина Пример. Вычислить результат логического выражения

(х / а = 1) или (б / (а + б) < 1) и не (б = а) или (х <> 6) при х = 6.0, а = 2.0 и б=3.0.

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

ложь или истина и не ложь или ложь.

ложь или истина и истина или ложь. После выполнения истина и истина: ложь или истина или ложь. Окончательный результат: истина.

2.7. МАССИВЫ

Массив это объект данных, содержащий несколько значений, доступ к которым осуществляется по их номеру (индексу).

Число элементов массива называется его размером. Размером массива может быть только целочисленная буквальная константа.

Оператор перем а;

объявляет одномерный массив (вектор) а из пяти элементов. Элементы массива имеют следующие имена: а, а, а, а и а. В этих именах величины 1-5 индексы элементов массива.

Массив считается определенным, если заданы значения всех его элементов. Для задания начальных значений элементов массива (инициализации массива) возможен следующий цикл:

для ин = 1 по 5 цикл

Присваивания

изменят соответственно значения 2-го и 5-го элементов массива а.

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

а = 9.1; // Меняем значение 3-го элемента массива а

Если индексное выражение массива вычисляется с нецелым значением, то в каче стве индекса берется целая часть этого значения. Например:

а = 9.1; // Меняем значение 1 -го элемента массива а

Значение индекса не должно выходить за границы массива. Так, при работе с ранее объявленным массивом а из пяти элементов ошибочны операторы

Элементы одного и того же массива могут быть разного типа. Например:

а = ‘25.11.01’; // Элемент типа Дата Элементы массива могут быть агрегатного типа. Например:

сСотр= СоздатьОбъект(“Справочник.Сотрудники”);

табл = СоздатьОбъект(“Таблица”);

Массив не может в качестве элементов содержать другие массивы.

Массив может быть формальным параметром программного компонента (процедуры или функции). При этом размер массива не указывается, а квадратные скобки сохраняются. Для определения размера переданного процедуре (функции) массива используется встроенная функция Разм.

Пример:

процедура ИнициализацияМассива(а) перем ин, размА;

размА = Разм(а); // Встроенная функция Разм вернет размер массива а

для ин = 1 по размА цикл

а[ин] = 1; // Теперь все элементы массива равны единице конецЦикла;

конецПроцедуры // ИнициализацияМассива

процедура Выполнить() перем а;

// Вызов процедуры, устанавливающей начальные значения элементов массива

// Ее фактическим параметром является имя массива ИнициализацияМассива(а);

конецПроцедуры // Выполнить