OneScript для новичков

10.10.24

Разработка - OneScript

OneScript – это скриптовый движок для автоматизации всего и вся. О том, как OneScript помогает в разработке скриптов на языке 1С, пойдет речь в статье.

Мы сегодня с вами поговорим:

  • О том, что такое OneScript.

  • Я немного коснусь его истории, потому что для меня это очень важный вопрос.

  • Расскажу о его киллер-фичах.

  • Расскажу о хабе пакетов.

  • И немного коснемся того, как быстро начать работать на OneScript.

У меня доклад максимально простой – я попробую рассказать все просто и своими словами.

 

Что такое OneScript?

 

 

По определению, OneScript – это независимая кроссплатформенная реализация виртуальной машины, исполняющей скрипты на языке 1С:Предприятие.

OneScript – это программа, написанная на языке C#, использующая возможности .NET, с синтаксисом, полностью совместимым с 1С. У OneScript синтаксис абсолютно такой же, как в 1С. Тут есть циклы, массивы, таблицы – все, что есть в 1С, за исключением метаданных.

И так как это скриптовый язык, мы должны создавать файл, в котором будет содержаться последовательность команд скрипта. Напомню, что скрипт – это последовательность команд для выполнения какого-то действия.

OneScript (или 1Script) еще можно называть OScript, потому что исполняемый файл так и пишется – OScript. Не думайте, что это разные вещи, OScript и OneScript – это одно и то же. Но OneScript – это более традиционное название.

 

 

Еще oscript.io – это адрес сайта, на котором располагается:

  • Описание этого языка программирования.

  • Синтакс-помощник.

  • Там же располагаются ссылки на статьи и многое-многое другое.

 

История OneScript

 

Немного расскажу про историю. Вообще идея этого доклада у меня родилась после того, как недавно я осознал, что OneScript уже почти 10 лет. И до сих пор его обсуждают только в маленьких технических тусовках – в тех, где говорят о Git, о DevOps и так далее. Я тоже состою в этих тусовках. Но OneScript – это гораздо больше, чем программа для DevOps. На OneScript можно сделать все, что угодно – и это под силу кому угодно.

 

 

Итак, история:

  • OneScript появился в 2013-2014 годах. С этим связан забавный факт, потому что сам его создатель, Андрей Овсянкин, точно не помнит, когда он появился. Он сказал, что сначала придумал этот движок для себя, а потом пришел в компанию Связной, где как раз подобралась тусовка людей, которые сейчас и разговаривают о DevOps в основном, и они начали использовать это в работе. Так OneScript начал развиваться.

  • И в 2014 году Андрей Овсянкин выступил со своим первым докладом на конференции Инфостарта – «OneScript. Пишем на языке 1С вне платформы». Прошло 10 лет, и OneScript все еще актуален.

  • Следующая веха в развитии OneScript лично для меня была связана с 2018 годом – на конференции Инфостарта Андрей Овсянкин рассказывал про 1Script Web. Он придумал, как соединить OneScript, написанный на .NET, с веб-сервером Kestrel, который тоже использует .NET. И рассказывал, как быстро и просто писать веб-приложения на OneScript. К тому времени этот язык уже стал чем-то большим, чем просто штукой, умеющей только выполнять скрипты, написанные в текстовых файлах. На данный момент на 1Script.Web есть несколько проектов. Один из них – приложение «Управление хранилищами конфигураций».

  • Следующая веха из важных дат для OneScript – это, как ни странно, 2020-2021 год и объявление фирмы «1С» о выпуске 1С:Исполнителя и 1С:Элемента. Я не знаю, помните ли вы свои ощущения, когда «1С» их анонсировала. Лично я подумал о том, что они поняли, что существует этот маленький независимый OneScript, и попытались сделать для него конкурента. Но, как всегда, фирма «1С» пошла своим путем – в 1С:Исполнителе мы пишем на русском языке, но он не полностью совместим с языком 1С.

  • И последняя веха – это 2023 год, проекты Autumn и Winow. Никита Иванченко рассказывал о том, что Никита Федькин совместно с командой единомышленников разработали систему, позволяющую динамически менять исполняемый код скриптов. Они портировали на OneScript фреймворк Java Spring. И по аналогии с тем, что Spring – это весна, они назвали свой фреймворк ОСень или Autumn. Там немного «наркоманская» терминология: если вы слышали про дуб, завязь, желудь, напильник – это все не пустые слова. Если коротко, этот фреймворк позволяет сделать некую разметку, тегировать определенные строки кода, и благодаря этой разметке и тегам код начинает выполняться по-другому. Это очень круто. У меня лично в голове это укладывается, только когда смотрю в документацию – после этого я могу немного попрограммировать. Проходит неделя, и опять приходится читать, что такое дуб, а что такое завязь.

