1C-Code → Ошибки 1С → Программа зависла
Сообщение платформы: Программа зависла
Сообщения об ошибке нет вовсе — платформа просто перестаёт отвечать. Это хуже любой ошибки: непонятно, где искать. Причин ровно две, и они разные.
Пока Остаток > 0 Цикл
// Остаток внутри не меняется — выхода нет
КонецЦикла;
Проверьте, что переменная из условия действительно меняется в теле, и что меняется в нужную сторону.
Функция Развернуть(Узел)
Возврат Развернуть(Узел.Родитель); // до самого верха и дальше
КонецФункции
Для Каждого Строка Из Таблица Цикл
Запрос.Выполнить(); // тысяча строк — тысяча походов в базу
КонецЦикла;
Это не зависание, а медленная работа, но выглядит одинаково: на десяти строках незаметно, на десяти тысячах — минуты. Один запрос вместо тысячи решается соединением или параметром В (&Список).
Остановите сеанс и посмотрите замером производительности, на какой строке проводится время. Для циклов помогает счётчик-предохранитель: если число шагов превысило разумное, вызывайте исключение с понятным текстом — так вы узнаете о поломке раньше пользователя.
Проверить себя на практике. В тренажёре те же ошибки возникают на настоящем интерпретаторе языка 1С: сообщения дословно те же, что у платформы, но исправить их можно сразу в браузере, без установки и без риска для рабочей базы.