Процедура — действие, которое выполняется
Процедура — это блок кода, который выполняет определенные действия, но не возвращает результат.
bsl// Объявление процедуры Процедура ВывестиПриветствие() Сообщить("Добро пожаловать в нашу программу!"); Сообщить("Сегодня: " + Дата()); КонецПроцедуры // Вызов процедуры ВывестиПриветствие();
Характеристики процедуры:
-
Начинается с ключевого слова
Процедура -
Заканчивается ключевым словом
КонецПроцедуры -
Не возвращает значение
-
Вызывается как отдельная команда
Функция — действие, которое возвращает результат
Функция — это блок кода, который выполняет действия и обязательно возвращает результат.
bsl// Объявление функции Функция РассчитатьСумму(Число1, Число2) Результат = Число1 + Число2; Возврат Результат; // Ключевое слово! КонецФункции // Использование функции Сумма = РассчитатьСумму(150, 75); Сообщить("Сумма: " + Сумма); // Выведет: Сумма: 225
Характеристики функции:
-
Начинается с ключевого слова
Функция -
Заканчивается ключевым словом
КонецФункции -
Обязательно содержит оператор
Возврат -
Возвращаемое значение можно использовать в выражениях
Ключевые различия
1. Наличие возвращаемого значения
bsl// ПРОЦЕДУРА - не возвращает значение Процедура СохранитьДокумент() // Действия по сохранению... // Нет оператора Возврат! КонецПроцедуры // ФУНКЦИЯ - всегда возвращает значение Функция ПолучитьТекущуюДату() Возврат Дата(); // Обязательно! КонецФункции
2. Способ использования в коде
bsl// Процедура вызывается как отдельная команда ВывестиОтчет(); СохранитьДанные(); // Функция используется в выражениях ЦенаСНалогом = РассчитатьЦенуСНалогом(Цена); Если ЕстьДоступ() Тогда // Действия... КонецЕсли;
Практические примеры
Пример 1: Когда использовать процедуру
bsl// Процедура подходит для действий, которые не требуют результата Процедура ОбработатьЗаказ(ДокументЗаказа) // Проверяем условия Если ДокументЗаказа.Сумма > 10000 Тогда ПрименитьСкидку(ДокументЗаказа, 10); КонецЕсли; // Записываем документ ДокументЗаказа.Записать(); // Выводим уведомление Сообщить("Заказ обработан успешно!"); КонецПроцедуры
Пример 2: Когда использовать функцию
bsl// Функция подходит для вычислений и проверок Функция РассчитатьИтоговуюСумму(МассивТоваров) ИтоговаяСумма = 0; Для Каждого Товар Из МассивТоваров Цикл ИтоговаяСумма = ИтоговаяСумма + Товар.Цена * Товар.Количество; КонецЦикла; // Возвращаем результат вычислений Возврат ИтоговаяСумма; КонецФункции // Использование в коде СуммаЗаказа = РассчитатьИтоговуюСумму(ТоварыВКорзине); Сообщить("Итоговая сумма: " + СуммаЗаказа);
Сравнительная таблица
| Критерий | Процедура | Функция |
|---|---|---|
| Возврат значения | Не возвращает | Всегда возвращает |
| Ключевое слово возврата | Нет |
Возврат
|
| Использование в выражениях | Нельзя | Можно |
| Типичные задачи | Действия, обработка, вывод | Вычисления, проверки, получение данных |
| Синтаксис вызова |
ИмяПроцедуры()
|
Результат = ИмяФункции()
|
Частые ошибки новичков
Ошибка 1: Функция без возврата значения
bsl// НЕПРАВИЛЬНО! Функция ПолучитьСтатус() Статус = "Выполнен"; // Забыли оператор Возврат! КонецФункции // ПРАВИЛЬНО Функция ПолучитьСтатус() Статус = "Выполнен"; Возврат Статус; КонецФункции
Ошибка 2: Попытка использовать процедуру как функцию
bsl// НЕПРАВИЛЬНО! Процедура ПолучитьНастройки() // ... код ... КонецПроцедуры Настройки = ПолучитьНастройки(); // Ошибка! Процедура не возвращает значение // ПРАВИЛЬНО Функция ПолучитьНастройки() // ... код ... Возврат Настройки; КонецФункции Настройки = ПолучитьНастройки(); // Теперь правильно
Как выбрать: процедура или функция?
Используйте процедуру, когда:
-
Нужно выполнить действия без возврата результата
-
Выводите сообщения, сохраняете данные, обновляете интерфейс
-
Действие является "командой"
Используйте функцию, когда:
-
Нужно вычислить и вернуть результат
-
Проверить условие и вернуть Истина/Ложь
-
Получить какие-либо данные для дальнейшей работы
Заключение
Запомните простое правило:
-
Процедура — это "сделай что-то"
-
Функция — это "вычисли и верни результат"
Правильное использование процедур и функций сделает ваш код более понятным, структурированным и легким в сопровождении. Начните с этого простого разделения, и многие концепции программирования в 1С станут для вас гораздо яснее!
