IE2017

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

Программирование - Теория программирования

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

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

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

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

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

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

В планах есть развитие функционала, но пока есть более интересные для меня задачи. Может кто подхватит?
10. Анатолий Далека (An79) 17.01.12 23:52 Сейчас в теме
На первый взгляд сногшибающе, попробовать бы и оценить пользу в работе.
11. Сергей Сытько (8SiriuS8) 115 18.01.12 00:45 Сейчас в теме
А скрипт "Расширение текстового редактора" что за он??? где его можно посмотреть
12. Александр Кунташов (kuntashov) 356 18.01.12 07:35 Сейчас в теме
(11) Это скрипт textEditorExt.js, он есть в репозитории, но к нему еще не добавили описание в wiki. Вот ссылка на историю версий: История версий скрипта "Расширение текстового редактора"
13. Осипов Сергей (fixin) 3570 20.01.12 13:38 Сейчас в теме
Господа, как он работает? Не догоню никак. Принцип поясните!
14. Александр Орефков (orefkov) 1464 20.01.12 13:43 Сейчас в теме
(13)
В Конфигуратор загружается snegopat.dll и начинает помогать (типа как пунтосвитчер).
Кое-что само умеет, кое-что - сторонние аддины делают, которые snegopat.dll подгружает.
15. Осипов Сергей (fixin) 3570 20.01.12 13:57 Сейчас в теме
(14) а что, конфигуратор уже в 81 (82?) начал давать возможность подключать сторонние DLL?
16. Александр Орефков (orefkov) 1464 20.01.12 14:01 Сейчас в теме
(15)
А он и в 77 не давал, что не мешало существовать опенконфу :)
Сложно что-ли сходить на сайт проекта да немного почитать?
Там все расписано.
17. Осипов Сергей (fixin) 3570 20.01.12 14:04 Сейчас в теме
(16) гм. почитал. прикольно... как говорится, голь на выдумки хитра. ;-)
Еще приколол метод защиты от копирования. ;-)
но имхо для меня 4500 дорого. ;-)
18. Евгений Мартыненков (JohnyDeath) 290 21.01.12 11:05 Сейчас в теме
Автор топика и большинства скриптов сделал еще один шедевр: Редактор регулярных выражений
19. Владимир (oberon355) 11 22.01.12 15:42 Сейчас в теме
да, реально дороговато....
20. Max Potapov (Max.Potapov) 23.01.12 17:57 Сейчас в теме
Всегда любил пользовать Телепат, но ценник отпугивает
21. Артур Аюханов (artbear) 872 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) 474 23.01.12 22:59 Сейчас в теме
(21) "прирост производительности кодирования и общей разработки намного больше, я лично данное увеличение на данном этапе развития проекта оцениваю процентов в 10-20, не меньше.
Вот и посчитайте выгоду."
кодинг в работе 1снега (в "общей разработке") - весьма незначительная величина
23. Александр Кунташов (kuntashov) 356 24.01.12 08:07 Сейчас в теме
(22) Если вести речь о разработке с нуля, то вы правы, чистых "разработчиков" среди 1С:Специалистов меньше.
Но нам приходится очень много работать с чужим кодом, такова специфика, увы.

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

По моей оценке, навыки владения даже штатными средствами Конфигуратора у значительной части 1С:Специалистов очень низка, поэтому и подсознание им справедливо нашептывает, что для них какие-то дополнительные вложения в явном виде будут иметь низкий КПД. Сначала надо вложиться личным временем и научиться пользоваться эффективно штатными средствами: шаблонами, отладчиком, профайлером, командной строкой, расширенной проверкой конфигурации, возможностью выгружать модули и написать самостоятельно пару обработок, автоматизирующих обработку модулей.
25. Александр Орефков (orefkov) 1464 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) 485 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) 356 22.08.12 23:40 Сейчас в теме
(29) Yasen, А highlight.js пробовали (в репозитории есть)? Чем не устраивает? Почему именно GeShi?
31. Анатолий (Yasen) 485 23.08.12 06:56 Сейчас в теме
(30) Пробовали. Не устраивает тем, что js
32. Александр Кунташов (kuntashov) 356 23.08.12 07:35 Сейчас в теме
(31) Yasen, хм, а причем тут тогда Снегопат?
Опишите подробнее, что вам необходимо.

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