К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как закомментировать код в 1С: полное руководство

Как закомментировать строку и блок кода в 1С: символ //, горячие клавиши Ctrl+Num /, закомментированный запрос и код в макетах. Примеры, ошибки и советы.

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

Знание синтаксиса комментариев нужно не только программистам. Бухгалтер или внедренец, который открывает модуль в конфигураторе для поиска причины ошибки, тоже сталкивается с закомментированными строками и должен понимать, что они означают и как они влияют (точнее, не влияют) на работу программы.

Ниже разобраны базовый синтаксис, горячие клавиши для массового комментирования, особенности комментариев в запросах, текстовых макетах и правилах обмена, а также типичные ошибки, из-за которых «закомментированный» код продолжает выполняться.

Базовый синтаксис комментария в 1С

Комментарий обозначается двумя символами косой черты — //. Всё, что находится правее этих символов до конца строки, компилятор игнорирует. Комментарий может занимать строку целиком или стоять после исполняемого кода в той же строке.

// Это комментарий на всю строку

СуммаДокумента = Количество * Цена; // расчёт без учёта скидки

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

Платформа подсвечивает комментарии отдельным цветом (по умолчанию — серым или зелёным в зависимости от настроек), поэтому визуально отличить их от исполняемого кода несложно. Цвет можно изменить в настройках конфигуратора: меню «Сервис» → «Параметры» → вкладка «Модули» → «Цвета».

Как закомментировать несколько строк сразу

В языке 1С нет блочных комментариев вида / ... /, как в C или SQL. Чтобы отключить фрагмент из нескольких строк, каждую из них нужно пометить символами //. Делать это вручную долго, поэтому в конфигураторе предусмотрены специальные команды.

Стандартная последовательность: выделить нужные строки мышью или клавишами Shift + стрелки, затем нажать комбинацию Ctrl + Num / (клавиша деления на цифровом блоке клавиатуры). Перед каждой выделенной строкой появятся символы //. Повторное нажатие той же комбинации снимает комментарий.

Как закомментировать блок кода
  1. 1
    Откройте модуль в конфигураторе и найдите нужный фрагмент кода.
  2. 2
    Выделите одну или несколько строк мышью или клавишами Shift + стрелки.
  3. 3
    Нажмите Ctrl + Num / либо кнопку «Закомментировать» на панели инструментов редактора модуля.
  4. 4
    Убедитесь, что перед каждой строкой появились символы // и цвет текста изменился.
  5. 5
    Для возврата кода в работу выделите тот же фрагмент и нажмите Ctrl + Num / повторно (раскомментирование).

Если на клавиатуре нет цифрового блока (ноутбуки с компактной раскладкой), используйте меню «Текст» → «Блок» → «Добавить комментарий» / «Удалить комментарий» или соответствующие кнопки на панели инструментов редактора. В некоторых версиях платформы сочетание работает и с обычной клавишей «/» рядом с правым Shift.

Комбинация работает только в редакторе модулей конфигуратора. В текстовых полях режима «Предприятие» (например, в консоли кода) горячие клавиши редактора модулей могут не действовать — там комментарии ставят вручную.

Комментарии в тексте запроса

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

Запрос.Текст =

"ВЫБРАТЬ

| Товары.Номенклатура КАК Номенклатура, // основное поле выборки

| Товары.Количество КАК Количество

|ИЗ

| РегистрНакопления.ТоварыНаСкладах КАК Товары";

Важный нюанс: если поставить // перед строкой многострочного литерала запроса целиком, закомментируется только физическая строка модуля, а не часть запроса. Чтобы отключить условие внутри запроса, символы // ставят внутри самого текста запроса — после вертикальной черты.

Конструктор запроса при пересборке текста может удалить комментарии, расставленные внутри запроса вручную. Если пояснения к запросу важны, дублируйте их обычным комментарием встроенного языка перед присваиванием Запрос.Текст = ....

Комментарии в макетах, СКД и других местах

Комментарий // работает только там, где есть встроенный язык или язык запросов. В других объектах конфигурации правила иные, и попытка использовать // по привычке приводит к ошибкам или лишнему тексту в выводе.

В текстовых макетах и шаблонах печатных форм символы // не являются комментарием: они выведутся в итоговый документ как обычный текст. Если нужно оставить служебную пометку в макете, её размещают в отдельной именованной области, которую код никогда не выводит, либо хранят пояснения в свойствах объекта.

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

В правилах конвертации данных и обработчиках, написанных на встроенном языке, комментарии // работают как обычно. А вот в произвольных алгоритмах на встроенном языке внутри типовых планов обмена комментарии тоже поддерживаются, поскольку код исполняется тем же компилятором.

Комментарии и директивы компиляции

Директивы препроцессора #Если Сервер Тогда ... #КонецЕсли и инструкции &НаКлиенте внешне похожи на комментарии, но ими не являются. Это управляющие конструкции, которые определяют, в каком контексте код компилируется и выполняется. Закомментировать директиву символами // нельзя точно так же, как обычную строку, — это частая причина синтаксических ошибок.

Если нужно временно отключить процедуру, обёрнутую в директиву &НаСервере, корректный путь — закомментировать тело процедуры вместе с заголовком, а директиву либо оставить, либо перенести внутрь закомментированного блока целиком. Смешанные варианты, где директива активна, а процедура закомментирована наполовину, приводят к ошибкам «Ожидается определение процедуры».

