Сводная таблица операторов в системе 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

Тип языка программирования

Объектно-ориентированный

Блочно-структурированный

Объектно-ориентированный

Объявление переменных

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

DIM <имя_переменной> AS <тип_переменной>

Примеры:

DIM info
DIM pswd AS String

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

<имя_переменной> [CONSTANT] <тип_переменной> [NOT NULL] [ { := | DEFAULT } <выражение>];

Например:

birthdate DATE;
emp_count SMALLINT := 0;
emp_count SMALLINT DEFAULT 0;
acct_id VARCHAR2(5) NOT NULL := ‘AP001’;
v_MYCITY OFFICES.CITY%TYPE;
a INTEGER := v_RecOffices.OFFICE;

Объявление переменных производится в начале модуля. Объявление переменных не обязательно.

Перем <имя_переменной> [Экспорт];

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

Примеры:

Перем НачДата Экспорт;
Перем КонДата Экспорт;
Перем мПериодСтрокой;

 

Объявление констант

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

CONST <имя_константы> = <значение_константы>

Примеры:

CONST pi = 3.14159

Объявление констант производится в начале программы, процедуры или функции в блоке DECLARE:

<имя_константы> CONSTANT <тип_константы> := <значение_константы>;

Примеры:

pi CONSTANT REAL := 3.14159;

Объявление констант обычно производится неявно (в глобальном или локальном модуле):

<имя_константы> = <значение_константы>;

Примеры:

н = 0;

Константы также могут быть заданы через объект “Константы”.

 

Общая структура оператора

<Тело_оператора>
(оператор оканчивается переходом на новую строку)

<Тело_оператора>;
(оператор оканчивается знаком “точка с запятой”)

<Тело_оператора>;
(оператор оканчивается знаком “точка с запятой”)

Операторы присвоения

<переменная> = <значение>

Примеры:

r = r + i

<переменная> := <значение>;
(используется знак “двоеточие и равно”)

Примеры:

r := r + i;
name_plsql_table(index) := expr;

<переменная> = <значение>;

Примеры:

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
CommonDialog1.Action = 3
ColorError:
MSGBOX “Вы закрыли диалог Цвет кнопкой Отмена”

 

GOTO имя_метки
<операторы<
...
<<имя_метки>>
<операторы<
...

Примеры:

SQL< BEGIN
2 BEGIN
3 GOTO MID;
4 .....................
5 END;
6 <>
7 .....................
8 END;
9 /

ПЕРЕЙТИ ~<имя_метки>;
<операторы>
...
~<имя_метки>:
<исполнимый_оператор>
<операторы>
...

Имя метки начинается со знака тильды (“~”), после имени метки следует двоеточие (“:”):

Примеры:

н = 0;
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
н = н + 1;
Если н <= 10 Тогда
//пропускаем первые 10 элементов справочника
ПЕРЕЙТИ ~след;
КонецЕсли;
Сообщить(Выборка.Наименование);
~след:
//возьмем следующий элемент
КонецЦикла;

Метка

<имя_метки>:
<исполнимый_оператор>

Примеры:

ColorError:
...

<<имя_метки>>
<исполнимый_оператор>

Примеры:

<>
...

~<имя_метки>:
<исполнимый_оператор>

Примеры:

~след:
...

Оператор условного перехода

IF <условие> THEN
<блок выражений>
[ ELSEIF <дополнительное условие> THEN
<блок выражений> ]…
[ ELSE
<блок выражений> ]
END IF

Примеры:

If Otwet = 6 Then
MsgBox “Это чудесно!”
Else MsgBox “Ну тогда удачи!”
End If

 

 

 

 

 

 

 

 

 

SELECT CASE <Выражение>
CASE <Диапазон_1>
<Блок_ выражений_1>
[ CASE <Диапазон_2>
<Блок_выражений_2> ]
[ CASE <Диапазон_N>
<Блок_ выражений_N> ]
[ CASE ELSE
<Блок_выражений_default> ]
END SELECT

Примеры:

SELECT CASE CboFileType.ListIndex
CASE 0 filfiles.Pattern = “*.*”
CASE 1 filfiles.Pattern = “*.txt”
CASE 2 filfiles.Pattern = “*.Doc*”
END SELECT

IF (<условие> | <выражение типа Boolean (True/False)> ) THEN
(<блок выражений> | [BEGIN <блок выражений> END])
[ELSIF
(<блок выражений> | [BEGIN <блок выражений> END])]
[ELSE
(<блок выражений> | [BEGIN <блок выражений> END])]
END IF

Примеры:

