Частые ошибки программиста 1С 8.3 / 8.5 - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

Частые ошибки программиста 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
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 12.06.2025
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Назад к содержимому