В общем, OneScript – это не только простые скрипты, простые приложения, но и уже очень сложные.

 

Киллер-фичи

 

 

Киллер-фичи OneScript:

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

  • Вторая киллер-фича – это язык 1С. Не нужно переучиваться. Если ты хоть что-то умеешь на 1С, ты просто открываешь блокнот и пишешь свой первый скрипт.

  • Третье – русскоязычное комьюнити. Это немаловажно, потому что если есть какие-то проблемы, мы всегда можем посмотреть, как это сделано в большой настоящей 1С. Во-вторых, есть чаты в Телеграме, посвященные исключительно OneScript. И если уж они и не решат вашу проблему, то хотя бы дадут подсказку, в каком направлении двигаться.

  • Следующее – это библиотеки и приложения. Тут надо немножко сказать еще про устройство приложений и библиотек на OneScript. Скрипт – это текстовый файл, который содержит в себе там некие команды. Одно из важных отличий OneScript от 1С – то, что OneScript модульный. Модульный означает, что мы можем в начале скрипта указать использование какой-то библиотеки, и потом в теле скрипта обращаться к методам и функциям этой библиотеки. Эта библиотека действительно должна быть установлена в системе, но в самом скрипте ее нет и не надо – мы просто декларативно объявляем, что используем эту библиотеку. Это очень круто.
    Если мы расположим свой скрипт в каталоге, а в этом каталоге положим папочки с определенными наименованиями «Модули» и «Классы», OneScript автоматически подтянет те модули и классы, которые находятся в этих папочках. Модуль – это такой же модуль, как в 1С, в котором содержатся процедуры и функции, а класс – это создание объекта. Например, у нас в папке класса лежит файл «УправлениеКонфигуратором», а из основного скрипта мы можем инициировать объект этого класса через «Новый УправлениеКонфигуратором» – в полученном объекте нам будут доступны все поля, описанные в том файле.

  • Следующее очень крутое и удобное – это инсталлятор пакетов. Я говорил о том, что нам доступны библиотеки. А как их устанавливать в систему? Откуда-то скачивать, переносить, копировать в какие-то папки? Нет, на том же самом 1С написано приложение opm – это аналог инсталлятора пакетов npm. Приложение opm занимается установкой и скачиванием пакетов. Например, я хочу в своем скрипте использовать класс «УправлениеКонфигуратором», который находится в библиотеке v8storage. В начале скрипта я пишу «#Использовать v8storage» – это ключевое слово, чтобы скрипт понял, что мне нужно использовать эту библиотеку. Запускаю скрипт, система говорит, что не может найти такую библиотеку. Я не отчаиваюсь – набираю в командной строке

    opm install v8storage


    Проходит пара секунд, он устанавливается, и все – его можно использовать. Он сам устанавливается, инициализируется, прописывается в необходимые папки и так далее.

  • Важно, что кроме того, что OneScript позволяет запускать скрипты явным образом через:

    oscript [имя_файла]


    Мы можем упаковать написанный нами скрипт в exe-приложение. OneScript сам упакует в exe-приложение все нужные зависимости и все нужные библиотеки. Таким образом у нас получится exe-шник, который можно просто переносить с компьютера на компьютер. Или же установить через тот же самый инсталлятор opm install.

 