IF l_date < ’11-APR-03’ THEN
l_salary := l_salary * 1.15;
ELSE
l_salary := l_salary * 1.05;
END IF;

ЕСЛИ <условие> ТОГДА
<блок выражений>
[ ИНАЧЕЕСЛИ <лополнительное условие> THEN
<блок выражений>]…
[ ИНАЧЕ
<блок выражений>]
КОНЕЦЕСЛИ;

Примеры:

ЕСЛИ Состав.Количество()=0 ТОГДА
Предупреждение("Не указано ни одной строки!");
КОНЕЦЕСЛИ;
ЕСЛИ Сотр.Категория = Перечисления Категории.Совместитель ТОГДА
//обработаем как совместителя
ИНАЧЕ
//обычный сотрудник
КОНЕЦЕСЛИ;
ЕСЛИ выбор = 1 ТОГДА
Сообщить("Выбран 1-й пункт");
ИНАЧЕЕСЛИ выбор = 2 или выбор = 3 ТОГДА
Сообщить("Выбран 2-й или 3-й пункт");
ИНАЧЕ
Сообщить("Обработка этого пункта не предусмотрена");
КонецЕсли;
ЕСЛИ Выборка.Следующий() ТОГДА
...
ЕСЛИ НЕ ВыбФирма.Пустая() ТОГДА
...

Аналог условного оператора SELECT CASE может быть реализован в 1С следующим образом:

ЕСЛИ <условие 1> ТОГДА
<блок выражений 1>
ИначеЕсли <условие 2> ТОГДА
<блок выражений 2>
ИНАЧЕЕСЛИ <условие 3> ТОГДА
<блок выражений 3>
...
ИНАЧЕ
<блок выражений N>
КОНЕЦЕСЛИ;

Реализация условного оператора в одну строку

Функция IIF:

IIF(<условие>, <если_истинно>, <если_ложно>)

Примеры:

strA = IIF(intA Mod 2=0, "Четное", "Не четное")

Аналогом однострочного условного оператора является функция DECODE:

DECODE (<имя_столбца>, '<значение_для_поиска1>',
'<отображаемое_значение1>', [ '<значение_для_поиска2<',
'<отображаемое_значение2>',
[…],
'<значение_по_умолчанию>' ] )

Примеры:

SELECT first_name AS "Имя", last_name As "Фамилия", DECODE(JOB_ID, 'SA_REP', 'Торговый представитель', 'SA_MAN', 'Менеджер по продажам', 'Другое' ) AS "Должность" FROM hr.employees;

?(<условие>, <если_истинно>, <если_ложно>)

Функция ? вычисляет значение <условие> . Если <условие> истинно, то возвращает значение выражения <если_истинно>. Если <условие> ложно, то возвращает значение выражения <если_ложно>.

Примеры:

Комментарий = ?(Количество=0, “Пусто”, Строка (Количество) + “ шт.”);
?(Дебет.Счет.Валютный=1, "Валютный", "")
?((Дебет.Счет.Валютный=1) И (Кредит.Счет.Валютный=1), "Валютный", "")

Операторы цикла: Цикл со счетчиком

FOR <имя_переменной> = <начальное_значение> TO <конечное_значение> [STEP <шаг>]
<блок выражений>
[EXIT FOR]
<блок выражений>
NEXT [
<имя_переменной>]

Счетчик циклов <имя_переменной> изменяется от начального значения до конечного значения с шагом <шаг>.

Примеры:

For i = 1 To vsbNum.Value Step 1
r = r + i
>Next

FOR <имя_переменной> IN [REVERSE] <начальное_значение> .. <конечное_значение>
LOOP
<блок выражений>
END LOOP;

Счетчик циклов <имя_переменной> изменяется от начального значения до конечного значения с шагом 1, а при использовании опции “REVERSE” – от конечного до начального значения с шагом -1.
Между начальным и конечным значениями ставится знак “..” - “оператор диапазона”.

Примеры:

FOR i IN 1..3 LOOP
// последовательность команд; -- цикл выполняется 3 раза (для i = 1, 2, 3)
END LOOP;


Цикл FOR для курсоров (аналогичен оператору ДЛЯ КАЖДОГО в языке 1С):

FOR <переменная типа запись> IN <имя курсора>
LOOP
<блок выражений>
END LOOP;

Примеры:

FOR v_gt IN get_offices LOOP
DBMS_OUTPUT.put_line(‘Get Data: ‘||TO_CHAR(v_gt.OFFICE) );
END LOOP;

ДЛЯ <имя_переменной> = <начальное_значение> ПО <конечное_значение> ЦИКЛ
<блок выражений>
КОНЕЦЦИКЛА;

