Сводная таблица операторов в системе 1С в сравнении с Visual Basic и PL/SQL
В настоящем разделе мы приведем сводную таблицу некоторых основных операторов и встроенных функций языка программирования в системе 1С в сопоставлении с языками Visual Basic и PL/SQL (для Oracle).
Надеемся, что предлагаемая таблица поможет в освоении языка 1С тем учащимся, которые знакомы с основами Visual Basic и/или PL/SQL.
Сопоставление кодов Visual Basic, PL/SQL и 1С
Разделы и операторы |
Visual Basic и Visual Basic for Application (VBA) |
PL/SQL |
1С |
Тип языка программирования |
Объектно-ориентированный |
Блочно-структурированный |
Объектно-ориентированный |
Объявление переменных |
Объявление переменных производится в начале программы, процедуры или функции. Объявление переменных не обязательно. DIM <имя_переменной> AS <тип_переменной> Примеры: DIM info
|
Объявление переменных производится в начале программы, процедуры или функции в блоке DECLARE: <имя_переменной> [CONSTANT] <тип_переменной> [NOT NULL] [ { := | DEFAULT } <выражение>]; Например: birthdate DATE;
|
Объявление переменных производится в начале модуля. Объявление переменных не обязательно. Перем <имя_переменной> [Экспорт]; где зарезервированное слово Экспорт означает, что переменная будет видна вне модуля. Примеры: Перем НачДата Экспорт;
|
Объявление констант |
Объявление констант производится в начале программы, процедуры или функции. CONST <имя_константы> = <значение_константы> Примеры: CONST pi = 3.14159 |
Объявление констант производится в начале программы, процедуры или функции в блоке DECLARE: <имя_константы> CONSTANT <тип_константы> := <значение_константы>; Примеры: pi CONSTANT REAL := 3.14159; |
Объявление констант обычно производится неявно (в глобальном или локальном модуле): <имя_константы> = <значение_константы>; Примеры: н = 0; Константы также могут быть заданы через объект “Константы”.
|
Общая структура оператора |
<Тело_оператора>
|
<Тело_оператора>;
|
<Тело_оператора>;
|
Операторы присвоения |
<переменная> = <значение> Примеры: r = r + i |
<переменная> := <значение>;
Примеры: r := r + i;
|
<переменная> = <значение>; Примеры: r = r + i; Даты и время:Переменная12 = '20061106'; Переменная13 = '2006-11-06'; Переменная14 = '20061106154000'; Переменная15 = '2006-11-06 15:40:00'; Строки: Переменная18 = "Строка любая"; Переменная19 = "Первая строка многострочной переменной |Вторая строка |Третья"; Переменная20 = "Строка 1" + "Строка 2"; (конкатенация строк (объединение строковых переменных)) |
Оператор безусловного перехода |
GOTO <имя_метки<
Примеры: GOTO ColorError
|
GOTO имя_метки
Примеры: SQL< BEGIN |
ПЕРЕЙТИ ~<имя_метки>; Имя метки начинается со знака тильды (“~”), после имени метки следует двоеточие (“:”): Примеры: н = 0; |
Метка |
<имя_метки>: Примеры: ColorError: |
<<имя_метки>>
Примеры: < |
~<имя_метки>: Примеры: ~след: |
Оператор условного перехода |
IF <условие> THEN Примеры: If Otwet = 6 Then
SELECT CASE <Выражение> Примеры: SELECT CASE CboFileType.ListIndex |
IF (<условие> | <выражение типа Boolean (True/False)> ) THEN Примеры: IF l_date < ’11-APR-03’ THEN |
ЕСЛИ <условие> ТОГДА Примеры: ЕСЛИ Состав.Количество()=0 ТОГДА Аналог условного оператора SELECT CASE может быть реализован в 1С следующим образом: ЕСЛИ <условие 1> ТОГДА |
Реализация условного оператора в одну строку |
Функция IIF: IIF(<условие>, <если_истинно>, <если_ложно>) Примеры: strA = IIF(intA Mod 2=0, "Четное", "Не четное") |
Аналогом однострочного условного оператора является функция DECODE: DECODE (<имя_столбца>, '<значение_для_поиска1>', Примеры: SELECT first_name AS "Имя", last_name As "Фамилия", DECODE(JOB_ID, 'SA_REP', 'Торговый представитель', 'SA_MAN', 'Менеджер по продажам', 'Другое' ) AS "Должность" FROM hr.employees; |
?(<условие>, <если_истинно>, <если_ложно>) Функция ? вычисляет значение <условие> . Если <условие> истинно, то возвращает значение выражения <если_истинно>. Если <условие> ложно, то возвращает значение выражения <если_ложно>. Примеры: Комментарий = ?(Количество=0, “Пусто”, Строка (Количество) + “ шт.”); |
Операторы цикла: Цикл со счетчиком |
FOR <имя_переменной> = <начальное_значение> TO <конечное_значение> [STEP <шаг>] Счетчик циклов <имя_переменной> изменяется от начального значения до конечного значения с шагом <шаг>. Примеры: For i = 1 To vsbNum.Value Step 1 |
FOR <имя_переменной> IN [REVERSE] <начальное_значение> .. <конечное_значение> Счетчик циклов <имя_переменной> изменяется от начального значения до конечного значения с шагом 1, а при использовании опции “REVERSE” – от конечного до начального значения с шагом -1. Примеры: FOR i IN 1..3 LOOP Цикл FOR для курсоров (аналогичен оператору ДЛЯ КАЖДОГО в языке 1С): FOR <переменная типа запись> IN <имя курсора> Примеры: FOR v_gt IN get_offices LOOP |
ДЛЯ <имя_переменной> = <начальное_значение> ПО <конечное_значение> ЦИКЛ Счетчик циклов <имя_переменной> изменяется от начального значения до конечного значения с шагом 1. Примеры: Для Мее = 1 По 12 Цикл
Для обхода элементов коллекции: ДЛЯ КАЖДОГО <имя_переменной> ИЗ <имя_коллекции> ЦИКЛ Примеры: ДЛЯ КАЖДОГО ТекСтрокаТовары ИЗ Товары ЦИКЛ |
Цикл с условием |
DO Примеры: Do DO[{WHILE | UNTIL} <условие>] Примеры: DO UNTIL Aepfel < 6 |
LOOP - приводит к бесконечному повторению последовательности команд, если внутри нее нет команд EXIT (выход из цикла), RAISE (вызов обработчика исключительных ситуаций) или GOTO (безусловный переход).
LOOP - приведет к выходу из цикла после выполнения последовательности команд, как только условие станет истинным. LOOP |
ПОКА <условие> ЦИКЛ Для обхода элементов коллекции: ПОКА <имя_выборки>.Следующий() ЦИКЛ Примеры: н = 0; |
Операторы досрочного выхода из цикла |
Завершает цикл и передает управление оператору, следующему непосредственно после окончания цикла. EXIT DO
Примеры: DIM n AS Integer
LOOP FOR nCounter=100 To 1 Step -10
|
Завершает цикл и передает управление оператору, следующему непосредственно после окончания цикла. EXIT WHEN <условие>; Примеры: LOOP
END LOOP; |
Завершает цикл и передает управление оператору, следующему непосредственно после окончания цикла. ПРЕРВАТЬ; Примеры: ПОКА Выборка.Следующий() ЦИКЛ
КОНЕЦЦИКЛА;
|
Сообщения (вывод сообщений на экран) |
MsgBox "<текст_сообщения>" Пример:
|
DBMS_OUTPUT.put_line('<текст_сообщения<'); Пример:
|
Сообщить ("<текст_сообщения<"); Пример:
|
Обработка ошибок и исключений |
On Error Go to <метка>
Конструкция On Error…Resume Next – в случае обнаружения ошибки в срабатываемом коде исполнение передается строке кода, следующей после той, в которой произошла ошибка: On Error Resume Next
|
Оператор EXCEPTION [WHEN имя_исключения THEN
|
Обработка исключений предназначена для перехвата ошибок (исключительных ситуаций), возникающих в процессе работы программы. Примеры: Попытка СредняяЦена =
Исключение КонецПопытки;
|
Процедуры и функции |
Процедура: [Public/Private][Static] SUB <имя_процедуры<(<параметры>)
Примеры: Private Sub Cir(x As Integer, y As Integer)
Функция: [Public/Private] [Static] FUNCTION <имя функции> [AS тип]
Примеры: Private FUNCTION GetBIOSDate() AS String
Выход из процедуры или функции: EXIT Sub
|
Процедура: CREATE [OR REPLACE] PROCEDURE <имя_процедуры>
где OR REPLACE добавляется, если требуется изменение ранее созданной процедуры или создание процедуры с возможностью изменения; IN – входной параметр; OUT – выходной параметр; IN OUT – параметр, одновременно являющийся и входным и выходным (т.е. в процессе действия процедуры предполагается изменение входного параметра)
Функция: CREATE [OR REPLACE] FUNCTION <имя_функции<
Примеры: CREATE OR REPLACE PROCEDURE TESTOUT(NUM IN NUMBER, DT OUT VARCHAR2) |
Процедура: ПРОЦЕДУРА <имя_процедуры> (<параметры>)
Примеры: Процедура КнопкаПечатьНажатие (Элемент)
Функция: ФУНКЦИЯ <имя_функции> (<параметры>)
Примеры: ФУНКЦИЯ ЕстьПравоИспольэования (ИмяОтчета)
|
Сопоставление встроенных функций VB, PL/SQL и 1С:
Математические функции: |
Round округляет число до заданной точности
Fix отбрасывает дробную часть числа и возвращает целое значение Int отбрасывает дробную часть числа Abs возвращает абсолютное значение числа Exp используется для вычисления числа e Cos вычисляет косинус заданного угла Log вычисляет значение натурального логарифма
Sin вычисляет синус заданного угла Tan вычисляет тангенс угла Sgn определяет знак числа (отрицательное оно или положительное) Sqr вычисляет квадратный корень из числа Rnd возвращает случайное число |
ROUND(x, [,y])
TRUNC(x, [,y]) - Возвращает x усеченное (не округленное) до y десятичных разрядов.
MOD(x, y) - Возвращает остаток от деления числа х нацело на y. Если y равно 0, то возвращается x.
ABS(x)
EXP(х)
COS(х) LN(х) - Возвращает натуральный логарифм х. LOG(y, x) SIN(х) TAN(х) SIGN(x)
SQRT(x)
ACOS(х) ASIN(х) - Возвращает арккосинус и арксинус для х соответственно. ATAN(х) - Возвращает арктангенс и тангенс х соответственно. CEIL(х) - Возвращает наименьшее целое число, большее или равное х. POWER(x, y) - Возвращает число x в степени y. Основание x и порядок y могут быть неположительными целыми числами, но если x - отрицательное число, то y должен быть целым числом.
|
Окр(<Число>,[<КолЗнаков>],[<Способ>]) - функция возвращает числовое значение результата округления числа <Число> до заданного числа знаков дробной части (если <КолЗнаков> отрицательно, то округляется до соответствующего количества знаков целой части).
Пример:
Цел(<Число>) - Функция возвращает целую часть переданного в качестве параметра числа, полностью отсекая дробную часть. Пример:
(Оп1 % Оп2) Функция определяет остаток от деления Мин(<Элемент1>,...,<ЭлементN>) - Функция определяет минимальное значение из списка <Элемент1>, ..., <ЭлементN>. Пример:
Макс(<Элемент1>,...,<ЭлементN>) - Функция определяет максимальное значение из списка <Элемент1>, ..., <ЭлементN>. Пример:
|
Функции даты и времени: |
Date возвращает текущую системную дату Now возвращает текущее время и дату Time возвращает текущее время DateAdd определяет дату существующую n-периодов до или после заданной даты DateDiff определяет интервал между двумя датами |
SYSDATE ADD_MONTHS(d,x) - Возвращает дату d плюс x месяцев. MONTHS_BETWEEN(дата 1, дата 2) - Возвращает число месяцев между "датой 1" и "датой 2".
|
ТекущаяДата() - функция возвращает текущую (системную) дату, установленную на компьютере. Пример:
РабочаяДата() - возвращает значение рабочей даты, установленной в текущем сеансе работы программы (меню “Сервис — Параметры —Общие”). Пример:
Формат(<Дата>, <"Форматная строка">) Функция возвращает дату цифрами (форматная строка - "ДЛФ=Д"), дату с указанием месяца прописью (форматная строка - "ДЛФ=ДД"), время без указания даты (форматная строка - "ДЛФ=В"). Примеры:
ДобавитьМесяц(<Дата>, <ЧислоМесяцев>) - Функция добавляет к указанной дате <Дата> заданное число месяцев
Пример:
|
Year определяет год из даты Month возвращает номер месяца для заданной даты WeekDay определяет номер дня из даты Day определяет день по дате Minute определяет минуты из даты Hour определяет час из даты Second определяет секунды из даты |
Год(<Дата>) - функция определяет год указанной даты. Пример:
Месяц(<Дата>) - функция определяет месяц указанной даты. Пример:
День(<Дата>) - функция определяет Определяет календарный день в указанной дате. Пример:
ДеньВМесяце(<Дата>) - функция определяет день месяца указанной даты. Пример:
НеделяГода(<Дата>) - функция определяет номер недели в году для указанной даты. Пример:
ДеньГода(<Дата>) - функция определяет порядковый день в году для указанной даты. Пример:
ДеньНедели(<Дата>) - функция определяет день недели указанной даты. Пример:
|
||
DateSerial преобразует дату в системный формат DateValue преобразует значение даты во внутренний формат системы TimeSerial возвращает значение времени во внутреннем предствлении системы по заданным часу, минутам и секундах TimeValue преобразует значение времени во внутренний формат системы
MonthName возвращает полное или сокращенное название месяца по его номеру WeekDayName возвращает название дня по его номеру Timer определяет число секунд, прошедших с полуночи DatePart возвращает определенные компоненты даты
|
LAST_DAY(d) - Возвращает дату последнего дня того месяца, в который входит d. NEXT_DAY(d, день_недели) - Возвращает дату первого "дня_недели", наступающего после даты d. NEW_TIME(d, пояс 1, пояс 2) - Возвращает дату и время часового "пояса 2" для того момента, когда датой и временем часового "пояса 1" является d (Эта функция используется редко). ROUND(d, [, формат]) - Округляет дату d до единицы указанной форматом. TRUNC(d, [, формат]) - Возвращает дату d, усеченную до единицы, указанной в параметре "формат".
|
НачалоМесяца(<Дата>) - функция определяет дату начала месяца для указанной даты. Пример:
КонецМесяца(<Дата>) - функция определяет дату конца месяца для указанной даты. Пример:
НачалоКвартала(<Дата>) - функция определяет дату начала квартала для указанной даты. Пример:
КонецКвартала(<Дата>) - функция определяет дату конца квартала для указанной даты. Пример:
НачалаГода(<Дата>) - функция определяет дату начала года для указанной даты. Пример:
КонецГода(<Дата>) - функция определяет дату конца года для указанной даты. Пример:
НачалоНедели(<Дата>) - функция определяет дату начала недели для указанной даты. Пример:
КонецНедели(<Дата>) - функция определяет дату конца недели для указанной даты. Пример:
|
|
Функции обработки строк |
Asc преобразует символ в его ANSI код Chr преобразует ANSI код в символ, соответствующий ему InStr( [start], string1, string2) - функция возвращает целое число, указывающее начальную позицию первого вхождения строки string2 в строку string2, начиная с позиции start (0 если строка не найдена) LTrim - функция возвращает строку с удаленными начальными пробелами. RTrim - функция возвращает строку с удаленными конечными пробелами. Trim - функция возвращает строку с удаленными пробелами. LCase - функция возвращает данную строку в нижнем регистре. UCase - функция возвращает данную строку в верхнем регистре. Mid - функция возвращает часть строки string длиной length, начиная от позиции с номером start. Left - функция возвращает заданное количество символов length, начиная от самого левого символьного значения. Right - функция возвращает заданное количество символов length, начиная от самого правого символьного значения. Len - функция возвращает длину строки Replace заменяет все указаные символы в строке на заданные |
ASCII(строка) - Возвращает десятичное представление первого байта "строка", согласно применяемому набору символов. CHR(x) - Возвращает символ, имеющий код, равный x в наборе символов БД. INSTR(строка 1, строка 2, [,a[,b]]) LTRIM(строка 1, строка 2) (функция удаляет не только пробелы, но и любые символы, заданные в параметре “строка 2”) RTRIM(строка 1, строка 2) (функция удаляет не только пробелы, но и любые символы, заданные в параметре “строка 2”) LOWER(строка) - Возвращает "строку" со строчными символами. UPPER(строка) INITCAP(строка) - Возвращает "строку", в которой каждое слово начинается с прописной буквы и продолжается строчными. LENGTH(строка) REPLACE(строка_символов, строка_поиска, [строка_замены]) |
СокрЛ(<Строка>) - функция получает в качестве параметра строку, отсекает стоящие слева пробелы и возвращает результирующую строку. Пример:
СокрП(<Строка>) - функция получает в качестве параметра строку, отсекает стоящие справа пробелы и возвращает результирующую строку. Пример:
СокрЛП(<Строка>) - функция получает в качестве параметра строку, отсекает стоящие слева и справа пробелы, и возвращает результирующую строку. Пример:
ВРег(<Строка>) - функция преобразует все символы строки в верхний регистр и возвращает результирующую строку. Исходная строка не изменяется. Пример:
НРег(<Строка>) - функция преобразует все символы строки в нижний регистр и возвращает результирующую строку. Исходная строка не изменяется. Пример:
Сред(<Строка>, <Число1>, <Число2>) - функция возвращает подстроку параметра <Строка>, начиная с символа с номером <Число1>, общим количеством <Число2>. Позиции в строке считаются, начиная с 1. Параметр <Число2> может быть опущен, тогда выделяются все символы, начиная с символа с номером <Число1>, до конца строки. Пример:
Лев(<Строка>,<Число>) - функция получает в качестве параметра строку, выбирает первые слева символы строки в количестве, определенном параметром <Число>, и возвращает в качестве значения результирующую строку. Пример:
Прав(<Строка>,<Число>) - функция получает в качестве параметра строку, выбирает крайние справа символы строки в количестве, определенном параметром <Число>, и возвращает в качестве значения результирующую строку. Пример:
|
Partition определяет числовую ось, в который попадает заданное число Space - функция возвращает строку с заданным количеством пробелов. Spc печатает указанное количество пробелов StrComp - функция сравнивает две строки, compare% - флаг учета регистра (0 – с учетом, 1 – без учета регистра) (возвращает значение типа Variant (Integer), представляющее результат сравнения строк (-1 – если string1 меньше чем string2; 0 – если string1 равняется string2; 1 – если string1 больше чем string2; Null – если string1 или string2 имеет значение Null): SetField - функция заменяет символы в строке string от field_number до следующего separator_chars на field. InStrRev ищет первое с конца вхождение символа в строке String возвращает строку, состоящую из заданного числа указанных символов StrReverse возвращает строку, являющуюся зеркальным отображением входящей строки Tab печатает заданное количество символов TAB
|
SUBSTR(строка 1, a, [,b]) - Возвращает часть "строки 1", начинающуюся с символа с номером a и имеющую длину b символов. CONCAT(строка 1, строка2) - функция соединяет (конкатенирует) строки. LPAD(строка 1, х, строка 2) - Возвращает "строку 1", дополненную слева до размера х символами "строки 2". RPAD(строка 1, х, строка 2) - Возвращает "строку 1", дополненную справа до размера х символами "строка 2". TRANSLATE(строка_символов, заменяемая_строка, вносимая_строка) - Возвращает "строку_символов", в которой все вхождения каждого символа из "заменяемой_строки" замещаются соответствующим символом из "вносимой_строки". |
ПустаяСтрока(<Строка>) - функция проверяет переданный параметр <Строка> на наличие значащих символов (любых кроме пробелов) и возвращает число 1, если строка пустая или содержит только пробелы, или 0, если строка не пустая.
Шаблон(<Строка_шаблон>) - функция возвращает строковое значение, сформированное в соответствии с заданным параметром <Строка_шаблон>, заменив в ней все встроенные выражения, заключенные в квадратные скобки, на их строковые значения. Строковое значение параметра <Строка_шаблон> обрабатывается следующим образом: символы “[”, “]” (квадратные скобки) являются специальными символами, которые выделяют поля, содержащие встроенные выражения.
ЧислоПрописью (<Число>, <Форматная_строка>, <Параметры>) - функция возвращает строковое значение, соответствующее заданному числу в соответствии с заданной форматной строкой и параметрами предмета исчисления. Пример: ЧислоПрописью(СумДок,,"рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2")
|
|
Функции преобразования и форматирования данных |
CInt преобразует выражение в тип Integer CLng преобразует выражение в тип Long CSng преобразует выражение в тип Single CDbl преобразует выражение в тип данных двойной точности Double CDec преобразует выражение в тип данных Decimal Val преобразует строку в число FormatNumber форматирует числовые выражения Hex преобразует число в шестнадцатеричное представление числа Oct преобразует число в восьмеричное значение CDate преобразует выражение в тип Date CVDate преобразует выражение в тип Date FormatDateTime форматирует дату или время CStr преобразует выражение в тип String Str преобразует число в строку StrConv преобразует строку в заданный формат CVar преобразует выражение в тип Variant Format форматирует выражение FormatCurrency форматирует выражение в денежном формате FormatPercent форматирует выражение в процентном формате CBool преобразует выражение в тип Boolean CByte преобразует выражение в тип Byte CCur преобразует выражение в денежный тип Currency |
TO_NUMBER(строка_символов, [, формат [, nls_параметр]]) TO_DATE(строка_символов, [, формат [, nls_параметр]]) TO_CHAR(число, [, формат[, nls_параметр]]) |
Формат(<Параметр>,<Форматная_строка>) - функция форматирует переданный параметр, руководствуясь информацией, содержащейся в параметре <Форматная_строка>. Возвращает сформатированную строку. Параметр может быть сформатирован как число, строка или дата. Подробное описание данной функции см. в книге “1С:Предприятие. Описание встроенного языка”. Пример:
Число(<Значение>) - функция преобразует переданный параметр <Значение> в число, руководствуясь принятыми правилами преобразования типов. Пример:
Дата(<Параметр>) - функция преобразует значение <Параметр> из строкового вида в дату, руководствуясь принятыми правилами преобразования типов, и возвращает значение типа “дата”. Пример:
Строка(<Параметр>) - функция преобразует переданный параметр в строковую величину, руководствуясь принятыми правилами преобразования типов. Пример:
|
Функции среды исполнения |
ИмяПользователя() - функция возвращает имя пользователя (указанное в конфигураторе в списке пользователей), работающего в данный момент с программой. Пример:
ПолноеИмяПользователя() - функция возвращает полное имя пользователя, указанное в конфигураторе при авторизации доступа. Пример:
|