Хаб пакетов

 

 

Адрес хаба пакетов – github.com/oscript-library

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

Кроме того, что хаб пакетов дает возможность установить пакет через opm, здесь же вы можете зайти в описание каждого пакета и прочитать, как он работает.

 

 

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

 

 

Приложение gitsync – флагман. Это то, с чего OneScript, наверное, начался и благодаря чему он развивался. Все, кто не знает, узнайте и используйте.

Так вот, gitsync – это приложение, написанное на OneScript, предназначенное для синхронизации хранилища и связанного с ним репозитария – для выгрузки версий хранилища в исходный код.

Это целый комбайн:

  • Gitsync может инициализировать репозитарий, если его нет.

  • Может выгрузить всю историю хранилища – правда, займет много времени

  • Может выгрузить определенную версию хранилища, ну и так далее.

Gitsync – это фактически плагин для OneScript, и в то же время для самого gitsync написаны плагины, которые изменяют его функциональность.

Например, для gitsync есть плагин increment, который включает инкрементальную выгрузку в исходный код, потому что большая конфигурация типа ERP будет выгружаться в исходный код минут 10, а с increment позволит это сделать за гораздо меньшее время.

 

 

Следующее флагманское приложение – это vanessa-runner.

Оно доступно как в виде exe-шника для запуска из командной строки в виде команды vrunner. И одновременно это библиотека, которую можно будет использовать из своих скриптов.

Vanessa-runner – это комбайн для автоматизации повседневных действий 1С-разработчика.

  • Выгрузка-загрузка конфигурации;

  • снятие с поддержки;

  • запуск тестов;

  • запуск дымовых тестов.

Если вы откроете описание этого пакета на гитхабе, там очень много возможностей.

 

 

Следующий пакет, которым я пользуюсь – это gitrules.

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

Каждому, наверное, знакома проблема, связанная с разработкой правил обмена. Даже если мы нашли человека, который любит этим заниматься, у нас все равно возникает проблема – как понять, а что именно было изменено в последнюю доработку правил? Gitrules решает эту проблему.

На вход gitrules мы подаем правила обмена в виде XML, и приложение их раскладывает на каталоги в отдельные файлы с описанием правил по каждому объекту и с разбиением по видам обработок.

С помощью gitrules мы можем, выгружая в Git XML-ку с правилами обмена, точечно видеть, что изменилось – не просто целиком изменился этот файл, и где-то среди тегов мы ищем изменения, а все просто и понятно.

 

 

Следующее – это 1connector. Те приложения, о которых я говорил раньше, они относились в основном к DevOps, а 1connector – это универсальная штука. Это библиотека для работы с HTTP-запросами.

В 1С и в OneScript есть стандартные возможности работы с HTTP-запросами – Новый Соединение, методы Отправить(), Получить() и так далее.

Но 1connector позволяет это сделать в одну строчку:

Результат = Коннектор.ПолучитьКакJSON(адрес_сайта, параметры)

И в качестве параметров мы можем передать структуру, которая должна попасть в тело запроса.

1connector берет на себя всю работу с обработкой запроса и возвращает результат – либо сырые данные, либо в виде JSON, либо так, как вам надо.

 

 

Еще один пакет, которым я сам пользуюсь – cpdb. Это и библиотека, и приложение. Название расшифровывается так: cp – копия, а db – база данных.

Cpdb – это комбайн для работы с базами данных 1С. С его помощью можно:

  • сделать бэкап;

  • развернуть базу из бэкапа;

  • сконвертировать базу из MS SQL в PostgreSQL;

  • выполнить произвольный запрос на сервере SQL;

  • выполнить сжатие таблиц и т. д.

 

 

И последнее приложение, о котором я хотел рассказать – это winow, оно относится как раз к тому, что разрабатывается на OneScript в последнее время.

Winow – это возможность запустить веб-сервер на чистом OneScript. Не надо устанавливать Apache или IIS – достаточно написать скрипт, запустить его, и поднимется сокет, который будет слушать определенный порт. Мы можем слать на него запросы, а он будет их обрабатывать.

Это очень круто, для нас открываются безграничные возможности. Причем 1С такого пока еще не умеет, зато умеет OneScript.

 

Как быстро начать работать на OneScript

 

Просто берете и работаете. Это, конечно, совет от «Капитана Очевидность», но если OneScript – это штука, с помощью которой можно писать на языке 1С, что нам еще надо? Мы просто берем и пишем на языке 1С, который мы и так знаем.

Все-таки немного расскажу об этом.

 

 

Для начала мы заходим на oscript.io/downloads и скачиваем нужный нам дистрибутив. Поскольку OneScript – кроссплатформенный, мы можем там скачать exe-шник 32 и 64 бита или пакеты для линукса.

Потом устанавливаем его. И когда он установился в системе, пишем в командной строке:

oscript

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

 

 

Чтобы написать первый скрипт, можно взять:

  • Просто блокнот – никто нам не помешает писать в блокноте.

  • Или мы можем взять Notepad++.

  • Или можем взять то, что сейчас считается мастхевом – Visual Studio Code. Для Visual Studio Code есть плагины, которые для синтаксиса 1С и OneScript показывают подсветку.

Создаем файл Привет.os и пишем там:

Сообщить("Привет, мир!");

 

 

После этого в командной строке пишем:

oscript Привет.os

И в командной строке видим ответ:

Привет, мир!

Все, мы молодцы.

Кроме того, Visual Studio Code позволяет делать отладку – для этого есть специальный плагин. В левой части у нас появятся все объекты, которые сейчас есть в данном скрипте – мы можем обратиться к их полям, поменять их свойства и так далее. Но это уже тема другого разговора.

 

 

Все это время я пытался показать вам, что:

  • OneScript – это просто. Для нас, для программистов 1С, это – еще одна возможность писать что-то, но не на 1С, а на OneScript.

  • Второе, что я хотел сказать, OneScript – это просто, потому что это русский язык. Можно не писать свое с нуля, а можно воспользоваться огромным каталогом имеющихся библиотек.

  • И третье: OneScript – это просто. Давайте начнем им пользоваться.

 

Вопросы и ответы

 

Подскажите, есть ли какие-то обучающие материалы, если хочешь что-то сделать? Или только на сайте или гитхабе читать о пакетах?

Во-первых, на сайте oscript.io собраны статьи с Инфостарта:

Мы же не просто так пишем скрипты, мы это делаем для решения какой-то задачи, поэтому нужно:

  • Поискать – может быть, для твоей задачи уже есть скрипт.

  • Даже если нет готового скрипта, который решает конкретно твою задачу, всегда есть что-то похожее. Так как исходные коды любого пакета выложены на GitHub, можно зайти в его репозиторий и просто прочитать. Да, исходный код комбайнов типа vanessa-runner или gitsync читать сложно. Но есть другие пакеты, исходный код которых читать проще. Да и в gitsync тоже можно разобраться и подсмотреть, как там все сделано.

Работают ли эти скрипты на Linux? Можно ли их использовать для разработки мобильного приложения? И можно ли вызвать и выполнить этот скрипт из 1С?

На Linux работает, это кроссплатформенное приложение. Единственное – так как он использует .NET, на Linux должна быть установлена библиотека. Для старых версий v1.х – mono, а для новых v2.х – dotnet.

На мобильных устройствах это не работает, потому что там нет основы.

И из 1С скрипт вызвать можно, как и любое внешнее приложение запустить или выполнить. Но зачем выполнять из 1С скрипт, если он сам по себе в любой системе выполнится?

Получается, что для разработки скриптов ничего лучше, чем VS Code нет? Просто устанавливаем плагин и пишем текстовые файлы?

