Работа в большой команде или поддержка старых конфигураций часто сталкивает разработчика с проблемой «нечитаемого» кода. Отсутствие единого стандарта, написание логики в одну строку или хаотичный регистр ключевых слов (например, конецесли вместо КонецЕсли) существенно замедляют отладку и развитие системы. В этой статье мы подробно рассмотрим, как решить проблему автоматического форматирования, если стандартная комбинация клавиш Alt + Shift + F в конфигураторе 1С оказывается бессильной.
Прежде всего, проанализируем поведение штатного механизма форматирования 1С. Инструмент, вызываемый через Alt + Shift + F (или меню «Текст — Блок — Форматировать»), предназначен в первую очередь для исправления отступов в начале строк. Он анализирует структуру управляющих конструкций (Если, Для, Пока, Процедура) и выравнивает их по иерархии.
Однако у этого инструмента есть критическое ограничение: он практически никогда не вставляет новые символы переноса строки там, где их нет. Если разработчик написал код в одну строку, например:
Если а = 1 Тогда ии = 3; иначе ее = 66; конецесли;
Конфигуратор воспримет это как одну строку с правильным (нулевым) отступом и оставит её без изменений. Чтобы заставить штатный форматер работать, нам нужно сначала превратить этот текст в многострочный. Рассмотрим, как это сделать эффективно.
Если нам нужно быстро привести в порядок блок кода прямо в конфигураторе, воспользуемся встроенной функцией замены. Разберем этот алгоритм по шагам:
Ctrl + H для вызова окна замены.;.;\r\n. Здесь \r\n — это управляющие символы переноса строки. Важно: убедитесь, что в параметрах поиска включен режим использования регулярных выражений (в разных версиях платформы это может требовать вызова расширенного поиска или использования внешнего редактора).Alt + Shift + F.Теперь конфигуратор увидит структуру и расставит правильные отступы. Однако этот метод не исправляет регистр слов. Для решения задачи «красивого» кода нам потребуются более мощные инструменты.
На сегодняшний день использование внешних редакторов является «золотым стандартом» для глубокого рефакторинга кода. Проанализируем, как настроить связку с популярным редактором VS Code.
Рассмотрим последовательность действий:
1C (BSL).Shift + Alt + F (стандартная комбинация форматирования в VS Code).В отличие от конфигуратора, это расширение обладает встроенным парсером, который понимает синтаксис 1С. Оно автоматически разнесет однострочники по разным строкам, расставит пробелы вокруг операторов сравнения и присваивания, а также исправит регистр ключевых слов. Например, ваш код превратится в:
Если а = 1 Тогда
ии = 3;
Иначе
ее = 66;
КонецЕсли;
Если в вашей компании стоит задача привести к единообразию сотни модулей, ручной копипаст не поможет. Выясним, как автоматизировать процесс с помощью OneScript и утилиты bsl-format.
Эта утилита позволяет обрабатывать файлы модулей (.bsl) или выгрузки конфигурации в текстовом виде. Рассмотрим основные возможности этого подхода:
.bsl-format.json можно указать, нужно ли переносить Тогда на новую строку, ставить ли пробел перед скобкой в вызове функции и так далее.сообщить на Сообщить, основываясь на правилах синтаксиса.Пример использования через командную строку:
bsl-format -f C:\MyProject\Subsystems\Финансы.bsl -o C:\MyProject\Subsystems\Финансы_Ready.bsl
Компания 1С предлагает современную среду разработки EDT, построенную на базе Eclipse. Если вы переведете разработку в EDT, проблема форматирования решится сама собой.
Разберем преимущества встроенного форматера EDT:
Ctrl + S код будет автоматически «причесываться».Для любителей легких решений подойдет Notepad++. Чтобы превратить его в полноценный инструмент форматирования 1С, выполним следующие настройки:
NppExec.bsl-format).Посмотрим на пример регулярного выражения для Notepad++, которое поможет разделить слипшийся код:
Найти: (Тогда|Иначе|Цикл|;)
Заменить на: $1\r\n
Это выражение найдет все ключевые слова завершения конструкции и символы завершения инструкции, добавив после них перенос строки. После такой обработки текст готов к финальному выравниванию в конфигураторе.
Чтобы больше не возвращаться к вопросу «как отформатировать», проанализируем превентивные меры:
1. Использование шаблонов текста. Настройте в конфигураторе шаблоны (меню «Сервис — Шаблоны текста»). Например, при вводе если и нажатии Space или Tab, конфигуратор должен сразу разворачивать конструкцию:
Если <?> Тогда
КонецЕсли;
Это приучает разработчиков писать структурированно с самого начала.
2. Настройка автоматических проверок (Linter). Внедрите использование BSL Language Server в процесс разработки. Это позволит подсвечивать нарушения стандартов оформления (например, отсутствие пробелов или неправильный регистр) в реальном времени, аналогично тому, как это делает текстовый редактор с орфографическими ошибками.
3. Использование Git-хуков (Pre-commit). Если вы используете систему контроля версий, можно настроить скрипт pre-commit, который будет автоматически запускать bsl-format для всех измененных файлов. Это гарантирует, что в общее хранилище или репозиторий никогда не попадет небрежно оформленный код.
Мы рассмотрели различные ситуации: от быстрого исправления одной строки в конфигураторе с помощью регулярных выражений до построения полноценного процесса контроля качества кода.
Для разовых задач идеально подходит метод с VS Code или предварительная замена символов ; в конфигураторе. Для системной работы и поддержания порядка в крупном проекте лучшим выбором станет внедрение EDT или использование bsl-format в связке с OneScript. Выбрав один из этих инструментов, вы значительно повысите культуру разработки и упростите жизнь себе и своим коллегам.