gifts2017

Форматирование (выравнивание) кода 1С 8. Навигация по тексту модуля.

Опубликовал Антон Юхлин (antonrost) в раздел Программирование - Практика программирования

Форматирование (выравнивание) кода 1С 8. Навигация по тексту модуля.

1. Выравнивает выделенный текст по знакам "="
2. Выравнивает выделенный текст по инструкции " КАК " (в тексте запроса).
3. Поиск (фильтр при наборе) по тексту модуля.

 

Программа висит в памяти и по нажатию комбинации клавиш ALT-F12 вы равнивает выделенный блок текста.

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

 

Для работы необходим установленный .Net FrameWork 2.0 или выше.

Для работы необходимо зарегистрировать svcsvc.dll  (Набрать в командной строке "regsvr32 svcsvc.dll") (svcsvc.dll прилагается).

 

В разработке:

1. Быстрый поиск объектов в дереве метаданных.


Принимаются заявки на разработку нового функционала !

P.S. Просьба по возможности не применять вне окна кода 1С. Возможны непредвиденные последствия . Surprised

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

Наименование Файл Версия Размер Кол. Скачив.
Format_1C.zip
.zip 215,72Kb
09.12.10
137
.zip 215,72Kb 137 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Иван (Spartan) 08.12.10 17:26
Знак "равно" в первой строке блока размещает на один символ дальше, чем в остальных. А так - плюс, мне пригодится!
Все, догнал... Если перед первой строкой есть табуляция, то нужно выделять прям с самого начала строки вместе с ней - тогда нормально.
2. Иван Дижа (IDija) 08.12.10 21:50
"Плюс" конечно.Вот еще бы циклы и условия выравнивать... ;)
3. Антон Юхлин (antonrost) 08.12.10 21:54
IDija пишет:

"Плюс" конечно.Вот еще бы циклы и условия выравнивать...


Вроде их 1С сама выравнивает...
4. Руслан Ибрагимов (break) 09.12.10 12:33
Здорово. Еще бы и "структуру" вырвнивала бы:
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата",_______Дата);
ПараметрыЗаполнения.Вставить("Деталь",_____Деталь);
ПараметрыЗаполнения.Вставить("Количество",_Количество);
ПараметрыЗаполнения.Вставить("Автор",______глТекущийПользователь);

В работающем коде конечно место _ стоят пробелы.
5. Amali 09.12.10 14:49
IDija пишет:
"Плюс" конечно.Вот еще бы циклы и условия выравнивать


А чем не нравиться Alt+Shift+F ?
6. Sergey (Sergey K) 09.12.10 15:16
+
Добавить форматирование в запросы
поле________КАК
ваолоыпрлва_КАК
алвыодао____КАК
лываж_______КАК
7. Андрей Янакаев (YAN) 09.12.10 17:46
При нажатии какой-то "левой" комбинации вышло сообщение об ошибке и программа успешно закрылась!
8. Антон Юхлин (antonrost) 09.12.10 17:47
Появился новый функционал. Качаем, критикуем. :|
9. Антон Юхлин (antonrost) 09.12.10 17:49
YAN пишет:

При нажатии какой-то "левой" комбинации вышло сообщение об ошибке и программа успешно закрылась!


Это - оооочень бета версия. То, что закрылась именно успешно, уже прогресс !!! :)

Это уже обновленная закрылась ?
10. Иван (Spartan) 09.12.10 18:00
(9) Из 4-х попыток выравнивания кода запроса - 4 раза вылетела по ошибке, трижды сообщила, что "Не удалось создать компонент ActiveX", один - "Программа выполнила недопустиую операцию..."
11. Антон Юхлин (antonrost) 09.12.10 18:02
Spartan пишет:

(9) Из 4-х попыток выравнивания кода запроса - 4 раза вылетела по ошибке, трижды сообщила, что "Не удалось создать компонент ActiveX", один - "Программа выполнила недопустиую операцию..."


Не удалось создать компонент ActiveX - в описании сказано: "Зарегистрировать svcsvc.dll"
12. Иван (Spartan) 09.12.10 20:19
(11) Значит плохо читал - извиняй... :D Я все больше как-то по первой версии ориентировался...
13. г. Казань Рустем Гумеров (Rustig) 10.12.10 10:43
Идея здоровская! Плюс!
Часть функционала можно реализовать на платформе 1С: [делюсь опытом :)]
http://infostart.ru/public/79256/.
14. Иван (Spartan) 10.12.10 10:43
(0) Ты знаешь, зарегил я библиотеку, тока видно это действительно пока очень уж бета... При форматировании блока с равенствами из 4 попыток, отформатировала только один раз нормально и то со сдвигом первой строки на лишний пробел. В других случаях, прога делала вообще непонятно что: то удаляла блок вообще, то вытягивала его в одну строку с удалением знаков равенства. Если не трудно, положи первую версию вторым файлом - она как-то постабильнее будет.
15. Maxim Kolkin (the1) 10.12.10 10:52
Вроде работает =) Спасибо, +! Выравнивание различных структур языка не помешало бы.
16. Allexey (alex_4x) 10.12.10 11:01
Ждем более стабильную версию.
А идея очень нужная, полезная и т-д....

