Skip to content

EvilBeaver/OneScript

Repository files navigation

OneScript

Join telegram chat DEV Build Status STABLE Build Status

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

Logo Logo

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

Иными словами, это инструмент для написания и выполнения программ на языке 1С без использования платформы 1С:Предприятие.

Название и произношение

Проект носит название OneScript, может быть сокращен при написании до названия 1Script. Произносится как [уанскрипт].

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

Сайт проекта

Основная информация о проекте, релизы и техдокументация расположены на официальном сайте

https://oscript.io

Библиотека полезных скриптов

В поставку OneScript уже входит набор наиболее часто используемых пакетов. Эти, а также другие пакеты находятся в репозитории oscript-library и доступны всем желающим. Имеется пакетный менеджер opm.

Установка

Windows

Linux

MacOS

  • Скачать ZIP-архив для macOS (x64 или arm64) со страницы релизов или с официального сайта.
  • Распаковать архив в удобный каталог.
  • Выполнить донастройку для снятия карантина и подписи:
    chmod +x ./oscript
    xattr -d com.apple.quarantine *.dylib oscript
    codesign -s - ./oscript

Ручная локальная сборка

Подготовка

Для сборки потребуется:

  • .NET SDK 8.0 (целевой фреймворк проекта — net8.0).
  • Компилятор C++ — нужен только для сборки нативного моста ScriptEngine.NativeApi (поддержка внешних компонент стандарта 1С NativeApi). На Windows проще всего получить его, поставив MS Build Tools или Visual Studio с компонентом «Разработка классических приложений на C++». Если C++ компилятора нет, см. параметр NoCppCompiler ниже.

Ссылки на дистрибутивы могут меняться со временем, их актуальность не гарантируется.

Сборка

Сборка выполняется с помощью MSBuild и сценария Build.csproj в корне репозитория. Команды можно запускать как через msbuild (Developer Command Prompt после установки MS Build Tools/Visual Studio), так и через dotnet msbuild (кросс-платформенно).

Основные таргеты:

  • CleanAll — очистка результатов предыдущих сборок;
  • BuildAll — собрать бинарные файлы для поставки (FDD, SCD, отладчик; при наличии C++ — нативные компоненты);
  • MakeCPP, MakeFDD, MakeSCD, BuildDebugger — отдельные таргеты сборки разных частей поставки;
  • GatherLibrary — скачать и сложить базовый набор библиотек (opm, asserts, logos, fs, tempfiles, cli);
  • PrepareDistributionFiles — собрать полные содержимые дистрибутивов (вкл. библиотеки и документацию);
  • PackDistributions — упаковать содержимое в ZIP-архивы под все поддерживаемые платформы;
  • BuildDocumentation — сгенерировать справку по платформе (markdown + json);
  • CreateNuget / PublishNuget — собрать и опубликовать NuGet-пакеты;
  • Test (UnitTests, ScriptedTests) — прогнать модульные и приёмочные (BSL) тесты.

Параметры сборки

  • VersionPrefix — основная часть номера релиза, например 2.0.0 (по умолчанию 2.0.0);
  • VersionSuffix — необязательный suffix по SemVer, например beta-786;
  • NoCppCompiler — если True, нативные компоненты C++ (NativeApi) не собираются и не включаются в дистрибутив (используйте, если компилятор C++ не установлен);
  • Configuration — конфигурация сборки, по умолчанию Release. Для отладочной сборки на Linux используется LinuxDebug.

Все артефакты сборки размещаются в каталоге built в корне репозитория.

Сборка содержимого дистрибутивов в отдельном каталоге

dotnet msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles

Сборка с ручным указанием версии

dotnet msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles /p:VersionPrefix=2.0.0

Сборка ZIP-дистрибутивов

dotnet msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles;PackDistributions /p:VersionPrefix=2.0.0 /p:VersionSuffix=preview223

Сборка без C++-компонент (без NativeApi)

dotnet msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles /p:NoCppCompiler=True

Генерация документации

dotnet msbuild Build.csproj /t:BuildDocumentation

Тестирование

В проекте есть два уровня тестов:

  • Модульные тесты на C# — расположены в src/Tests/* (xUnit/NUnit), запускаются через dotnet test в каталоге соответствующего тестового проекта или одной командой:

    dotnet msbuild Build.csproj /t:UnitTests
  • Приёмочные тесты на BSL — расположены в каталоге tests/ и запускаются через testrunner.os на свежесобранном oscript. Для удобства в репозитории есть скрипты-обёртки:

    rem Windows
    tests\run-bsl-tests.cmd src\oscript\bin\Debug\net8.0\oscript.exe
    # Linux/macOS
    tests/run-bsl-tests.sh src/oscript/bin/Debug/net8.0/oscript

    Перед запуском приёмочных тестов нужно собрать oscript:

    dotnet build src/oscript/oscript.csproj

Документация для разработчиков

Если вы хотите контрибьютить в проект, познакомьтесь с дополнительными документами в каталоге docs/:

  • docs/developer_docs.md — архитектура проекта, состав решения и навигация по исходному коду.
  • docs/contexts.md — практическое руководство по добавлению BSL-контекстов, методов, свойств и глобальных функций.
  • CODESTYLE.md — требования к стилю кода на C#.

About

Исполняющая среда скриптов на языке 1С

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors