Комментирование блока кода в 1С 8.3: Конфигуратор, EDT, запросы и расширения

· 9 мин

Содержание

Чтобы закомментировать несколько строк в Конфигураторе 1С, выделите их мышью или клавишами Shift+↓ и нажмите Ctrl + / на цифровом блоке клавиатуры (Ctrl+Num/). Снять комментарий — Ctrl+Shift+Num/. Те же команды есть в меню Текст → Блок → Добавить комментарий и Удалить комментарий.

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

Горячие клавиши для блока строк в Конфигураторе

В языке 1С есть только один вид комментария — однострочный. Он начинается с двух косых черт // и действует до конца строки. Блочных комментариев вроде /* ... */ в языке нет.

Поэтому «закомментировать несколько строк» — это поставить // в начало каждой из них. Вручную это делать незачем, платформа умеет сама.

Пошагово

  1. Откройте модуль в Конфигураторе.
  2. Выделите нужные строки. Захватывать строку целиком не обязательно: достаточно, чтобы выделение касалось хотя бы одного символа в первой и последней строке.
  3. Нажмите Ctrl+Num/ — клавиша / справа, на цифровом блоке.
  4. В начале каждой выделенной строки появится //, текст станет зелёным.

Чтобы вернуть код, выделите те же строки и нажмите Ctrl+Shift+Num/. Платформа уберёт по одной паре // в начале каждой строки. Если строка была закомментирована дважды, комментарий останется — нажмите сочетание ещё раз.

Сводная таблица команд редактора

ДействиеКлавишиМеню
💬 Закомментировать блокCtrl+Num/Текст → Блок → Добавить комментарий
↩️ Раскомментировать блокCtrl+Shift+Num/Текст → Блок → Удалить комментарий
➡️ Сдвинуть блок вправоTabТекст → Блок → Сдвинуть вправо
⬅️ Сдвинуть блок влевоShift+TabТекст → Блок → Сдвинуть влево
🧹 Отформатировать блокAlt+Shift+FТекст → Блок → Форматировать

Те же команды доступны из контекстного меню: щёлкните правой кнопкой по выделенному тексту и откройте подменю Блок. Это самый надёжный путь, если сочетание клавиш «молчит».

Как закомментировать код на ноутбуке без цифрового блока

Обычная клавиша / рядом с правым Shift для этой команды не подходит. Платформа ждёт именно / с цифрового блока, а на компактных клавиатурах его нет.

Рабочие варианты:

  • 📋 Меню или контекстное меню. Текст → Блок → Добавить комментарий. Медленнее, зато работает везде.
  • ⌨️ Встроенный цифровой блок ноутбука. На многих моделях он включается сочетанием Fn + NumLock (иногда Fn + F11 или отдельной клавишей). Тогда / переезжает на одну из клавиш правой половины — обычно на неё нанесён второй символ мелким шрифтом. Порядок зависит от производителя, ищите его в инструкции к ноутбуку.
  • 🖥️ Экранная клавиатура Windows. Запустите osk через Win+R, в параметрах включите цифровую клавиатуру и нажмите Ctrl и / мышью.
  • 🔁 Внешняя USB-клавиатура или отдельный цифровой блок — если код приходится писать каждый день.
  • 🛠️ Программа переназначения клавиш (например, AutoHotkey). Ей можно поручить отправлять Ctrl+Num/ по любому удобному сочетанию, только назначьте его так, чтобы не перехватить системные клавиши.

Если вы работаете с Конфигуратором через удалённый рабочий стол, часть сочетаний может перехватывать клиент RDP или программа на вашем компьютере. Проверьте, срабатывает ли команда из меню: если да — дело в клавишах, а не в базе.

Комментарии в EDT и VS Code

В 1С:Enterprise Development Tools работают привычные для среды Eclipse сочетания. Ctrl+/ переключает комментарий у выделенных строк: если строки не закомментированы — ставит //, если закомментированы — снимает. Здесь подходит обычная клавиша / на основной части клавиатуры.

В VS Code с расширением для языка 1С (BSL) действует стандартное сочетание редактора — тоже Ctrl+/. Его поведение одинаково для всех языков, которые поддерживает VS Code.

СредаЗакомментироватьСнять комментарий
Конфигуратор 8.3Ctrl+Num/Ctrl+Shift+Num/
EDTCtrl+/ (переключает)Ctrl+/
VS Code + BSLCtrl+/ (переключает)Ctrl+/

Синтаксис комментария во всех средах один и тот же — //. Код, закомментированный в EDT, после выгрузки в конфигурацию выглядит в Конфигураторе точно так же.

Особенности комментирования в разных модулях

Сами // везде одинаковы. Различаются последствия: что именно отключится, когда вы уберёте строки из работы.

Модуль управляемой формы

Над каждой процедурой формы стоит директива компиляции: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Это обычная строка, и её легко случайно задеть выделением.

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

Общие модули

Здесь место выполнения задаётся не директивами, а флажками в свойствах модуля: Клиент (управляемое приложение), Сервер, Вызов сервера и другие. Комментарий в тексте на них не влияет.

Отдельно следите за экспортными методами. Закомментировали Функция ... Экспорт — все модули, которые её вызывают, перестанут проходить синтаксическую проверку.

Инструкции препроцессора

Блоки #Если Сервер Тогда ... #КонецЕсли и #Область ... #КонецОбласти комментируются так же, через //. Но парность обязательна: закомментировали #Область — закомментируйте и её #КонецОбласти, иначе модуль не скомпилируется.

Текст запроса

