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-приложения.