Как настроить макросы и ускорить редактирование кода в Конфигураторе 1С

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

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

Использование скрытых штатных возможностей редактора 1С

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

  1. Копирование текущей строки целиком: чтобы скопировать строку, в которой установлен курсор, не нужно выделять ее клавишами Shift+Home или мышью. Достаточно снять любое выделение (курсор просто мигает в строке) и нажать сочетание клавиш Ctrl+C. Платформа автоматически помещает в буфер обмена всю текущую строку вместе с символом перевода строки. Затем переходим в нужную позицию и нажимаем Ctrl+V. Стоит учитывать ограничение: этот способ перезаписывает буфер обмена, затирая ранее скопированные фрагменты.
  2. Быстрая навигация по блокам кода: комбинации Ctrl+[ и Ctrl+] выполняют мгновенный переход к парным операторным скобкам (началу или концу блока Если ... КонецЕсли, Цикл ... КонецЦикла, Процедура ... КонецПроцедуры).
  3. Выделение процедуры или функции целиком: установив курсор внутри метода или на его заголовке, нажимаем сочетание клавиш Ctrl+Shift+]. Редактор автоматически выделит весь текст от ключевого слова Процедура (или Функция) до КонецПроцедуры (КонецФункции).
  4. Штатное меню «Сервис — Настройка»: позволяет переназначать горячие клавиши на команды главного меню, панели инструментов или текстового редактора. Однако переназначить микрокоманды работы с текстом (например, отдельное действие «продублировать строку вниз») в этом диалоге нельзя, так как в Конфигураторе отсутствует соответствующий открытый API.

Использование шаблонов текста для автоматической генерации конструкций

Для ускорения написания типовых блоков кода платформа предлагает механизм шаблонов текста. Подключив файл шаблонов, можно по короткому идентификатору и нажатию Ctrl+Q разворачивать объемные фрагменты кода с интерактивной подстановкой параметров.

Разберем пример шаблона для генерации асинхронного оповещения:


СтруктураПараметров = Новый Структура;
ОписаниеОповещения = Новый ОписаниеОповещения("<?"Имя процедуры обработчика">", ЭтотОбъект, СтруктураПараметров);
ПоказатьВопрос(ОписаниеОповещения, "<?>", РежимДиалогаВопрос.ДаНетОтмена, 60);

// Процедура-обработчик результата ответа на вопрос.
&НаКлиенте
Процедура <?"Имя процедуры обработчика">(Знач РезультатВопроса, Знач ДополнительныеПараметры = Неопределено) Экспорт
    Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
        // Обработка ответа "Да"
    ИначеЕсли РезультатВопроса = КодВозвратаДиалога.Нет Тогда
        // Обработка ответа "Нет"
    КонецЕсли;
КонецПроцедуры

Главное ограничение встроенных шаблонов заключается в том, что они вставляют текст строго в позицию курсора. Если шаблон формирует не только тело вызова, но и отдельную процедуру-обработчик, ее приходится вручную вырезать и переносить за пределы текущей процедуры. Кроме того, на современных версиях платформы (начиная с 8.3.18) от создания громоздких процедур-оповещений можно полностью отказаться, используя директиву Асинх и оператор Ждать, что делает код линейным и понятным без вспомогательных шаблонов:


&НаКлиенте
Асинх Процедура ЗадатьВопросПользователю()
    Результат = Ждать ВопросАсинх("Продолжить выполнение операции?", РежимДиалогаВопрос.ДаНет);
    Если Результат = КодВозвратаДиалога.Да Тогда
        // Продолжение выполнения
    КонецЕсли;
КонецПроцедуры

Создание макросов на AutoIt и AutoHotkey: решение проблемы потери фокуса

Когда штатных горячих клавиш недостаточно, разработчики обращаются к утилитам автоматизации ввода (AutoIt, AutoHotkey). Типичная ошибка начинающих — назначение системного сочетания клавиш Windows на запуск exe-файла скрипта или ярлыка. В этом случае операционная система инициирует запуск нового процесса, фокус ввода уходит из редактора 1С в систему, и эмулируемые нажатия клавиш уходят в пустоту.

Чтобы скрипт работал стабильно и без потери фокуса, применим правильную архитектуру резидентного скрипта:

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

Готовые наборы скриптов на базе AutoHotkey и OneScript развиваются сообществом и позволяют реализовать расширенные функции: дублирование строк, удаление строки комбинацией Ctrl+Y, автоматическое форматирование и выравнивание кода.

Специализированные плагины для Конфигуратора

Для глубокой интеграции в Конфигуратор применяются готовые инструменты расширения среды разработки:

  1. Снегопат: расширение, внедряющееся непосредственно в процесс Конфигуратора. Предоставляет доступ к объектной модели редактора через скрипты (JavaScript, VBScript). Позволяет дублировать строки без затирания буфера обмена (по умолчанию назначено на Ctrl+. или Ctrl+D), выполнять умную контекстную подсказку, переходить к определениям и гибко настраивать горячие клавиши на любые действия.
  2. TurboConf: утилита, автоматизирующая работу в Конфигураторе через анализ элементов интерфейса и эмуляцию пользовательских действий. Поддерживает автопереключение раскладки, всплывающие подсказки, генерацию структур данных и пользовательские хоткеи.

Современные альтернативы классическому Конфигуратору

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

  1. 1C:Enterprise Development Tools (1C:EDT): официальная среда на базе Eclipse. Включает продвинутый редактор кода, где дублирование строк выполняется сочетанием Ctrl+Alt+Вниз без задействования буфера обмена, доступны динамические шаблоны с автоподстановкой параметров и полноценный рефакторинг методов.
  2. Редакторы исходного кода (VS Code) с расширениями: при выгрузке конфигурации в файлы исходного кода появляется возможность использовать всю экосистему внешних редакторов: макросы, перемещение строк комбинациями Alt+Стрелки, мультикурсорное редактирование и автоматическую проверку стандартов разработки.
← На главную