Обновление/заполнение договора
Необходимые для действия данные:
-
Объект договора
Операции над объектами:
Для обновления договора вызывается метод OtcConnection.BackTrades.UpdateAsync, в качестве параметров которого передается идентификатор, номер текущей ревизии и обновленный объект договора. Существует несколько важных моментов при совершении обновления договора. Первым является общий принцип работы с сущностями, доступными для параллельного редактирования как агентом, так и контрагентом. Перед началом любого изменения сущности необходимо заблокировать ее, чтобы исключить ситуацию «одновременного» изменения. Данное действие для сделок бэк-офиса производится с использованием метода OtcConnection.BackTrades.LockAsync. В качестве параметров передаются идентификатор и номер текущей ревизии документа. После исполнения метода документ блокируется от редактирования для всех, кроме логина, вызвавшего данный метод. Необходимо понимать, что при разработке приложения необходимо предусмотреть внештатные ситуации и при не ожидаемом выходе из процесса обновления требуется разблокировать договор для возможности дальнейшей работы с ним. Разблокировка производится вызовом метода OtcConnection.BackTrades.UnlockAsync, параметрами которого являются идентификатор и номер текущей ревизии документа. В случае успешного обновления создается новая ревизия документа, и разблокировать требуется уже новую ревизию, т.к. именно она является текущей. Данные о номере ревизии содержатся в контракте ответа на запрос обновления договора. Вторым важным моментом является, что запрашивать договор необходимо с флагом OTC.ClientAPI.Documents.ContentInclusionMode.DocumentInternals. Данный флаг означает, что сервер вернет не полный экземпляр XML договора, а только необходимую для редактирования часть. Внесение изменений в полный XML договора не предусмотрено, т.к. он формируется на сервере.