framework/skills/onescript/onescript/SKILL.md
Пишет и структурирует код на OneScript (BSL без 1С). Использовать при работе с файлами .os, проектами OneScript, packagedef, opm, директивой
npx skillsauth add steelmorgan/1c-agent-based-dev-framework onescriptInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Навык для написания и структурирования кода на OneScript — кроссплатформенном интерпретаторе языка 1С:Предприятие 8 без платформы 1С. Код выполняется из текстовых файлов .os, аналогично Python или Node.js.
Модуль — текстовый файл с расширением .os. Три секции (сверху вниз):
Перем ИмяПеременной;Минимальный скрипт:
Сообщить("Привет, Мир!");
Процедуры и функции:
Процедура МояПроцедура(Параметр1, Параметр2)
// операторы
КонецПроцедуры
Функция МояФункция(Параметр1, Параметр2)
Возврат Параметр1 + Параметр2;
КонецФункции
Типизация динамическая. Примитивы: Строка, Число, Булево, Дата; специальные: Неопределено, Null.
12345.899"Текст", кавычка внутри — "". Многострочная: новая строка начинается с |, пробелы до | отбрасываются.'20250212235959' или '2025-02-12 23:59:59'Условие:
Если Условие Тогда
// ...
ИначеЕсли ДругоеУсловие Тогда
// ...
Иначе
// ...
КонецЕсли;
Циклы:
Для Счетчик = 0 По 10 Цикл
Сообщить(Счетчик);
КонецЦикла;
Для Каждого Элемент Из Массив Цикл
Сообщить(Элемент);
КонецЦикла;
Пока Условие Цикл
// ...
КонецЦикла;
Исключения:
Попытка
// код
Исключение
Сообщить(ОписаниеОшибки());
ВызватьИсключение; // rethrow
КонецПопытки;
ВызватьИсключение "Текст ошибки";
Рекомендуемая структура каталогов:
src/ — исходный код (в дистрибутив)src/Классы/ — файлы .os, подключаемые как классы (создание через Новый)src/Модули/ — файлы .os, подключаемые как общие модулиtests/ — тестыtasks/ — служебные скрипты (сборка, тесты)packagedef (манифест), README, LICENSEТочка входа (например src/main.os) должна импортировать свой каталог:
#Использовать "."
// далее использование классов и модулей
Сообщить(МойМодуль.Метод());
В корне проекта — файл без расширения packagedef. Минимум: имя, версия, состав.
Описание.Имя("my-package")
.Версия("1.0.0")
.ВерсияСреды("2.0.0")
.ЗависитОт("fs", "1.0.0")
.ЗависитОт("asserts", "1.3.0")
.ВключитьФайл("packagedef")
.ВключитьФайл("src")
.ВключитьФайл("oscript_modules")
.ИсполняемыйФайл("src/my-script.os");
Основные свойства: Имя, Версия, ВерсияСреды, ЗависитОт, ВключитьФайл, ИсполняемыйФайл.
Подключение в начале модуля (до переменных):
#Использовать json, #Использовать fs#Использовать ".", #Использовать "lib/mylib"Класс из библиотеки — новый тип, создаётся через Новый ИмяКласса(). Модуль — глобальный объект с методами: ИмяМодуля.Метод().
Стандартный загрузчик: файлы из подкаталога Классы регистрируются как классы, из Модули — как модули. Имя файла (без .os) = идентификатор класса/модуля.
opm build .opm push my-file.ospx --token ТОКЕНПодробности синтаксиса, отличия от 1С (Формат/ДФ, вызов конструктора в выражении, параметризованные исключения, rethrow с ИнформацияОбОшибке) — в reference.md.
Документация: oscript.io/learn.
development
1C server maintenance webhooks: container restart and external component cache cleanup
development
Interactive DAP debugging of a single BSL procedure
tools
Rules for using RLM tools for project search and navigation in 1C/BSL
development
Creates web applications and routes on Winow (a web server on OneScript and Autumn). Use when working with a web server on OneScript, routing, or Winow controllers.