Открытая бизнес-платформа со знакомым DSL для учётных задач, написанная на Go.
Одна «информационная база» = конфигурация (справочники, документы, регистры, отчёты) + данные в PostgreSQL + пользователи. Управляется через лаунчер — окно запуска информационных баз.
1С, 1С:Предприятие — товарные знаки ООО «1С». Проект OneBase разрабатывается независимо и не аффилирован с ООО «1С».
- Скачать архив со страницы Releases:
onebase-windows-amd64.zip - Распаковать в любую папку, например
C:\onebase\ - Двойной клик на
onebase-gui.exe— откроется лаунчер в браузере
Что в архиве:
onebase-gui.exe ← двойной клик — запускает лаунчер в браузере
onebase.exe ← CLI-инструмент (для терминала и сервера)
examples/ ← пример проекта simple-erp
irm https://raw.githubusercontent.com/ivanarama/onebase/main/install.ps1 | iexКладёт onebase.exe в %USERPROFILE%\.onebase\bin\ и добавляет в PATH.
tar xzf onebase-linux-amd64.tar.gz
sudo mv onebase-linux-amd64/onebase /usr/local/bin/
onebase start- PostgreSQL 14+ (локально или сетевой)
- Windows 10/11 с Edge (для нативного окна) — или любой браузер
Запустить.vbs ← двойной клик в проводнике
или из терминала:
onebase start
В лаунчере нажать «+ Добавить»:
| Поле | Пример |
|---|---|
| Наименование | Склад |
| Тип конфигурации | В базе данных (рекомендуется) |
| Строка подключения | postgres://localhost/sklad?sslmode=disable |
| Порт | 8080 |
| Создать с нуля | ✓ |
Нажать «Добавить» — база зарегистрирована, конфигурация создана автоматически.
Выбрать базу в списке → «Предприятие» — откроется веб-интерфейс базы.
В веб-интерфейсе базы: Администрирование → Пользователи → + Добавить.
Пока пользователей нет — вход без пароля. После создания первого пользователя — вход только авторизовавшись.
| Команда | Описание |
|---|---|
onebase start |
Открыть лаунчер информационных баз |
onebase ibases list |
Список зарегистрированных баз |
onebase ibases add --name ... --db ... --port ... |
Зарегистрировать базу |
onebase ibases remove --id ... |
Удалить регистрацию |
onebase dev --project ./my-app --db ... |
Dev-сервер с hot reload (файловый режим) |
onebase run --project ./my-app --db ... |
Production-сервер (файловый режим) |
onebase migrate --project ./my-app --db ... |
Применить схему БД |
onebase init [dir] |
Создать заготовку нового проекта |
Структура повторяет привычную учётным разработчикам модель:
| Уровень | onebase | Физически |
|---|---|---|
| Платформа | onebase.exe |
Go-бинарник: рантайм, DSL, REST API, лаунчер |
| Конфигурация | Папка (catalogs/, documents/, ...) или строки в БД |
YAML + .os скрипты |
| Информационная база | PostgreSQL | Прикладные таблицы + _users + _onebase_config |
Файловый (config_source: file) — для разработки:
- Конфигурация в папке на диске под git
onebase dev --project ./my-app --db ...с hot reload
В базе данных (config_source: database) — для пользователей:
- Конфигурация хранится в таблице
_onebase_configв PostgreSQL - Редактирование через «Конфигуратор» в лаунчере (Выгрузка → правка → Загрузка)
- Путь к папке скрыт, база — самодостаточная сущность
Требуется Go 1.23+.
# Консольная версия (без CGo)
go build -o onebase ./cmd/onebase
# GUI-версия с нативным окном (требует CGo и WebView2 на Windows)
go build -tags webview -ldflags="-H windowsgui" -o onebase-gui ./cmd/onebase# Тесты
go test ./...
# Интеграционные тесты (требуется PostgreSQL)
export TEST_DATABASE_URL=postgres://localhost/onebase_test
go test -tags=integration ./...examples/simple-erp/ — складской учёт: поступление и списание товаров.
examples/trade/ — торговля: поступление/реализация, FIFO-партии, валовая прибыль, печатные формы.
onebase dev --project ./examples/trade --db "postgres://localhost/trade_dev?sslmode=disable"
# → http://localhost:8080/uiOnebase DSL — язык для написания бизнес-логики, синтаксис знаком разработчикам учётных систем. Файлы .os в папке src/.
// Проведение документа — FIFO списание партий
Процедура ОбработкаПроведения()
Движения.ПартииТоваров.Очистить();
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ДатаПоставки, КоличествоОстаток, СуммаОстаток
ИЗ РегистрНакопления.ПартииТоваров.Остатки()
ГДЕ Номенклатура = &Ном И КоличествоОстаток > 0
УПОРЯДОЧИТЬ ПО ДатаПоставки";
Запрос.УстановитьПараметр("Ном", Строка.Номенклатура);
Партии = Запрос.Выполнить();
Для Каждого Партия Из Партии Цикл
Если Остаток <= 0 Тогда
Прервать;
КонецЕсли;
Дв = Движения.ПартииТоваров.Добавить();
Дв.ВидДвижения = "Расход";
Дв.Количество = КолВоИзПартии;
КонецЦикла;
КонецПроцедуры| Конструкция | Пример |
|---|---|
| Переменные | Сумма = 0; |
| Условия | Если Сумма > 0 Тогда ... КонецЕсли; |
| Циклы | Для Каждого Э Из Массив Цикл ... КонецЦикла; |
| Прерывание цикла | Прервать; |
| Пропуск итерации | Продолжить; |
| Попытка/Исключение | Попытка ... Исключение ... КонецПопытки; |
| Запросы | Запрос = Новый Запрос; Запрос.Выполнить(); |
| Транзакции | НачатьТранзакцию(); ЗафиксироватьТранзакцию(); |
| Коллекции | Новый Массив, Новый Структура, Новый Соответствие |
| Печатные формы | Новый ТабличныйДокумент |
| HTTP-запросы | HTTPЗапрос("GET", "https://...") |
Отчёты поддерживают графики через ECharts. Диаграмма создаётся программно в DSL.
YAML отчёта — добавьте chart_proc:
name: ВаловаяПрибыль
query: |
ВЫБРАТЬ Номенклатура, СУММА(Выручка) КАК Выручка,
СУММА(Выручка) - СУММА(Себестоимость) КАК ВаловаяПрибыль
ИЗ РегистрНакопления.ВаловаяПрибыль
СГРУППИРОВАТЬ ПО Номенклатура
chart_proc: СформироватьДиаграммуРедактирование в конфигураторе — откройте отчёт в дереве метаданных → поле «Процедура диаграммы» → редактор «Код диаграммы (.rep.os)». Код сохраняется в src/ИмяОтчёта.rep.os автоматически.
DSL-процедура — файл src/ВаловаяПрибыль.rep.os:
Процедура СформироватьДиаграмму()
Д = Новый Диаграмма;
Д.Заголовок = "Валовая прибыль по номенклатуре";
Д.Тип = "Гистограмма"; // Гистограмма / Линейная / Круговая
СерияВ = Д.Серии.Добавить();
СерияВ.Имя = "Выручка";
СерияП = Д.Серии.Добавить();
СерияП.Имя = "Прибыль";
Для Каждого Стр Из Результат Цикл
Т = Д.Точки.Добавить();
Т.Значение = Стр.Номенклатура;
СерияВ.УстановитьЗначение(Т, Стр.Выручка);
СерияП.УстановитьЗначение(Т, Стр.ВаловаяПрибыль);
КонецЦикла;
Возврат Д;
КонецПроцедурыДанные запроса доступны через переменную Результат (Массив из Структура).
- Типы диаграмм:
Гистограмма(bar),Линейная(line),Круговая(pie) - Свойства:
Заголовок,Тип,Легенда,Подписи,Подсказки
Проект развивается в свободное время. Если OneBase оказался полезным — буду рад поддержке:
| Способ | Реквизиты |
|---|---|
| TON / USDT | UQDmhcdNyqut5nE8K7yJCvXwNST2qMIBk5gRgFInpO7eBO-x |
| ЮMoney (карта РФ) | yoomoney.ru/to/41001428157040 |
Этот репозиторий использован в статье на Инфостарт
MIT © 2026 Иван Титов
1С, 1С:Предприятие — товарные знаки ООО «1С». OneBase разрабатывается независимо, не аффилирован с ООО «1С» и не является его продуктом.
Конвертеры onebase convert (импорт XML-выгрузки конфигурации) и
onebase forms convert-from-1c / convert-to-1c (двусторонний обмен
управляемыми формами) работают только с публичными текстовыми форматами
выгрузки конфигурации (XML и BSL), которые открыты по спецификации EDT
и используются сторонними инструментами (OScript, EDT-плагины).
Все маппинги типов реквизитов, событий и элементов форм реализованы как
собственные таблицы соответствий по общедоступной документации.
Лексер Module.bsl — минимальный токенизатор без построения синтаксического
дерева; тела процедур копируются как цитаты для интероперабельности,
без реверс-инжиниринга исполнения.
Имена ссылочных типов (CatalogRef.X, DocumentRef.X) — общеупотребительные
термины русскоязычного бизнес-софта, не охраняемые товарные знаки.
Упоминания 1С:Предприятие в репозитории — исключительно для описания
совместимости при импорте/экспорте данных.