gifts2017

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

Опубликовал Александр Кунташов (kuntashov) в раздел Программирование - Теория программирования

Снегопат (http://snegopat.ru) – это проект по расширению возможностей конфигуратора 1С:Предприятия 8.2 как среды разработки прикладных решений. Для знакомых с ОпенКонфом, можно коротко сказать, что Снегопат – это ОпенКонф и Телепат, только для 1С:Предприятия 8.2 и уже на сегодня заметно круче :).

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

Совсем недавно Александр Орефков, автор популярных проектов для 1С:Предприятия 7.7: ОпенКонф, Телепат 2.0, внешних компонент 1sqlite и Turbomd и других, опубликовал на Инфостарте анонс проекта Снегопат.

Снегопат – это проект по расширению возможностей конфигуратора 1С:Предприятия 8.2 как среды разработки прикладных решений. Для знакомых с ОпенКонфом, можно коротко сказать, что Снегопат – это ОпенКонф и Телепат, только для 1С:Предприятия 8.2 и уже на сегодня заметно круче :).

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

Это возможно благодаря тому, что Снегопат «из коробки» поддерживает аддины, реализованные как скрипты для ActiveScripting-движков (в первую очередь, JScript и VBScript).  Диалоговые формы скриптов могут быть разработаны с использованием штатных возможностей «обычных» (не «управляемых») форм 1С:Предприятия 8, манипуляции с объектами конфигуратора доступны через объектную модель, предоставляемую Снегопатом.

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

Внешние файлы

Скрипт «Внешние файлы» является аналогом окна «File Explorer» в других средах разработки. Он предоставляет удобную возможность просмотра структуры заданных пользователем каталогов и открытия файлов, находящихся в этих каталогах, непосредственно из Конфигуратора. Навигация в дереве файлов сделана по возможности максимально похожей на навигацию в дереве конфигурации.

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

Расширенный поиск

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

Кроме возможности поиска регулярными выражениями, скрипт обладает еще и тем преимуществом перед штатным неглобальным поиском (команда F3 в окне редактора), что выводит сразу все результаты поиска в окно, аналогично тому, как выводятся результаты глобального поиска:

Расширение текстового редактора

Скрипт "Расширение текстового редактора" реализует несколько удобных функций по редактированию текста, которых зачастую не хватает:

Шаблоны кода

Скрипт «Шаблоны кода» реализует дополнительный функционал для штатного механизма шаблонов Конфигуратора 1С:Предприятия 8. Основная возможность, ради которой и реализовывался скрипт в первую очередь – это возможность «применять» шаблон к выделенному тексту.

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

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

Скрипт использует штатный формат шаблонов 1С:Предприятия 8. Подробнее о настройке шаблонов для использовании совместно со скриптом «Шаблоны кода» можно прочитать на странице скрипта.

Query Params Extractor

Скрипт «Query Params Extractor» предназначен для автоматической генерации кода установки параметров запроса на основе текста запроса:

Конструктор таблицы значений

Скрипт «Конструктор таблицы значений», аналогично скрипту "Query Params Extractor" также относится к группе скриптов, генерирующих исходный код. С его помощью код по программному созданию таблицы значений можно сформировать путем визуальной настройки свойств ТЗ  при помощи простого редактора:

Автодополнение в стиле редактора Vim

Скрипт «Автодополнение в стиле редактора Vim» существует со времен ОпенКонфа, и был портирован мною для проекта Снегопат, благо это оказалось совсем просто. Скрипт с тех же самых времен находится в тени «интеллектуальных» «подсказчиков» (Телепат +Intellisence), но на практике очень эффективен при наборе строковых констант или комментариев в коде или текста в любых других текстовых окнах.

Например, при вставки значений в структуру:

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

Другие скрипты

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

С помощью них можно : автоматически открывать обработки/отчеты, сохраненные как внешние сразу после сохранения и автоматически открывать файл, путь на который указан в буфере обмена, выравнивать знаки «=» в тексте модуля, настраивать заголовок конфигуратора (пример работы вы могли увидеть в заголовке конфигуратора на всех видео).

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

Страна должна знать своих героев!

Я намеренно не указывал выше в описаниях скриптов их авторов, потому что практически все они благодаря открытому исходному коду совершенствуются совместно дружной командой. Вот эти герои меча и магии notepad++ и javascript:

  • Артур Аюханов (artbear)
  • Александр Орефков (orefkov)
  • Владимир Пушин (vladnet)
  • Василий Фролов (palytsh)
  • Степан Рыбальченко (steban)
  • Александр Кунташов (kuntashov)

(Если кого-нибудь пропустил, напомните).

