Разработка и Конфигурация · 11 мин
Как сгруппировать комментарии в 1С
Как сгруппировать комментарии в 1С с помощью областей #Область, структурировать пояснения в модуле и оформить код так, чтобы его было удобно читать и сворачивать.
Под группировкой комментариев в 1С обычно понимают две задачи: сворачивание логических блоков кода вместе с пояснениями через инструкции препроцессора #Область и структурирование самих комментариев — заголовков процедур, описаний параметров и блоков пояснений. Обе задачи решаются штатными средствами конфигуратора, без внешних обработок.
Грамотно сгруппированные комментарии позволяют быстро ориентироваться в больших модулях: общие модули на несколько тысяч строк без структуры превращаются в нечитаемый текст, а с областями и единым стилем комментариев — в документ, где любой раздел находится за секунды через панель структуры.
Ниже разобраны практические приёмы: создание областей, вложенная группировка, оформление заголовков процедур, работа с горячими клавишами и типичные ошибки, которые ломают структуру модуля.
Что значит «сгруппировать комментарии» в контексте 1С
В конфигураторе 1С нет отдельного механизма «группировки комментариев» как самостоятельных объектов. Комментарий — это просто текст после двойного слеша //, и сам по себе он не сворачивается и не образует иерархию. Поэтому группировка достигается косвенно: комментарии помещают внутрь именованных областей вместе с кодом, к которому они относятся.
Область (#Область ИмяОбласти … #КонецОбласти) — это инструкция препроцессора, которая создаёт в редакторе сворачиваемый блок. Всё, что находится внутри, включая комментарии, процедуры и функции, сворачивается в одну строку с именем области. Именно это и есть основной инструмент группировки.
Вторая составляющая — единый стиль самих комментариев. Когда заголовки процедур оформлены по одному шаблону, а пояснения внутри кода выровнены и сгруппированы по смыслу, модуль читается как структурированный документ, а не как набор разрозненных заметок.
Группировка блоков кода и комментариев через #Область
Базовый синтаксис области прост: открывающая инструкция с именем, содержимое, закрывающая инструкция. Имя области должно отражать содержимое — например, #Область РаботаСДокументами или #Область СлужебныеПроцедуры.
// Раздел содержит функции формирования печатных форм.
#Область ПечатныеФормы
// Возвращает табличный документ счёта на оплату.
//
// Параметры:
// СсылкаНаДокумент - ДокументСсылка.СчетНаОплату.
//
Функция ПечатьСчета(СсылкаНаДокумент) Экспорт
// ...
КонецФункции
#КонецОбласти
Области поддерживают вложенность. Внутри крупного раздела можно выделить подразделы, и они будут сворачиваться независимо друг от друга. Это удобно для больших общих модулей: верхний уровень — предметные разделы, вложенный — группы функций внутри раздела.
- 1Откройте нужный модуль и установите курсор в начало группируемого блока.
- 2Введите #Область и через пробел — осмысленное имя без пробелов (или в кавычках, если пробелы нужны).
- 3Перенесите внутрь области процедуры, функции и относящиеся к ним комментарии.
- 4После последнего элемента блока добавьте строку #КонецОбласти.
- 5Проверьте сворачивание: слева от области появится значок свертки, а в структуре модуля — новый узел.
Быстрый способ — выделить фрагмент кода и использовать команду контекстного меню «Обрамить областью» (в разных версиях платформы название может отличаться: «Создать область»). Конфигуратор сам вставит пару инструкций вокруг выделенного фрагмента, останется только задать имя.
Структурирование комментариев внутри процедур и функций
Внутри области комментарии стоит оформлять по единому шаблону. Распространённая практика — заголовок каждой экспортной процедуры и функции с описанием назначения, параметров и возвращаемого значения. Такой заголовок сам по себе является сгруппированным блоком пояснений.
// Формирует движения по регистру остатков.
//
// Параметры:
// ДокументОбъект - ДокументОбъект.РеализацияТоваров
// Отказ - Булево - признак отмены проведения.
//
// Возвращаемое значение:
// Булево - Истина, если движения записаны успешно.
//
Функция СформироватьДвижения(ДокументОбъект, Отказ)
Внутри тела процедуры длинные алгоритмы разбивайте комментариями-заголовками этапов: одна строка // 1. Проверка заполнения, затем код, затем // 2. Расчёт итогов. Такие маркеры визуально группируют логику, и по ним легко восстановить ход рассуждений при доработке спустя месяцы.
Многострочных комментариев в 1С нет: каждая строка пояснения начинается со своего //. Поэтому длинные описания оформляют «лесенкой» из строк с выравниванием, как в примерах выше. Чтобы быстро закомментировать или раскомментировать блок, выделите строки и нажмите Ctrl + / (в классическом конфигураторе — Ctrl + Num /).
Стандартные области типовых конфигураций
В конфигурациях на Библиотеке стандартных подсистем (БСП) принята унифицированная структура модулей. Если вы дорабатываете типовое решение, придерживайтесь её — тогда ваши комментарии и процедуры окажутся в ожидаемых местах, а обновление конфигурации пройдёт с меньшим числом конфликтов.
| Область | Что размещать |
|---|---|
| ОписаниеПеременных | Переменные модуля с комментариями о назначении |
| ПрограммныйИнтерфейс | Экспортные процедуры и функции с полными заголовками |
| СлужебныйПрограммныйИнтерфейс | Методы для вызова из других подсистем |
| СлужебныеПроцедурыИФункции | Внутренние неэкспортные методы модуля |
| ОбработчикиСобытийФормы | В модулях форм — события ПриСозданииНаСервере и т.п. |
Правило простое: новый экспортный метод помещайте в ПрограммныйИнтерфейс, вспомогательный — в СлужебныеПроцедурыИФункции. Комментарии при этом «переезжают» вместе с кодом, и структура остаётся предсказуемой для любого разработчика, знакомого со стандартами 1С.
Группировка комментариев в запросах и динамических списках
Отдельный случай — комментарии внутри текста запроса. В языке запросов 1С комментарий тоже начинается с //, и длинные запросы выигрывают от группировки: пояснение перед каждой секцией (ВЫБРАТЬ, соединения, условия, итоги) превращает запрос в читаемую структуру.
// Основная выборка по документам за период
ВЫБРАТЬ
Продажи.Номенклатура,
СУММА(Продажи.СуммаОборот) КАК Сумма
ИЗ
РегистрНакопления.Продажи.Обороты(&Начало, &Конец) КАК Продажи
// Группировка по номенклатуре для свёртки итогов
СГРУППИРОВАТЬ ПО
Продажи.Номенклатура
Если речь идёт о «группировке комментариев» в смысле группировки строк с текстовыми примечаниями в отчёте — это решается иначе: через итоги по группировкам в запросе (ИТОГИ ПО) или через настройку группировок в СКД. Комментарий как поле данных можно вывести в ресурсы или в строку группировки, но сам механизм группировки относится к данным, а не к комментариям кода.
Проверка результата и типичные ошибки
После расстановки областей проверьте модуль: откройте панель структуры (в конфигураторе — через меню или сочетание клавиш, зависящее от версии платформы) и убедитесь, что все области отображаются в дереве, сворачиваются и не пересекаются. Каждая #Область должна иметь парную #КонецОбласти — иначе модуль не пройдёт синтаксическую проверку.
Как проверить результат
Ошибок нет, области парные
Ошибка «Ожидается #КонецОбласти» или лишняя закрывающая инструкция
Все области видны деревом, вложенность корректна
Часть кода осталась вне областей или область поглотила лишнее
Каждая область сворачивается в одну строку с именем
Значок свертки отсутствует — инструкция написана с ошибкой
Ещё одна частая проблема — конфликт областей при обновлении типовой конфигурации. Если вы добавили свои области в типовой модуль, при сравнении/объединении они могут «съехать». Безопаснее размещать доработки в отдельных областях с понятным префиксом (например, #Область Доработка_ОбменССайтом), чтобы при обновлении их было легко найти и перенести.
Альтернативы и дополнительные приёмы
Если модуль стал слишком большим и даже области не спасают, правильнее не углублять группировку, а разделить модуль: вынести прикладную логику в отдельные общие модули по предметным областям. Область — это инструмент навигации, а не способ спрятать избыточный объём кода.
В среде разработки EDT (1C:Enterprise Development Tools) механизм областей тот же, но дополнительно доступны удобные средства навигации по структуре и рефакторинга. Если проект ведётся в EDT, группировку областями можно сочетать с outline-панелью, которая показывает дерево областей и методов модуля.
Что важно запомнить
Группировка комментариев в 1С достигается областями #Область/#КонецОбласти, единым шаблоном заголовков процедур и комментариями-маркерами этапов внутри кода. Держите имена областей осмысленными, следуйте стандартной структуре БСП и проверяйте модуль синтаксической проверкой после изменений.
Частые вопросы
Можно ли сворачивать сами комментарии без областей?
Нет, отдельный механизм сворачивания комментариев в конфигураторе отсутствует. Сворачиваются только области, процедуры и функции. Поэтому комментарии группируют вместе с кодом, помещая их внутрь областей или в заголовки методов.
Как быстро закомментировать большой блок кода?
Выделите нужные строки и нажмите Ctrl + / (в классическом конфигураторе — Ctrl + клавиша деления на цифровом блоке). Повторное нажатие снимает комментарий. Это удобно при временном отключении фрагментов при отладке.
Влияют ли области и комментарии на производительность?
Нет. Комментарии и инструкции областей обрабатываются на этапе компиляции модуля и не попадают в исполняемый код. На скорость работы прикладного решения они не влияют.
Как назвать область, если имя содержит пробелы?
Стандартные соглашения рекомендуют имена без пробелов, написанные слитно с заглавных букв (например, СлужебныеПроцедурыИФункции). Такие имена единообразны с типовыми конфигурациями и корректно отображаются в структуре модуля.
Что делать, если после обновления конфигурации мои области пропали?
При объединении модулей добавленные вручную области могут быть замещены типовым вариантом. Восстановите их из выгрузки или копии модуля, сделанной до обновления, и на будущее выносите доработки в отдельные области с уникальным префиксом либо в расширение конфигурации.
Работают ли области в модулях форм и объектов?
Да, инструкции #Область работают в любых модулях: общих, форм, объектов, менеджеров, команд. В модулях форм принято выделять области ОбработчикиСобытийФормы, ОбработчикиКомандФормы и служебные разделы.