Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

1C_ERR_FUNCTION_NO_RETURN 1С:Предприятие и СУБД

Ошибка 1С: Функция не возвращает значение через Возврат — Решение

Обновлено: 25.08.2026 · Официальная документация ↗
  • Синтаксическая ошибка при проверке конфигурации или обновлении информационной базы.
  • Диагностика: {Обработка.Имя(Строка)}: Функция не возвращает значение через оператор Возврат.
  • Аварийное завершение работы сеанса при вызове функции, если выполнение дошло до конца тела функции (КонецФункции) без передачи результата.

1. Принцип работы функций во встроенном языке 1С

В соответствии с архитектурой платформы 1С:Предприятие 8, конструкция Функция ... КонецФункции обязана вернуть значение любого типа во всех возможных ветвлениях алгоритма (Если - ИначеЕсли - Иначе, Попытка - Исключение).

Если поток управления доходит до ключевого слова КонецФункции, не встретив оператор Возврат <Значение>, платформа генерирует критическое исключение.

2. Типовые антипаттерны и их исправление

Антипаттерн 1: Пропущенный Возврат в ветке Иначе

// НЕПРАВИЛЬНО:
Функция ПолучитьСтатусЗаказа(Заказ)
    Если Заказ.Проведен Тогда
        Возврат "Проведен";
    ИначеЕсли Заказ.ПометкаУдаления Тогда
        Возврат "Удален";
    КонецЕсли;
    // Если заказ не проведен и не помечен — функция упадет!
КонецФункции

// ПРАВИЛЬНО (Единая точка выхода или дефолтный возврат):
Функция ПолучитьСтатусЗаказа(Заказ)
    Результат = "Не определен";
    Если Заказ.Проведен Тогда
        Результат = "Проведен";
    ИначеЕсли Заказ.ПометкаУдаления Тогда
        Результат = "Удален";
    КонецЕсли;
    Возврат Результат; // Гарантированный возврат
КонецФункции

Антипаттерн 2: Отсутствие Возврата в блоке Исключение

Функция ВыполнитьРасчет(Данные)
    Попытка
        // Вычисления
        Возврат Результат;
    Исключение
        ЗаписьЖурналаРегистрации("Ошибка расчета", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
        Возврат Неопределено; // ОБЯЗАТЕЛЬНО возвращать значение из блока Исключение!
    КонецПопытки;
КонецФункции

Антипаттерн 3: Путаница между Процедурой и Функцией

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

💡 Практика специалистов: Всегда проверяйте блоки Попытка...Исключение внутри функций. Распространенная ошибка джуниор-разработчиков — запись ошибки в лог внутри 'Исключение' без добавления 'Возврат Неопределено;'.

Частые вопросы (FAQ)

Можно ли написать в функции просто 'Возврат;' без указания значения?

Нет, оператор 'Возврат;' без параметров допустим только внутри Процедур. Внутри Функции оператор Возврат обязан содержать возвращаемое выражение (например, 'Возврат Истина;' или 'Возврат Неопределено;').

Как стандарт разработки 1С рекомендует организовывать возврат из функций?

Стандарты разработки 1С рекомендуют инициализировать переменную 'Результат' в первой строке функции и иметь ровно один оператор 'Возврат Результат;' в самом конце тела функции.

Что произойдет, если в цикле Пока...Цикл есть Возврат, но цикл не выполнился ни разу?

Если условие цикла изначально ложно (или коллекция пуста), управление перейдет за пределы цикла к концу функции. Если там нет финального оператора Возврат, возникнет ошибка.

Проверяет ли конфигуратор наличие Возврата во всех ветках при синтакс-проверке?

Да, встроенный статический анализатор кода и синтаксическая проверка конфигуратора (Ctrl+F7) мгновенно подсвечивают функции, где управление может дойти до КонецФункции.

Полезные материалы
Рекомендуем