Собственные процедуры и функции

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

Язык программирования системы "1С:Предприятие" поддержи­вает использование подпрограмм, которые могут быть оформлены либо в виде функций, либо в виде процедур.

Как процедура, так и функция - это логически самостоятельные именованные части программы (модуля), предназначенные для вы­полнения определенной задачи, которым могут передаваться аргу­менты (параметры). Различие состоит в том, что функция может воз­вращать вычисленное значение в точку вызова (причем единственное значение), а процедура - нет.

В любом модуле могут использоваться как системные (библио­течные) процедуры и функции (например, создание объекта, стан­дартные математические), так и созданные разработчиком конфигу­рации.

1. Системные процедуры и функции

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

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

Математические функции обеспечивают выполнение элемен­тарных математических операций:

Окр() - округление числа, указанного в качестве параметра.

Синтаксис:

Окр(<число>, <точность>, <способ>)

Параметры:

Число - значение, которое округляем.

Точность - число значащих цифр дробной части (параметр не обязателен, по умолчанию - 0).

Способ - способ округления последней цифры:

0 - если 1.5 округляется до 1 (т.е. в меньшую сторону),

1 - если 1.5 округляется до 2 (т.е. в большую сторону) (параметр не обязателен, по умолчанию принимается значение, установленное в окне свойств конфигурации: Конфигурация/Задача/Свойства страни­ца Задача, поле Округление).

Мин - выбор минимального значения из набора;

 

Синтаксис:

Мин(<Элемент1>,..., <ЭлементN>)

Параметры:

 

<Элемент1 >,...,<ЭлементN> - список выражений базовых ти­пов данных.

Макс() - выбор максимального значения из набора.

Синтаксис:

Макс(<Элемент1>,..., <ЭлементN>)

Параметры:

<Элемент1>,...,<ЭлементN> - список выражений базовых ти­пов данных.

Цел() - возвращает значение целой части параметра.

Синтаксис: Цел(<Число>)

Параметры:

< Число> - числовое выражение.

Функции преобразования типов предназначены для явного пре­образования базовых типов из одного в другой. Таких функций три:

Дата() преобразует в дату число или строку, указанные в каче­стве параметра функции;

Cmpoка() преобразует в строку число или дату, указанные в качестве параметра;

Число() преобразует в число дату или строку, указанные в ка­честве параметра.

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

Функция ВвестиЗначение() открывает окно для ввода произволь­ного значения, которое будет помещено в заданную переменную про­граммного модуля.

Синтаксис:

Ввести3начение(<3начение>, <Подсказка>, < Тип>, <Длина>,<Точность>);

Возвращает: 1 - если в диалоге нажата кнопка ОК; 0 - если нажа­та кнопка 'Отмена'.

Параметры:

<3начение> - имя переменной, объявленной в модуле для прие­ма вводимого значения;

<Подсказка> - текст заголовка окна диалога ввода;

<Тип> - строковое выражение, т.е. название типа данных, кото­рое требуется ввести.

<Длина> - длина вводимого значения (для чисел и строк);

<Точность> - число знаков после десятичной точки (для чисел).

Пример использования:

ВвестиЗначение(наим_тов, "Введите наименование товара", строка, 20);

ВвестиЗначение(цена_тов, "Введите цену товара",число, 10,2);

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

Синтаксис:

ВвестиЧисло(< Число>, <Подсказка>, <Длина>, <Точностъ>, <Таймаут>);

Возвращает: 1 - если в диалоге нажата кнопка ОК; 0 - если нажа та кнопка 'Отмена1; -1 - если закончилось время ожидания ответа. Параметры:

<Число> - имя переменной, объявленной в модуле для приема вводимого значения;

<Подсказка> - текст заголовка окна диалога ввода;

<Длина> - длина вводимого числа;

<Точностъ> - число знаков после десятичной точки;

<Таймаут> - число секунд времени ожидания ответа (если опу­щен или 0, то без ограничения).

 

Пример использования: ВвестиЧисло(с, "Введите число с", 10,2);

 

Функция ВвестиСтроку() открывает окно для ввода последова­тельности символов, которая будет помещена в заданную перемен­ную программного модуля.

Синтаксис:

ВвестиСтроку(<Строка>, <Подсказка>, <ДлинаСтроки>, Признак>,<Таймаут>);

Возвращает: 1 - если в диалоге нажата кнопка ОК; 0 - если нажа­та кнопка Отмена; -1 - если закончилось время ожидания ответа.

Параметры:

<Строка> - имя переменной, объявленной в модуле для приема вводимого значения;

<Подсказка> - текст заголовка окна диалога ввода;

<ДлинаСтроки> - длина вводимой строки;

<Признак> - если его значение 0 или он опущен, то вводится одна строка, если значение 1 - вводится многострочный текст с разде­лителями строк;

<Таймаут> - число секунд времени ожидания ответа (если зна­чение опущено или 0, то без ограничения). Во всех функциях этот параметр является необязательным.

ВвестиДату() - открывает окно для ввода значения даты, кото­рое будет помещено в заданную переменную программного модуля.

Синтаксис:

ВвестиДату(<Дата>, <Подсказка>,<Таймаут>);

Возвращает 1, если в диалоге нажата кнопка ОК, и 0, если нажа­та кнопка Отмена. Значение -1 возвращается, если закончилось вре­мя ожидания ответа.

Параметры:

<Дата> - имя переменной, объявленной в модуле для приема вводимого значения;

