Разработка и Конфигурация · 9 мин
Режимы форматирования текста модулей в 1С:Предприятие
Какие режимы форматирования текста модулей реализованы в 1С:Предприятие: автоматическое форматирование, отступы, выравнивание, настройки конфигуратора и EDT.
Текст программных модулей в 1С:Предприятие — это обычный текст на встроенном языке, и его читаемость напрямую зависит от форматирования: отступов, переносов строк, выравнивания операторов. Конфигуратор и среда 1C:Enterprise Development Tools (EDT) предоставляют несколько режимов автоматического и ручного форматирования, которые помогают поддерживать единый стиль кода в команде.
Под режимами форматирования понимают как встроенные команды редактора модулей (блок, выделенный фрагмент, весь модуль), так и настройки автоотступа, действующие при наборе текста. Понимание того, какой режим когда применять, избавляет от ручного выравнивания пробелами и снижает количество конфликтов при совместной разработке через хранилище конфигурации.
Какие режимы форматирования доступны в редакторе модулей
В конфигураторе 1С:Предприятие редактор модулей поддерживает три базовых режима форматирования. Первый — форматирование всего текста модуля целиком: команда обрабатывает модуль от начала до конца и расставляет отступы в соответствии с синтаксической структурой кода. Второй — форматирование выделенного блока: применяется только к выбранному фрагменту, что удобно при доработке отдельной процедуры в чужом модуле. Третий — автоматический отступ при вводе: редактор сам сдвигает новую строку вправо после открывающих конструкций (Если, Для, Пока, Процедура) и возвращает отступ при закрывающих ключевых словах.
Все три режима опираются на синтаксический анализ встроенного языка: редактор понимает вложенность конструкций и выравнивает код по уровням. Это значит, что форматирование не «ломает» логику — оно меняет только пробельные символы в начале строк и не затрагивает идентификаторы, строковые литералы и комментарии внутри кода.
Как запустить форматирование в конфигураторе
Для форматирования в классическом конфигураторе используется меню «Текст» в верхней панели при открытом модуле. Команда «Форматировать» обрабатывает весь модуль, а «Форматировать выделенное» — только подсвеченный фрагмент. Те же действия доступны через контекстное меню по правой кнопке мыши в тексте модуля.
- 1Откройте нужный модуль (общий модуль, модуль объекта, формы или команды).
- 2Чтобы обработать фрагмент, выделите его мышью; для всего модуля выделять ничего не нужно.
- 3Откройте меню «Текст» и выберите «Форматировать» или «Форматировать выделенное».
- 4Проверьте результат визуально: отступы должны соответствовать вложенности конструкций.
- 5Сохраните модуль и при необходимости выполните синтаксическую проверку конфигурации.
После форматирования полезно сразу выполнить проверку модуля через «Конфигурация → Проверка конфигурации» с включённой проверкой логической целостности модулей. Само форматирование не вносит синтаксических ошибок, но проверка позволяет убедиться, что до этого в коде не было незакрытых конструкций — именно они чаще всего приводят к «кривым» отступам после автоматической обработки.
Настройки автоотступа и ширины табуляции
Поведение редактора при наборе текста настраивается через «Сервис → Параметры» на вкладке «Модули». Здесь задаётся ширина табуляции (по умолчанию 4 символа), режим замены табуляции пробелами и параметры автоматического отступа. Выбранные значения влияют и на то, как будет выглядеть код после автоматического форматирования.
Ключевой выбор — табуляция или пробелы. В сообществе разработчиков 1С и в стандартах разработки фирмы «1С» традиционно используется табуляция: она позволяет каждому разработчику видеть отступ удобной ширины, а объём текста модуля остаётся меньше. Смешение табуляции и пробелов в одном модуле — типичная причина «пляшущего» кода, когда у одного разработчика всё выровнено, а у другого строки съезжают.
Форматирование в 1C:Enterprise Development Tools
В EDT форматирование реализовано богаче, чем в классическом конфигураторе. Среда построена на платформе Eclipse, поэтому форматтер настраивается через профили: можно задать правила переноса длинных выражений, расположение скобок, выравнивание параметров методов, поведение пустых строк между процедурами. Профиль форматирования можно сохранить и распространить на всю команду вместе с проектом.
Команда форматирования вызывается через контекстное меню «Source → Format» или сочетанием клавиш (по умолчанию Ctrl+Shift+F, комбинацию можно переназначить в настройках). Форматирование применяется к выделенному фрагменту или ко всему модулю, если ничего не выделено. Кроме того, EDT поддерживает форматирование при сохранении — редактор автоматически приводит код к профилю каждый раз при записи файла.
Конфигуратор и EDT: сравнение режимов
Три фиксированных режима (весь модуль, фрагмент, автоотступ), настройка только ширины отступа. Подходит для типовой разработки без жёстких требований к стилю.
Настраиваемые профили форматирования, форматирование при сохранении, перенос длинных строк. Подходит для командной разработки с единым стандартом кода.
Типичные ошибки при форматировании модулей
Самая частая проблема — форматирование всего модуля в чужом коде при небольшой доработке. Если в хранилище конфигурации или системе контроля версий модуль сравнивается построчно, массовое изменение отступов создаёт сотни «изменённых» строк, и реальная доработка теряется среди них. В таких случаях форматируйте только свой фрагмент либо договоритесь в команде о едином моменте общего переформатирования.
Вторая ошибка — ожидание, что форматирование исправит логические ошибки. Если конструкция «Если...КонецЕсли» не закрыта, редактор выровняет код по фактической структуре, и визуально модуль станет «ступенчатым» — это сигнал искать пропущенное ключевое слово, а не форматировать повторно. Третья типичная ситуация — ручное выравнивание пробелами поверх табуляции: после следующего автоматического форматирования такие «украшения» исчезают, а до него код выглядит по-разному у разных разработчиков.
Как проверить результат и поддерживать единый стиль
Результат форматирования проверяется визуально и функционально. Визуально: открывающие и закрывающие конструкции (Если/КонецЕсли, Цикл/КонецЦикла, Процедура/КонецПроцедуры) должны стоять на одном уровне отступа, тело конструкции — на один уровень глубже. Функционально: модуль должен проходить синтаксическую проверку без ошибок, а поведение программы не должно измениться — форматирование не трогает логику.
Как проверить результат
Если и КонецЕсли стоят на одном уровне отступа
Закрывающие слова смещены — вероятна незакрытая конструкция выше
Проверка конфигурации завершается без ошибок модуля
Ошибки компиляции — исправьте код до повторного форматирования
Во всём модуле только табуляция или только пробелы
Смешение символов — строки съезжают при другой ширине табуляции
Для поддержания единого стиля в команде зафиксируйте правила в письменном стандарте: ширина отступа, табуляция или пробелы, правила переноса длинных строк, обязательность форматирования перед помещением в хранилище. В EDT стандарт реализуется общим профилем форматирования, в конфигураторе — одинаковыми настройками параметров модулей у каждого разработчика и дисциплиной применения команды «Форматировать выделенное».
Что важно запомнить
В конфигураторе доступны форматирование всего модуля, выделенного фрагмента и автоотступ при вводе; EDT добавляет настраиваемые профили и форматирование при сохранении. Форматируйте только свои изменения в чужом коде, используйте единый стиль отступов в команде и проверяйте «ступенчатые» отступы как признак незакрытых конструкций.
Частые вопросы
Меняет ли форматирование логику работы программы?
Нет. Форматирование затрагивает только пробельные символы и переносы строк в соответствии с настройками. Идентификаторы, операторы и порядок выполнения кода остаются прежними, поэтому поведение программы не изменяется.
Почему после форматирования код стал «лесенкой»?
Это признак синтаксической проблемы: чаще всего где-то выше не закрыта конструкция (нет КонецЕсли, КонецЦикла или КонецПроцедуры). Редактор выровнял код по фактической структуре. Найдите и исправьте ошибку, затем отформатируйте повторно.
Что лучше использовать для отступов — табуляцию или пробелы?
В экосистеме 1С принята табуляция: она компактнее и позволяет каждому разработчику настроить видимую ширину отступа. Главное правило — не смешивать оба способа в одном модуле и согласовать выбор внутри команды.
Можно ли отформатировать сразу все модули конфигурации?
Штатной команды массового форматирования всех модулей в конфигураторе нет — обработка выполняется по одному модулю. В EDT можно применить форматирование к нескольким выбранным файлам проекта. Перед массовой обработкой оцените последствия для истории изменений в хранилище.
Как сделать, чтобы код форматировался автоматически?
В конфигураторе работает только автоотступ при наборе текста — полного автоформатирования нет. В EDT включите форматирование при сохранении в настройках редактора: тогда каждый сохранённый модуль будет автоматически приводиться к профилю стиля.
Влияют ли настройки форматирования на других разработчиков?
Напрямую нет: параметры редактора хранятся в настройках пользователя, а не в конфигурации. Но результат форматирования попадает в общий код, поэтому при разных настройках в команде возникают косметические конфликты. Решение — единый письменный стандарт или общий профиль форматирования в EDT.