Как быстро отформатировать код 1С в конфигураторе и привести его к единому стандарту

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Работа в большой команде или поддержка старых конфигураций часто сталкивает разработчика с проблемой «нечитаемого» кода. Отсутствие единого стандарта, написание логики в одну строку или хаотичный регистр ключевых слов (например, конецесли вместо КонецЕсли) существенно замедляют отладку и развитие системы. В этой статье мы подробно рассмотрим, как решить проблему автоматического форматирования, если стандартная комбинация клавиш Alt + Shift + F в конфигураторе 1С оказывается бессильной.

Почему стандартное форматирование в конфигураторе не всегда работает

Прежде всего, проанализируем поведение штатного механизма форматирования 1С. Инструмент, вызываемый через Alt + Shift + F (или меню «Текст — Блок — Форматировать»), предназначен в первую очередь для исправления отступов в начале строк. Он анализирует структуру управляющих конструкций (Если, Для, Пока, Процедура) и выравнивает их по иерархии.

Однако у этого инструмента есть критическое ограничение: он практически никогда не вставляет новые символы переноса строки там, где их нет. Если разработчик написал код в одну строку, например:

Если а = 1 Тогда ии = 3; иначе ее = 66; конецесли;

Конфигуратор воспримет это как одну строку с правильным (нулевым) отступом и оставит её без изменений. Чтобы заставить штатный форматер работать, нам нужно сначала превратить этот текст в многострочный. Рассмотрим, как это сделать эффективно.

Метод 1: Подготовка кода через регулярные выражения (RegEx)

Если нам нужно быстро привести в порядок блок кода прямо в конфигураторе, воспользуемся встроенной функцией замены. Разберем этот алгоритм по шагам:

  1. Выделим нужный фрагмент кода или работаем во всем модуле.
  2. Нажмем Ctrl + H для вызова окна замены.
  3. В поле "Искать" введем символ точки с запятой ;.
  4. В поле "Заменить на" введем ;\r\n. Здесь \r\n — это управляющие символы переноса строки. Важно: убедитесь, что в параметрах поиска включен режим использования регулярных выражений (в разных версиях платформы это может требовать вызова расширенного поиска или использования внешнего редактора).
  5. После того как каждая инструкция окажется на новой строке, выделим весь текст и нажмем Alt + Shift + F.

Теперь конфигуратор увидит структуру и расставит правильные отступы. Однако этот метод не исправляет регистр слов. Для решения задачи «красивого» кода нам потребуются более мощные инструменты.

Метод 2: Использование Visual Studio Code и расширения Language 1C (BSL)

На сегодняшний день использование внешних редакторов является «золотым стандартом» для глубокого рефакторинга кода. Проанализируем, как настроить связку с популярным редактором VS Code.

Рассмотрим последовательность действий:

  1. Установим Visual Studio Code.
  2. В разделе расширений (Extensions) найдем и установим плагин Language 1C (BSL).
  3. Скопируем «плохой» код из конфигуратора 1С и вставим его в новый файл в VS Code.
  4. Убедимся, что тип файла определен как 1C (BSL).
  5. Нажмем Shift + Alt + F (стандартная комбинация форматирования в VS Code).

В отличие от конфигуратора, это расширение обладает встроенным парсером, который понимает синтаксис 1С. Оно автоматически разнесет однострочники по разным строкам, расставит пробелы вокруг операторов сравнения и присваивания, а также исправит регистр ключевых слов. Например, ваш код превратится в:


Если а = 1 Тогда
    ии = 3;
Иначе
    ее = 66;
КонецЕсли;

Метод 3: Специализированная утилита bsl-format (экосистема OneScript)

Если в вашей компании стоит задача привести к единообразию сотни модулей, ручной копипаст не поможет. Выясним, как автоматизировать процесс с помощью OneScript и утилиты bsl-format.

Эта утилита позволяет обрабатывать файлы модулей (.bsl) или выгрузки конфигурации в текстовом виде. Рассмотрим основные возможности этого подхода:

Пример использования через командную строку:

bsl-format -f C:\MyProject\Subsystems\Финансы.bsl -o C:\MyProject\Subsystems\Финансы_Ready.bsl

Метод 4: Форматирование через Enterprise Development Tool (EDT)

Компания 1С предлагает современную среду разработки EDT, построенную на базе Eclipse. Если вы переведете разработку в EDT, проблема форматирования решится сама собой.

Разберем преимущества встроенного форматера EDT:

  1. Профили форматирования: Вы можете создать корпоративный профиль настроек и распространить его среди всех разработчиков.
  2. Автоматическое форматирование при сохранении: Можно настроить среду так, что при каждом нажатии Ctrl + S код будет автоматически «причесываться».
  3. Контекстная коррекция: EDT понимает семантику кода лучше конфигуратора, корректно обрабатывая длинные запросы во временных таблицах и многострочные строки.

Метод 5: Работа в Notepad++ с плагином NppExec

Для любителей легких решений подойдет Notepad++. Чтобы превратить его в полноценный инструмент форматирования 1С, выполним следующие настройки:

  1. Установим плагин NppExec.
  2. Настроим скрипт, который будет передавать текущий текст файла внешней утилите (например, тому же bsl-format).
  3. Или воспользуемся расширенным поиском и заменой с регулярными выражениями.

Посмотрим на пример регулярного выражения для 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. Выбрав один из этих инструментов, вы значительно повысите культуру разработки и упростите жизнь себе и своим коллегам.

← На главную