<Подсказка> - текст заголовка окна диалога ввода;

<Таймаут> - число секунд времени ожидания ответа (если опу­щен или 0, то без ограничения).

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

Синтаксис:

ВвестиПериод(<НачалоПериода>,<КонецПериода>, <Подсказка>);

Возвращает: 1, если в диалоге нажата кнопка ОК; 0, если нажата кнопка Отмена, клавиша "Esc" или закрыто окно диалога. Параметры:

<НачалоПериода> - имя переменной, объявленной в модуле для приема вводимого значения даты начала периода;

<КонецПериода> - имя переменной, объявленной в модуле для приема вводимого значения даты конца периода;

<Подсказка> - текст заголовка окна диалога ввода.

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

Синтаксис:

ВвестиПеречисление(<Значение>, <Подсказка>,<Таймаут>);

Возвращает: 1, если в диалоге нажата кнопка ОК; 0, если паж кнопка Отмена; -1, если закончилось время ожидания ответа.

Параметры:

<3иачение> - имя переменной, объявленной в модуле для приема вводимого значения; На входе переменная должна содержать значение типа 'Перечисление' или строку с идентификатором требуемого вида перечисления.

<Подсказка> - текст заголовка окна диалога ввода;

<Таймаут> - число секунд времени ожидания ответа (если значение опущено или 0, то без ограничения).

Процедуры и функции общего назначения предназначены в основном для создания элементов взаимодействия пользователя с приложением. К таким функциям, в частности, относятся:

Процедура Предупреждение() выдает текст, указанный в качестве параметра;

Синтаксис:

Предупреждение(<Текстсообщения>,<Таймаут>);

Параметры:

<Текст_вопроса> - строка текста предупреждения;

<Таймаут> - число секунд времени показа окна предупрежде­ния (если значение опущено или 0, то без ограничения).

Пример использования (рис. 1):

Предупреждение("Ответ="+окр(у, 2,1));


 

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

Синтаксис:

Сообщить(<Текст_сообщения>, <ИмиджМаркера >);

Параметры: <Текст_сообщения> - строка текста сообщения.

<ИмиджМаркера> - необязательный параметр. Строковое вы­ражение, которое задает тип пиктограммы, выводимой перед сооб­щением. Возможные значения:

• I

• !

• !!

• !!!;

• "." - обычное сообщение;

• символ "пробел" - без маркера.

Собственные процедуры и функции

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

Процедура может передавать любое количество параметров либо не передавать ни одного.

Процедура <имя процедуры>() <текс процедуры>

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

Ключевое слово Процедура начинает секцию исходного текста, выполнение которого можно инициировать из любой точки про­граммного модуля, просто указав <Имя_процедуры> со списком па­раметров (если параметры не передаются, то круглые скобки обяза­тельны). Конец программной секции процедуры определяется по ключевому слову КонецПроцедуры.

Синтаксис:

Процедура <Имя_проц>([<Парам1>,..., <ПарамN>])[Экспорт] //Объявления локальных переменных;

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

[Возврат;]

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

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

Параметры:

<Имя_проц> - назначает имя процедуры.

<Парам1>,...><ПарамN> - необязательный список формальных параметров, разделяемых запятыми. Значения формальных параметров должны соответствовать значениям передаваемых при вызове процедуры фактических параметров. В этом списке определяются имена каждого из параметров так, как они используются в тексте процедуры. Список формальных параметров может быть пуст.

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

//Объявления локальных переменных - Объявляются локальные переменные, на которые можно ссылаться только в рамках этой процедуры,

//Операторы - Исполняемые операторы процедуры.

Возврат - оператор, который завершает выполнение процедуру и осуществляет возврат в точку программы, из которой было обращение к процедуре. Использование данного оператора в процедуре не обязательно.

Функция всегда возвращает одно-единственное значение:

Функция <Имя_функции>()

<текст функции>

Возврат (ВозвращаемоеЗначение);

КонецФункции

Ключевое слово Функция начинает секцию исходного текста функции, выполнение которой можно инициировать из любой точки программного модуля, просто указав <Имя_функции> со списком параметров (если параметры не передаются, то круглые скобки обя­зательны). Выполнение функции заканчивается обязательным опера­тором Возврат. Функции отличаются от процедур только тем, что возвращают ВозвращаемоеЗначение. Конец программной секции функции определяется по ключевому слову КонецФункции. Вызов любой функции в тексте программного модуля можно записывать как вызов процедуры, т.е. в языке допускается не принимать от функции возвращаемое значение.

Синтаксис:

Функция <Имя_функции>([Парам 1>, ..., <ПарамN>])[Экспорт]

//Объявления локальных переменных;

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

...

Возврат <ВозвращаемоеЗначение>;

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

КонецФункции

Параметры:

<Имя_функции> - назначает имя функции.

<Парам1>,...,<ПарамN>, как и для процедуры, - необязательный список формальных параметров, разделяемых запятыми. Значения формальных параметров должны соответствовать значениям передаваемых при вызове функции фактических параметров. В этом списке определя­тся имена каждого из параметров так, как они используются в тексте функции. Список формальных параметров может быть пуст.

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

//Объявления локальных переменных - объявляются локальные пе­ременные, на которые можно ссылаться только в рамках этой функции.

//Операторы - исполняемые операторы функции.

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

 

<ВозвращаемоеЗначение> - выражение, значение которого со­держит результат обращения к функции.