Присоединяйтесь к команде! Сделать это не сложно, первые шаги коротко и доходчиво описаны Артуром в рекомендациях по разработке скриптов. Те, кто писал скрипты для ОпенКонфа быстро войдут в тему.

Документации пока не много, но основные приемы разработки можно подсмотреть в перечисленных выше скриптах. Вопросы по разработке скриптов можно задать на официальном форуме.

Что дальше

В разработке сейчас находятся скрипты для выполнения простых видов рефакторинга кода 1С, аналог скрипта Intellisence для ОпенКонфа, уже готов редактор регулярных выражений (но поскольку без страницы описания, то не включен в подборку).

Идеи и предложения принимаются на уже упомянутом форуме и в комментариях к этой статье.

Высокой всем производительности и прочих успехов в работе! :-)

См. также

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

Комментарии

1. Александр Орефков (orefkov) 16.01.12 07:31
Огромное спасибо, Александр.
Можно дать ссылку на статью на своем сайте?
2. Александр Кунташов (kuntashov) 16.01.12 08:40
3. Александр Орефков (orefkov) 16.01.12 09:06
(2)
Александр, а генератор html из исходников на 1С у тебя уже в основной ветке?
И что-то я не нашел - в нем можно получить сам html - код?
4. Евгений Мартыненков (JohnyDeath) 16.01.12 09:46
Отличная статья!
От себя поблагодарю еще раз авторов всех скриптов.
kuntashov, за Vim отдельное большое спасибо. Не знаю, как я раньше без него жил )
5. Владимир Владимир (vladimir_che) 16.01.12 14:06
6. Модератор раздела Артур Аюханов (artbear) 16.01.12 15:35
Опять все очень красиво и функционально, как и все у автора.
7. Алексей Прилепский (IamAlexy) 16.01.12 22:50
а нормального авторского коментария до сих пор нету..
кому нафиг нужна эта конструктор таблиц... эх...
8. Александр Кунташов (kuntashov) 16.01.12 23:04
(7) Внимательнее посмотри snippets.js

Блочный "Авторский комментарий" настраивается шаблоном+макрос. В описании скрипта есть пример.
Или нужны "однострочники"? Я этим не пользуюсь, ибо засоряет код нисколько не помогающими пометками типа

А = 2 + 3; //Изменил: Вася Пупкин 2011-10-13 09:11:01

Поэтому и не делаю. Какую информацию дает такой комментарий? То, что были изменения? Эту информацию в более информативном виде дает сравнение/объединение с предыдущей версией в хранилище.

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

А с конструктором ТЗ не надо писать рутинный код. А авторские комментарии в основном бесполезные "здесь был Вася" добавляет, если сравнивать :)
9. Александр Кунташов (kuntashov) 16.01.12 23:08
(3) Хайлайтер в основной ветке сразу. Но функционал минимальный, поэтому получения кода HTML нет. На скорую руку можно быстро сделать вывод в окно сообщений (посмотри в код, там все просто).

В планах есть развитие функционала, но пока есть более интересные для меня задачи. Может кто подхватит?
10. Анатолий Далека (An79) 17.01.12 23:52
На первый взгляд сногшибающе, попробовать бы и оценить пользу в работе.
11. Сергей Сытько (8SiriuS8) 18.01.12 00:45
А скрипт "Расширение текстового редактора" что за он??? где его можно посмотреть
12. Александр Кунташов (kuntashov) 18.01.12 07:35
(11) Это скрипт textEditorExt.js, он есть в репозитории, но к нему еще не добавили описание в wiki. Вот ссылка на историю версий: История версий скрипта "Расширение текстового редактора"
13. Осипов Сергей (fixin) 20.01.12 13:38
Господа, как он работает? Не догоню никак. Принцип поясните!
14. Александр Орефков (orefkov) 20.01.12 13:43
(13)
В Конфигуратор загружается snegopat.dll и начинает помогать (типа как пунтосвитчер).
Кое-что само умеет, кое-что - сторонние аддины делают, которые snegopat.dll подгружает.
15. Осипов Сергей (fixin) 20.01.12 13:57
(14) а что, конфигуратор уже в 81 (82?) начал давать возможность подключать сторонние DLL?
16. Александр Орефков (orefkov) 20.01.12 14:01
(15)
А он и в 77 не давал, что не мешало существовать опенконфу :)
Сложно что-ли сходить на сайт проекта да немного почитать?
Там все расписано.
17. Осипов Сергей (fixin) 20.01.12 14:04
(16) гм. почитал. прикольно... как говорится, голь на выдумки хитра. ;-)
Еще приколол метод защиты от копирования. ;-)
но имхо для меня 4500 дорого. ;-)
18. Евгений Мартыненков (JohnyDeath) 21.01.12 11:05
Автор топика и большинства скриптов сделал еще один шедевр: Редактор регулярных выражений
19. Владимир (oberon355) 22.01.12 15:42
да, реально дороговато....
20. Max Potapov (Max.Potapov) 23.01.12 17:57
Всегда любил пользовать Телепат, но ценник отпугивает
21. Артур Аюханов (artbear) 23.01.12 22:28
(0) В чем дороговизна-то? Не понимаю.
Имхо даже при ЗП для работающего студента в месяц минимум 20-30 тысяч выйдет, и 4,5 тысячи это просто 1/5 часть месячной зп.
За 2 года официальной гарантии зарабатываем 240-360 тысяч, долю Снегопата в этой сумме посчитать несложно 1.88%-1.25% соответственно.
А ведь Снегопат дает прирост производительности кодирования и общей разработки намного больше, я лично данное увеличение на данном этапе развития проекта оцениваю процентов в 10-20, не меньше.
Вот и посчитайте выгоду.
ЗЫ а ведь проект еще только начинает развиваться :)
Flashill; JohnyDeath; kuntashov; +3 Ответить 1
22. Михаил Ражиков (tango) 23.01.12 22:59
(21) "прирост производительности кодирования и общей разработки намного больше, я лично данное увеличение на данном этапе развития проекта оцениваю процентов в 10-20, не меньше.
Вот и посчитайте выгоду."
кодинг в работе 1снега (в "общей разработке") - весьма незначительная величина
23. Александр Кунташов (kuntashov) 24.01.12 08:07
(22) Если вести речь о разработке с нуля, то вы правы, чистых "разработчиков" среди 1С:Специалистов меньше.
Но нам приходится очень много работать с чужим кодом, такова специфика, увы.

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

