К статье
Практический материал

Разработка и Конфигурация · 9 мин

Режимы форматирования текста модулей в 1С:Предприятие

Какие режимы форматирования текста модулей реализованы в 1С:Предприятие: автоматическое форматирование, отступы, выравнивание, настройки конфигуратора и EDT.

Текст программных модулей в 1С:Предприятие — это обычный текст на встроенном языке, и его читаемость напрямую зависит от форматирования: отступов, переносов строк, выравнивания операторов. Конфигуратор и среда 1C:Enterprise Development Tools (EDT) предоставляют несколько режимов автоматического и ручного форматирования, которые помогают поддерживать единый стиль кода в команде.

Под режимами форматирования понимают как встроенные команды редактора модулей (блок, выделенный фрагмент, весь модуль), так и настройки автоотступа, действующие при наборе текста. Понимание того, какой режим когда применять, избавляет от ручного выравнивания пробелами и снижает количество конфликтов при совместной разработке через хранилище конфигурации.

Какие режимы форматирования доступны в редакторе модулей

В конфигураторе 1С:Предприятие редактор модулей поддерживает три базовых режима форматирования. Первый — форматирование всего текста модуля целиком: команда обрабатывает модуль от начала до конца и расставляет отступы в соответствии с синтаксической структурой кода. Второй — форматирование выделенного блока: применяется только к выбранному фрагменту, что удобно при доработке отдельной процедуры в чужом модуле. Третий — автоматический отступ при вводе: редактор сам сдвигает новую строку вправо после открывающих конструкций (Если, Для, Пока, Процедура) и возвращает отступ при закрывающих ключевых словах.

Все три режима опираются на синтаксический анализ встроенного языка: редактор понимает вложенность конструкций и выравнивает код по уровням. Это значит, что форматирование не «ломает» логику — оно меняет только пробельные символы в начале строк и не затрагивает идентификаторы, строковые литералы и комментарии внутри кода.

Как запустить форматирование в конфигураторе

Для форматирования в классическом конфигураторе используется меню «Текст» в верхней панели при открытом модуле. Команда «Форматировать» обрабатывает весь модуль, а «Форматировать выделенное» — только подсвеченный фрагмент. Те же действия доступны через контекстное меню по правой кнопке мыши в тексте модуля.

Как отформатировать модуль в конфигураторе
  1. 1
    Откройте нужный модуль (общий модуль, модуль объекта, формы или команды).
  2. 2
    Чтобы обработать фрагмент, выделите его мышью; для всего модуля выделять ничего не нужно.
  3. 3
    Откройте меню «Текст» и выберите «Форматировать» или «Форматировать выделенное».
  4. 4
    Проверьте результат визуально: отступы должны соответствовать вложенности конструкций.
  5. 5
    Сохраните модуль и при необходимости выполните синтаксическую проверку конфигурации.

После форматирования полезно сразу выполнить проверку модуля через «Конфигурация → Проверка конфигурации» с включённой проверкой логической целостности модулей. Само форматирование не вносит синтаксических ошибок, но проверка позволяет убедиться, что до этого в коде не было незакрытых конструкций — именно они чаще всего приводят к «кривым» отступам после автоматической обработки.

Настройки автоотступа и ширины табуляции

Поведение редактора при наборе текста настраивается через «Сервис → Параметры» на вкладке «Модули». Здесь задаётся ширина табуляции (по умолчанию 4 символа), режим замены табуляции пробелами и параметры автоматического отступа. Выбранные значения влияют и на то, как будет выглядеть код после автоматического форматирования.

Ключевой выбор — табуляция или пробелы. В сообществе разработчиков 1С и в стандартах разработки фирмы «1С» традиционно используется табуляция: она позволяет каждому разработчику видеть отступ удобной ширины, а объём текста модуля остаётся меньше. Смешение табуляции и пробелов в одном модуле — типичная причина «пляшущего» кода, когда у одного разработчика всё выровнено, а у другого строки съезжают.

Форматирование в 1C:Enterprise Development Tools

В EDT форматирование реализовано богаче, чем в классическом конфигураторе. Среда построена на платформе Eclipse, поэтому форматтер настраивается через профили: можно задать правила переноса длинных выражений, расположение скобок, выравнивание параметров методов, поведение пустых строк между процедурами. Профиль форматирования можно сохранить и распространить на всю команду вместе с проектом.

Команда форматирования вызывается через контекстное меню «Source → Format» или сочетанием клавиш (по умолчанию Ctrl+Shift+F, комбинацию можно переназначить в настройках). Форматирование применяется к выделенному фрагменту или ко всему модулю, если ничего не выделено. Кроме того, EDT поддерживает форматирование при сохранении — редактор автоматически приводит код к профилю каждый раз при записи файла.

Конфигуратор и EDT: сравнение режимов

Конфигуратор

Три фиксированных режима (весь модуль, фрагмент, автоотступ), настройка только ширины отступа. Подходит для типовой разработки без жёстких требований к стилю.

EDT