Счетчик циклов <имя_переменной> изменяется от начального значения до конечного значения с шагом 1.

Примеры:

Для Мее = 1 По 12 Цикл
Сообщить(Мее);
КонецЦикла;

 

 

 

 

 

 

Для обхода элементов коллекции:

ДЛЯ КАЖДОГО <имя_переменной> ИЗ <имя_коллекции> ЦИКЛ
<блок выражений>
КОНЕЦЦИКЛА;

Примеры:

ДЛЯ КАЖДОГО ТекСтрокаТовары ИЗ Товары ЦИКЛ
Движение = Движения.ЦеныПоставщиков.Добавить();
Движение.Период=Дата;
КОНЕЦЦИКЛА;

Цикл с условием

DO
<блок выражений>
[EXIT DO]
<блок выражений>
LOOP [{WHILE | UNTIL} <условие>]

Примеры:

Do
YesNo = MsgBox(“Хотите шутку?”,4)
Loop While YesNo < 6


DO[{WHILE | UNTIL} <условие>]
<тело_цикла>
[EXIT DO]
<блок выражений>
LOOP
' While – пока выполняется, Until – пока не выполнится.

Примеры:

DO UNTIL Aepfel < 6
(...) ' здесь находится тело цикла
LOOP

LOOP
<блок выражений с условием выхода из цикла>
END LOOP;

- приводит к бесконечному повторению последовательности команд, если внутри нее нет команд EXIT (выход из цикла), RAISE (вызов обработчика исключительных ситуаций) или GOTO (безусловный переход).

Например:

LOOP
<блок выражений>
IF <условие> THEN EXIT;
END LOOP;

- приведет к выходу из цикла после выполнения последовательности команд, как только условие станет истинным.

LOOP
<блок выражений>
EXIT WHEN <условие>;
END LOOP;

ПОКА <условие> ЦИКЛ
<блок выражений с условием выхода Прервать;>
КОНЕЦЦИКЛА;

Для обхода элементов коллекции:

ПОКА <имя_выборки>.Следующий() ЦИКЛ
<блок выражений с условием выхода Прервать;>
КОНЕЦЦИКЛА;

Примеры:

н = 0;
Выборка = Справочники.Номенклатура.Выбрать();
ПОКА Выборка.Следующий() ЦИКЛ
Если Выборка.ПометкаУдаления Тогда
Продолжить; //возьмем следующий элемент
КонецЕсли;
н = н + 1;
Если н < 10 Тогда
Прервать; //досрочный выход из цикла
КонецЕсли;
Сообщить("Товар: " + Выборка.Наименование);
КОНЕЦЦИКЛА;

Операторы досрочного выхода из цикла

Завершает цикл и передает управление оператору, следующему непосредственно после окончания цикла.

EXIT DO
EXIT FOR

Примеры:

DIM n AS Integer
n = 10
DO WHILE n>1

n = n - 1
Debug.Print n
If n = 5 Then EXIT DO
' Если счётчик = 5, то
'выходим из цикла
LOOP

FOR nCounter=100 To 1 Step -10
nDecades(nCounter) = nCounter *2
If nDecades(nCounter) < 20 Then EXIT FOR
NEXT

Завершает цикл и передает управление оператору, следующему непосредственно после окончания цикла.

EXIT WHEN <условие>;

Примеры:

LOOP

i:=i+1;
EXIT WHEN i>11;
END LOOP;

Завершает цикл и передает управление оператору, следующему непосредственно после окончания цикла.

ПРЕРВАТЬ;

Примеры:

ПОКА Выборка.Следующий() ЦИКЛ

Если Выборка.ПометкаУдаления Тогда
Продолжить; //возьмем следующий элемент
КонецЕсли;
н = н + 1;
Если н>10 Тогда
ПРЕРВАТЬ; //досрочный выход из цикла
КонецЕсли;
Сообщить("Товар: " + Выборка.Наименование);
КОНЕЦЦИКЛА;

 

 

Сообщения (вывод сообщений на экран)

MsgBox "<текст_сообщения>"

Пример:
MsgBox "Это чудесно!"

DBMS_OUTPUT.put_line('<текст_сообщения<');

Пример:
SET SERVEROUTPUT ON
BEGIN
DBMS_OUTPUT.enable;
DBMS_OUTPUT.put_line('Это чудесно!');
END;
/

Сообщить ("<текст_сообщения<");

Пример:
Сообщить ("Это чудесно!");

Обработка ошибок и исключений

On Error Go to <метка>
<блок_выражений1>
<метка>:
<блок_выражений2>

