Skip to content

ivanarama/onebase

Repository files navigation

onebase

Открытая бизнес-платформа со знакомым DSL для учётных задач, написанная на Go.

Одна «информационная база» = конфигурация (справочники, документы, регистры, отчёты) + данные в PostgreSQL + пользователи. Управляется через лаунчер — окно запуска информационных баз.

1С, 1С:Предприятие — товарные знаки ООО «1С». Проект OneBase разрабатывается независимо и не аффилирован с ООО «1С».


Установка (Windows)

Вариант 1 — скачать и запустить

  1. Скачать архив со страницы Releases:
    onebase-windows-amd64.zip
  2. Распаковать в любую папку, например C:\onebase\
  3. Двойной клик на onebase-gui.exe — откроется лаунчер в браузере

Что в архиве:

onebase-gui.exe   ← двойной клик — запускает лаунчер в браузере
onebase.exe       ← CLI-инструмент (для терминала и сервера)
examples/         ← пример проекта simple-erp

Вариант 2 — установщик PowerShell

irm https://raw.githubusercontent.com/ivanarama/onebase/main/install.ps1 | iex

Кладёт onebase.exe в %USERPROFILE%\.onebase\bin\ и добавляет в PATH.

Linux / macOS

tar xzf onebase-linux-amd64.tar.gz
sudo mv onebase-linux-amd64/onebase /usr/local/bin/
onebase start

Требования

  • PostgreSQL 14+ (локально или сетевой)
  • Windows 10/11 с Edge (для нативного окна) — или любой браузер

Быстрый старт

1. Запустить лаунчер

Запустить.vbs   ← двойной клик в проводнике

или из терминала:

onebase start

2. Создать базу

В лаунчере нажать «+ Добавить»:

Поле Пример
Наименование Склад
Тип конфигурации В базе данных (рекомендуется)
Строка подключения postgres://localhost/sklad?sslmode=disable
Порт 8080
Создать с нуля

Нажать «Добавить» — база зарегистрирована, конфигурация создана автоматически.

3. Запустить базу

Выбрать базу в списке → «Предприятие» — откроется веб-интерфейс базы.

4. Создать пользователей (опционально)

В веб-интерфейсе базы: Администрирование → Пользователи → + Добавить.
Пока пользователей нет — вход без пароля. После создания первого пользователя — вход только авторизовавшись.


Команды CLI

Команда Описание
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/ui

DSL (язык модулей)

Onebase 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С:Предприятие в репозитории — исключительно для описания совместимости при импорте/экспорте данных.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages