Оператор объявления переменной Перем

Синтаксис:

Перем <Имя_переменной> [[<Размерность>]] [Экспорт];

 

В языке переменные не обязательно объявлять в явном виде. Неявным оп­ределением переменной является первое ее появление в левой части оператора присваивания. Возможно также явное объявление переменной при помощи оператора Перем. Тип переменной определяется типом присвоенного ей значе­ния. Не допускается использование в выражениях переменных с неопределен­ным значением (то есть переменных, которым никогда не присваивалось значе­ния).

Переменные могут объединяться в одномерные массивы.

Пример:

Перем А;

Перем Массив_Для_Хранения[10];

Область использования переменных зависит от места их определения в конфигурации задачи. Существует три области, в которых можно объявить переменные:

·         В разделе определения переменных глобального программного модуля. Если переменные определены с ключевым словом Экспорт (см. опера­тор Перем), то это будут глобальные переменные.

·         В разделе определения переменных модуля. Это переменные модуля.

·         В процедуре или функции. Это локальные переменные.

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

Переменные модуля доступны для использования в исполняемых операто­рах, выражениях, в любой процедуре и функции того программного модуля, в пределах которого они объявлены.

Локальные переменные доступны в пределах той процедуры или функции, в которой они объявлены.

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

Единственный способ создать для процедуры локальную переменную с именем, совпадающим с именем переменной, определенной как глобальная пе­ременная — это объявить ее явно при помощи оператора Перем.

Выражения

Выражение — это математическая или логическая формула, по которой вы­числяется значение. Математическое выражение может стоять справа от знака равенства в операторах присваивания, быть параметром процедур или функ­ций, индексом массива переменных. Логическое выражение может быть услови­ем в управляющих операторах Если, Пока, Для. Выражения состоят из кон­стант, переменных и функций, связанных символами логических и/или ариф­метических операций.

Арифметические операции

В языке определены следующие виды арифметических операций:

сложение

(Оп1 + Оп2)

вычитание

(Оп1 - Оп2)

умножение

(Оп1 * Оп2)

деление

(Оп1 / Оп2)

остаток от деления

(Оп1 % Оп2)

унарный минус

(-Оп1)

 

Арифметические операции имеют один или два операнда, в зависимости от типа которых операция имеет ту или иную семантику. Тот или иной семанти­ческий вариант операции определяется по первому операнду. В случае несовпа­дения типа второго операнда с требуемым, значение преобразуется к требуемо­му типу в соответствии с правилами преобразования типов. Если тип первого операнда не соответствует ни одному из допустимых типов, то в зависимости от ситуации может производиться преобразование типов или возбуждаться состояние ошибки выполнения.

Сложение определено для следующих типов операндов:

Число + Число

 

Дата + Число (к дате прибавля­ется число дней)

Вычитание определено для следующих типов операндов:

Число – Число

 

Дата – Число (от даты отнимает­ся число дней)

 

Дата – Дата (результатом явля­ется число дней между датами)

Умножение:

Число * Число

Деление:

Число / Число

Остаток от деления:

Число % Число

Замечание. При выполнении операции % (остаток от деления) оба операнда операции округляются до целого значения.

Операция конкатенации

Операция конкатенации ("+") используется для того, чтобы присоединить одну строку к другой. Длина результирующей строки равна сумме длин соеди­няемых строк. В случае несовпадения типа данных второго или последующих операндов со строковым типом, их значение преобразуется к строковому типу в соответствии с правилами преобразования типов.

Пример:

·         Для того, чтобы удалить ненужные пробелы, используются системные функции СокрЛ и СокрП.

ФИО = СокрП(Фамилия) + " " + СокрП(Имя) + " " + СокрП(Отчество);

Логические операции

Логическая операция сравнивает операнды и вырабатывает логическое зна­чение: «истина» или «ложь». Существует два вида логических операций: опера­ции сравнения и булевы операции. В операциях сравнения сравниваются два значения. Булевы операции выполняются над логическими значениями, реали­зуя булеву алгебру. Символы булевых операций могут комбинироваться, обра­зуя составные операции.

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

