gifts2017

Расширяем конфигуратор без Снегопата и ТурбоКонфа

Опубликовал Сергей (ret-Phoenix) в раздел Программирование - Инструментарий

Набор скриптов с использованием Autohotkey позволяет упросить работу в конфигураторе. Часть функционала дублирует возможности снегопата/турбоконфа, часть уникальна.

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

Теперь не требуется регистрация каких-либо dll, в поставку входит OneScript


Если кто желает присоединиться к разработке / просмотреть историю изменений / скачать последнюю версию - добро пожаловать:

https://github.com/ret-Phoenix/v8CfgAddsAhk


Важно: имеется возможность перенастроить горячие клавиши, для этого редактируется файл v8CfgAdds.ahk

Реализованные функции

Работа с метаданными:

- Навигация по метаданным: {ctrl + shift +j}

- Навигация по входящим в объект типам: {ctrl + j}

- Поиск метаданных по имени: {Ctrl+k}

Работа с методами:

- Вызов списка методов: {ctrl +1}

- Переход в начало метода: {Ctrl+b}

- Переход в конец метода: {Ctrl+e}

- Препроцессор метода: {Alt+7}

- Переход в процедуру: {ctrl+enter}

- Возврат на предыдущую позицию: {Alt,-}


Прочие операции с текстом:

- Поиск с рег.выражениями: {Alt+f}

- Поиск с рег.выражениями (результат последнего поиска): {Alt+r}

- Выбор ранее набранных слов + Выбор заранее заготовленных слов\фраз (файл words.txt в корне директории скриптов): {ctrl+w}

- Переход по областям: {Ctrl+2}

- Закоментировать строку: {ctrl + / (ctrl + .)}

- Развернуть модуль: {ctrl+i}

- Удаление строки: {Ctrl+y}

- Авторские комментарии:

- блок добавлен: {alt+a}

- блок изменен: {alt+e}

- блок удален: {alt+d}

- Cимвол '<': {Ctrl-,}

- Cимвол '>': {Ctrl-.}

- Cимвол '|': {Ctrl-\}

- Cимвол '&': {Ctrl-&}

- Cимвол '[': {Alt-[}

- Cимвол ']': {Alt-]}

- Копирование текущей строки и вставка в следующей: {ctrl+d}

- Добавление ссылки на основной реквизит в модуле (преобразование модуля формы из обычных форм в управляемые): {Alt+h}

- Генератор кода для объектов метаданных (требуется предварительная генерация файла структуры обработкой v8CfgAddsAhk\ext\ПолучениеСтруктуры.epf): {Alt+g}

- Выделение в верхний регистр

- Выделение в нижний регистр

- Выделение в нормальный регистр

- Выравнять по равно

- Выравнять по первой запятой

- Выравнять по выбранному значению

- Очистить модуль (убирает комментарии (исключения в скрипте), лишние пустые строки (оставляет только 1 пустую), убирает пробелы в конце строк)

- Убрать пробелы на конце строк

- Установка/Удаление '|'

- Показать последний список выбора {shift + alt + r}

- Обрамление выделенного текста конструкциями:

- Если ... Тогда

- Пока .. Цикл

- Для По Цикл

- Для каждого Из Цикл

- Попытка .. Исключение

- Область

- Автозамена:

Переменная ++

Переменная +=

Переменная --

Переменная -=



Прочие скрипты:

- Открытие внешних отчетов/обработок, файлов конфигурации: {Ctrl + 3}

- Менеджер скриптов (обработка выделенного блока, автоматическое добавление скриптов из папки auto): {Ctrl + shift + m}:

- Пример работы с меню {Win + X}:

- Быстрый выбор:

- КонецЕсли;

- КонецЦикла;

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

- КонецФункции

- Выравнивание выделения по знаку равно

 

Новое 2016/05/20

- Переход в начало метода: {Ctrl+b}

- Переход в конец метода: {Ctrl+e}

- Переход по областям: {Ctrl+2}

- Поиск метаданных по имени: {Alt+j}

- Cимвол '&': {Ctrl-&}

- Cимвол '[': {Alt-[}

- Cимвол ']': {Alt-]}


Новое 2016/06/06

- Убрана привязка к svcsvs.dll. Выбор из списка осуществляется через спец.приложение на C#: SelectValueSharp.exe.


Новое 2016/06/07

- Навигация по метаданным: {ctrl + shift +j}

- Навигация по входящим в объект типам: {ctrl + j}

 

Новое 2016/06/08

- Стабилизировал навигацию по метаданным.

- Выделение в верхний регистр

