Каждый разработчик 1С стремится сократить время на выполнение рутинных механических операций: копирование и дублирование строк, перемещение по процедурам, генерацию типовых конструкций и обработчиков. В классических средах разработки для этого предусмотрены развитые редакторы макросов или готовые шорткаты. В Конфигураторе 1С платформа предоставляет ограниченный набор встроенных средств, однако ускорить кодинг можно как штатным инструментарием, так и внешними утилитами. Разберем подробно, какие решения существуют, как правильно автоматизировать нажатия клавиш без потери фокуса окна и какие альтернативы доступны разработчикам.
Многие типовые действия, для которых разработчики пытаются писать скрипты, уже встроены в платформу 1С:Предприятие, но не всегда очевидны при беглом знакомстве с интерфейсом:
Если ... КонецЕсли, Цикл ... КонецЦикла, Процедура ... КонецПроцедуры).Процедура (или Функция) до КонецПроцедуры (КонецФункции).Для ускорения написания типовых блоков кода платформа предлагает механизм шаблонов текста. Подключив файл шаблонов, можно по короткому идентификатору и нажатию Ctrl+Q разворачивать объемные фрагменты кода с интерактивной подстановкой параметров.
Разберем пример шаблона для генерации асинхронного оповещения:
СтруктураПараметров = Новый Структура;
ОписаниеОповещения = Новый ОписаниеОповещения("<?"Имя процедуры обработчика">", ЭтотОбъект, СтруктураПараметров);
ПоказатьВопрос(ОписаниеОповещения, "<?>", РежимДиалогаВопрос.ДаНетОтмена, 60);
// Процедура-обработчик результата ответа на вопрос.
&НаКлиенте
Процедура <?"Имя процедуры обработчика">(Знач РезультатВопроса, Знач ДополнительныеПараметры = Неопределено) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
// Обработка ответа "Да"
ИначеЕсли РезультатВопроса = КодВозвратаДиалога.Нет Тогда
// Обработка ответа "Нет"
КонецЕсли;
КонецПроцедуры
Главное ограничение встроенных шаблонов заключается в том, что они вставляют текст строго в позицию курсора. Если шаблон формирует не только тело вызова, но и отдельную процедуру-обработчик, ее приходится вручную вырезать и переносить за пределы текущей процедуры. Кроме того, на современных версиях платформы (начиная с 8.3.18) от создания громоздких процедур-оповещений можно полностью отказаться, используя директиву Асинх и оператор Ждать, что делает код линейным и понятным без вспомогательных шаблонов:
&НаКлиенте
Асинх Процедура ЗадатьВопросПользователю()
Результат = Ждать ВопросАсинх("Продолжить выполнение операции?", РежимДиалогаВопрос.ДаНет);
Если Результат = КодВозвратаДиалога.Да Тогда
// Продолжение выполнения
КонецЕсли;
КонецПроцедуры
Когда штатных горячих клавиш недостаточно, разработчики обращаются к утилитам автоматизации ввода (AutoIt, AutoHotkey). Типичная ошибка начинающих — назначение системного сочетания клавиш Windows на запуск exe-файла скрипта или ярлыка. В этом случае операционная система инициирует запуск нового процесса, фокус ввода уходит из редактора 1С в систему, и эмулируемые нажатия клавиш уходят в пустоту.
Чтобы скрипт работал стабильно и без потери фокуса, применим правильную архитектуру резидентного скрипта:
Готовые наборы скриптов на базе AutoHotkey и OneScript развиваются сообществом и позволяют реализовать расширенные функции: дублирование строк, удаление строки комбинацией Ctrl+Y, автоматическое форматирование и выравнивание кода.
Для глубокой интеграции в Конфигуратор применяются готовые инструменты расширения среды разработки:
Если для комфортной разработки критически важны развитые возможности текстового редактора (мультикурсоры, блочное редактирование, полноценные макросы и гибкий рефакторинг), рассмотрим переход на современные среды разработки: