Вопрос оформления программного кода и текстов запросов в среде 1С всегда вызывает жаркие дискуссии. С одной стороны, аккуратно оформленный запрос с выровненными синонимами и логичными отступами гораздо легче читать. С другой стороны, использование стандартного конструктора запросов может мгновенно уничтожить все «ручные» правки, превратив текст в стандартное полотно. Разберем детально, какие инструменты существуют для автоматизации этого процесса, почему «красота» может быть вредной и как найти баланс между удобством чтения и простотой сопровождения кода.
Для большинства разработчиков основным инструментом остается штатный конструктор запросов. Проанализируем его поведение: при сохранении изменений конструктор автоматически пересобирает текст запроса согласно внутренним правилам платформы. Он приводит ключевые слова к верхнему регистру, расставляет отступы и переносы строк.
Основные плюсы штатного конструктора:
Однако у конструктора есть существенные недостатки, которые заставляют программистов искать альтернативы. Рассмотрим их. Во-первых, конструктор безвозвратно удаляет комментарии внутри текста запроса. Это критично для сложных алгоритмов, где пояснения необходимы для понимания логики. Во-вторых, он не всегда справляется с «красивым» выравниванием синонимов (алиасов) по правой стороне, что делает список полей в секции ВЫБРАТЬ менее читаемым.
Важный аспект, который мы должны учитывать при выборе стиля форматирования, — это последующая поддержка кода. Если один разработчик навел «красоту» вручную (выровнял запятые, добавил пустые строки), а второй открыл этот запрос конструктором, то при сравнении модулей (например, в Git или через стандартное «Сравнение/Объединение») система покажет 100% изменений в тексте запроса. Проанализируем ситуацию: среди сотен строк визуальных изменений будет крайне сложно найти ту единственную логическую правку (например, изменение условия в ГДЕ), которую реально внес коллега.
Именно поэтому многие опытные разработчики рекомендуют не увлекаться ручным форматированием после конструктора. Чтобы минимизировать проблемы при сравнении в Git, можно использовать специальные параметры, игнорирующие изменения пробелов:
git diff -Xignore-all-space
git diff -Xignore-space-change
Существуют ситуации, когда мы вынуждены писать и форматировать запросы руками, так как стандартный конструктор просто не может их «переварить». Рассмотрим примеры таких конструкций:
ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_Данные ИЗ &Т КАК Т;
Такой запрос успешно выполнится объектом Запрос, но конструктор выдаст ошибку.
ВЫРАЗИТЬ().В таких случаях ручное форматирование становится единственным выходом. Рекомендуется придерживаться стандартов 1С: каждое поле и каждое условие — с новой строки, ключевые слова — капсом.
Для тех, кто не готов мириться с ограничениями штатных средств, существуют внешние инструменты. Рассмотрим наиболее популярные из них:
Это мощный набор инструментов, который включает в себя собственную консоль запросов и форматтер. Проанализируем его преимущества:
ALT + SHIFT + F.Современная среда разработки на базе Eclipse предлагает гораздо более гибкие настройки форматтера. Выясним, что она дает уже сегодня:
Легендарный инструмент для обычного Конфигуратора, который умеет делать «красивости» в коде: выравнивание по знаку равенства, по запятым и другие манипуляции, упрощающие визуальное восприятие текста.
Рассмотрим по шагам, как стоит подходить к оформлению запроса, чтобы он оставался читаемым и удобным в поддержке:
ВТ1 используем ВТ_ОстаткиНоменклатуры. Префикс ВТ_ помогает сразу понять, что работа идет с временной таблицей.
ВЫБРАТЬ
Продажи.Номенклатура КАК Номенклатура,
Продажи.КоличествоОборот КАК Количество,
Продажи.СуммаОборот КАК Сумма
ИЗ
РегистрНакопления.Продажи.Обороты(&Начало, &Конец) КАК Продажи
Многие разработчики сегодня предпочитают копировать текст запроса в Visual Studio Code, форматировать его там с помощью плагинов для BSL и возвращать обратно. Это позволяет использовать всю мощь современных форматтеров, таких как bsl-language-server, который поддерживает строгие стандарты оформления и позволяет настраивать даже такие мелочи, как положение запятой (в начале или в конце строки).
Подводя итог, можно сказать: для простых и средних задач штатный конструктор — лучший выбор из-за его предсказуемости. Для сложных системных запросов, требующих пояснений и специфического синтаксиса, стоит использовать инструменты автоматизации типа ИР или внешние форматтеры в связке с Git-настройками, игнорирующими пробелы.