- Выделение в нижний регистр

- Выделение в нормальный регистр

- Выравнять по равно

- Выравнять по первой запятой

- Выравнять по выбранному значению

- Очистить модуль (убирает комментарии (исключения в скрипте), лишние пустые строки (оставляет только 1 пустую), убирает пробелы в конце строк)

- Убрать пробелы на конце строк

- Пример испльзования других скриптовых движков (Python, PHP, 1Script)


Новое 2016/06/10

- Автоматический поиск скриптов в папке auto (найденные скрипты вызываются через менеджер скриптов)

- Обрамление выделенного текста конструкциями:

- Если ... Тогда

- Пока .. Цикл

- Для По Цикл

- Для каждого Из Цикл

- Попытка .. Исключение

 

Новое 2016/06/15

- Полная реструктуризация скриптов (разложил по папочкам)

- Обрамление выделенного текста конструкциями - добавил Область

- Автозамена:

- Переменная ++

- Переменная +=

- Переменная --

- Переменная -=

- Переписаны с JS на 1script:

- Добавить/Удалить перенос строк

- Авторские комментарии

- Навигация по модулю

- Список методов

- Список областей

- Переход в начало метода

- Переход в конец метода

- Поиск с рег.выражениями

- Внешние файлы (ускорена работа)

- Менеджер скриптов (доступны обе версии, для 1script надо побороть появление консольного окна)

- Показать последний список выбора {shift + alt + r}

- Пример работы с меню {Win + X}:

- Быстрый выбор:

- КонецЕсли;

- КонецЦикла;

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

- КонецФункции

- Выравнивание выделения по знаку равно

Установка

Установить Autohotkey (http://www.autohotkey.com/)

Запуск

Необходимо преключиться на Eng раскадку (хоткеи написаны без скан кодов и аналогов на Rus раскладке)

v8CfgAddsAhk\v8CfgAdds.ahk (Основной набор скриптов)

v8CfgAddsAhk\continueRow.ahk (Операции по переносу комментариев, строк). Автор ADirks

 

При желании можно сделать exe файл, инструмент включен в Autohotkey.

 

Как это работает

При помощи Autohotkey назначаются управляющие сочитания клавиш (хоткеи). На языке Autohotkey описываются действия посылаемые платформе: оправляются нажатия клавиш, получается текст из буфера, читаются и записываются файлы.


Разберем работу скриптов на основе вызова списка методов (процедур/функций):

1. Получаем текст модуля (шлем Ctrl+A и Ctrl+ins)

2. Записываем полученный в буфер обмена текст в служебный файл (tmp\module.1s)

3. Запускаем скрипт парсинга модуля

4. Полученный список методов записываем во временный файл

5. Запускаем приложение выбора из списка: SelectValueSharp

6. Получаем номер строки выбранной функции (указывается в списке выбора перед названием метода) и возвращаем в ahk

7. AHK вызывает хоткей перехода к строке (Ctrl + G) и вставляет номер строки, полученный при выборе метода, подтверждает переход к строке

 

Для обмена между скриптами текстом используются текстовые файлы. Скрипты читают файл источник, обрабатывают и перезаписывают файл, который потом считывается ahk в буфер обмена и вставляется стандартным способом (Ctrl + V).

Используя менеджер скриптов можно обрабатывать выделенный фрагмент кода. При использовании менеджера текст берется в буфер, обрабатывается выбранным скриптом и не снимая выделения вставляется результат. 

Скрипты находящиеся в папке auto добавляются в список выбора менеджера, при этом подразумевается что никаких входящих параметров скриптам передевать не надо. Если требуется организовать выбор или ввод данных для автоскрипта используется внешнее приложение, в поставку входит пример: auto\ОбрамлениеКода.os. Выбор обрамления происходит вызовом приложения SelectValueSharp.

К автоматически добавляемым относятся файлы с раширением: os, js


Примеры

Список процедур + переход к процедуре

Список процедур + переход к процедуре

 

Поиск с регулярными выражениями

Поиск с регулярными выражениями

 

Генератор кода

Генератор кода

 

Команды препроцессора + Авторские комментарии

Команды препроцессора + Авторские комментарии

 

Навигация по метаданным

 

Навигация по входящим в объект типам

Скачать файлы

Наименование Файл Версия Размер
Набор скриптов 61
.zip 2,24Mb
15.06.16
61
.zip 1 2,24Mb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Гость 30.03.15 13:05
кроме снегопада есть http://infostart.ru/public/137124/
Faster поддерживает любую версию 1С (сколько бы их не выходило:) )