Настраиваемые профили форматирования, форматирование при сохранении, перенос длинных строк. Подходит для командной разработки с единым стандартом кода.

Типичные ошибки при форматировании модулей

Самая частая проблема — форматирование всего модуля в чужом коде при небольшой доработке. Если в хранилище конфигурации или системе контроля версий модуль сравнивается построчно, массовое изменение отступов создаёт сотни «изменённых» строк, и реальная доработка теряется среди них. В таких случаях форматируйте только свой фрагмент либо договоритесь в команде о едином моменте общего переформатирования.

Вторая ошибка — ожидание, что форматирование исправит логические ошибки. Если конструкция «Если...КонецЕсли» не закрыта, редактор выровняет код по фактической структуре, и визуально модуль станет «ступенчатым» — это сигнал искать пропущенное ключевое слово, а не форматировать повторно. Третья типичная ситуация — ручное выравнивание пробелами поверх табуляции: после следующего автоматического форматирования такие «украшения» исчезают, а до него код выглядит по-разному у разных разработчиков.

Типичные ошибки
01
Форматирование всего чужого модуля при точечной доработке — засоряет историю изменений в хранилище и затрудняет код-ревью.
02
Смешение табуляции и пробелов в одном модуле — код «плывёт» при разной ширине табуляции у разработчиков.
03
Попытка исправить «ступенчатые» отступы повторным форматированием вместо поиска незакрытой конструкции.
04
Разные настройки редактора в команде без согласованного стандарта — постоянные косметические конфликты при объединении изменений.

Как проверить результат и поддерживать единый стиль

Результат форматирования проверяется визуально и функционально. Визуально: открывающие и закрывающие конструкции (Если/КонецЕсли, Цикл/КонецЦикла, Процедура/КонецПроцедуры) должны стоять на одном уровне отступа, тело конструкции — на один уровень глубже. Функционально: модуль должен проходить синтаксическую проверку без ошибок, а поведение программы не должно измениться — форматирование не трогает логику.

Контрольные точки

Как проверить результат

Выравнивание парных конструкций
Норма

Если и КонецЕсли стоят на одном уровне отступа

Тревожный признак

Закрывающие слова смещены — вероятна незакрытая конструкция выше

Синтаксическая проверка модуля
Норма

Проверка конфигурации завершается без ошибок модуля

Тревожный признак

Ошибки компиляции — исправьте код до повторного форматирования

Единообразие отступов
Норма

Во всём модуле только табуляция или только пробелы

Тревожный признак

Смешение символов — строки съезжают при другой ширине табуляции

Для поддержания единого стиля в команде зафиксируйте правила в письменном стандарте: ширина отступа, табуляция или пробелы, правила переноса длинных строк, обязательность форматирования перед помещением в хранилище. В EDT стандарт реализуется общим профилем форматирования, в конфигураторе — одинаковыми настройками параметров модулей у каждого разработчика и дисциплиной применения команды «Форматировать выделенное».

Итог

Что важно запомнить

В конфигураторе доступны форматирование всего модуля, выделенного фрагмента и автоотступ при вводе; EDT добавляет настраиваемые профили и форматирование при сохранении. Форматируйте только свои изменения в чужом коде, используйте единый стиль отступов в команде и проверяйте «ступенчатые» отступы как признак незакрытых конструкций.

Частые вопросы

Меняет ли форматирование логику работы программы?

Нет. Форматирование затрагивает только пробельные символы и переносы строк в соответствии с настройками. Идентификаторы, операторы и порядок выполнения кода остаются прежними, поэтому поведение программы не изменяется.

Почему после форматирования код стал «лесенкой»?

Это признак синтаксической проблемы: чаще всего где-то выше не закрыта конструкция (нет КонецЕсли, КонецЦикла или КонецПроцедуры). Редактор выровнял код по фактической структуре. Найдите и исправьте ошибку, затем отформатируйте повторно.

Что лучше использовать для отступов — табуляцию или пробелы?

В экосистеме 1С принята табуляция: она компактнее и позволяет каждому разработчику настроить видимую ширину отступа. Главное правило — не смешивать оба способа в одном модуле и согласовать выбор внутри команды.

Можно ли отформатировать сразу все модули конфигурации?

Штатной команды массового форматирования всех модулей в конфигураторе нет — обработка выполняется по одному модулю. В EDT можно применить форматирование к нескольким выбранным файлам проекта. Перед массовой обработкой оцените последствия для истории изменений в хранилище.

Как сделать, чтобы код форматировался автоматически?

В конфигураторе работает только автоотступ при наборе текста — полного автоформатирования нет. В EDT включите форматирование при сохранении в настройках редактора: тогда каждый сохранённый модуль будет автоматически приводиться к профилю стиля.

Влияют ли настройки форматирования на других разработчиков?

Напрямую нет: параметры редактора хранятся в настройках пользователя, а не в конфигурации. Но результат форматирования попадает в общий код, поэтому при разных настройках в команде возникают косметические конфликты. Решение — единый письменный стандарт или общий профиль форматирования в EDT.