Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,914 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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/         ← примеры конфигураций (6 штук)

Вариант 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. Запустить базу

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

Один сервер базы обслуживает много пользователей. Кнопка «Новое окно» открывает дополнительное окно с изолированным браузерным профилем (Edge/Chrome/Chromium) — в нём можно войти под другим пользователем, не задевая остальные окна; профиль помнит вход. Несколько сессий одного пользователя разрешены; администратор может завершать их по отдельности в «Администрирование → Активные пользователи». Кнопки «Остановить»/«Стоп всё» останавливают сервер базы, но не закрывают внешние окна — они покажут «сервер недоступен».

Закрытие лаунчера не останавливает запущенные базы (как в 1С: окно запуска — не владелец сеансов): открытые окна продолжают работать, а следующий запуск лаунчера подхватит живые базы и покажет их как работающие. Остановить всё разом — кнопка «Стоп всё».

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.26.5 (версия зафиксирована в .go-version).

# Консольная версия (без 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 -count=1 -tags=integration .
go test -count=1 -tags=integration ./internal/auth
go test -count=1 -tags=integration ./internal/storage
go test -count=1 -tags=integration ./internal/configdb

Примеры конфигураций

В папке examples/ — 6 готовых конфигураций для разных задач:

Папка Назначение Объекты
minimal/ Учебный шаблон — минимальный набор для понимания структуры 1 справочник, 3 документа, 1 регистр, 2 отчёта, роль
trade/ Флагманский пример — торговля и склад с FIFO 7 справочников, 9 документов, 6 регистров, 11 отчётов, 8 обработок, 4 роли
accounting/ Бухгалтерский учёт — двойная запись, план счетов 1 план счетов, 1 бух. регистр, 2 документа
tasks/ Управление задачами — Agile-спринты, тайм-трекинг 4 справочника, 4 документа, 2 регистра, 6 отчётов, перечисления
crm/ CRM — воронка продаж, сделки, контакты 7 справочников, 6 документов, 4 регистра, 10 отчётов
finance/ Домашние финансы — доходы, расходы, цели 6 справочников, 5 документов, 3 регистра, 10 отчётов
# Запуск любого примера
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

Публикации

Этот репозиторий использован в статье на Инфостарт

Инфостарт


Авторы

Платформа OneBase — © 2026 Иван Титов. Код написан Иваном Титовым, в том числе с использованием инструментов разработки на базе ИИ (Claude Code). Согласно позиции разработчиков таких инструментов и применимому законодательству (в РФ — ст. 1257 ГК РФ), ИИ-ассистент является инструментом, а права на созданный по заданиям человека код принадлежат автору задания. Пометки вида Generated-with в истории git — указание на использованный инструмент, а не передача авторских прав.

Авторство и лицензия конкретной конфигурации задаются в её свойствах (config/app.yaml: author / copyright / license) и видны в пользовательском режиме на экране «О программе».


Лицензия

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

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages