Частые ошибки программиста 1С 8.3 / 8.5
Данные > Статьи и инструкции > Программирование

👋 Ошибки в коде — неизбежная часть разработки, будь вы новичок или эксперт. В этой статье разберём типичные «ловушек» 1С, особенно коварных для начинающих. Важно: рекомендации основаны на практике, но всегда приветствуются аргументированные дополнения в комментариях. Давайте улучшать код вместе!
1. Игнорирование NULL-значений
В языке запросов 1С NULL — частый источник ошибок:
- Арифметические операции с NULL возвращают NULL;
- Попытка преобразования NULL в строку/число вызывает сбой.
Решение: Используйте ЕСТЬNULL(Поле, ЗначениеПоУмолчанию) или явные проверки ЕСТЬ NULL/НЕ ЕСТЬ NULL.
2. Запросы внутри циклов
Почему это плохо? Каждый запрос в цикле — отдельный вызов СУБД, что убивает производительность.
Когда допустимо?
- Обработка единичных записей;
- Нет альтернативы одному сложному запросу;
- Цикл гарантированно выполняется 3-5 раз.
Совет: Рефакторите код — в 99% случаев есть лучшее решение.
3. Отсутствие проверки на пустую выборку
Ошибка: обращение к РезультатЗапроса[0] без проверки.
Как исправить:
Если НЕ РезультатЗапроса.Пустой() Тогда...
// Или
Если Выборка.Следующий() Тогда...
// Или
Если Выборка.Следующий() Тогда...
4. Неучтённые группы и удалённые элементы
Проблема: В выборке могут оказаться группы справочников (где реквизиты = NULL) или помеченные на удаление объекты.
Защита: Добавляйте в запрос условия:
Справочник.ЭтоГруппа = Ложь
Справочник.ПометкаУдаления = Ложь
Справочник.ПометкаУдаления = Ложь
5. Деление на ноль
Даже если вы уверены, что нуля не будет — делайте проверку:
Если Знаменатель <> 0 Тогда
Результат = Числитель / Знаменатель;
КонецЕсли;
КонецЕсли;
6. Условия в «ГДЕ» вместо параметров ВТ
Ключевое отличие:
Параметры виртуальной таблицы фильтруют данные при формировании;
«ГДЕ» работает после полной выгрузки, нагружая систему.
Правило: Фильтруйте по измерениям через параметры ВТ.
7. Разыменование ссылок через точку
Опасный код:
Ссылка.Реквизит // Потенциальная проблема!
Правильный подход: Всегда получайте данные через запросы — это надежнее И эффективнее.
Итог:
Ошибки — часть обучения, но их можно минимизировать. Проверяйте код на эти «узкие места», особенно если вы начинающий разработчик.
// Материал от подписчика ©
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник