Проведение и отмена проведения
Семантика команд
DocumentManager::post отправляет команду post через object runtime. unpost отправляет отдельную команду unpost. Отмена не подменяется обычным сохранением.
Контракт передаёт полный документ. Выполнение обработчика и согласованное изменение состояния, движений и итогов принадлежат нижележащему механизму, а не интерфейсу пользователя.
Предусловия
Менеджер проверяет типизированную ссылку, сохранённый и загруженный объект, ненулевую ревизию, aggregate_complete, доступный runtime и контекст изменения.
| Ситуация | Статус |
|---|---|
| Не сохранён/не загружен | document-post-loaded-document-required |
| Загружена часть строк | document-post-complete-aggregate-required |
| Нет контекста изменения | mutation-context-unavailable |
У отмены аналогичные статусы с префиксом document-unpost-.
Параметры проведения
DocumentPostingInvocation содержит mode и необязательный procedure_argument. Он существует в пределах команды и не является полем хранения или глобальным состоянием сеанса. Допустимые режимы и их интерпретация должны подтверждаться контрактом вызова; здесь они не выдумываются.
Проверка сценария
- Прочитать сохранённый документ целиком.
- Выполнить
post, проверить результат и прочитать состояние заново. - Выполнить
unpost, снова проверить результат и чтение. - Проверить движения и итоги в пределах нужного сценария.
Смена одного флага не доказывает правильность бухгалтерского результата. Публичная матрица поддержанных конфигураций и видов проведения пока не опубликована.