1с как установить 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. Раз плюнуть. Потом скрипт переехал к коллегам, столкнувшимся с той же проблемой.
На конференции Infostart Event 2014 мною был представлен новый скриптовый движок, позволяющий исполнять код на языке 1С:Предприятия, но без самой платформы 1С. Фактически, это новый инструмент автоматизации, не требующий переключения контекста из 1С в абракадабру другого языка и обратно, и который может быть использован специалистами по 1С для автоматизации той или иной рутинной работы внутри операционной системы.
Технически он устроен, как и любой другой скриптовый движок (Python, JScript, PHP). Это интерпретатор, выполняющий текстовые файлы, как правило, в консольном режиме. Преимущество перед другими языками здесь в том, что вы не переключаетесь в чужеродную экосистему, для выполнения задачи. Вы не тратите время на изучение (или вспоминание) другого языка. Вы просто пишете на 1С. При этом вы не запускаете платформу, вам не нужен лицензионный ключ, вам не нужно выбирать в меню «Файл» внешнюю обработку, которая выполнит нужные действия. Создаете текстовый файл и пишете прямо в нем. Его же запускаете на выполнение.
Кстати, забыл сказать, что это кросс-платформенный инструмент. Вы можете писать скрипты под Linux на языке 1С с той же простотой.
Предлагаю рассмотреть порядок установки и запуска вашего первого скрипта на OneScript. В качестве примера возьмем ту самую задачу с изменением URL для git-репозитория.
OneScript имеет открытый исходный код и доступен в публичном Версия в разработке
Есть два вида дистрибутива – инсталлятор и просто архив с файлами программы. Нам нужен инсталлятор. Скачиваем и запускаем его.
Далее-далее-далее, ждем завершения установки.
Если система не опознала команду, то нужно выйти и снова войти в систему (перелогиниться в системе), чтобы переменная PATH обновилась.
В принципе, скрипты можно писать в любом текстовом редакторе, но все-таки хочется подсветки синтаксиса и контекстной подсказки.
Если у вас есть Снегопат, то вы можете писать скрипты в Конфигураторе 1С. При переключении текстового документа в режим встроенного языка Снегопат будет предоставлять контекстную подсказку, как будто это не скрипт, а обычный модуль 1С.
Я этим способом не пользуюсь, а пишу скрипты в Notepad++. Не пугайтесь, это не просто блокнот, а я не чокнутый гик (хотя в последнем не уверен). В Notepad++ есть и подсветка и подсказка и средства выполнения скрипта, который вы в данный момент пишете. Нужно только все это включить. Этот блокнот легко превращается в неплохую среду разработки.
А вот и контекстная подсказка.
Включаем подсветку синтаксиса 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) и нажать ОК. В консоли будет выведен результат работы того скрипта, который сейчас открыт в блокноте.
На этом настройка рабочего окружения закончена. Это было несложно:
- Установили Notepad++
- Установили подсветку синтаксиса
- Установили плагин NppExec и настроили команду запуска текущего скрипта
- Профит
Давайте вернемся к исходной задаче перенастройки git-репозиториев. Итак, есть каталог, внутри которого находятся локальные копии разных репозиториев.
Задача – перенастроить их на другой url.
Создаем новый файл с расширением os. Если у вас блокнот настроен на кодировку ANSI – переключаемся в UTF-8, чтобы работала подсветка.
А дальше – все, как в 1С. Скрипт начинает выполняться «с конца». При запуске выполняется код в самом низу модуля.
Для того, чтобы было проще сориентироваться в возможностях 1Script, имеется своего рода
Теперь создаем процедуру «ОбойтиВсеРепозитарииВКаталоге»
Ну и дело за малым – запустить гит для получения и изменения URL в процедуре «ОбработатьКаталог»
Ну и остались служебные процедуры «ПрочитатьАдрес» и «ПрочитатьФайл». Не буду их приводить из экономии места. Там банальное чтение файлов с помощью ЧтениеТекста.
Ну и дальше, жмем в блокноте Ctrl+F6 и наблюдаем за работой скрипта:
Мы только что написали несложный код на знакомом и любимом языке. Мы очень хорошо знаем его и можем творить с ним чудеса, верно? И обратите внимание, нам не потребовался Конфигуратор, мы вообще не трогали 1С. OneScript не использует никакие библиотеки платформы и не требует ее установки на машину.
Мы у себя в работе используем OneScript для самых разных задач. От автоматизации развертывания баз 1С и синхронизации исходников конфигураций в git, до расчета покрытия кода тестами. Код наших скриптов также расположен в git, и любой 1С-ник компании может при желании что-то доработать. Язык знаком всем и не требует дополнительных навыков.
Производительность кода по нашим оценкам, как минимум, не хуже 1С. На некоторых задачах OneScript быстрее почти в 2 раза, на некоторых – примерно одинаково. Радикального проигрыша 1Script в скорости по сравнению с 1С мы пока не наблюдали.
Сейчас, в пору кризисов и санкций в Сети все чаще попадаются предложения по экономии на лицензиях для Windows, есть success-story по переводу части парка машин на Linux. Если посчитать лицензии Microsoft по текущему курсу, то переезд на Линукс выглядит все более привлекательным. Если вы строили автоматизацию на Powershell, то он станет у вас камнем преткновения. OneScript работает под Linux и вы можете автоматизировать свою деятельность независимо от того, какая ОС применяется (или будет применяться в будущем) в вашей компании. Если 1С-ники вашей фирмы пересядут на линукс, то им (в идеале) не придется изучать shell-скрипты. Они смогут пользоваться знакомым языком программирования.
OneScript Package Manager
- build - Собрать пакет из исходников
- run - Выполнить произвольную задачу
- test - Выполнить тестирование проекта
- prepare - Подготовить новый каталог разрабатываемого пакета
- install - Выполнить установку. Если указано имя пакета, происходит установка из хаба или из файла. В обратном случае устанавливаются зависимости текущего пакета по файлу packagedef.
- update - Обновить пакет
- app - Создать bat-файл для запуска скрипта в указанном каталоге
- config - Задать пользовательские настройки
- list - Вывести список пакетов
- help - Справка по командам
Наберите opm --help, чтобы вывести справку по команде
В настоящее время пакеты хранятся на двух серверах:
-
- основной хаб пакетов - вторичный хаб пакетов. Используется, когда не удаётся получить данные с основного хаба
Особенности обновления версий
с 0.14.х на 0.15.х и выше
- Изменена строка использования (вызова) приложения - теперь соответствует стандарту POSIX.
- Все параметры вызова разделены на опции и аргументы. Для коротких (1 символ) опций обязательно использование - , для длинных опций (2 символа и более) - использование двойного тире --
- Сначала необходимо указывать опции, а потом аргументы
Пример изменений использования для команды build
Настройка путей установки скриптов
Переменная окружения OSCRIPTBIN отвечает за переопределение пути установки скриптов при глобальной установке. По умолчанию для linux считается "/usr/bin", а для windows КаталогПрограммы(). При указании данной переменной можно переназначить путь для создания скриптов запуска различных пакетов. Возможно скачать архив, распаковать его и запуская oscript с указанием этих переменных тестировать работу автономной установки.
Настройка прокси-сервера для скачивания пакетов
Настройка производится с помощью создания служебного файла opm.cfg данный файл настроек можно расположить по таким путям (список приведен в порядке убывания приоритета):
ВНИМАНИЕ! Проект переведен в архив. Замер покрытия реализован гораздо более элегантно в другом проекте - Coverage41C
Приложение OneScript для расчета покрытия исходного кода конфигураций 1С
- dbgs-proxy - логирующий реверс-прокси для 1С на Node.js
- 1coverage - приложение, которое управляет сбором замеров производительности и конвертирует их в формат genericCoverage или lcov
Общий принцип работы
dbgs-proxy работает между сервером отладки и тестируемым приложением, перехватывает и сохраняет данные замеров производительности в файл. Затем приложение конвертирует этот файл в формат genericCoverage или lcov.
- ОбработчикЛоговПрокси принимает на вход путь к логам прокси, обрабатывает их и формирует таблицу ДанныеЗамеров . Таблица ДанныеЗамеров содержит только исходные данные, которые перехватил прокси - Ид объектов, Ид типов модулей и номера строк.
- ОбработчикДанныхЗамеров принимает на вход ДанныеЗамеров и путь к исходному коду конфигурации, а по ним определяет пути к модулям и формирует таблицу ДанныеПокрытия . Для определения объектов конфигурации использует класс ОбработчикФайловКонфигурации .
- ГенераторОтчетаОПокрытии принимает на вход ДанныеПокрытия и генерирует отчет о покрытии в выбранном формате.
Требования к окружению
- ОС Windows
- git
- OneScript 1.2
- платформа 1С версии не ниже 8.3
- Node.js
- исходники конфигурации в формате XML или EDT
- проект в SonarQube, связанный с целевой конфигурацией
Рекомендуется выполнять установку из консоли с правами Администратора
Вне зависимости от выбранного способа, dbgs-proxy будет установлен в каталог 1coverage.
- выполнить команду opm install 1coverage для установки самого приложения
- выполнить команду 1coverage install для установки dbgs-proxy в каталоге приложения
- клонировать репозиторий
- из каталога репозитория выполнить команду oscript ./src/1coverage/1coverage.os install
- 1coverage init
- 1coverage start
- 1coverage stop
- 1coverage convert
Для запуска всех тестов необходимо в каталоге приложения выполнить команду opm run test . Выполнение тестов требует наличия vanessa-runner.
Для автоматизации рутинных операций в операционной системе разработчики с системными администраторами давно привыкли использовать встроенные средства. CMD, PowerShell, VSScript, JS, BASH – прекрасные инструменты для разработки автоматизирующих сценариев. Минус у них лишь один – обязательность изучения еще одного диалекта.
Это не сильно большая проблема для профессионального разработчика, но согласитесь, хорошо, когда в экосистеме есть специализированный инструмент, решающий стандартные задачи на знакомом языке. За примерами далеко ходить не нужно. PHP, JavaScript, Python разработчики используют язык разработки для написания сценариев автоматизации. Они пишут на языке каждый день, и написать на нем кода для, скажем, резервного копирования разрабатываемого проекта – дело нескольких часов.
Здорово ведь, что не требуется переучиваться и разбираться с очередным синтаксисом вместо написания кода для решения определенной проблемы. Именно этого и не хватает 1С-разработчикам – инструмента, понимающего код на встроенном языке 1С и умеющий делать различные системные вещи.
К счастью, такой инструмент существует, причем уже не первый год и сегодня мы внимательно посмотрим на него с разных практических сторон. Итак, коллеги, знакомьтесь, OneScript – системная палочка-выручалочка для 1С-разрабочтиков.
Свободный, независимый OneScript
Начнем с главного, к созданию OneScript, компания 1С не имеет никакого отношения. Это полностью независимая кросс-платформенная реализация виртуальной машины для исполнения сценариев на встроенном языке платформы «1С:Предприятия».
Решение создавалось специально для 1С-разработчиков, поэтому синтаксически это чистый язык 1С. Циклы, коллекции, условия и т.д. – все точно такое же, как мы привыкли использовать при разработке под платформу «1С:Предприятие».
Третья из приятных особенностей «OneScript» - расширяемость. Это значит, что разработчик при желании может расшить возможности «OneScript» за счет написания дополнительных библиотек. Под словом «библиотека» подразумевается не просто сборник жизненно-необходимых функций, а реализация полноценных объектов, которые могут быть использованы в сценариях и поставляться посредством менеджера пакетов OneScript Package Manager (opm).
«OneScript» развивается не первый год и за это время успел обзавестись полезными библиотеками от независимых авторов. Тем самым показав, что ставка на бесшовную расширяемость была сделана не напрасно.
Области применения
Первая очевидная ниша для «OneScript» - автоматизация типовых задач 1С-разработчика/администратора, связанных с сопровождением информационных баз. За примерами далеко ходить не нужно. Все мы (надеюсь, что все) написали свои «лучшие» сценарии для автоматизации резервного копирования, завершения работы пользователей в живой базе и другие знакомые всем вещи. Все выше перечисленные вещи наверняка создавались на одном из озвученных выше инструментов (CMD, PowerShell и т.д.).
«OneScript» поможет сделать все то же самое, но на «родном» языке программирования. Перечисленные задачи – идеальный полигон для «OneScript».
Хорошо, с обслуживанием все понятно. А для чего еще его можно применять? Тут все зависит от фантазии и задач, стоящих перед разработчиком. «OneScript» прекрасно подойдет для создания консольных приложений. Вам необязательно думать о «OneScript», как о части экосистемы платформы «1С:Предприятие». Правильней думать о нем как об отдельном инструменте со знакомым языком. Тогда полезных сценариев применения удастся придумать значительно больше.
Одной из таких идей может стать добавление «OneScript» к другим проектам, где требуется предоставление возможности расширения за счет плагинов. Представим, что вы занимаетесь разработкой узкоспециализированной системой учета. У вас есть база довольных пользователей с постоянным запросом новых функций.
Одни предложения по доработке функционалы интересны и могут быть полезными широкому кругу пользователей, а другие узкие, решающие единичные проблемы. Тратить время на такие вещи нецелесообразно и вот тут становится очевидной реализация системы плагинов. Если ваш проект создан под платформу «1С:Предприятие», то особых трудностей нет. 1С-разработчиков много и кто-нибудь, да возьмется за доработки. Совсем иная ситуация с не столь распространённым технологическим стеком.
Утверждение может показаться спорным, но те, кто на практике столкнулся с сопровождением учетных систем вроде «Инфо-бухгалтер, Парус и т.д.» прекрасно понимают боль, связанную со сложностью применения нового синтаксиса/парадигмы для доработки решения.
С 1С-разработчиками ситуация противоположная. Их много и если позволить им создавать для продукта расширения на понятном им языке, то от этого выиграют все стороны. Для таких задач, «OneScript» подходит как нельзя идеально. Вам требуется организовать интеграцию «OneScript» со своим решением, а дальше эстафетную палочку примут прикладные разработчики.
Применений для «OneScript» множество, главное не бояться пробовать новый инструмент на практике и решать с его помощью реальные повседневные задачи.
Установка OneScript
Выше я упомянул о кросс-платформенности «OneScript». На официальном сайте ([1]) доступны пакеты для Windows (zip, exe, msi) и Linux (rmp, deb). Актуальная версия на момент написания статьи – 1.0.16. Все рассмотренные далее примеры воспроизводились в Windows. Если вы решили проверить «OneScript» на Linux, то будьте внимательны. Некоторые примеры из-за особенностей ОС не будут работать.
Установка «OneScript» выполняется стандартным образом – с помощью инсталлятора. В окне мастера установки рекомендую вам отметить все компоненты (по умолчанию они не ставятся). На начальном этапе изучения проекта они пригодятся.
После установке, в меню пуск появится ссылка на запуск консоли для разработки и тестирования сценариев (рисунок 1). Для созданных сценариев из командной строки, рекомендую сразу изменить системную переменную PATH.
Для этого запустите аплет панели управления «Система». Далее в дополнительных свойствах выберите «Параметры среды», найдите переменную PATH и добавьте в ее значение (через точку с запятой) путь к директории с установленным «OneScript». После этого перезагрузите систему.
После перезагрузке запустите консоль CMD и выполните команду oscript. Результат корректного выполнения показан на рисунке 2.
Где писать код
Код сценариев можно писать как в консоле (поставляется в комплекте), так и вашем любимом редакторе кода. В консоле, доступной из коробки, работать с кодом не очень удобно, поэтому рекомендую посмотреть в сторону профессиональных редакторов – Atom, VSCode, Brackets и т.д.
Помимо программирования под платформу «1С:Предприятие», ваш покорный слуга занимается фронтендом, поэтому для меня универсальным редактором давно стал Visual Studio Code ([2]).
Технологически он похож на распиаренный Atom от GitHub, но выгодно отличается от него производительностью. Редактор в разы быстрей стартует и глюков у него на порядок меньше. К тому же, для разработки на «OneScript» для VSCode есть готовый плагин – Language 1C (BSL). Для загрузке пройдите в официальный маркет-плейс ([3]) или установить прямо из редактора, выполнив команду:
Будем считать, что с установкой и настройкой редактора для работы с OneScript вы справились. Я буду ориентироваться, что вы сделали выбор в пользу VSCode (поверьте, он действительно удобный). Создайте где-нибудь каталог, в котором будете размещать файлы примеров и откройте его в редакторе. Перед тем как добавлять новые файлы сценариев, нажмите F1 и в появившейся командной строке выполните: Language 1C (BSL): Create tasks.json for current workspace.
Тем самым вы создадите конфигурационный файл (tasks.json), описывающий настройки по запуску сценариев. Не будем погружаться в его содержимое, просто запомним, что для запуска сценария требуется нажать сочетание клавиш – ctrl + shift + b.
Убедимся в правильности настроек, попробуем создать новый сценарий (helloWorld.os) и напишем в нем традиционную фразу:
Жмем ctrl + shift + b и если все работает корректно, в окне терминала вы видите вывод первой фразы программиста (см. рисунок 3).
Очищаем клиентский кеш
В рамках статьи хочется привести ряд полезных примеров, но они достаточно объемные и просто так код их не уместить. Поэтому здесь мы посмотрим решение задачи по очистке клиентского кеша (помните, таинственные папки в профиле пользователя?), а затем я познакомлю вас с готовыми библиотеками, на основе которых вы сможете написать полезные для себя сценарии.
До сих пор в составе платформы «1С:Предприятие» нет инструмента для быстрой очистки кэша. Необходимость в очистке кэша возникает не часто, но иногда все же приходятся выполнять эту операцию.
Некоторые глюки, возникающие после обновления конфигурации элегантно решаются только очисткой кеша. Что подразумевается под этой процедурой? Нужно пройтись по нескольким скрытым каталогам в директории профиля пользователя и удалить файлики.
Задача простая, но когда доходит дело до объяснения этого квеста пользователю, к которому нет возможности подключиться удаленно, трижды вспоминаешь о необходимости специализированного инструмента.
В разное время для решения этой проблемы я пользовался небольшим собсвтенным приложением. Удобно, но не очень универсально. В первом листинге я привел решение этой задачи на «OneScript».
Листинг №1. Очистка клиентского кеша на OneScript
Больше библиотек
Как я уже говорил: «OneScript расширяется за счет сторонних библиотек». Таких библиотек уже ни мало и о нескольких полезных мы сейчас поговорим. Полный список библиотек доступен в репозитории ([4]), а здесь я упомяну о трех, постоянно используемых мной в практике.
cmdline
Большинству сценариев, так или иначе, требуется взаимодействовать с передаваемыми параметрами командной строки. Считать файл, загрузить файл по указанному пути – все эти данные попадают сценарию при помощи параметров. Для работы с параметрами командной строки, которые получает сценарий, в «OneScript» доступна коллекция (массив) – «АргументыКоманднойСтроки». Из нее разработчик может вытащить все параметры, которые передали сценарию. Однако, работать с этой коллекцией не сильно удобно.
Представим, что у нас есть сценарий, который умеет считывать параметры “-firtname” и “-lastname”. Цель скрипта банальна до безобразия – сформировать строку имени и фамилии на основании данных из перечисленных параметров. Если мы запустим наш сценарий командой:
А затем попробуем прочитать коллекцию «АргументыКоманднойСтроки» в цикле, то увидим никак не связанный из себя набор элементов:
Чтобы сотворить из списка удобную для работы структуру придется написать мини-парсер. Может показаться, что это не слишком сложно, но не стоит забывать, что параметров может быть несколько и пользователь имеет возможность указывать их в произвольном порядке. Библиотека cmdline такие проблемы решает максимально эффективно. Во втором листинге представлен код простого приложения, демонстрирующий применение cmdline на практике.
Листинг 2. Эффективная работа с параметрами командной строки
При использовании cmdline, получить значение разобранных команд, сводится к обращению к одноименным ключам полученной на выходе структуры.
oscript-yadisk
В нашей компании мы активно используем облачный сервис «Яндекс.Диск». У нас полно автоматизирующих сценариев, написанных еще на PHP, выполняющих подготовку и миграцию различных данных в облако. Наша команда была приятно удивлена, что для «OneScript» существует отличная готовая библиотека (oscript-yadisk), позволяющая без лишних сложностей взаимодействовать (загружать файлы, получать информацию, скачивать файлы и т.д.) с популярным сервисом от Яндекс.
При ее использовании, работа с «Яндекс.Диск» сводится к вызову одноименных команд. В официальном репозитории есть подробные примеры использования библиотеки. Библиотека устанавливается стандартным способом через opm.
Из коробки в OneScript не реализована поддержка популярного формата JSON, поэтому для работы с ним придется воспользоваться одноименной библиотекой. Библиотека основана на модуле «1С:JSON Александр Переверзева», который долгое время был стандартом для работы с JSON в платформе «1С:Предприятие» (пока не появились нативных методы).
v8runner
Интересное решение, упрощающее взаимодействие с конфигуратором. По факту это обертка для широкого списка параметров командной строки, которые принимает конфигуратор. Рассмотрим пример. Вы помните весь список ключей, при помощи которых конфигуратор выполнит загрузку конфигурации из файла? Если помните, то значит у вас отличная память. Посмотрите, как это задача решается с помощью модуля v8runner:
На основе v8runner можно написать множество типовых сценариев для автоматизации. Мы используем библиотеку для организации резервного копирования, быстрого восстановления баз и т.д. Пользователь gitHub’а – BlackDrak0n, пошел дальше и на основе библиотеки создал универсальный сценарий для обновления типовых конфигураций.
Его проект oscript-AutoUpdateIB ([5]) умеет автоматически загружать обновления с официального сайта поддержки пользователей, выполнять резервное копирование ИБ, а затем накатывать загруженные обновления. Незаменимая вещь при сопровождении большего количества типовых решений.
Модульное тестирование в массы
Одним из ограничений «OneScript» на начальном этапе освоение будет отсутствие встроенного отладчика. 1С-разработчик применяет пошаговую отладку кода постоянно, поэтому при освоении скриптового инструмента возникнут небольшие сложности. Первой альтернативой классическому отладчику однозначно станет логирование, реализуемое библиотекой logos. По мере роста исходного кода сценариев одного логирования будет недостаточно, и тут на помощь готовы прийти модульные тесты.
«OneScript» поддерживает тестирование из коробки. Загружаем с официального сайта сценарий testrunner.os. Как видно из названия он предназначен для последовательного запуска тестов. Дальше создаем директорию для хранения тестов к сценарию и добавляем файл с описанием тестов (листинг 3).
Листинг 3. Пример файла с тестами
Во втором листинге приведен код с тривиальным тестом. Практического смысла в нем нет (мы знаем, что 2 * 2 будет четыре), но он прекрасно подходит для понимания основ тестирования. Итак, в одном файле может быть объявлено несколько разных тестов. Все они (имена функций с тестами) должны быть перечислены в массиве, который возвращает функция «ПолучитьСписокТестов(). Во втором листинге описывается один тест – «ПроверитьУмножениеЧисел2и2». Имена процедур с тестами могут быть любимыми. Главное чтобы сами процедуры были описаны как экспортные.
Описание самой процедуры с тестом выполняется стандартным образом. Внутри пишите произвольный код и выполняете проверку утверждения с помощью метода «ПроверитьРавенство». В приведенном примере мы проверяем утверждение, что вызов функции умножить равняется 4. Если функция «ВыполнитьУмножение()» вернет не 4, то тест считается проваленным и надо разбираться почему это произошло.
Для запуска созданного теста в консоле требуется выполнить:
По окончанию тестирования результаты будут выведены в консоль, но вы можете настроить сохранение результатов в отдельный файл для последующего детального анализа. На рисунке 5 показан результат выполнения двух тестов.
Может показаться, что написание тестов пустая трата времени и сил – по факту кода приходится писать в два раза больше. Для небольших и одноразовых сценариев выгода от тестов будет не столь очевидна. Она проявится при работе с большими, активно сопровождаемыми проектами, когда внесение нового функционала может привести к неработоспособности существующего.
Больше, чем сценарий
Сценарий выполнен
«OneScript» - прекрасный инструмент для автоматизации, который стоит взять на заметку всем, чья работа связана с разработкой и сопровождением решений на базе платформы «1С:Предприятие». Эффективно решайте задачи на привычном языке, вместо траты лишнего времени на изучение синтаксиса очередного интерпретатора.
После моего доклада на INFOSTART 2017 EVENT COMMUNITY ко мне многие обращались с таким вопросом: с чего начать разработку скриптов на OneScript? В этой статье привожу набор ссылок и некий порядок действий (как его вижу я) для людей, не знакомым с этим инструментом.
Прежде всего хочу сказать, что я не явлюсь автором движка или стандартных библиотек OneScript. Здесь я бы хотел просто рассказать о том пути, который прошел я, чтобы начать разрабатывать на OneScript. Ни в коем случае не настаиваю на истинность или полноту действий. Если кто-либо из причастных захочет что-то добавить или изменить (на что я надеюсь), с радостью добавлю или изменю. Давайте напишем этот мануал вместе!
1. Для начала, предлагаю посмотреть вот это 25-минутное видео (которое я записывал в рамках пятничных вебинаров разработчиков 1С), где «с нуля» создается первый скрипт, а также объясняются все основные понятия:
2. В видео частично повторяются действия, описанные Андреем Овсянкиным в статье «Как решать повседневные задачи с помощью OneScript». Думаю стоит ее прочитать.
- Кончено же, «Документация», где описаны основные принципы работы со скриптами.
- Раздел «Библиотеки», где описан порядок создания новых библиотек. , где можно найти справку по языку.
5. Все скрипты, в принципе, можно разрабатывать и в NotePad++, но все же удобнее это делать в Visual Studio Code.
6. Задать вопрос авторам:
7. На infostart уже имеется достаточно статей и программ написанных на OneScript. Прогнозирую в будущем создание отдельного пункта в разделах, например, в фильтре «Платформа»:
Ну а пока, можно воспользоваться поиском, для просмотра всех материалов по этой теме.
8. Примеры готовых инструментов (не из числа стандартных библиотек) на OneScript:
9. Еще полезные статьи о OneScript:
Ну и в заключение хочу сказать, что я вам искренне желаю не делать одни и те же действия руками. Не бойтесь изучать новое, не бойтесь заниматься автоматизацией. Это не только полезно, но и очень увлекательно. Удачи!
Смотрите также:
Итак, как вам нужно придумать доменное имя для своего блога или сайта. Но как сделать его запоминающимся? Как заставить людей возвращаться на сайт снова и снова? Об этом пойдет речь…
В этой статье я расскажу о том, как своими руками сделать точно такой же как у меня сайт. Думаете это очень сложно? Ничего подобного! Просто следуйте инструкциям, и все получится!…
Запись опубликована в рубрике OneScript, Видео с метками 1Сv8, OneScript. Добавьте в закладки постоянную ссылку.
Читайте также: