Опыт разработки скриптов для автоматизации работы в конфигураторе
Статья опубликована на мотивам доклада, прочитанного автором на Конференции IE 2012 15-16 ноября 2012 года, и вошедшего в Журнал Инфостарта №1. В настоящее время частично утратила актуальность, выложена в основном в качестве архива, чтобы помнить историю развития проекта.
- Описание
- Подробнее
Описание
Статья состоит условно из четырех частей:
- В первой я расскажу о предпосылках, которые приводят к необходимости использования дополнительных инструментов, кроме всеми нами любимого Конфигуратора.
- Затем расскажу, какие скрипты Снегопата и как решают ряд этих проблем.
- Далее обзорно я расскажу о том, как все это работает.
- И наконец, в качестве небольшого бонуса расскажу о моем небольшом эксперименте по реализации механизма, позволяющего автоматизировать работу в конфигураторе при помощи «скриптов», точнее обработок, на встроенном языке 1С.
С чем сталкивается разработчик?
И, в общем-то, именно мой прошлый опыт побудил меня использовать Снегопат в восьмерке. Если вы помните, когда после семерки появилась 8.0 – мы все были впечатлены теми возможностями, которые были там предоставлены по умолчанию – появилась и контекстная подсказка, и более продвинутые шаблоны – и, вроде, всего нам хватало на тот момент. До тех пор, пока мы не наигрались с существующими возможностями и не почувствовали какие-то ограничения.
Мы все являемся разработчиками и, наверняка, многие из нас уже работали и в других интегрируемых средах разработки. Так вот, сопоставляя свой опыт – мы видим, что в объеме и структуре современных конфигураций, по сравнению с 7.7 становится все сложнее и сложнее ориентироваться.
- Существующие прикладные решения стали огромными – по сотни тысяч строк кода, длииииинное дерево метаданных
- 1С:Предприятие 8.2 очень сильно выросло технологически, использует явно и неявно все самые современные технологии. Нам, как 1С-специалистам уже легко отвечать на троллинг фанатов других платформ – 1С и Оракал и Постгерс поддерживает, и под Линуксом работает и на популярных мобильных системах, и в облаке.
- От 100 000 строк кода – даже в простейших конфигурациях, вроде Библиотеки стандартных подсистем (дает базовый функционал) – даже самые простейшие конфигурации очень обширны по функционалу и имеют очень много кода.
- Разработчики 1С нас радуют развитием объектной модели. Все больше и больше появляется новых объектов. Объектная модель стала более технологичной – все больше в ней становится объектов, решающих «инфраструктурные» задачи (а не просто задачи предметной области). И как следствие — все больше низкоуровневого программного кода, который отвечает за организацию инфраструктуры, взаимодействие этих объектов. Но при этом сам язык остается процедурно-ориентированным, что накладывает определенные ограничения на организацию повторно используемого программного кода
- Средства по организации кода и метаданных несколько ограничены(ситуация практически не меняется с релиза платформы 8.0). То есть – средствами платформы мы, конечно, можем:
- во-первых, группировать объекты метаданных в подсистемы,
- а во-вторых – использовать общие модули для дополнительной организации кода. Но это все возможности, которые нам предоставлены по этой части. Больше нет. Мы в этом ограничены.
Способы решения
Что может нам помочь в попытках сориентироваться в структуре конфигураций 1С? Какие внешние сторонние инструменты мы можем использовать для облегчения этой задачи?
На сегодняшний момент существует два пути:
- Интенсивный путь – ждать каких-то решений по развитию платформы от фирмы 1С. Фирма 1С движется в этом направлении. В последних версиях улучшена подсказка, шаблоны и т.д. Но – дальнейших улучшений можно ждать очень долго.
- Экстенсивный путь – все в наших руках. Мы с вами вместе – Инфостарт тому пример, занимаемся разработкой каких-то внешних инструментов, то есть, идем экстенсивным путем, расширяя инструментальную базу самостоятельно, не дожидаясь от вендора каких-то решений. Среди таких инструментов есть две категории:
- Внешние инструменты. Также делятся на несколько категорий:
- Работают с конфигурацией из режима «1С:Предприятие» или по COM. Представляют собой стороннее приложение, реализованное либо при помощи самой технологической платформы 1С:Предприятия, либо сторонними средствами, на других языках программирования. С помощью стандартных средств встроенного языка (и не только) предоставляют возможности быстро сориентироваться и проанализировать критичные вопросы работы базы данных – или разработать запрос к базе данных. Ярким примером является незаменимая подсистема «Инструменты разработчика» Сергея Старых.
- Работают в пакетном режиме. Представляют собой решение по работе с кодом. Для того чтобы их применить, модули необходимо выгрузить во внешние файлы, после чего применить к ним обработку. Примером может являться конфигурация «Авто_Обновление измененных конфигураций 1С» компании «IzhTC» (http://izhtc.ru/ ), которое в частности, распространяется фирмой 1С как «Автоматизированная проверка конфигураций». Этот инструмент – правда, в ограниченных возможностях, также может использоваться для юнит-тестирования.
- Внешние инструменты. Также делятся на несколько категорий:
- Инструменты, встроенные в конфигуратор. Снегопат – единственный известный мне инструмент, который позволяет для разработчика встраивать инструменты разработки в сам конфигуратор.
Во многих задачах достаточно внешних инструментов разработки. Но они ограничены в применении. Обычно их используют для массовой обработки каких-то объектов, для работы разработчика, которая требует контекст 1С:Предприятия – например, доступа к данным в режиме разработки запроса, чтобы его сразу отлаживать и т.д. А в случае, если мы хотим выполнить какие-то действия, которые влияют на исходный код, то, чтобы их применить, модули необходимо выгрузить во внешние файлы, обработать их и потом загрузить обратно. Это усложняет типичный workflow разработчика, потому что надо переключаться из конфигуратора в другое приложение, чтобы выполнить какую-то работу, а потом опять вернуться в конфигуратор и продолжить разработку в нем.
В последнем мажорном релизе 8.3 технологической платформы анонсирована выгрузка в текстовый формат всех метаданных и модулей и это открывает, по крайней мере, теоретическую возможность создания «альтернативного» конфигуратора, но это пока, скорее, из области фантастики.
Поэтому – ряд задач по работе с исходным кодом, по работе с метаданными – гораздо удобнее решать инструментами, встроенными в конфигуратор. Такие инструменты могут работать незаметно для нас, по крайней мере, мы не будем запускать никаких отдельных приложений. На сегодняшний день единственная возможность запускать такие инструменты предоставляется проектом Снегопат. Только он предоставляет нам возможность работать с этими инструментами так же, как и с любыми другими стандартными штатными командами в конфигураторе. Такими встроенными инструментами будут для нас запускаемые при помощи Снегопата скрипты.