Вот бы еще автор подключил бы туда работу с регулярными выражениями - поиск, замену...

И пополняемый список правил, на основе этих же самых регулярных выражений,
тогда сама разработка утилиты была бы отдельно, а правила - отдельно,
и было бы удобней в том плане что стабильную версию самой обработки мог бы автор делать, сосредоточившись только на этом,
а правила выравнивания - все совместно и лучшие (или каждому кажущиеся полезные) включать к себе в файл настроек.

И с регулярными выражениями, можно еще много всяких фичь добавлять.
17. Антон Юхлин (antonrost) 10.12.10 11:06
alex_4x пишет:

Ждем более стабильную версию.

А идея очень нужная, полезная и т-д....



Вот бы еще автор подключил бы туда работу с регулярными выражениями - поиск, замену...



И пополняемый список правил, на основе этих же самых регулярных выражений,

тогда сама разработка утилиты была бы отдельно, а правила - отдельно,

и было бы удобней в том плане что стабильную версию самой обработки мог бы автор делать, сосредоточившись только на этом,

а правила выравнивания - все совместно и лучшие (или каждому кажущиеся полезные) включать к себе в файл настроек.



И с регулярными выражениями, можно еще много всяких фичь добавлять.

Приведи парочку примеров - попробую прикрутить.
18. Антон Юхлин (antonrost) 10.12.10 11:08
Spartan пишет:

(0) Ты знаешь, зарегил я библиотеку, тока видно это действительно пока очень уж бета... При форматировании блока с равенствами из 4 попыток, отформатировала только один раз нормально и то со сдвигом первой строки на лишний пробел. В других случаях, прога делала вообще непонятно что: то удаляла блок вообще, то вытягивала его в одну строку с удалением знаков равенства. Если не трудно, положи первую версию вторым файлом - она как-то постабильнее будет.

Можт быть проблема в паузе между сендкеями на медленных машинах. Сей прикручу настройку пауз - может быть поможет.
19. Иван (Spartan) 10.12.10 11:16
(18) Вряд ли, у меня с машиной все в порядке... Ну давай попробуем.
20. Allexey (alex_4x) 10.12.10 11:35
antonrost пишет:
Приведи парочку примеров - попробую прикрутить.


REGEXP Википедия ;-)

Regexp в 1С

Здесь же, на Инфостарте про regexp

Ты саму тулзу, на C# пишешь ?
Тогда просто подключи библиотеку и будет тебе счастье. Пример в интернете полно.
using System.Text.RegularExpressions;

Простенький пример на C# с сайта c-sharpcorner
21. Антон Юхлин (antonrost) 10.12.10 11:37
alex_4x пишет:
REGEXP Википедия smile;-)

Regexp в 1С

Здесь же, на Инфостарте про regexp

Ты саму тулзу, на C# пишешь ? Тогда просто подключи библиотеку и будет тебе счастье. Пример в интернете полно. using System.Text.RegularExpressions;

Простенький пример на C# с сайта c-sharpcorner
alex_4x пишет:



Я имел ввиду примеры применения для 1С. Не КАК делать, а ЧТО делать.
22. Allexey (alex_4x) 10.12.10 11:52
Вот здесь Автор использует регулярные выражения для выделения лексем языка.
Конечная цель у него отличная от твоей, но принцип выделения лексем - одинаков.

например ты собираешь все лексемы содержащие Переменная = Значение;
Выравнивать по Началу первой лексемы, знака "=", Значение.

Для Т по З Цикл
Блаблабла
КонецЦикла
Тоже лексема - выравнивать

ну и так далее.
24. Антон Юхлин (antonrost) 10.12.10 11:57
alex_4x пишет:
Вот здесь Автор использует регулярные выражения для выделения лексем языка. Конечная цель у него отличная от твоей, но принцип выделения лексем - одинаков.

например ты собираешь все лексемы содержащие Переменная = Значение; Выравнивать по Началу первой лексемы, знака "=", Значение.

Для Т по З Цикл Блаблабла КонецЦикла Тоже лексема - выравнивать


