1Script, как отдельный инструмент

Основным назначением 1Script является применение, как самостоятельного программного продукта, предназначенного для выполнения скриптов на языке 1С в целях автоматизации администрирования. Ближайшим аналогом является инфраструктура WSH.

Запуск скрипта

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

В OneScript таким интерпретатором является приложение oscript.exe. Для запуска сценария нужно запустить oscript.exe и передать ей имя файла скрипта.

C:\Program Files\OneScript\oscript.exe my-script-file.os

Чтобы каждый раз не указывать путь к интерпретатору, его рекомендуется прописать в системной переменной PATH. Тогда операционная система сможет находить интерпретатор просто по имени:

oscript backup-databases.os

В примере выше опущен полный путь к интерпретатору, система сама его обнаружит.

Дополнительные параметры скрипта

Каждый скрипт может получать дополнительные параметры, которые указаны после имени скрипта:

oscript backup-databases.os trade zup accounting

В скрипте доступна глобальная коллекция АргументыКоманднойСтроки. Для вышеуказанного примера внутри скрипта эта коллекция будет содержать значения "trade", "zup", "accounting". Скрипт может их обработать и выполнить соответствующие действия.

Дополнительные параметры интерпретатора

Программа oscript.exe имеет несколько специальных ключей запуска.

Замер производительности

oscript.exe -measure <файл-скрипта> [аргументы скрипта]

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

Просмотр результатов компиляции

oscript.exe -compile <файл-скрипта> [аргументы скрипта]

Будут выполнена компиляция скрипта и выведен байт-код виртуальной машины OneScript.

Упаковка в самостоятельный EXE-модуль

Каждый скрипт можно превратить в независимое приложение. Данное приложение можно передавать на другие компьютеры, даже где OneScript не установлен.

oscript.exe -make <файл-скрипта> <файл-exe>

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

ВАЖНО: Функционал является экспериментальным, в exe-модуль не включаются внешние компоненты (DLL).

Проверка синтаксиса

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

oscript.exe -check <файл-скрипта> [-env=<файл-точки-входа>]

Необязательный параметр -env позволяет задать точку входа в которой указаны внешние библиотеки. Обычно это используется для того, чтобы инициализировать все внешние (по отношению к проверяемому файлу) библиотеки.

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

Изменение кодировки вывода

В некоторых сценариях запуска (например, в качестве хука git) может потребоваться переопределение кодировки стандартного вывода (stdin/stderr). В этом случае, самым первым аргументом запуска OneScript может идти команда:

oscript.exe -encoding=<имя кодировки> <обычные параметры запуска oscript>

Например, чтобы запустить скрипт с замером производительности и выводом в кодировке utf-8, требуется следующая команда запуска:

oscript.exe -encoding=utf-8 -measure myscript.os

Доступные классы и функции

Все доступные классы и глобальные функции описаны в разделе Стандартная библиотека

Работа в качестве CGI-приложения

OneScript может быть запущен, как CGI-приложение внутри HTTP-сервера (Apache, IIS, nginx, etc...). Этот режим позволяет писать серверные веб-скрипты на языке 1С.

При запуске в режиме cgi в глобальной области видимости скрипта появляется объект ВебЗапрос.

oscript.exe -cgi myscript.os

Пример кода веб-скрипта

Если ВебЗапрос.GET["action"] = "delete" Тогда
	УдалитьЗапись(ВебЗапрос.GET["id"]);
КонецЕсли;

Объект ВебЗапрос содержит 3 соответствия:

  • GET - переменные GET запроса
  • POST - переменные POST запроса
  • ENV - переменные окружения сервера

Для формирования ответа сервера используются глобальные методы:

  • ВывестиЗаголовок - включить в ответ сервера заголовок
  • Сообщить - вывести текст в тело ответа

Disclaimer

Режим CGI-приложения является экспериментальным, находится в статусе proof-of-concept и ждет своего автора-разработчика. Существующий функционал, в принципе, достаточен для формирования текстового вывода (html, xml, json), но не подходит для реализации полноценного серверного http-приложения.