5 частых ошибок при разработке на 1C и как их избежать

Ошибки в разработке на 1C — это не только потеря времени, но и риск для учётных данных компании. За 12 лет работы мы собрали топ-5 ошибок, которые чаще всего допускают программисты (особенно начинающие). Делимся опытом, как их избежать.
Ошибка 1. Неиспользование индексов в запросах
Самая частая проблема — медленные отчёты и документы из-за неоптимальных запросов.
Пример плохого запроса:
ВЫБРАТЬ *
ИЗ Справочник.Номенклатура
ГДЕ Наименование ПОДОБНО "%болт%"
Этот запрос будет сканировать всю таблицу (десятки тысяч записей).
Как исправить: используйте индексы и избегайте поиска по маске в начале строки. Добавьте индекс по полю "Наименование" в конфигураторе и перепишите запрос с использованием полнотекстового поиска или дополнительных полей.
Ошибка 2. Жёсткое указание счетов в коде
Многие новички прописывают счета прямо в коде обработок.
СчетДт = "41.01";
СчетКт = "60.01";
Проблема: при изменении плана счетов или переходе на новую версию конфигурации код перестаёт работать.
Как исправить: используйте предопределённые элементы или получайте счета из настроек учётной политики.
СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
Ошибка 3. Отсутствие обработок для пакетных изменений
Новички часто пишут циклы, которые меняют данные по одному элементу.
Для каждого Товар Из Справочник.Номенклатура Цикл
Товар.Цена = НоваяЦена;
Товар.Записать();
КонецЦикла;
Для 10 000 товаров такой цикл будет выполняться часы.
Как исправить: используйте пакетные обновления.
Запрос = Новый Запрос;
Запрос.Текст = "Обновить Справочник.Номенклатура Установить Цена = &НоваяЦена";
Запрос.УстановитьПараметр("НоваяЦена", НоваяЦена);
Запрос.Выполнить();
Ошибка 4. Игнорирование транзакций
При работе с несколькими документами или справочниками новички забывают про транзакции.
// Плохо — если второй документ не запишется, первый останется в базе
Документ1.Записать();
Документ2.Записать();
Как исправить: всегда оборачивайте связанные операции в транзакцию.
НачатьТранзакцию();
Попытка
Документ1.Записать();
Документ2.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Ошибка 5. Отсутствие комментариев и документации
"Этот код и так понятен" — самые опасные слова программиста. Через 3 месяца вы сами не вспомните, почему сделали именно так.
Как исправить: добавляйте комментарии к сложным участкам и ведите документацию.
// Рассчитываем себестоимость методом ФИФО для партий до 2026 года
// Используем временную таблицу MovementsForPeriod
// Алгоритм описан в ТЗ от 15.01.2026
Также заведите в конфигурации "Журнал регистрации изменений" — в нём должно быть понятно, кто, когда и зачем внёс правку.
Бонус: как не допускать ошибки
- Используйте автоматическое тестирование — в 1C есть встроенная система тестирования (раздел "Тестирование и отладка");
- Код-ревью — пусть другой разработчик проверяет ваш код перед выкаткой в промышленную базу;
- Не торопитесь — 15 минут на проектирование алгоритма экономят 2 часа отладки;
- Учитесь на чужих ошибках — форумы infostart.ru и mista.ru полны разборов реальных кейсов.
Заключение
Разработка на 1C — это не только написание кода, но и проектирование архитектуры, оптимизация запросов, тестирование. Если вы только начинаете — не бойтесь ошибок. Опытные разработчики тоже их допускают, но главное — делать выводы и постоянно улучшать свой код.
Нужна помощь с доработкой конфигурации или обучением ваших программистов? Наши эксперты проведут аудит вашего кода и помогут исправить ошибки.
Дмитрий Волков
Ведущий разработчик 1C, опыт 12 лет. Реализовал 200+ проектов. Автор курсов по программированию 1C.