Назначение функции - получение какого-либо значения (галочки, цифры, суммы, наименования и т.д.). Различие функции от процедуры в том, что в функции есть оператор Возврат. Именно этот оператор отвечает за передачу полученного значения в ходе выполнения кода функции. У функции может быть параметр. Он указывается в скобочках после названия функции. Параметр нужен для того, чтобы в месте, где будет обращение к функции мы получили именно то значение, ради которого написана функция. Например, если мы хотим получить полное наименование номенклатуры, то параметром функции будет (Номенклатура). Соответственно при обращении к функции где-то в коде модуля мы должны указать название функции НашаФункция (ЭлементыФормы.Номенклатура) и в скобочках место, с которого она должна прочитать наименование номенклатуры.
Пример кода функции с параметром:
Функция ПолучитьОстатокТовараИзРегистра(Номенклатура)
Запрос = Новый Запрос;
Запрос.Текст ="
| ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) - ЕСТЬNULL(ТоварыНаСкладахОстатки.КОтгрузкеОстаток, 0) КАК Остаток
| ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки( , Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Остаток;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
Скриншот кода функции:
Для того, чтобы обратиться к функции в тексте процедуры нужен, например, такой код:
НаименованиеНоменклатуры = Строка.Номенклатура; //получаем в форме документа строку с номенклатурой для функции
ОстатокВЦикле = ПолучитьОстатокТовараИзРегистра(НаименованиеНоменклатуры); //название функции и ее параметр
Чтобы проверить результат функции можно вывести текстовое сообщение, например:
Сообщить(ОстатокВЦикле);
Приведем еще один пример не сложной функции с параметром. Для примера нужно получить сумму документа партии. Документ партии указан в ГТД в табличной части документа. Напрямую через точку обратиться к документу партии через ТабличнаяЧасть.ДокументПартии нельзя. Чтобы решить задачу нужно создать функцию:
Чтобы обратиться к функции достаточно добавить в нужном месте код:
СуммаДок = СуммаДокументаПартии(Ссылка); // Ссылка в данном случае это документ ГТД