Собственные процедуры и функции
Процедуры и функции
Язык программирования системы "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>, как и для процедуры, - необязательный список формальных параметров, разделяемых запятыми. Значения формальных параметров должны соответствовать значениям передаваемых при вызове функции фактических параметров. В этом списке определятся имена каждого из параметров так, как они используются в тексте функции. Список формальных параметров может быть пуст.
Экспорт - необязательное ключевое слово, которое указывает на то что данная функция является доступной из других программных модулей. Имеет смысл только в глобальном программном модуле.
//Объявления локальных переменных - объявляются локальные переменные, на которые можно ссылаться только в рамках этой функции.
//Операторы - исполняемые операторы функции.
Возврат - оператор, который завершает выполнение функции и возвращает ВозвращаемоеЗначение в выражение, в котором используется функция. Использование данного ключевого слова в функции обязательно.
<ВозвращаемоеЗначение> - выражение, значение которого содержит результат обращения к функции.