tech.Solbi

Рабочие заметки программисту 1С (как правильно программировать и оформлять разработки и как не нужно программировать)

Когда переменные не инициализированы перед использованием

Если программист вообще не определил переменную перед использованием

Сходу написал вот так вот:

 Если МояПеременная = 5 Тогда

То тут все понятно: при попытке или сохранить модуль или запустить модуль в котором переменная не определена — 1С выдаст понятную ошибку.

Но вот если программист написал примерно вот такой код

Функция МояФункция(ПараметрФункции)
     Если ПараметрФункции = 1 Тогда
          А = 100;
     КонецЕсли;
     Возврат А;
КонецФункции //МояФункция

И особенно если почти всегда данная функция вызывается с параметром = 1, то тогда при отладке система будет работать без ошибок.
Однако если однажды получиться так, что «ПараметрФункции» не совпадет с 1, то тогда А будет не определено — и что получиться в результате работы программы — совершенно не известно.
А в комплекте с неявным преобразованием типов (так работает 1С) иногда система будет выдавать правильный результат, а иногда — нет.
Причем могут выдаваться самые разные странные ошибки 🙁

Правильно будет написать нашу функцию примерно вот так вот

Функция МояФункция(ПараметрФункции)
     А = 0;
     Если ПараметрФункции = 1 Тогда
          А = 100;
     КонецЕсли;
     Возврат А;
КонецФункции //МояФункция

Или же можно вот так вот

Функция МояФункция(ПараметрФункции)
     Если ПараметрФункции = 1 Тогда
          А = 100;
     Иначе
          А = 0;
     КонецЕсли;
     Возврат А;
КонецФункции //МояФункция


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *