Каталог решений - Как решать повседневные задачи с помощью OneScript

Как решать повседневные задачи с помощью OneScript

Как решать повседневные задачи с помощью OneScript

В наличии

Если вам не нравится выполнять рутинные операции вручную. Если вы 1С-ник, который хоть раз в жизни писал BAT-CMD-файлы для автоматизации, или который время от времени вынужден вспоминать особенности черной магии Powershell, то эта статья для вас. Теперь можно все это делать на языке 1С. Интересно? Читайте дальше!

Категория:

Описание

Скрипты – наше все!

Что такое скрипт или, по-другому, сценарий? Это простой текстовый файл с кодом, который можно выполнить непосредственно. Без компиляции, без построения промежуточных выполняемых модулей – прямо из текстовика.

Скрипт – это часто одноразовая программа, которая сделает вам нужную работу. Ее просто накидать, просто запустить, просто получить результат.

На windows традиционно была нехватка мощных средств автоматизации с помощью скриптов. Я знаю, что есть виртуозы BAT-файлов, которые могут творить с ними чудеса, но все же овладение этим инструментом занятие не для слабонервных.

Кроме того, на windows есть система Windows Script Host (WSH) которая позволяет уже писать более-менее функциональные скрипты на VBScript или JS, однако, когда дело доходит до работы с кириллицей – начинаются шаманские пляски с бубном.

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

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

Однако, у всех перечисленных инструментов есть одна проблема.

Все это чужеродные элементы!

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

Есть решение!

Чтобы сделать скрипт, решающий наши проблемы, не нужно переключаться на другой язык. Нужно писать скрипты прямо на языке 1С!

Что может быть автоматизировано?

Если вкратце, то практически все, что угодно 🙂 Приведу простой пример. Не так давно на нашем сервере, который управляет git-репозиториями, поменялся URL. Нужно было переключить все локальные копии на моей машине на этот новый адрес. Таких  локальных копий у меня было около 10-ти.

Вручную я должен был войти в каждую папку, набрать там команду git remote, скопировать оттуда старый адрес, преобразовать его в новый и выполнить git remote set-url уже с новым URL.

Я не помню, как все это сделать на Powershell и тем более на BAT/CMD. Более того, я не хочу все это вспоминать. Вместо этого, я взял и написал скрипт на языке 1С. Всего-то перебрать папки из списка, в каждой из них дважды запустить git. Раз плюнуть. Потом скрипт переехал к коллегам, столкнувшимся с той же проблемой.

Что такое 1Script?

На конференции Infostart Event 2014 мною был представлен новый скриптовый движок, позволяющий исполнять код на языке 1С:Предприятия, но без самой платформы 1С. Фактически, это новый инструмент автоматизации, не требующий переключения контекста из 1С в абракадабру другого языка и обратно, и который может быть использован специалистами по 1С для автоматизации той или иной рутинной работы внутри операционной системы.

Технически он устроен, как и любой другой скриптовый движок (Python, JScript, PHP). Это интерпретатор, выполняющий текстовые файлы, как правило, в консольном режиме. Преимущество перед другими языками здесь в том, что вы не переключаетесь в чужеродную экосистему, для выполнения задачи. Вы не тратите время на изучение (или вспоминание) другого языка. Вы просто пишете на 1С. При этом вы не запускаете платформу, вам не нужен лицензионный ключ, вам не нужно выбирать в меню "Файл" внешнюю обработку, которая выполнит нужные действия. Создаете текстовый файл и пишете прямо в нем. Его же запускаете на выполнение.

Кстати, забыл сказать, что это кросс-платформенный инструмент. Вы можете писать скрипты под Linux на языке 1С с той же простотой.

Предлагаю рассмотреть порядок установки и запуска вашего первого скрипта на OneScript. В качестве примера возьмем ту самую задачу с изменением URL для git-репозитория.

Установка интерпретатора.

OneScript имеет открытый исходный код и доступен в публичном репозитарии на bitbucket.

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

Опубликованный релиз

Версия в разработке

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

Далее-далее-далее, ждем завершения установки.

Инсталлятор автоматически пропишет oscript.exe в переменную PATH, чтобы было удобно пользоваться интерпретатором. Для проверки нужно запустить командную строку и набрать там команду oscript. Если все успешно, то должно появится следующее сообщение:

Если система не опознала команду, то нужно выйти и снова войти в систему (перелогиниться в системе), чтобы переменная PATH обновилась.

Настройка окружения для разработки

ВНИМАНИЕ! Информация о редакторе кода на данный момент устарела, поскольку, сообщество уже создало намного более совершенный редактор для кода 1С на базе Visual Studio Code. Неплохое руководство по которому можно прочитать по ссылке //sale.itcity.ru/public/687869/ Разумеется, редактор описываемый ниже, тоже можно использовать, но имейте в виду, что есть намного более удобный способ разработки. С уважением, ваш Evil Beaver. 22.10.2017

В принципе, скрипты можно писать в любом текстовом редакторе, но все-таки хочется подсветки синтаксиса и контекстной подсказки.

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

Я этим способом не пользуюсь, а пишу скрипты в Notepad++. Не пугайтесь, это не просто блокнот, а я не чокнутый гик (хотя в последнем не уверен). В Notepad++ есть и подсветка и подсказка и средства выполнения скрипта, который вы в данный момент пишете. Нужно только все это включить. Этот блокнот легко превращается в неплохую среду разработки.

 А вот и контекстная подсказка.

 Включаем подсветку синтаксиса Notepad++

 Во-первых, нужно установить сам Notepad++

Чтобы Notepad++ заиграл красками 1С в нем нужно произвести несколько настроек. Во-первых, установить файл подсветки синтаксиса. Скачать его можно вот здесь или во вложении к статье. Далее, заходим в меню «Синтаксисы/Задать свой синтаксис».

В этом окне нажимаем кнопку «Импорт» и выбираем файл с синтаксисом 1С. Убедитесь что в поле «Расширение» установлено значение «os». При открытии файлов с этим расширением Notepad++ будет автоматически включать нужную подсветку синтаксиса.

 

Если подсветка не включилась

В Notepad++ есть странный глюк. Подсветка синтаксиса 1С в нем работает только если файл использует кодировку UTF-8. Поэтому, рекомендуется все скрипты кодировать именно так. Если подсветка после импорта из файла не включилась – нужно переключить кодировку в UTF-8 (меню «Кодировки\Преобразовать в UTF-8») и перезапустить блокнот.

Устанавливаем плагины

Существует огромное количество удобных плагинов для NPP. Все они удобным образом устанавливаются через менеджер плагинов, запускаемый из меню «Плагины – Plugin Manager – Show Plugin Manager»

Для разработки скриптов наиболее полезным является плагин NppExec. Он позволяет, не выходя из блокнота, запускать какое-либо приложение и наблюдать его консольный вывод непосредственно в окне Notepad++.

Для разработчика скриптов это означает, что он пишет скрипт, нажимает кнопку и видит результат работы скрипта сразу же, в окне блокнота. Этим обеспечивается быстрый цикл разработки в стиле «Написал-Нажал-Посмотрел результат»

Устанавливаем в менеджере плагинов флажок возле NppExec и запускаем установку. После установки в меню "Плагины" появится пункт NppExec. В подменю этого пункта рекомендуется установить флажок "Follow ($CURRENT_DIRECTORY)". При запуске скрипта на выполнение он автоматически будет стартовать в той директории, где лежит файл запускаемого скрипта.

 

Настраиваем запуск скрипта

NppExec работает следующим образом:

  • Нажимаем кнопку F6 и в открывшемся окне вводим команду для запуска. Жмем ОК и она выполняется. Результат будет выведен в отдельную всплывающую панель
  • Далее, жмем Ctrl+F6 и предыдущая команда запускается еще раз

То есть, нам нужно в окне запуска ввести команду oscript $(FULL_CURRENT_PATH) и нажать ОК. В консоли будет выведен результат работы того скрипта, который сейчас открыт в блокноте.

 

На этом настройка рабочего окружения закончена. Это было несложно:

  1. Установили Notepad++
  2. Установили подсветку синтаксиса
  3. Установили плагин NppExec и настроили команду запуска текущего скрипта
  4. Профит

Автоматизируемся!

Давайте вернемся к исходной задаче перенастройки git-репозиториев. Итак, есть каталог, внутри которого находятся локальные копии разных репозиториев.

Задача – перенастроить их на другой url.

Создаем новый файл с расширением os. Если у вас блокнот настроен на кодировку ANSI – переключаемся в UTF-8, чтобы работала подсветка.

А дальше – все, как в 1С. Скрипт начинает выполняться «с конца». При запуске выполняется код в самом низу модуля.

Для того, чтобы было проще сориентироваться в возможностях 1Script, имеется своего рода «Синтакс-помощник» в wiki проекта. Он описывает доступные языковые средства, классы, методы и т.п.

has been added to your cart:
Оформление заказа