Контекстная подсказка, синтакс-помощник и отладка в Конфигураторе 1С 8.3

· 9 мин

Содержание

Подсказку в Конфигураторе 1С вызывают сочетанием Ctrl+Space прямо в модуле: появится список методов, свойств и объектов, доступных в этом месте кода. Чтобы список всплывал сам, без нажатия клавиш, включите автоматический показ в Сервис → Параметры, вкладка Модули, раздел про контекстную подсказку. Там же задаётся задержка перед появлением списка.

Всё это — функции платформы 1С:Предприятие 8.3, а не конкретной конфигурации. Одинаково работает в Бухгалтерии, ЗУП, УТ и в самописной базе. Если подсказка не появляется даже по Ctrl+Space, дело почти всегда в контексте кода, неизвестном типе переменной или перехвате клавиш другой программой. Разбор таких случаев — в разделе про неполадки.

Где работает подсказка: режимы запуска платформы

У платформы два основных режима, и подсказка по коду есть только в одном из них.

РежимЧто в нём делаютПодсказка по коду
1С:ПредприятиеРабота пользователей: документы, отчёты, справочникиНет, только всплывающие подсказки к полям форм
КонфигураторРазработка: метаданные, модули, формы, макеты, администрирование базыЕсть: контекстная подсказка, синтакс-помощник, шаблоны

Конфигуратор открывают из окна запуска кнопкой Конфигуратор или из командной строки:

"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /F "D:\Base\Buh" /N "Администратор"

Номер платформы в пути подставьте свой. Для клиент-серверной базы вместо /F указывают /S "сервер\имя_базы".

Если работаете в 1С:EDT, а не в Конфигураторе, подсказка там устроена иначе: среда на Eclipse, свои горячие клавиши и более умный вывод типов. Всё ниже относится к классическому Конфигуратору.

После запуска Конфигуратора откройте конфигурацию: Конфигурация → Открыть конфигурацию. Без этого дерево метаданных закрыто, модули недоступны, и подсказывать попросту нечего.

Как включить автоматическую контекстную подсказку

Подсказка по Ctrl+Space работает всегда, её не нужно включать. Настройка нужна для автоматического режима: чтобы после ввода точки или первых букв список открывался сам.

Пошагово

  1. В Конфигураторе откройте Сервис → Параметры.
  2. Перейдите на вкладку Модули.
  3. Найдите группу настроек контекстной подсказки и отметьте флажок автоматического показа при вводе.
  4. Укажите задержку в миллисекундах. Значения около 300–500 мс удобны: список не мелькает при быстром наборе, но и не заставляет ждать.
  5. Нажмите ОК. Перезапуск не нужен, настройка применяется сразу в открытых модулях.

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

Параметры сохраняются в профиле пользователя Windows, а не в базе. На другом компьютере или под другой учётной записью настройку придётся повторить.

Горячие клавиши подсказки

СочетаниеЧто делает
Ctrl+SpaceСписок доступных методов, свойств, переменных и ключевых слов
Ctrl+Shift+SpaceПодсказка по параметрам метода: стоя внутри скобок, видите порядок и типы параметров
Ctrl+F1Открыть синтакс-помощник на слове под курсором
F12Перейти к определению процедуры или функции
Ctrl+F7Синтаксический контроль текущего модуля

Внутри скобок вызова Ctrl+Shift+Space полезнее обычной подсказки. Например, у СтрНайти( сразу видно, что третьим параметром идёт направление поиска, а не начальная позиция.

Синтаксический контроль и запуск отладки

Подсказка помогает писать, а синтаксический контроль и отладчик — проверять написанное. Их часто путают с подсказкой, потому что всё живёт в одном редакторе.

Проверка синтаксиса

  • 🔎 Один модуль — Ctrl+F7 или команда синтаксического контроля в контекстном меню модуля. Ошибки выводятся в окно служебных сообщений, двойной щелчок переводит к строке.
  • 🗂 Вся конфигурация — Конфигурация → Проверка конфигурации. В окне отметьте нужные проверки: синтаксический контроль модулей в режимах клиента и сервера, логическую проверку, поиск некорректных ссылок.
  • 💾 При сохранении — Конфигуратор сам проверяет модуль и предупреждает, если в нём есть ошибки. Сохранить с ошибкой можно, но обновить конфигурацию базы данных не получится.

Проверка всей конфигурации с режимами «Тонкий клиент», «Веб-клиент» и «Сервер» ловит то, что не видит проверка одного модуля: обращение к серверному методу из клиентской процедуры.

Отладка

  1. Поставьте точку останова на нужной строке: F9 или щелчок по серой полосе слева от кода.
  2. Запустите Отладка → Начать отладку (F5). Откроется 1С:Предприятие, уже подключённое к отладчику.
  3. Выполните в программе действие, которое доходит до этой строки. Конфигуратор остановит выполнение.
  4. Дальше шагайте: F11 — с заходом в процедуру, F10 — без захода, Shift+F11 — выйти из процедуры.
  5. Значение переменной видно при наведении курсора, а полностью — в окне Табло или по Shift+F9 (вычисление выражения).

Подключиться к уже запущенному сеансу можно через Отладка → Подключение. Для серверного кода в клиент-серверной базе отладка должна быть разрешена на сервере: служба агента 1С запускается с ключом -debug.

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

В точке останова доступна подсказка по Ctrl+Space в окне вычисления выражения. Это удобный способ посмотреть, какие свойства есть у объекта прямо во время выполнения.

Как сделать, чтобы подсказка знала тип переменной

Конфигуратор подсказывает только то, что может вывести из кода. Он понимает тип, если переменная получена конструктором Новый или из метода платформы с известным результатом:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура";
РезультатЗапроса = Запрос.Выполнить();   // тип известен
Выборка = РезультатЗапроса.Выбрать();    // после точки будет Следующий(), Ссылка и др.

А вот с параметрами процедур и результатами своих функций сложнее. Внутри Процедура Обработать(ДокументОбъект) Конфигуратор не знает, что пришло в параметр, и после точки покажет пустой или общий список.

Приём «Если Ложь Тогда»

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

Процедура ЗаполнитьТовары(ДокументОбъект) Экспорт

	Если Ложь Тогда
		ДокументОбъект = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
	КонецЕсли;

	Для Каждого Строка Из ДокументОбъект.Товары Цикл
		// здесь подсказка уже знает реквизиты табличной части
	КонецЦикла;

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

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

Комментарий-описание параметров

Опишите параметры процедуры по стандарту комментариев 1С: блок Параметры: с типом после имени. EDT использует эти описания для подсказки, а в Конфигураторе они хотя бы видны во всплывающем описании метода при вызове.

// Заполняет табличную часть товарами из заказа.
//
// Параметры:
//  ДокументОбъект - ДокументОбъект.РеализацияТоваровУслуг - заполняемый документ.
//  Заказ          - ДокументСсылка.ЗаказКлиента - основание.
//
Процедура ЗаполнитьПоЗаказу(ДокументОбъект, Заказ) Экспорт

Синтакс-помощник и справка по встроенному языку

Синтакс-помощник — встроенный справочник по языку и объектам платформы. Он отвечает на вопрос «что вообще есть у этого объекта», когда контекстная подсказка молчит.

  • 📖 Открыть целиком: Справка → Синтакс-помощник.
  • 🎯 Открыть на слове под курсором: Ctrl+F1.
  • 🔍 Найти по названию: строка поиска в верхней части окна принимает русские и английские имена (СтрНайти и StrFind).

Для каждого метода синтакс-помощник показывает:

  1. синтаксис и все варианты вызова;
  2. параметры с типами и признаком обязательности;
  3. возвращаемое значение;
  4. доступность: тонкий клиент, веб-клиент, сервер, мобильное приложение;
  5. версию платформы, начиная с которой метод появился.

Пункт про доступность самый практичный. Если метод помечен как серверный, в процедуре с директивой &НаКлиенте подсказка его не покажет, а вызов не пройдёт проверку синтаксиса.

Номер версии в карточке метода помогает, когда код пишут для базы на старой платформе. Сравнивайте однозначно: метод доступен, если номер вашей платформы не ниже указанного.

Для объектов конкретной конфигурации, например справочника «Номенклатура», синтакс-помощник не нужен: их реквизиты и методы видно в дереве метаданных и в контекстной подсказке.

Подсказки для новых объектов и реквизитов

Здесь две разные «подсказки», и обе нужны разработчику.

Подсказка по коду для нового объекта

Добавили справочник, реквизит или табличную часть — Конфигуратор сразу видит их в коде. После Справочники. новый справочник появится в списке без сохранения и без обновления базы данных. Если не появился:

  • проверьте, что объект действительно добавлен в дерево, а не остался в незакрытом окне свойств;
  • проверьте директиву компиляции процедуры: менеджеры Справочники, Документы, РегистрыСведений недоступны на клиенте, в &НаКлиенте их нет в подсказке;
  • закройте и снова откройте модуль, если он был открыт до добавления объекта.

Подсказка для пользователя в форме

У каждого реквизита в палитре свойств есть свойство Подсказка. Текст оттуда пользователь увидит в режиме 1С:Предприятие рядом с полем. Заполните его для нестандартных реквизитов, особенно тех, где легко ошибиться с форматом:

РеквизитПример текста подсказки
Код подразделения по ОКТМО8 или 11 цифр, без пробелов
Дата начала действияС этой даты новые цены попадают в документы
Признак «Не выгружать»Документ не уйдёт в обмен с сайтом

Как именно показывать текст — всплывающей подсказкой, кнопкой со знаком вопроса или строкой под полем — задаёт свойство Отображение подсказки у элемента формы. Подсказку, заданную у реквизита в метаданных, форма подхватывает автоматически; у элемента формы её можно переопределить.

Почему не появляется подсказка в Конфигураторе

Сначала нажмите Ctrl+Space вручную. Если вручную список появляется, а сам — нет, причина в настройках автоматического показа. Если не появляется и вручную, ищите по таблице ниже.

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

Запуск со сбросом кэша выглядит так:

"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /F "D:\Base\Buh" /ClearCache

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

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

Если в коде есть синтаксическая ошибка выше курсора, например незакрытое Если или лишняя кавычка, подсказка может работать неправильно до конца модуля. Нажмите Ctrl+F7: после исправления ошибки список обычно появляется снова.

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

Почему после имени общего модуля не видно моей процедуры?
В подсказку попадают только процедуры и функции с ключевым словом Экспорт. Ещё проверьте флажки модуля: если у него не отмечен «Клиент (управляемое приложение)», в клиентском коде его методов не будет.
Работает ли подсказка в модуле внешней обработки?
Да. Откройте файл .epf через Файл → Открыть в Конфигураторе: подсказка покажет объекты той конфигурации, которая открыта в этом же окне.
Почему в Конфигураторе подсказка беднее, чем в EDT?
EDT строит типы по описаниям параметров и по всей конфигурации сразу. Конфигуратор выводит тип в основном из присваиваний в текущем модуле.
Есть ли подсказка в тексте запроса?
Внутри строки — нет. Откройте конструктор запроса через контекстное меню на тексте запроса: там поля таблиц выбираются из списка.
Влияет ли включённая автоподсказка на работу пользователей?
Нет. Настройка хранится в профиле разработчика и касается только редактора Конфигуратора.