Опять ответ не на тот вопрос, который я задавал.
Я прошу не примеры использования регулярных выражения, а возможные примеры использования моей обработки для облегчения жизни программистов, т.е. прошу конкретизировать пожелания.
25. Артур Аюханов (artbear) 11.12.10 11:33
Да, странное форматирование :(
Взял одну процедуру, весь ее текст прижал к левому краю, далее Альт+Ф12 и Форматировать блок.
Результат повеселил :( -
1. у комментария // появился/вставился лишний пробел / / :(
2. текст внутри строк выровнялся по знакам равно, т.е все что справа от знака равно, на одной колонке, но левая-то осталась как есть, прижатой влево :(
ИМХО в описании нужно специальным образом указать, что не происходит выравнивания операторов, аналогичного типовому форматированию, т.е. обработку нужно использовать только в дополнении к основному форматирования или для небольших блоков кода.

У нас есть аналогичный проект для разработчиков для AutoHotkey - список процедур/функций через svcsvc, авторские комменты, форматирование, удобное переназначение хоткеев под привычный набор хоткеев и т.п.
Основная проблема - неудобство получения выделенного текста, получаем только через передачу спец.символов в окно 1С для работы через буфер обмена.
http://www.1cpp.ru/forum/YaBB.pl?num=1227553473/0
На данный момент реализовано:
- Вызов списка процедур с фильтрацией наименований методов при наборе текста
- форматирование модуля при помощи code_beautifier.pl
- Автоматическая печать символа "|" после перевода строки, при необходимости - Enter.
- Автоматическая печать символов комментария "//" после перевода строки по Shift+Enter, если текущая.строка также является комментарием.
- удаление строки Ctrl+y
- Закрытие окна сообщение Ctrl+z (не всем нравится)
- символ '<' по Ctrl-,
- символ '>' по Ctrl-.
- символ '|' по Ctrl-\
- переходы по процедурам в стиле OpenConf?
переход в процедуру (как в OpenConf? - ctrl+enter)
возврат на предыдущую позицию (как в OpenConf? - alt+{left})

Вопрос - как смог получить только выделенный текст в окне 1С?
Используешь посылку символов для работы через буфер обмена или другим способом?
Поделишься? очень нужно!
26. Антон Юхлин (antonrost) 11.12.10 17:42
artbear пишет:
Вопрос - как смог получить только выделенный текст в окне 1С?

Увы, банальный SendKey "Ctrl-Insert", но попыток найти другой способ еще не оставил.
27. Sensey Master (MSensey) 15.12.10 12:28
Плюс за попытку сделать что-то полезное.
Попробовал ... есть проблемы ... буду ждать стабильной версии.
28. Александр Орефков (orefkov) 16.12.10 12:49
Небольшая демка на тему.
Скачать, запустить, посмотреть фильм.
Прикрепленные файлы:
formatV82.exe
29. Антон Юхлин (antonrost) 16.12.10 12:58
orefkov пишет:
Небольшая демка на тему.
.

С нетерпением жду, когда можно будет этим пользоваться
30. Александр Орефков (orefkov) 16.12.10 13:16
antonrost пишет:
С нетерпением жду, когда можно будет этим пользоваться

Каминг сун, как говорится. И года не пройдет.
31. inf0start inf0start (inf0start) 16.12.10 14:57
А нельзя ли реализовать дополнительное форматирование, где вместо пробелов используется табуляция, и только концовка перед знаком равно (если нужно) выравнивается пробелами?
32. Артур Аюханов (artbear) 16.12.10 15:35
(30) Саш, я как всегда готов быть твоим тестером :)
33. Александр Орефков (orefkov) 17.12.10 14:26
Вот еще побаловался чуток.
Умный Enter.
Прикрепленные файлы:
v82SmartEnter.exe
Spartan; artbear; +2 Ответить 1
34. Артур Аюханов (artbear) 17.12.10 14:33
35. Антон Юхлин (antonrost) 17.12.10 14:36
(33) Дразнишься? Уже слюнки текут...
36. Александр Орефков (orefkov) 17.12.10 14:43
artbear пишет:

(34) А с нами поделиться ?


Так ведь это все пока на коленке собрано, с торчащими во все стороны кусками проводов, и падает при любом чихе.
И работает пока только на 8.2.11.236. Вобщем до деления еще не так близко.
37. Артур Аюханов (artbear) 17.12.10 14:54
(36) Может, помощь какая нужна? или тестирование более активное? чтобы чихи быстрее ловить? :)
38. Александр Орефков (orefkov) 17.12.10 15:06
artbear пишет:

(36) Может, помощь какая нужна? или тестирование более активное? чтобы чихи быстрее ловить?

Пока нет. Но тебя я записал в книжечку.
39. Александр Орефков (orefkov) 14.10.11 14:34
40. Дмитрий Дорин (DmitriyDI) 11.07.14 12:55
с коментами обработка делает что-то чудесное !
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа