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