Главная » 1С Предприятие » ВЛОЖЕННЫЕ ВЫЗОВЫ ПРОЦЕДУР И ФУНКЦИЙ

0

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

процедура п6(а)  далее

процедура п5(а)

//

Процедура п5 вызывает сама себя

а = 2 * а;

//

из процедуры п6. В результате имеем

п6(а);

//

зависание программы

конецПроцедуры // п5

процедура  п6(а) а = -а;

п5(а); конецПроцедуры // п6

процедура Выполнить()

Предупреждение("Сейчас программа зависнет.

| Для продолжения вычислений нажмите Esc.");

а=1 ; п5(а);

конецПроцедуры // Выполнить

2.10.2.  ОПЕРАТОР ВОЗВРАТ

Как  мы  видели,  функция  возвращает результат  выражения  оператора Возврат выражение;

Такой   оператор  может   быть   использован  в   функции  неоднократно.  Однако  его можно  разместить  и  в  процедуре (обычно  внутри  конструкций  "если" или  Попытка). При  этом  выражение должно  быть  опущено. Например:

процедура п7(а, б) если а <= 0 тогда

Сообщить("Неверное значение аргумента функции Лог."); возврат;                            //                выражение опущено

конецЕсли; б = Лог(а);

конецПроцедуры // п7

Впрочем,  лучше  обойтись  без  оператора  Возврат, применив  ветвление  "если-тоиначе":

процедура п8(а, б) если а <= 0 тогда

Сообщить("Неверное значение аргумента функции Лог.");

иначе

б = Лог(а); конецЕсли;

конецПроцедуры // п8

2.11. ВЫВОДЫ

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

2.       Неопределенные переменные всех типов  имеют пустое  значение.

3.       Константы могут  быть  числового,  символьного типа или типа Дата.  Нельзя  задать именованные  константы, массив константу и константу агрегатного типа данных.  Среди  символьных констант 3 являются  системными.  Нет  констант со значениями истина и ложь.

4.       В  выражении   1С  можно   употреблять данные различных  типов. При  вычислении выражения автоматически  выполняются преобразования  типов  данных. Также  для преобразования  типов данных  можно  применить  встроенные  функции Дата, Строка и Число. Тип выражения определяется типом первого операнда.

5.      Все операции в выражениях 1С выполняются слева направо.

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

7.      Логические выражения нельзя  размещать в  правой части оператора присваивания,  использовать в  качестве фактических параметров  процедур  и  функций и  в  выражении; оператора Возврат. Их место это конструкции "если", Для, Пока  и функция ?.

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

9.      Массивы могут быть  только  одномерными. Индекс первого  элемента массива всегда  равен  единице.  Элементы  массивов   могут   быть   разных   типов,   в   том   числе; и  агрегатных.

10.   Для  управления вычислениями  в языке  предусмотрены ветвления "если" и Попытка, циклы "с параметром" и  Пока, операторы прерывания цикла, оператор перехода и  оператор выхода из процедуры (функции).

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

12.    Фактические параметры  процедур  и  функций, если  они  не являются  константами и им  не  предшествует ключевое слово Знач,  передаются  по  ссылке,  в  противном случае по значению.

13.    Фактические параметры  процедур  и  функций являются необязательными.  При  oi l сутствии  фактического  параметра  используется установленное для  него  по  умолчанию значение, если оно  задано, либо пустое  значение в противном случае.

14.   Формальные  параметры  процедур  и  функций могут быть  скалярами  и  массивамилюбого типа, в том числе и  агрегатного.

15.   Функция  может  вызываться,  как  и  процедура,  в  виде отдельного оператора.  При этом  возвращаемое  ею значение  игнорируется.

16.   Предварительное   описание  процедуры  (функции), приведенное  в  начале  модуля после  объявления его  переменных,   снимает ограничение на место  расположения, процедуры (функции) в теле  модуля.

3 .  АГРЕГАТНЫ Е  ТИП Ы  ДАННЫ Х ОБЩЕГ О  НАЗНАЧЕНИ Я

Источник: Бартеньев О. В. 1С:Предприятие:  программирование для  всех.  Базовые объекты и расчеты на одной дискете. М.: Диалог-МИФИ, 2005. 464 с.

По теме:

  • Комментарии