Как сделать раскрывающийся комментарий и группировку кода в 1С

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

При работе с объемными модулями в 1С:Предприятие разработчики часто сталкиваются с проблемой «громоздкого» кода. Огромные тексты запросов, длинные описания алгоритмов или закомментированные фрагменты кода могут занимать сотни строк, затрудняя чтение основной логики процедуры. В этой статье мы подробно разберем, как реализовать раскрывающиеся (сворачиваемые) блоки кода и комментариев, чтобы сделать работу в конфигураторе более комфортной, применяя стандарты и методики разработки конфигураций 1С.

Использование директив группировки: #Область и #КонецОбласти

Наиболее правильным и универсальным способом создания сворачиваемых блоков внутри программных модулей 1С является использование специальных препроцессорных директив #Область (Region) и #КонецОбласти (EndRegion). Рассмотрим, почему этот метод считается эталонным.

Проанализируем синтаксис этого механизма. Директива позволяет объединить произвольный фрагмент кода (даже если он находится внутри тела функции) в именованный блок, который можно свернуть одним нажатием на «плюсик» слева от номера строки. Это особенно полезно, когда нужно спрятать большой текст запроса, который в данный момент не требует редактирования. Чтобы быстро привести структуру модуля в порядок, можно использовать инструмент для анализа и автоматического редактирования модулей, который помогает канонизировать оформление по стандартам 1С.

Рассмотрим пример того, как правильно оформить такой блок:


#Область ТекстЗапросаДляБудущихДоработок
// Здесь располагается ваш большой запрос
// Который занимает много места
// И его нужно скрыть
ТекстЗапроса = "ВЫБРАТЬ * ИЗ Справочник.Номенклатура";
#КонецОбласти

Важно отметить несколько технических нюансов работы с областями:

  1. Вложенность: Мы можем создавать вложенные области. Это позволяет выстраивать иерархическую структуру кода, где общие логические блоки содержат внутри себя более мелкие подсистемы.
  2. Имя области: После ключевого слова #Область обязательно должно следовать имя. Оно может быть любым, но лучше использовать понятные названия, которые будут видны в свернутом состоянии.
  3. Поддержка платформой: Полноценная поддержка областей внутри процедур появилась в платформе 8.3. В более старых версиях (например, 8.2) области работали преимущественно вне процедурного блока.

Настройка автоматической группировки комментариев в Конфигураторе

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

Разберем по шагам, как включить группировку комментариев в Конфигураторе:

  1. Откройте меню Сервис и выберите пункт Параметры.
  2. В появившемся окне перейдите на закладку Модули, а затем в подраздел Группировка.
  3. Найдите в списке опцию Комментарии и установите напротив неё флажок.
  4. Обратите внимание на пункт Комментарии областей — он отвечает за отображение пояснительного текста рядом со свернутой областью.

Важное ограничение: Проанализируем работу синтаксического анализатора 1С. В классическом Конфигураторе группировка обычных комментариев (зеленый текст) работает только в том случае, если они находятся вне тела процедур и функций. Внутри метода платформа отдает приоритет отображению исполняемого кода, поэтому обычные многострочные комментарии там сворачиваться не будут.

Альтернативные методы и «хитрости» группировки

Иногда разработчики прибегают к нестандартным методам, чтобы добиться сворачивания кода внутри функций, если использование #Область по каким-то причинам не подходит. Рассмотрим ситуацию, когда нужно скрыть большой кусок «мертвого» кода.

Один из таких методов — оборачивание кода в логическое условие, которое никогда не выполнится. Поскольку условия в 1С всегда имеют узел группировки, этот блок можно будет свернуть.


Если Ложь Тогда
    // Здесь лежит портянка кода, 
    // которую мы хотим скрыть от глаз,
    // но не хотим удалять
КонецЕсли;

Внимание: Мы крайне не рекомендуем использовать этот метод в промышленной разработке. С точки зрения чистоты кода (Clean Code), наличие конструкций Если Ложь Тогда считается «антипаттерном». Такой код путает коллег и может привести к ошибкам при анализе логики модуля. Для выявления подобных проблем и повышения качества разработки лучше использовать статический анализатор кода проектов или проводить регулярный анализ конфигураций на наличие ошибок. Если вам действительно нужно скрыть текст, используйте #Область.

Группировка в современной среде разработки 1C:EDT

Если ваша команда перешла на использование 1C:EDT (Enterprise Development Tool), то возможности управления отображением текста значительно расширяются. В отличие от старого Конфигуратора, EDT построена на базе Eclipse, что дает гораздо более гибкий механизм фолдинга (сворачивания).

В EDT мы можем:

Рекомендации по хранению больших запросов и закомментированного кода

Выясним, как профессиональные разработчики 1С (уровня 1С:Эксперт) рекомендуют поступать с громоздкими конструкциями, которые «мозолят глаза».

Проанализируем ситуацию: у вас есть запрос на 200 строк. Оставлять его в коде, даже под областью — не всегда лучшее решение. Рассмотрим более элегантные варианты:

  1. Вынос в Макеты: Создайте у объекта (обработки или документа) макет с типом Текстовый документ. Поместите туда ваш запрос. В коде вызывайте его через ЭтотОбъект.ПолучитьМакет("ИмяМакета").ПолучитьТекст(). Это полностью очистит программный модуль от строковых портянок.
  2. Использование хранилища: Если код закомментирован «на всякий случай», помните, что для этого существует история версий в Хранилище конфигурации. Вы всегда сможете вернуться к старой версии модуля и скопировать нужный фрагмент. Хранить «мертвый» код в рабочих модулях — плохая практика.
  3. Стандарт аннотаций: Для описания функций используйте три слэша ///. Это не только позволяет сворачивать описание, но и помогает другим разработчикам видеть описание параметров при наведении курсора на вызов функции.

Подведем итог: для создания раскрывающегося комментария внутри кода 1С используйте директиву #Область. Для настройки общего поведения редактора не забудьте заглянуть в параметры группировки модулей. И всегда стремитесь к тому, чтобы ваш код был лаконичным, а вспомогательные данные (такие как тексты запросов) хранились в предназначенных для этого местах, например, в макетах.

← На главную