Конструкция On Error…Resume Next – в случае обнаружения ошибки в срабатываемом коде исполнение передается строке кода, следующей после той, в которой произошла ошибка:

On Error Resume Next
<выражение1>
<выражение2>

 

Оператор EXCEPTION

[WHEN имя_исключения THEN
текст_обработчика_исключения;]

 

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

Примеры:

Попытка СредняяЦена =

СуммаВсего/Количество;
Исключение
//Возникла ошибка деления на ноль.
//Будем считать, что количество равно 1.
Количество = 1;
СредняяЦена = СуммаВсего;
КонецПопытки;

 

Процедуры и функции

Процедура:

[Public/Private][Static] SUB <имя_процедуры<(<параметры>)
.....<тело_процедуры<
END SUB

Примеры:

Private Sub Cir(x As Integer, y As Integer)
Circle (x,y),500,,,2
End Sub

 

Функция:

[Public/Private] [Static] FUNCTION <имя функции> [AS тип]
<тело_функции>
<имя_функции> = <возвращаемое_значение>
END FUNCTION

Примеры:

Private FUNCTION GetBIOSDate() AS String
Dim p As Byte, MemAddr As Long, sBios As String
Dim i As Integer
MemAddr = &HFFFF5
For i = 0 To 7
Call GetMem1(MemAddr + i, p)
sBios = sBios & Chr$(p)
Next i
GetBIOSDate = sBios
END FUNCTION

Выход из процедуры или функции:

EXIT Sub
Exit Function

 

Процедура:

CREATE [OR REPLACE] PROCEDURE <имя_процедуры>
(<параметр> [IN] [OUT] [IN OUT] <тип_параметра>, ..... ) AS [IS]
<зона объявления переменных>
BEGIN
.....<тело_процедуры>
EXCEPTION
<раздел исключительных ситуаций<
END [имя процедуры]

где OR REPLACE добавляется, если требуется изменение ранее созданной процедуры или создание процедуры с возможностью изменения;

IN – входной параметр;

OUT – выходной параметр;

IN OUT – параметр, одновременно являющийся и входным и выходным (т.е. в процессе действия процедуры предполагается изменение входного параметра)

 

Функция:

CREATE [OR REPLACE] FUNCTION <имя_функции<
(<параметр> [IN] [OUT] [IN OUT] <тип_параметра>, ..... )
[RETURN <тип_возвращаемого_значения>]
AS [IS]
<зона объявления переменных<
BEGIN
.....<тело_функции<
RETURN (<возвращаемое_значение>); (или без скобок: RETURN <возвращаемое_значение>;)
EXCEPTION
<раздел исключительных ситуаций<
END [имя процедуры]

Примеры:

CREATE OR REPLACE PROCEDURE TESTOUT(NUM IN NUMBER, DT OUT VARCHAR2)
IS
BEGIN
SELECT COMPANY INTO DT FROM customers
WHERE customers.CUST_NUM = NUM;
END TESTOUT;
/

Процедура:

ПРОЦЕДУРА <имя_процедуры> (<параметры>)
.....<тело_процедуры<
КОНЕЦПРОЦЕДУРЫ

Примеры:

Процедура КнопкаПечатьНажатие (Элемент)
Если НЕ ЕстьПравоИспользования(ИмяОтчета) Тогда
Возврат; //досрочный выход из процедуры
КонецЕсли
ТабДок = Новый ТабличныйДокумент;
Печать(ТабДок); //вызов процедуры Печать
ТабДок.Показать();
КонецПроцедуры

 

Функция:

ФУНКЦИЯ <имя_функции> (<параметры>)
.....<тело_функции>
ВОЗВРАТ <возвращаемое_значение>;
КОНЕЦПРОЦЕДУРЫ

Примеры:

ФУНКЦИЯ ЕстьПравоИспольэования (ИмяОтчета)
//возвращаемое значение функции
ВОЗВРАТ ПравоДоступа("Использование", Отчеты[ИмяОтчета]);
КОНЕЦФУНКЦИИ

 

 

 

Сопоставление встроенных функций 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 должен быть целым числом.

 

Окр(<Число>,[<КолЗнаков>],[<Способ>]) - функция возвращает числовое значение результата округления числа <Число> до заданного числа знаков дробной части (если <КолЗнаков> отрицательно, то округляется до соответствующего количества знаков целой части).
Параметр <КолЗнаков> может быть опущен, при этом принимается, что <КолЗнаков> = 0.
Параметр <Способ> — необязательный параметр, который задает способ округления:
0 если при округлении 1.5=1;
1 если при округлении 1.5=2.
Значение по умолчанию — 0.

