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