По моей оценке, навыки владения даже штатными средствами Конфигуратора у значительной части 1С:Специалистов очень низка, поэтому и подсознание им справедливо нашептывает, что для них какие-то дополнительные вложения в явном виде будут иметь низкий КПД. Сначала надо вложиться личным временем и научиться пользоваться эффективно штатными средствами: шаблонами, отладчиком, профайлером, командной строкой, расширенной проверкой конфигурации, возможностью выгружать модули и написать самостоятельно пару обработок, автоматизирующих обработку модулей.
25. Александр Орефков (orefkov) 24.01.12 09:57
(20)
Ну, это профессиональный инструмент, от профессионалов и для профессионалов.
27. Olga Gabuza (OLga_gab) 02.02.12 20:02
К сожалению, у меня у самой навыки владения средствами Конфигуратора очень низка.
Я пытаюсь научиться пользоваться эффективно штатными средствами: шаблонами, отладчиком, профайлером, командной строкой, расширенной проверкой конфигурации, возможностью выгружать модули и написать самостоятельно пару обработок, автоматизирующих обработку модулей. Поэтому для меня еще рано было читать такие скрипты...
28. StronG-X (Dethmond) 04.02.12 00:06
Интересно было почитать, спасибо
29. Анатолий (Yasen) 22.08.12 22:30
На форум снегопата анонимно писать не хочется. Многоуважаемый ТормозИт рекомендовал написать сюда.
Посему, оффтоп: камрады, кто возьмется и допилит раскраску кода в HTML для GeShi?

Я перелопатил все, из 4-х найденных для GeShi библиотек, выбрал эту: http://bazaar.launchpad.net/~kkrasnov/geshi1c/trunk/download/head:/c1.php-20091211135402-2n8pgtfh5zzk370c-1/1c.php

Что требуется (навскидку): взять правила (например у Тормоза http://devtool1c.ucoz.ru, или из ГолдПарсера) и переложить их на формат GeShi

Нужна нормальная раскраска кода. Есть умельцы? Пишите в личку что ли.
30. Александр Кунташов (kuntashov) 22.08.12 23:40
(29) Yasen, А highlight.js пробовали (в репозитории есть)? Чем не устраивает? Почему именно GeShi?
31. Анатолий (Yasen) 23.08.12 06:56
(30) Пробовали. Не устраивает тем, что js
32. Александр Кунташов (kuntashov) 23.08.12 07:35
(31) Yasen, хм, а причем тут тогда Снегопат?
Опишите подробнее, что вам необходимо.

Я понял из вашего сообщения (29) понял, что вам нужна раскраска 1С-кода (генератор HTML-кода на основе кода 1С).
33. Роман (srv7) 18.11.12 21:39
(0) в свете прошедшей конференции забыли упомянуть про Евгения Сосну в разделе разработчиков скриптов )
34. Александр Кунташов (kuntashov) 18.11.12 23:26
(33) srv7, Статья была написана до того, как Женя присоединился к разработчикам - его первый коммит состоялся 25 января 2012 г., статья была опубликована 18 января, а написана вообще в декабре 2011 года.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа