Когда переменные не инициализированы перед использованием
Если программист вообще не определил переменную перед использованием
Сходу написал вот так вот:
Если МояПеременная = 5 Тогда
То тут все понятно: при попытке или сохранить модуль или запустить модуль в котором переменная не определена — 1С выдаст понятную ошибку.
Но вот если программист написал примерно вот такой код
Функция МояФункция(ПараметрФункции) Если ПараметрФункции = 1 Тогда А = 100; КонецЕсли; Возврат А; КонецФункции //МояФункция
И особенно если почти всегда данная функция вызывается с параметром = 1, то тогда при отладке система будет работать без ошибок.
Однако если однажды получиться так, что «ПараметрФункции» не совпадет с 1, то тогда А будет не определено — и что получиться в результате работы программы — совершенно не известно.
А в комплекте с неявным преобразованием типов (так работает 1С) иногда система будет выдавать правильный результат, а иногда — нет.
Причем могут выдаваться самые разные странные ошибки 🙁
Правильно будет написать нашу функцию примерно вот так вот
Функция МояФункция(ПараметрФункции) А = 0; Если ПараметрФункции = 1 Тогда А = 100; КонецЕсли; Возврат А; КонецФункции //МояФункция
Или же можно вот так вот
Функция МояФункция(ПараметрФункции) Если ПараметрФункции = 1 Тогда А = 100; Иначе А = 0; КонецЕсли; Возврат А; КонецФункции //МояФункция
Добавить комментарий