Разработка10 марта 20265 мин чтенияАвтор: Эксперт БухАвтомат

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

Разработка на 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.

Полезные статьи раз в неделю

Подпишитесь на рассылку — будем присылать только самое важное