В языке запросов 1С тоже работают комментарии //. Если запрос открыт в консоли или в конструкторе, выделенные строки комментируются тем же Ctrl+Num/.

Если запрос записан строкой прямо в модуле, ставьте // после вертикальной черты:

Запрос.Текст =
"ВЫБРАТЬ
|	Номенклатура.Ссылка КАК Ссылка,
|	Номенклатура.Наименование КАК Наименование
|//	, Номенклатура.Артикул КАК Артикул
|ИЗ
|	Справочник.Номенклатура КАК Номенклатура";

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

Расширения конфигурации

Если вы адаптируете типовой метод через расширение с аннотацией &ИзменениеИКонтроль, не комментируйте типовые строки через //. Для этого в расширениях есть отдельные инструкции:

&ИзменениеИКонтроль("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	#Удаление
	Элементы.Склад.Видимость = Ложь;
	#КонецУдаления

	#Вставка
	Элементы.Склад.Видимость = Истина;
	#КонецВставки

КонецПроцедуры

Блок #Удаление убирает типовой код, #Вставка добавляет ваш. Остальной текст метода должен совпадать с типовым: на этом построен контроль. Когда поставщик изменит метод в новом релизе, платформа сообщит о расхождении, и вы увидите, что доработку пора проверить.

Комментарии к объектам метаданных

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

Как заполнить:

  1. В дереве конфигурации выделите объект или реквизит.
  2. Откройте палитру свойств (Alt+Enter или двойной щелчок).
  3. Найдите свойство Комментарий и впишите пояснение.

Что сюда писать:

  • 📌 зачем добавлен объект и по какой задаче;
  • 📌 откуда берутся данные реквизита — заполняется вручную, обменом или обработкой;
  • 📌 для доработок типовой конфигурации — пометку, что объект ваш, а не поставщика.

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

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

Закомментированный код и пояснения к коду — разные вещи. Первый со временем должен исчезнуть, вторые остаются и помогают разобраться.

Описание над процедурой и функцией

В типовых конфигурациях принят единый формат описания метода. Его стоит повторять и в своих доработках:

// Возвращает остаток товара на складе на указанную дату.
//
// Параметры:
//  Номенклатура - СправочникСсылка.Номенклатура - товар.
//  Склад        - СправочникСсылка.Склады - склад.
//  Дата         - Дата - момент, на который считается остаток.
//
// Возвращаемое значение:
//  Число - количество в базовых единицах.
//
Функция ОстатокНаСкладе(Номенклатура, Склад, Дата) Экспорт

Комментарий должен стоять вплотную над объявлением, без пустой строки. Тогда Конфигуратор показывает его во всплывающей подсказке, когда вы набираете вызов функции в другом модуле, а EDT умеет проверять, что описанные параметры совпадают с объявленными.

Правила, которые экономят время команде

  • ✅ Пишите, зачем сделано, а не что делает строка. «Счётчик +1» бесполезен, «пропускаем помеченные на удаление: их не выгружает обмен с сайтом» — полезно.
  • ✅ Помечайте доработки: автор, дата, номер задачи. Например: // Иванов 12.03 задача 4512: добавлен отбор по складу. По этой метке находят свои изменения при обновлении типовой.
  • ✅ Временные отключения подписывайте: // ВРЕМЕННО до 01.11: не формировать проводки по НДС. Без такой метки чужой закомментированный код никто не решится удалить.
  • ✅ Используйте #Область для группировки: ПрограммныйИнтерфейс, СлужебныйПрограммныйИнтерфейс, СлужебныеПроцедурыИФункции. Области сворачиваются, а модуль читается по оглавлению.
  • ❌ Не храните в модуле крупные куски старого кода «на всякий случай». Если конфигурация в хранилище или в Git, старая версия и так сохранится в истории.

Найти все свои пометки в конфигурации можно глобальным поиском: Правка → Глобальный поиск, строка поиска — например, ВРЕМЕННО или ваша фамилия.

Перед помещением модуля в хранилище
Выполнено: 0 / 5

Почему комментирование не срабатывает или ломает модуль

Диагностика: выберите симптом

Правку в рабочей базе делайте только после выгрузки конфигурации в файл .cf или помещения изменений в хранилище. Сохранение модуля и обновление конфигурации базы данных при работающих пользователях может потребовать их переподключения.

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

Есть ли в 1С многострочный комментарий, как /* */ в других языках?
Нет. Язык 1С поддерживает только однострочный комментарий //. Блок из нескольких строк комментируется построчно — платформа делает это сама по Ctrl+Num/.
Можно ли поставить комментарий в конце строки с кодом?
Да. Всё, что после //, игнорируется до конца строки: Сумма = Цена * Количество; // без НДС. Единственное исключение — // внутри строкового литерала в кавычках, там это обычные символы.
Влияют ли комментарии на скорость работы 1С?
Нет. Комментарии отбрасываются при компиляции модуля и не выполняются. На размер выгрузки они влияют, на скорость кода — нет.
Сохраняются ли комментарии при обновлении типовой конфигурации?
В объектах, снятых с поддержки или изменённых, ваши строки участвуют в сравнении и объединении как обычный код. Если при объединении выбрать «брать из конфигурации поставщика», комментарии в этом модуле пропадут. Поэтому доработки удобнее держать в расширении или помечать так, чтобы их было легко найти.
Видит ли пользователь комментарии из кода?
Нет. Код и комментарии видны только в Конфигураторе и EDT. Пользователю показываются подсказки элементов формы и свойство Подсказка реквизитов.