2. Сергей (ret-Phoenix) 30.03.15 13:22
(1) Функционал практически не пересекается с Faster. Скрипты заточены под работу именно с 1С, например процедуры/функции модуля, генераторы кода. этого нет в Faster, Поиск работает тоже иначе. Оба продукта дополняют друг друга, нежели заменяют.
3. Гость 30.03.15 13:34
(2) ret-Phoenix, Возможно и дополняют (в Faster горячие клавиши можно настроить аналогично статье).
Но не об этом я хочу сказать...
Мне одно не понятно: неужели так тяжело компании 1С внедрить многие подобные вещи в саму платформу?
Например, в выборе процедур хоть немного расширить функционал (фильтр по типу сделать и т.п.)
За столько платформ сделали только быстрый поиск по конфе (уже прогресс :) ).
корум; alest; artbear; marsohod; DrAku1a; so-quest; dj_serega; +7 Ответить
4. tixis1c tixis1c (qwed557) 30.03.15 15:21
Что то не регистрируются библиотеки, Win7 prof 32 bit, что не так?
5. Сергей (ret-Phoenix) 30.03.15 15:28
Регистрацию необходимо делать с правами администратора (обычная ситуация для Win 7 и выше): Пуск - Выполнить - regsvr32 <путь к dll>
6. tixis1c tixis1c (qwed557) 30.03.15 15:30
Ну да оказывается надо было запустить из под админа
7. Сергей (ret-Phoenix) 30.03.15 15:41
(6) Внешне ничего не изменится в конфигураторе. При вызове хоткеев будут появляться различные окна, отвечающие за тот или иной функционал, хоткеи описаны в статье, при желании их можно переопределить, подправив файл v8CfgAdds.ahk. Могу записать видео, но не знаю как здешние админы к этому отнесутся. Ссылку на github запретили размещать, пришлось слепок выкладывать.
8. tixis1c tixis1c (qwed557) 30.03.15 16:00
(7) ret-Phoenix, с этим разобрался, не могу понять как структуру файла создать, запустил обработку, ПолучениеСтруктуры.epf, сохранил в файл в папку conf, при нажатии альт+g выходи ошибка файл не найден
9. Сергей (ret-Phoenix) 30.03.15 16:10
(7) Какая ошибка? Может регистрация dll не прошла?

В режиме 1C Предприятие - v8CfgAddsAhk\ext\ПолучениеСтруктуры.epf
В поле файл указать место расположения генерируемого файла: v8CfgAddsAhk\configs\myCfg.txt

Alt + G - вызов меню генератора.
Конфигурация по умолчанию - указываем какой файл будет использоваться для генератора
Объект метаданных - выбор объекта метаданных для которого требуется сделать генерацию.

