К статье
Практический материал

Разработка и Конфигурация · 12 мин

OneScript: что это такое и зачем он нужен разработчику 1С

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

OneScript (проект также известен как 1Script или «ванскрипт») — это независимый открытый интерпретатор встроенного языка 1С:Предприятие, который работает без установленной платформы 1С. Он позволяет писать и выполнять скрипты на привычном синтаксисе 1С в обычной командной строке Windows или Linux, что делает его удобным инструментом автоматизации рутинных операций: обмена данными, обслуживания баз, работы с файлами и CI/CD-процессов.

Проект распространяется бесплатно с открытым исходным кодом и развивается сообществом. Вокруг него сформировалась экосистема библиотек и готовых утилит: пакетный менеджер opm, сборщик внешних обработок, инструменты выгрузки конфигурации в файлы, фреймворки тестирования. Фактически OneScript стал стандартом де-факто для командной автоматизации в мире 1С.

Важно понимать границы: OneScript не заменяет платформу 1С и не выполняет прикладной код конфигурации. Он реализует базовый язык (работа со строками, датами, файлами, коллекциями, HTTP-запросами), но не «знает» про документы, справочники и регистры конкретной базы. Доступ к данным информационной базы осуществляется либо через COM-соединение, либо через HTTP-сервисы, либо через специализированные библиотеки.

Что такое OneScript и чем он отличается от платформы 1С

OneScript реализует синтаксис встроенного языка 1С:Предприятие 8: переменные, процедуры и функции, циклы, структуры, массивы, таблицы значений, работу с файлами и текстом. Скрипт пишется в обычном текстовом файле с расширением .os и запускается командой oscript имя_файла.os. Код может содержать русские и английские ключевые слова, как и в конфигураторе.

Ключевое отличие от платформы — отсутствие объектной модели прикладного решения. В OneScript нет менеджеров объектов вида Справочники.Номенклатура или Документы.РеализацияТоваров, нет запросов к базе данных 1С, нет форм и отчетов СКД. Всё, что связано с данными конкретной информационной базы, реализуется через внешние каналы: COM, веб-сервисы, файловые выгрузки.

Запуск скриптов не требует лицензий 1С, потому что платформа в процессе не участвует. Это удобно для серверных задач: скрипт обслуживания может работать на отдельной машине, не занимая клиентские лицензии и не требуя установки толстого клиента.

Какие задачи решают с помощью OneScript

Наиболее распространенный сценарий — автоматизация обслуживания информационных баз. Скрипты запускают по расписанию через планировщик задач Windows или cron: выгрузка баз в dt, обновление конфигурации из хранилища, запуск тестов, очистка временных каталогов, контроль свободного места на дисках.

Второй крупный сценарий — DevOps и CI/CD для разработки на 1С. На базе OneScript построены инструменты выгрузки конфигурации в исходные файлы для Git, сборки внешних обработок и отчетов из исходников, синтаксического контроля, запуска модульных тестов. Это позволяет вести разработку 1С по тем же принципам, что и в других языках: с репозиториями, код-ревью и автоматическими сборками.

Третья группа задач — интеграции и обмены: чтение и запись файлов Excel, CSV, JSON, XML, обращения к REST API внешних систем, отправка почты, работа с FTP. Скрипт на OneScript часто выступает «клеем» между 1С и внешними сервисами там, где разворачивать полноценное прикладное решение избыточно.

Обслуживание базПодходит

Регламентные выгрузки, обновления, бэкапы по расписанию

CI/CD для 1СПодходит

Сборка обработок, тесты, выгрузка конфигурации в Git

Прикладная логика конфигурацииНе подходит

Нет доступа к объектам базы напрямую, нужна платформа

Интеграции с APIПодходит

HTTP-запросы, JSON, XML, файлы обмена

Установка и первый запуск

Установщик доступен на официальном сайте проекта и в репозитории на GitHub. Для Windows предлагается инсталлятор, который прописывает путь к oscript.exe в переменную PATH; для Linux доступны пакеты и установка через скрипт. После установки проверьте работоспособность командой oscript -version в командной строке — она должна вывести номер версии движка.

Для управления библиотеками используется пакетный менеджер opm, который устанавливается вместе с движком. Команда opm install имя_пакета загружает библиотеку из публичного хаба пакетов, а opm list показывает установленные. Перед установкой пакетов в корпоративной сети убедитесь, что прокси и политики безопасности разрешают доступ к внешним репозиториям.

Первый скрипт за пять шагов
  1. 1
    Установите OneScript с официального сайта и проверьте команду oscript -version
  2. 2
    Создайте текстовый файл hello.os с кодом: Сообщить("Привет, OneScript");
  3. 3
    Откройте командную строку в папке со скриптом
  4. 4
    Выполните: oscript hello.os
  5. 5
    Убедитесь, что в консоль выведено сообщение — движок работает
bsl
// файл hello.os
Сообщить("Текущая дата: " + ТекущаяДата());

Массив = Новый Массив;
Массив.Добавить("Первый элемент");
Для Каждого Элемент Из Массив Цикл
    Сообщить(Элемент);
КонецЦикла;

Экосистема библиотек и инструментов

Главная ценность OneScript — не сам движок, а экосистема готовых решений. Библиотеки устанавливаются через opm и подключаются в скрипте директивой #Использовать имя_библиотеки. Среди наиболее востребованных: работа с командной строкой и параметрами, логирование, чтение JSON и YAML, доступ к 1С через COM и OData, работа с Git, сборка и разбор файлов конфигураций и обработок.

Поверх библиотек построены законченные инструменты: утилиты для выгрузки конфигурации в EDT-формат и обратно, фреймворк модульного тестирования, инструмент статического анализа кода, генератор документации. Многие команды используют эти инструменты как есть, не написав ни строчки собственного кода.

Пример: регламентная выгрузка базы через скрипт

Типовой сценарий — скрипт, который через COM-коннектор подключается к базе или запускает конфигуратор в пакетном режиме для выгрузки dt. Скрипт формирует имя файла с датой, вызывает конфигуратор с параметрами, проверяет код возврата и пишет результат в лог. Такой файл ставится в планировщик задач и выполняется ночью без участия человека.

Пример: обмен данными через HTTP

Скрипт может опросить REST API внешней системы, разобрать JSON и передать данные в 1С через опубликованный HTTP-сервис или записать файл обмена в согласованный каталог. Это рабочая альтернатива внешним компонентам, когда обмен нерегулярный и не требует транзакционной целостности внутри базы.

Ограничения и типичные ошибки

Главное ограничение — OneScript не исполняет код в контексте информационной базы. Попытка «просто запустить процедуру из общего модуля» конфигурации через oscript не сработает: движок не подключен к базе и не знает её метаданных. Для выполнения серверной логики используйте регламентные задания в самой 1С, HTTP-сервисы или COM-соединение с вызовом методов через соединитель.

Второй источник проблем — кодировки и пути. Скрипты рекомендуется сохранять в UTF-8, а пути с кириллицей и пробелами заключать в кавычки при передаче в командную строку. Ошибки вида «файл не найден» при визуально корректном пути почти всегда связаны именно с этим.

Типичные ошибки
01
Ожидание, что oscript выполнит код конфигурации напрямую — движок не имеет доступа к метаданным базы
02
Запуск обслуживающих скриптов от учетной записи без прав на каталоги баз и бэкапов
03
Хранение паролей к базам и API открытым текстом в файле скрипта
04
Отсутствие проверки кода возврата внешних команд — ошибка конфигуратора остается незамеченной
05
Использование заброшенных библиотек без проверки совместимости с версией движка

Когда OneScript не нужен: альтернативы

Не каждая задача автоматизации требует OneScript. Простые пакетные операции с конфигуратором (выгрузка dt, обновление, синтаксический контроль) решаются обычными bat-файлами или PowerShell с вызовом 1cv8.exe в пакетном режиме. Внутри базы регламентные операции правильнее выполнять штатными регламентными заданиями — они работают в контексте данных и не требуют внешних подключений.

Если команда уже использует Python или PowerShell как корпоративный стандарт автоматизации, внедрение OneScript оправдано в основном там, где нужны специфические библиотеки экосистемы 1С: разбор файлов конфигураций, сборка обработок, запуск тестов. Для универсальных задач (файлы, HTTP, JSON) выбор языка — вопрос компетенций команды.

Сравнение вариантов автоматизации

OneScript

Синтаксис 1С, богатая экосистема библиотек для 1С-задач; требует установки движка

PowerShell / bat

Встроены в Windows, подходят для простых вызовов конфигуратора; нет специфических библиотек 1С

Регламентные задания 1С

Работают внутри базы с доступом к данным; не подходят для операций, требующих монопольного режима или внешних действий

Python

Универсальная автоматизация и интеграции; для 1С-специфики придется писать обвязку самостоятельно

Как проверить, что автоматизация работает правильно

Любой скрипт обслуживания должен оставлять проверяемый след: лог-файл с отметками времени, кодом возврата каждого внешнего вызова и итоговым статусом. Для критичных операций, например выгрузки бэкапа, добавьте контроль: существует ли файл результата, изменилась ли его дата, не нулевой ли размер. Отсутствие таких проверок — главная причина ситуаций «скрипт месяцами не работал, а никто не знал».

Контрольные точки

Как проверить результат

Код возврата скрипта
Норма

0 (успешное завершение)

Тревожный признак

Ненулевой код или отсутствие кода в логе

Файл результата (dt, выгрузка, отчет)
Норма

Файл создан сегодня, ожидаемый размер

Тревожный признак

Файл старый, пустой или отсутствует

Лог выполнения
Норма

Есть записи о каждом шаге с временем

Тревожный признак

Лог пуст или обрывается на середине

Планировщик задач
Норма

Задача завершилась со статусом успеха

Тревожный признак

Задача в состоянии ошибки или не запускалась

Начинайте знакомство с OneScript с одной простой задачи — например, ежедневной выгрузки копии базы. Когда скрипт стабильно отработает несколько недель, добавляйте логирование, обработку ошибок и следующие сценарии. Попытка сразу построить сложный конвейер обычно заканчивается набором скриптов, которые никто не решается трогать.
ПЗ
Практическое замечание

Частые вопросы о OneScript

Нужна ли лицензия 1С для запуска OneScript?

Нет. Движок является самостоятельным продуктом с открытым кодом и не использует платформу 1С при выполнении скриптов. Лицензии потребуются только если скрипт обращается к информационной базе — например, через COM-соединение, которое занимает сеанс на сервере 1С.

Можно ли выполнить код конфигурации через OneScript?

Напрямую — нет: движок не подключен к метаданным базы. Обходные пути: COM-соединение с вызовом экспортных процедур общих модулей, публикация HTTP-сервиса в конфигурации и обращение к нему из скрипта, либо запуск предопределенного обработчика через пакетный режим платформы.

Работает ли OneScript на Linux?

Да, движок кроссплатформенный и работает на Linux и macOS. Это используется для сборочных серверов и CI-конвейеров. Учитывайте, что часть библиотек, завязанных на COM и специфику Windows, на Linux недоступна или имеет ограничения.

Чем OneScript отличается от внешних обработок 1С?

Внешняя обработка (.epf) выполняется платформой внутри сеанса 1С и имеет доступ к данным базы. Скрипт OneScript (.os) выполняется отдельным процессом вне платформы и доступа к данным не имеет. Обработки подходят для действий с данными, скрипты — для операций вокруг базы: файлов, бэкапов, обменов, сборок.

Безопасно ли хранить пароли в скриптах?

Хранение паролей открытым текстом в файле скрипта — плохая практика: файл попадает в репозитории и бэкапы. Используйте переменные окружения, защищенные хранилища секретов или отдельные конфигурационные файлы с ограниченными правами доступа, исключенные из системы контроля версий.

Где брать готовые библиотеки и как их обновлять?

Библиотеки устанавливаются пакетным менеджером opm из публичного хаба пакетов командой opm install. Обновление выполняется командой opm update. Перед обновлением на рабочем сервере проверьте совместимость новой версии на тестовом окружении — изменения в библиотеках могут затронуть ваши скрипты.

Итог

Что важно запомнить

OneScript — бесплатный интерпретатор языка 1С для командной строки, который автоматизирует задачи вокруг информационной базы: обслуживание, обмены, сборки и тесты. Он не исполняет код конфигурации напрямую и не заменяет платформу. Начинайте с простого сценария, добавляйте логирование и проверки результата, а изменяющие данные операции сначала испытывайте на копии базы.