В языке определены следующие виды операций сравнения:

больше

(Оп1 > Оп2)

больше или равно

(Оп1 >= Оп2)

равно

(Оп1 = Оп2)

не равно

(Оп1 <> Оп2)

меньше

(Оп1 < Оп2)

меньше или равно

(Оп1 <= Оп2)

Операции сравнения определены для следующих типов операндов:

Больше          

Число > Число

 

Строка > Строка

 

Дата > Дата

Больше или равно:  

Число >= Число

 

Строка >= Строка

 

Дата >= Дата

Меньше:        

Число < Число

 

Строка < Строка

 

Дата < Дата

Меньше или равно: 

Число <= Число

 

Строка <= Строка

 

Дата <= Дата

Равно:

Число = Число

 

Строка = Строка

 

Дата = Дата

 

АгрегатныйТип = АгрегатныйТип

Не равно:      

Число <> Число

 

Строка <> Строка

 

Дата <> Дата

 

АгрегатныйТип <> АгрегатныйТип

Булевы операции:

В языке определены следующие виды булевых операций: И, ИЛИ, НЕ.

 

Примеры числовых констант:

0    123  -15  +24.11   0.245

Примеры констант дат:

'12.04.95'    '01.01.1996'

Примеры строковых констант:

"Ура заработала"

"Это самая правильная строка"

" "

Кроме того, допускаются «многострочные» строковые константы. В исход­ном тексте многострочные константы могут задаваться двумя способами:

Примеры:

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

Стр = "Первая строка"    // пример строковой константы

"Вторая строка"

"Третья строка";

2) Каждая от­дельная составляющая не замыкается кавычками, а на каждой последую­щей строке помещен символ переноса строки "|". В этом варианте коммен­тарии между открывающей и закрывающей кавычками не допускаются.

Стр = "Первая строка

   |Вторая строка

   |Третья строка";

 

Примеры строковых выражений :

Стр = СокрП("Фамилия" + ", " + Имя + ", " + " отчество");

Стр1 = "" + Докум.Цена + Валюта.СокрНаим;

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

Пример логического выражения:

Если (а=1) И ((Стр = "пароль") ИЛИ (Стр = "Пароль")) Тогда

   Сообщить(Стр);

КонецЕсли;

 

Управляющие конструкции

 

Если - Оператор условного выполнения.

Синтаксис:

Если <Логическое_выражение> Тогда

   //операторы;

[ИначеЕсли <Логическое_выражение> Тогда]

   //операторы;

[Иначе]

   //операторы;

КонецЕсли;

 

Если (РабочаяДата() > '01.01.95') И (Сег = "Понедельник") Тогда

   Сообщить("Сегодня" + " " + Сег + " " + РабочаяДата());

КонецЕсли;

 

Пока - Оператор выполнения цикла.

Синтаксис:

Пока <Логическое_выражение> Цикл

   //операторы;

КонецЦикла;

 

Цикл выполняет­ся пока логическое выражение — истина. Условие выполнения цикла все­гда проверяется вначале, перед выполнением цикла.

Пример:

Док = СоздатьОбъект("Документ.БригадныйНаряд");

// Будем просматривать документы в интервале дат

Док.ВыбратьДокументы('11.01.88', '11.01.99');

// Цикл по всем Документам

Пока (Док.ПолучитьДокумент() = 1) Цикл

   // отобразим Документ в строке состояния

   Состояние(Док.Вид() + " " + Док.НомерДок + " " + Док.ДатаДок);

   Док.ВыбратьСтроки();

   // вложенный цикл по всем строкам Документа

   Пока(Док.ПолучитьСтроку() > 0) Цикл

      Если Док.КодРабот = 104 Тогда

         Сообщить(" " + Док.НомерДок);

      КонецЕсли;

   КонецЦикла;

КонецЦикла;

 

Для -Оператор выполнения цикла.

Синтаксис:

Для <Имя_переменной> = <Выражение1> По <Выражение2> Цикл

   //Операторы;

КонецЦикла;

 

Перед началом выполнения цикла значение <Выражение1> присваивается переменной <Имя_переменной>. Значение <Имя_переменной> автоматически увеличи­вается при каждом проходе цикла. Цикл выполняется пока значение перемен­ной <Имя_переменной> меньше или равно значению <Выражение2>. Вели­чина приращения счетчика при каждом выполнении цикла равна 1. Условие выполнения цикла всегда проверяется вначале, перед выполнением цикла.

Пример:

// Выведем все строки текста

Выв = СоздатьОбъект("Текст");

Выв.Открыть("ТТТ");

Для i = l по Выв.КоличествоСтрок() Цикл

   Сообщить(Выв.ПолучитьСтроку(i));

КонецЦикла;

 

Попытка - Обработка исключительных ситуаций.

Синтаксис:

Попытка

   // Некоторые действия;

Исключение

   // Обработка исключительной ситуации;

КонецПопытки;

В качестве ошибочных (исключительных) ситуаций воспринимаются ошиб­ки времени выполнения модуля. Не предусмотрено определяемых пользовате­лем исключений.

Если при выполнении последовательности операторов <// Некоторые действия> произошла ошибка времени выполнения, то выполнение оператора, вызвавшего ошибку прерывается и управление передается на первый оператор последовательности операторов <// Обработка исключительной ситуации>. При этом управление будет передано даже в том случае, если ошибку вызвал оператор, находящийся в процедуре или функции, вызванной из <// Некото­рые действия>. Если ошибка произошла в вызванной процедуре или функции, то ее выполнение будет прервано, а локальные переменные уничтожены. Это справедливо для любой вложенности вызовов. После выполнения последова­тельности операторов <// Обработка исключительной ситуации> управление передается на следующий за ключевым словом КонецПопытки оператор. Если же последовательность <// Некоторые действия> выполнилась без ошибок, то последовательность операторов <// Обработка исключительной ситуации> будет пропущена и управление также будет продолжено с оператора, следующе­го за ключевым словом КонецПопытки.

Конструкции Попытка-Исключение-КонецПопытки могут быть вложен­ными. При этом, при возникновении исключительной ситуации управление будет передано на самый «внутренний» обработчик, начинающийся с ключево­го слова Исключение. Последовательность операторов <// Обработка ис­ключительной ситуации> может содержать оператор ВызватьИсключение (англоязычный синоним Raise). Выполнение данного оператора прекращает выполнение последовательности <// Обработка исключительной ситуации> и производится поиск более «внешнего» обработчика. Если таковой есть, то управление передается на его первый оператор. Если нет, то выполнение моду­ля прекращается с выдачей сообщения о первоначально возникшей ошибке. Оператор ВызватьИсключение может встречаться только внутри операторных скобок Исключение ... КонецПопытки.

В выдаче диагностики помощь может оказать встроенная функция ОписаниеОшибки(). Эта функция не имеет параметров, а в качестве значения возвращает описание ошибки, такое же, как было бы выдано в окне сообщений, в случае отсутствия обработчика исключительной ситуации, за исключением описания модуля и строки, в которой ошибка возникла. Применять данную функцию имеет смысл только при выполнении последовательности операторов <// Обработка исклю­чительной ситуации>, так как в ином случае она вернет пустую строку.

Пример:

Процедура СформироватьВЕхсеl()

   Попытка

      // пытаемся обратиться к программе MS Excel

      Табл = СоздатьОбъект("Excel.Application");

   Исключение

      Предупреждение(ОписаниеОшибки() +

           "; Excel не установлен на данном компьютере!");

      Возврат;

   КонецПопытки;

   // Формирование отчета

   ...

КонецПроцедуры

 

Сайт управляется системой uCoz