====== Процедуры и функции ======
Процедуры и функции используются для выделения отдельных алгоритмов, разбития кода на логические участки или для избежания дублирования кода. Функция отличается от процедуры тем, что возвращает значение.
===== Параметры =====
У процедур и функций может быть сколько угодно параметров или может не быть вообще. Параметры могут быть обязательными и необязательными(в таком случае необходимо указать значения параметров по умолчанию). Обычно обязательные параметры указываются вначале, необязательные в конце.
===== Передача параметров в процедуру или функцию =====
В функцию или процедуру параметры передаются по ссылке(не создается отдельная копия, а передается ссылка на эту переменную, изменение параметра повлечет за собой изменение переменной), но если при определении процедуры/функции перед параметром указать ''Знач'' например:
Процедура(Знач ПростоПараметр)
то в функцию будет передаваться не ссылка на переменную а ее копия.FIXME Некоторые типы значений **всегда** передаются по ссылке, надо найти и указать. Порядок следования процедур и функций в модуле не имеет значения. Пример определения процедуры:
Процедура Тест(ПараметрРаз, ПараметрДва = 123, ..., ПараметрN)
//Указывать ПараметрДва необязательно, в таком случае он будет равен 123
КонецПроцедуры;
===== Документирование =====
С некоторых пор в платформе появилась возможность документировать собственные процедуры и функции. Для этого комментарий к функции должен быть оформлен особым образом. Система подсказок платформы умеет распознавать такие комментарии. И при отображении подсказок по параметрам функции будет выводить не только имена параметров, но и их назначение.
// Возвращает начало следующего дня
//
// Параметры:
// ТекДата - дата, относительно которой будет вычисляться дата начала следующего дня.
Функция НачалоСледующегоДня(ТекДата)
Возврат КонецДня(ТекДата) + 1;
КонецФункции
При написании кода, использующего такую функцию, мы получим удобный комментарий. FIXME