Власна, сумісна реалізація платформи 1С:Підприємство 8

Our own compatible implementation of the 1C:Enterprise 8 platform

2C — дослідницький проєкт: розібратися, як влаштована платформа, описати це як специфікацію і написати з нуля власну програму, яка відкриває ті самі інформаційні бази, виконує ту саму вбудовану мову і запускає справжні типові конфігурації.

2C is a research project: understand how the platform works, write that down as a specification, and build from scratch our own program that opens the same infobases, runs the same built-in language and starts real typical configurations.

~72 000рядків Rustlines of Rust
5 420 / 5 420модулів BAS компілюютьсяBAS modules compile
4,3 свідновлення бази BAS з .dtto restore BAS from .dt
2,4 сстарт сеансу BASBAS session start-up

Як ми працюємо

How we work

  1. Спостерігаємо. Вивчаємо формати файлів і поведінку платформи: що вона пише на диск, що повертає на запити, як реагує на помилки. Усе знайдене фіксуємо в документації разом із доказами.
  2. Observe. We study file formats and the platform's behaviour: what it writes to disk, what it answers, how it reacts to errors. Every finding goes into the docs together with its evidence.
  3. Пишемо специфікацію. Документація має бути настільки точною, щоб за нею можна було писати код, не заглядаючи в оригінал.
  4. Write the spec. The documentation has to be precise enough to implement from, without looking at the original.
  5. Реалізуємо з чистого аркуша. Власний код на Rust, без жодного рядка з оригінальної платформи.
  6. Implement clean-room. Our own Rust code, with not a single line taken from the original platform.
  7. Порівнюємо з оригіналом. Платформа — це оракул: на тих самих даних 2C має дати байт-у-байт той самий файл, той самий результат запиту, той самий текст помилки.
  8. Diff against the original. The platform is the oracle: on the same data 2C must produce the byte-identical file, the same query result, the same error text.

З чого складається 2C

What 2C is made of

onecd

Файлова інформаційна база (1Cv8.1CD), зберігання конфігурації, .cf, вивантаження .dt, XML-вивантаження конфігурації, структура бази даних.

The file infobase (1Cv8.1CD), configuration storage, .cf, .dt dumps, the configuration XML dump, database structure.

bsl

Вбудована мова: парсер, компілятор з перевірками як у платформи, інтерпретатор, глобальний контекст.

The built-in language: parser, compiler with the platform's checks, interpreter, global context.

runtime

Об'єкти даних, запити, регістри, проведення документів, сеанс і старт прикладного рішення.

Data objects, queries, registers, document posting, the session and application start-up.

app

Програма для користувача: вікно запуску, Конфігуратор, тонкий клієнт з керованими формами.

The user-facing program: start window, Configurator, thin client with managed forms.

Де ми зараз

Where we are

готовоdone
Віха 1 — створити базу, Конфігуратор, тонкий клієнтMilestone 1 — create an infobase, Configurator, thin client

Нова файлова база, редагування конфігурації та клієнт з інтерфейсом.

A new file infobase, configuration editing and a client with a UI.

готовоdone
Ціль 2 — відкрити базу, створену платформою, і повноцінно з нею працюватиGoal 2 — open a platform-made infobase and work with it fully

Завантажувач, модель метаданих, мова з даними й запитами, форми, команди, ролі, звіти, друковані форми — перевірено на тестовому корпусі.

Loader, metadata model, the language with data and queries, forms, commands, roles, reports, print layouts — checked on the test corpus.

у роботіin progress
Ціль 3 — справжня типова конфігурація: BAS Бухгалтерія КОРПGoal 3 — a real typical configuration: BAS Accounting CORP

961 загальний модуль, 267 довідників, 235 документів, 552 регістри. Завантажити з .cf / XML / .dt, вивантажити назад і запустити.

961 common modules, 267 catalogs, 235 documents, 552 registers. Load it from .cf / XML / .dt, unload it back and run it.

G0еталонна база платформиplatform baseline
G1.cf туди й назад байт-у-байт.cf round trip, byte-exact
G2XML-імпорт / експортXML import / export
G3структура бази з конфігураціїdatabase structure
G4формат .dt.dt format
G5відновлення з .dt.dt restore
G6компіляція всіх модулівcompile every module
G7старт сеансуsession start-up
G8головне вікно і формиmain window and forms
G9сценарії: проведення, звіти, закриття місяцяscenarios: posting, reports, month closing
2C — незалежний дослідницький проєкт, не пов'язаний із фірмою «1С» чи розробниками BAS. Код пишеться з нуля за власною документацією; сумісність досягається порівнянням поведінки, а не копіюванням коду. Назви продуктів належать їхнім власникам.
2C is an independent research project, not affiliated with 1C or the BAS developers. The code is written from scratch from our own documentation; compatibility comes from comparing behaviour, not from copying code. Product names belong to their owners.