Можно писать и в блокноте, если нужно прямо сейчас на коленке код скрипта написать. А в Visual Studio Code есть и подсветка синтаксиса, и только там отладку можно настроить, насколько я знаю.

 

*************

Статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART TECH EVENT 2023.

 

Приглашаем на конференции Инфостарта 2025 года

INFOSTART TEAMLEAD EVENT

Не только для разработчиков, но и для руководителей отделов разработки, тимлидов и ИТ-директоров.
Место: Москва
Даты: 24-25 февраля 2025 г.

Подробнее

INFOSTART A&PM EVENT (Анализ & Управление проектами)

Практическая конференция для аналитиков и руководителей проектов 1С.
Место: Санкт-Петербург
Даты: 29-31 мая 2025 г.

Подробнее


См. также

Инструментарий разработчика OneScript Программист Руководитель проекта Бесплатно (free)

Все мы хотя бы раз работали с конструктором запросов. Результатом его работы является синтаксически верный запрос, оформленный по некоторому стандарту. Нравится - не нравится, а привыкаешь быстро, и на запрос, написанный руками, уже не хочется смотреть... А почему бы не попробовать сделать то же самое с исходным кодом 1С? Ну я и попробовал...

23.09.2024    475    0    stopa85    4    

4

Групповая разработка (Git, хранилище) OneScript Программист Платформа 1С v8.3 Бесплатно (free)

Скрипт для работы с SonarQube и локальным репозиторием Git.<br> Цель проекта – возможность выполнить быструю проверку качества кода перед тем, как помещать доработки в рабочее хранилище. В Sonar и Git выгружается не вся конфигурация, а только объекты из заданного списка.<br> https://github.com/vkrivov/go/

02.07.2024    3194    vkrivov@yandex.ru    8    

18

DevOps и автоматизация разработки OneScript Системный администратор Программист Стажер Бесплатно (free)

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

17.06.2024    4794    bayselonarrend    5    

61

OneScript Программист Стажер Бесплатно (free)

Поговорим про меню, спиннеры, прогресс-бары и прочие свистелки для CLI приложений на OneScript

20.05.2024    2777    bayselonarrend    18    

70

Групповая разработка (Git, хранилище) OneScript Системный администратор Программист Бесплатно (free)

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    2386    bayselonarrend    3    

42

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    4864    kamisov    21    

63

OneScript Программист Бесплатно (free)

Думаете, на OneScript неудобно создавать сложные инфраструктурные приложения? Ошибаетесь. Благодаря фреймворку ОСень за последний год экосистема библиотек, упрощающих написание собственных приложений, существенно выросла. Расскажем о самых передовых технологиях OneScript. Спойлер: будет много рефлексии, мета-аннотаций, желудей, напильников и дубов с завязями.

21.11.2023    4224    NikitaIvanchenko    16    

48

Инструментарий разработчика Работа с интерфейсом OneScript Программист Россия Бесплатно (free)

Представленная библиотека позволяет создать многопоточный TCP сервер, к которому может одновременно подключиться множество TCP клиентов с удаленных компьютеров. Эти клиенты могут вызывать методы скриптов как на сервере, так и на других клиентах. Методы будут выполнены в контексте скрипта на удаленной машине. Возможна передача параметров в метод и получение результата. Для TCP клиента можно создать графический интерфейс с большим набором элементов управления, модальными диалоговыми окнами и с обработкой событий.

31.07.2023    2625    ahyahy    8    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. partizand 136 10.10.24 20:37 Сейчас в теме
У oscript ровно одно достоинство - язык такой же и не нужно учить новый.
Остальное все в недостатки.
Пакеты в репозитории обновляются не авторами и новым версиям могут не соответствовать. Авто документации нет. Да и количество и качество библиотек оставляет желать лучшего.
К сожалению.
Учите python ;)
masterok647; +1 2 Ответить
Оставьте свое сообщение