← На главную

28 правил анализа кода 1С

Эти правила проверяются автоматически при загрузке .cf, .epf или .erf файла

Критичные — код работает неправильно

1. Декартово произведение в запросах
Условие соединения <> между ссылками разных типов документов всегда ИСТИНА. Результат — декартово произведение таблиц.
2. НачатьТранзакцию() в цикле
Блокировка таблиц на каждой итерации. Падение производительности, возможные взаимоблокировки.
3. НачатьТранзакцию() без Попытки
При ошибке транзакция не откатится. Данные останутся в неконсистентном состоянии.
4. Нет ОтменитьТранзакцию() в Исключении
Транзакция останется открытой после ошибки. Все последующие операции будут в этой транзакции.
5. Возврат в Попытке без ЗафиксироватьТранзакцию
Код выходит из процедуры, а транзакция остаётся открытой.

Серьёзные — производительность и надёжность

6. ПолучитьОбъект() в цикле
Обращение к БД на каждой итерации. Медленно при большом объёме данных.
7. Запрос.Выполнить() в цикле (N+1)
Выполнение запроса на каждой итерации. Используйте временные таблицы.
8. Новый Запрос внутри цикла
Создание объекта запроса в цикле — создайте до цикла, внутри меняйте параметры.
9. Записать() в цикле
Запись объекта на каждой итерации. Рассмотрите пакетную запись.
10. Выгрузить()/Свернуть() в цикле
Копирование таблицы значений на каждой итерации. Вынесите за цикл.
11. HTTP/FTP/COM соединение в цикле
Создание внешнего соединения на каждой итерации. Создайте до цикла.
12. Пустой блок Исключение
Ошибка проглатывается без обработки. Баги невозможно отследить.
13. Сообщить() в серверном коде
Пользователь не увидит сообщение на сервере. Используйте механизм сообщений.
14. Небезопасные методы
Выполнить(), ВнешниеОбработки.Создать, УстановитьПривилегированныйРежим — возможно выполнение произвольного кода.

Мелкие — стиль и читаемость

15. ВЫБРАТЬ * (все поля)
Выбираются все поля таблицы. Укажите только нужные.
16. Запрос без РАЗРЕШЕННЫЕ
Может упасть у пользователей с ограниченными правами.
17. Тройное разыменование в запросе
Алиас.Ссылка.Контрагент.Наименование — используйте JOIN.
18. Опечатки
Распространённые опечатки: «заполненны», «менялсиь» и др.
19. ВызватьИсключение без описания
Сложно понять причину ошибки. Добавьте текст.
20. Конкатенация строк в цикле
Строка = Строка + "..." — медленно. Используйте массив + СтрСоединить().
21. Жёстко заданные цвета
Новый Цвет() не адаптируется к теме. Используйте ЦветаСтиля.
22. Процедура длиннее 200 строк
Сложно читать и поддерживать. Разбейте на несколько.
23. Магические числа
Числа без объяснения. Вынесите в константу.
24. Вложенные Попытка 3+ уровней
Сложно читать. Вынесите логику в отдельные процедуры.
25. Если → Возврат Истина / Иначе Возврат Ложь
Можно упростить до Возврат <условие>.
26. Неиспользуемая переменная
Результат присвоен, но нигде не читается.
27. Закомментированный код (10+ строк)
Удалите — история хранится в Git.
28. Непарные маркеры //+ без //-
Открывающий маркер без закрывающего. Нарушает стандарт.

Проверьте свой код прямо сейчас

Попробовать бесплатно