Почему может вылетать ошибка при нажатии Alt +G не знаю, ни на одной из моих машин проблем не было.
10. zhuravlik (unichkin) 31.03.15 00:48
Установил autohotkei, зарегистрировал библиотеки - все прошло хорошо. "continueRow.ahk" - запустился нормально, а при запуске "v8CfgAdds.ahk" - вышло несколько окон с сообщением типа "the hotkey ... will not be active..." (скрин1), насколько понял что-то нужно вам в скриптах подкрутить. Потом увидел что в трее висит нечто зеленое, попробовал ctrl+1, получил скрин2. Стоит win7 64.
(7) Нормально относятся к видео, вот например StartManager - уже давно видео висит.
Замечательная идея, особенно конструктор) Есть некоторая тоска по опенконфу, хоть уже и привык к штатному редактору. Спасибо вам)
Прикрепленные файлы:
11. Сергей (ret-Phoenix) 31.03.15 02:22
(10) По запуску скриптов, есть особенность Ahk - раскладка клавиатуры должна быть Eng. Скан коды не использовал, не столь удобно, посмотрю, может что иначе сделаю.
Ошибка вывалилась скорее всего потому что не прошла регистрация dll.
12. eugenie zheludkov (eugeniezheludkov) 31.03.15 02:36
первое впечатление:
Порог вхождения. т.е инструкция по установке не полная "зарегистрировать в системе" укажите, что это regsvr32 или как еще ну или bat файл рядом приложите. желательно описать источник откуда взяты эти dll, а то 1 апреля близко и доверять каким то там dll :)
13. Сергей (ret-Phoenix) 31.03.15 02:46
(12) Ресурс и материал в первую очередь для ИТ, как мне кажется ИТ специалист должен знать как регистрируется DLL (regsvr32). если кто знаком с Опенконф - думаю узнает эти dll )
Похоже действительно придется описывать все более подробно (
14. Иван Иванов (Famza) 31.03.15 08:54
Согласен с (10), таки опенконф весьма полезен был. А к автору вопрос - можнли хоть часть скриптов из опенконфа прикрутить для Autohotkey - никто не пробовал? Хотя и шаблоны в 8ке не чета 7.7
15. zhuravlik (unichkin) 31.03.15 09:36
(11) ret-Phoenix, судя по виндовым сообщениям регистрация прошла успешно. Чему еще верить, как не им?..
16. Сергей (ret-Phoenix) 31.03.15 10:29
(14) Можно, например авторские комментарии, поиск с рег.выражениями, генератор кода от туда, немного адаптировал и все.
(15) по коду там: var choicer = new ActiveXObject("SvcSvc.Service"); Попробуй где-нить отдельно создать этот объект и вызвать его метод
Насчет видео - постараюсь сегодня сделать. Только определюсь какой программой записывать видео чтобы события клавиатуры фиксировались

17. Головаченко Дима (Smaylukk) 31.03.15 14:39
По своему опыту скажу - AHK хорошая штука, но сам инструмент надо сделать компактным. Тоже в свое время сделал для себя утилиту на нем. Только вот AHK позволяет сделать EXE-шник, который проще с собой таскать, ведь не всегда работаешь на одном месте - иногда приходится работать в другом месте и таскать за собой такой набор - еще то удовольствие.
Поэтому имеет смысл сделать Portable или Lite версию в виде EXE. А на основной машине уже запустить полный комплект.
Но за работу однозначно плюс.
18. Сергей (ret-Phoenix) 31.03.15 14:44
(17) Собрать в exe проблем не составляет, это родной механизм, выложил именно как ahk чтобы можно было перенастроить под себя хоткеи да и допилить функционал, может кто что придумает и захочет сделать )

За хорошие слова - спасибо)
NN2P; alexinzaz; pumbaE; +3 Ответить
19. Алексей (ADirks) 01.04.15 12:33
я бы ещё добавил

;символ '[' по Ctrl-[
$^SC01A::Send [
;символ ']' по Ctrl-]
$^SC01B::Send ]
;символ '&' по Ctrl-&
$^SC008::Send &
20. Валерий (VV) 01.04.15 14:21
Привет авторам! Давненько переписывались, еще со времен Телепата с Интелом.
Я тут пересаживаюсь на 8-ку, обнаружил, что дело живо и продолжается. Т.к. Снегопат на 8.3 только поднимается, наткнулся на эту тему.
ДЛЛ зарегил из под учетки админа (винда 8.1. Х64), скрипты запустил, в трее висят.
Но при Цтрл+1 -

Что не так сделал?
21. Валерий (VV) 01.04.15 17:39
(19) ADirks,
;символ '&' по Ctrl-&
$^SC008::Send &

Штатно Альт+38 - тоже удобно.
22. Сергей (ret-Phoenix) 01.04.15 19:04
Удалил у себя регистрацию dll после этого тоже перестало работать. Повозившись получилось, но не ясно почему так

регистрируем обычным образом: %windir%\sysWOW64\ <путь к>\v8CfgAddsAhk\system\svcsvc.dll

заходим в: Панель управления\Все элементы панели управления\Программы по умолчанию\Настройка сопоставлений
для .js выбираю программу: c:\WINDOWS\SysWOW64\cscript.exe

После этого работает.
23. Алекс Ю (AlexO) 02.04.15 10:58
Жизнь без Снегопата
Звучит как "Все, конец всему, и медным тазом" ))
25. Сергей (ret-Phoenix) 06.04.15 12:50
с учетом комментариев и переписке в личке доработал материал и скрипты
26. cmd_vasec (cmd_vasec) 11.09.15 15:43
Авторские комментарии не работают выдает ошибка "путь не найден". Alt + G не работает. Что делаю не так?
27. kokon 06.01.16 20:09
Никак не могу нигде информацию найти как пишут подобные вещи: Снегопат, Телепат или вот эту разработку. Как получают доступ к окну конфигуратора? Ломают config.dll и правят ее в hex-редакторе?
28. Сергей (ret-Phoenix) 13.01.16 21:59
никаких изменений в бинарных файлах 1С не делается. мой набор скриптов работает в буфером обмена и отработкой горячих клавиш. например активному окну шлется сочетание клавиш: Ctrl+A (выделить все), Ctrl + ins (копировать выделеное) и так далее. Снегопат внедряется в адресное пространство конфигуратора. т.е. действует более тонко и мощно.
29. Алексей Ларин (roofless) 18.05.16 09:00
интересует, могу ли я в своем скрипте написать обращение к веб-сервису и получение от него каких-то данных для показа их (или вставки) в окне конфигуратора?
возможно, вопрос покажется глупым, но раньше со снегопатом дело не имел, поэтому прошу прощения за некомпетентность
30. Сергей (ret-Phoenix) 18.05.16 12:26
(29) roofless, Мой набор скриптов не имеет отношения к снегопату. По вашему вопросу: думаю что можно, на JS пишите обращение к WS, далее обрабатываете результат как Вам нужно, на том же JS. Вызвать JS скрипт можно используя мой набор скриптов, можно и в Снегопате. разница лишь в способе вызова из конфигуратора.
31. Алексей Ларин (roofless) 18.05.16 13:22
(30) ret-Phoenix, понял, большое спасибо за ответ
32. Алексей Ларин (roofless) 02.06.16 12:33
(30) ret-Phoenix, идея начинает обретать видимые черты, но возник вопрос:
RunWait, %A_WinDir%\SysWOW64\wscript.exe scripts.js %module% proclist

это и есть вызов javascript?
а
if (ErrorLevel > 0) {
		nStr := ErrorLevel
		SendInput ^%KeyG%%nStr%{ENTER}
	}

это обработка результата?
33. Сергей (ret-Phoenix) 02.06.16 18:18
(32) Да, именно так. Но этот вариант отрабатывает возвращаемое число. для более сложных вариантов (работа с текстом) результат получается через временный файл, копируется в буфер и вставляется (метод pasteTextFromFile())
Сейчас на стадии проверки возможность работы без регистрации dll, выбор из списка будет осуществляться запуском спец.приложения на C#.
34. Александр Полтава (Патриот) 01.09.16 11:11
(0)+
Может вы подскажите по ahk, проблема тривиальная, но я уже несколько часов не могу решить =(
Хочу эмулировать нажатие на клавишу Alt, чтобы активировать главное меню активного окна (это стандартное действие). Получил код нажатой интерактивно клавиши "sc38" с помощью встроенного скрипта GetKeyboardCode.ahk
В своём скрипте пишу такой код:
Send {sc38}
и он, сволочь, не работает =(((
вместо sc38, я пытался обращаться по встроенному имени: ! {Alt} {LAlt} {RAlt} {sc38}. Ни одно из этих обращений не помогло.
Зато помогло следующее: перед нажатием альта нажимать на какой-нибудь видимый символ. Например работает так:
Send 1 {sc38}
или так
Send 2 {sc38}
Естественно, от такого побочного действия надо избавиться.
Я пробовал менять Send на SendInput - не помогает.
после такого руки невольно опускаются и силы вместе с верой в разумное вечное доброе покидают
вдруг вы сможете помочь...
35. Сергей (ret-Phoenix) 01.09.16 14:23
А что пытаетесь сделать?
пример кода нажимающего Alt, потом А, переходы вниз, выбор меню, вставка в открытый диалог имени файла и подтверждение выбора

actionShowExtFilesList() {
	Global

	; RunWait, wscript scripts\ExtFiles.js
	RunWait, system\OneScript\bin\oscript.exe scripts\ExtFiles.os,,Hide

	NewText := getTextFromFile()
	If (NewText <> "") {
		ClipWait
		Sleep 1
		set_locale_ru()
; след.строка нажимает Alt +A (переход в меню, раскрытие меню файл)
		SendInput, !%KeyA% 
		SendInput, {DOWN}{DOWN}{Enter}
		Sleep 500
		SendInput, ^%KeyV%{Enter}
	}
}
...Показать Скрыть
36. Александр Полтава (Патриот) 01.09.16 20:10
(35) ret-Phoenix, как раз выбрать файл я и хочу. но в режиме предприятия на УФ. там есть кнопка "главное меню". Пытаюсь её нажать. Вы дали пример, когда нажимается комбинация клавиш - так у меня тоже проблем не возникает. А я пытаюсь нажать просто Альт. и проверил, что дело не в предприятии, мой код отрабатывает по вышеописанному одинаково для любого окна, где есть главное меню.
37. Сергей (ret-Phoenix) 01.09.16 20:59
(36) Патриот,

Win + X- нажимает альт, значок подкрашивается голубым фоном.
#sc02D:: 
	SendInput, {sc38}
return
...Показать Скрыть


а это нажмет альт и развернет меню
SendInput, {sc38}{enter}