Типичные ошибки
01
Постановка // только перед первой строкой многострочного выражения: остальные строки продолжают выполняться, и поведение программы меняется непредсказуемо.
02
Попытка закомментировать директиву &НаСервере или #Если — возникает синтаксическая ошибка при проверке модуля.
03
Использование // в текстовом макете печатной формы: символы попадают в готовый документ и видны пользователю.
04
Забытый закомментированный код в рабочей базе: фрагмент не выполняется, и смежная логика (например, расчёт итогов) даёт неверный результат.
05
Комментарий внутри запроса теряется после пересборки текста конструктором запроса.

Как проверить результат и не сломать конфигурацию

После массового комментирования всегда запускайте синтаксическую проверку модуля: меню «Конфигурация» → «Проверка конфигурации» или клавиша F7 для проверки текущего модуля. Проверка покажет разорванные конструкции — например, если закомментировано начало цикла, а его конец остался активным.

Перед отключением кода в рабочей базе убедитесь, что фрагмент не вызывается из других мест. Удобный приём — поиск по имени процедуры через «Правка» → «Глобальная замена» в режиме поиска: так видно все точки вызова. Закомментированная процедура, на которую остались ссылки, вызовет ошибку «Процедура или функция с указанным именем не определена» при первом же обращении.

Работайте с изменениями через механизм расширений или хотя бы сохраняйте копию конфигурации (cf-файл) перед правками. Откатить случайно закомментированный и сохранённый код без резервной копии бывает затруднительно, особенно если изменений было много.

Контрольные точки

Как проверить результат

Синтаксическая проверка модуля (F7)
Норма

Ошибок нет, модуль компилируется

Тревожный признак

Сообщения о незакрытых конструкциях «КонецЕсли», «КонецЦикла»

Цвет закомментированных строк
Норма

Весь отключённый фрагмент подсвечен цветом комментария

Тревожный признак

Часть строк осталась цветом исполняемого кода

Поведение программы после изменений
Норма

Отключённый фрагмент не влияет на результат, смежная логика работает

Тревожный признак

Появились ошибки «процедура не определена» или неверные расчёты

Правила хорошего тона в комментариях

Комментарий должен объяснять «почему», а не «что». Фраза // увеличиваем счётчик на 1 рядом со строкой Сч = Сч + 1 не несёт пользы. Полезный комментарий поясняет неочевидное решение: причину обхода типового механизма, особенность данных конкретного заказчика, ссылку на задачу в системе учёта.

Закомментированный код не должен копиться в модуле бессрочно. Если фрагмент отключён окончательно, его лучше удалить — история изменений хранится в хранилище конфигурации или внешней системе контроля версий. Мёртвый код затрудняет чтение и вводит в заблуждение при поиске.

Принятый в практике формат пометок: // TODO — запланированная доработка, // FIXME — известная проблема, требующая исправления. Многие редакторы и инструменты анализа кода распознают эти маркеры и собирают их в отдельный список задач.

При передаче доработок коллегам удобно помечать изменённые места единым префиксом, например // ИЗМ(Иванов): причина правки. Глобальный поиск по такому префиксу мгновенно показывает все точки вмешательства в типовой код.
ПЗ
Практическое замечание
Итог

Что важно запомнить

Комментарий в 1С — это // до конца строки, блочного синтаксиса нет. Массовое комментирование делается через Ctrl + Num /, проверка результата — синтаксической проверкой модуля. Директивы компиляции и текстовые макеты комментируются иначе или не комментируются вовсе.

Частые вопросы

Можно ли закомментировать часть строки в середине выражения?

Нет. Символы // действуют от места постановки до конца строки, поэтому «выключить» середину выражения нельзя — только всё, что правее. Если нужно исключить часть условия, перепишите выражение на несколько строк и закомментируйте нужную целиком.

Почему Ctrl + Num / не работает на ноутбуке?

На компактных клавиатурах цифровой блок может быть совмещён с другими клавишами и требовать Fn. Проверьте режим NumLock или используйте меню «Текст» → «Блок» → «Добавить комментарий» и кнопки на панели инструментов редактора модуля.

Замедляют ли комментарии работу программы?

Нет. Комментарии отбрасываются на этапе компиляции модуля и в исполняемый код не попадают. Их количество влияет только на читаемость и размер исходного текста, но не на скорость выполнения.

Как закомментировать условие внутри запроса, не ломая его?

Поставьте // внутри текста запроса перед нужной строкой, после символа вертикальной черты. Учтите, что конструктор запроса при пересборке текста может удалить такие комментарии, поэтому важные пояснения дублируйте обычным комментарием перед присваиванием текста запросу.

Чем опасно комментирование кода в типовой конфигурации?

Изменённый объект снимается с полной поддержки поставщика, что усложняет автоматическое обновление на новые релизы. Кроме того, при обновлении правку легко потерять. Предпочтительный способ доработки — расширение конфигурации.

Можно ли найти все закомментированные фрагменты в конфигурации?

Да, через глобальный поиск (Ctrl + Shift + F) по строке «//» с областью поиска по всем модулям конфигурации. Результатов будет много, поэтому на практике ищут по специальным маркерам вроде TODO или собственных префиксов изменений.