Пример:
Окр(Цена,-2)


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

Пример:
Цел(Наличность/Цена)


(Оп1 % Оп2) Функция определяет остаток от деления


Мин(<Элемент1>,...,<ЭлементN>) - Функция определяет минимальное значение из списка <Элемент1>, ..., <ЭлементN>.

Пример:
Мин(Цена1,Цена2,Цена3)


Макс(<Элемент1>,...,<ЭлементN>) - Функция определяет максимальное значение из списка <Элемент1>, ..., <ЭлементN>.

Пример:
Макс(Цена1,Цена2,Цена3)

 

Функции даты и времени:

Date возвращает текущую системную дату

Now возвращает текущее время и дату

Time возвращает текущее время

DateAdd определяет дату существующую n-периодов до или после заданной даты

DateDiff определяет интервал между двумя датами

SYSDATE

ADD_MONTHS(d,x) - Возвращает дату d плюс x месяцев.

MONTHS_BETWEEN(дата 1, дата 2) - Возвращает число месяцев между "датой 1" и "датой 2".

 

 

ТекущаяДата() - функция возвращает текущую (системную) дату, установленную на компьютере.

Пример:
ТекущаяДата();


РабочаяДата() - возвращает значение рабочей даты, установленной в текущем сеансе работы программы (меню “Сервис — Параметры —Общие”).

Пример:
РабочаяДата();


Формат(<Дата>, <"Форматная строка">) Функция возвращает дату цифрами (форматная строка - "ДЛФ=Д"), дату с указанием месяца прописью (форматная строка - "ДЛФ=ДД"), время без указания даты (форматная строка - "ДЛФ=В").

Примеры:
А = Формат('20020820153309', "ДЛФ=ДД");

// А = "20 августа 2002 г.";
А = Формат('20020820153309', "ДЛФ=Д");
// А = "20.08.2002";
А = Формат('20020820153309', "ДЛФ=В");
// А = "15:33:09";


ДобавитьМесяц(<Дата>, <ЧислоМесяцев>) - Функция добавляет к указанной дате <Дата> заданное число месяцев
<ЧислоМесяцев> и возвращает результат.

Пример:
ДобавитьМесяц(РабочаяДата(),3)

 

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>, до конца строки.

Пример:
Сред(ФИО,10,12)


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

Пример:
Лев(ФИО,15);


Прав(<Строка>,<Число>) - функция получает в качестве параметра строку, выбирает крайние справа символы строки в количестве, определенном параметром <Число>, и возвращает в качестве значения результирующую строку.

Пример:
Прав(ФИО,15)

 

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, если строка не пустая.

Пример:
?(ПустаяСтрока(Счет.ПроцНДС)=1,”10%”,Счет.ПроцНДС);

 

Шаблон(<Строка_шаблон>) - функция возвращает строковое значение, сформированное в соответствии с заданным параметром <Строка_шаблон>, заменив в ней все встроенные выражения, заключенные в квадратные скобки, на их строковые значения. Строковое значение параметра <Строка_шаблон> обрабатывается следующим образом: символы “[”, “]” (квадратные скобки) являются специальными символами, которые выделяют поля, содержащие встроенные выражения.

Пример (выдает: “Название услуги — Вывоз мусора”):
Шаблон(“Название услуги — [Услуга.Наименование]”)


ЧислоПрописью (<Число>, <Форматная_строка>, <Параметры>) - функция возвращает строковое значение, соответствующее заданному числу в соответствии с заданной форматной строкой и параметрами предмета исчисления.

Пример:
ЧислоПрописью(СумДок,,"рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 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С:Предприятие. Описание встроенного языка”.

Пример:
Формат(СуммаОперации, “Ч12.2”)


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

Пример:
Число(Вар+Род);


Дата(<Параметр>) - функция преобразует значение <Параметр> из строкового вида в дату, руководствуясь принятыми правилами преобразования типов, и возвращает значение типа “дата”.

Пример:
Дата("06.03.1958");


Строка(<Параметр>) - функция преобразует переданный параметр в строковую величину, руководствуясь принятыми правилами преобразования типов.

Пример:
Строка(ДатаДок+1)

Функции среды исполнения

   

ИмяПользователя() - функция возвращает имя пользователя (указанное в конфигураторе в списке пользователей), работающего в данный момент с программой.

Пример:
ИмяПользователя()


ПолноеИмяПользователя() - функция возвращает полное имя пользователя, указанное в конфигураторе при авторизации доступа.

Пример:
ПолноеИмяПользователя()