SDK и API
Уровни API
| Уровень | Для чего | Состояние |
|---|---|---|
| C ABI | Сеанс, контейнер конфигурации, выполнение модуля | Объявлен и реализован |
| C++ API | Типизированные выборки и предметные команды | Присутствует в SDK |
| Сетевой API | Интеграция с внешними системами | План; REST/OpenAPI не опубликованы |
Продукт называется SterBase. Текущий проект SDK — SterBase77_SDK, прежнее имя — OneC77_SDK; исторический namespace sterbase77 сохранён в интерфейсах.
Сеансовая граница
uint32_t sterbase77_sterbase_abi(void);
uint32_t sterbase77_sterbase_session_abi(void);
int32_t sterbase77_sterbase_session_open_w(
const wchar_t* database_directory,
const wchar_t* mode, int32_t monopoly,
wchar_t* output, uint32_t output_size);
void sterbase77_sterbase_session_close(void);
Сигнатуры показаны без экспортных макросов. В Windows заголовок задаёт __stdcall. Открытие возвращает 0 при успехе; текущая реализация возвращает 1 для неверных аргументов, 2 для отсутствующего/неоднозначного authority, 3 при проблеме выбранного источника. Выходной буфер уточняет результат.
Общий ABI — 0x00010001, сеансовый — 0x00010000 в прочитанной реализации. Проверяйте версии при подключении согласованного пакета.
Менеджер документов
sterbase77::document::DocumentManager предоставляет:
| Метод | Назначение |
|---|---|
select(request) |
Выборка с rows, next_cursor, has_more |
get(identity) |
Чтение полного документа по typed reference |
get_header(identity) |
Чтение шапки |
find_by_number(...), find_by_date(...) |
Поиск документа |
save(object) |
Создание или запись полного агрегата |
set_delete_mark(object, marked) |
Пометка/снятие пометки |
remove(object, physical) |
Пометка или физическое удаление |
post(object, invocation) |
Проведение |
unpost(object) |
Отмена проведения |
toggle_postings(object) |
Изменение активности бухгалтерских проводок |
Для изменений конструктор принимает фабрику ObjectMutationContext. Без неё менеджер возвращает mutation-context-unavailable.
Менеджер справочников
CatalogManager предоставляет select, find_by_code, find_by_name, find_item, get, save, set_delete_mark, remove и проверку принадлежности группе belongs_to_group. Поиск использует объявленные метаданные; физические DBF-поля не являются его контрактом.
Результаты и повторы
ObjectCommandResult содержит success, committed, reconciliation_required, revision, status, error и объектный результат. Запись может состояться, даже если последующее чтение не удалось. Такой исход нельзя превращать в слепой повтор.
В примерах показаны фрагменты интеграции. Политика стабильности C++ API и полный публичный reference остаются TODO.