Удаление объектов

Платформа Docsvision позволяет удалять не только карточки, но и отдельные строки их секций. Для этого каждый уровень API предлагает собственные методы.

Удаление объекта методами базового API

Для удаления экземпляра карточки на уровне базового API предназначен метод DeleteCard менеджера карточек, принимающий идентификатор удаляемой карточки:

userSession.CardManager.DeleteCard(cardId); (1) (2)
1 userSession — пользовательская сессия.
2 cardId — идентификатор удаляемой карточки.

Приведенный выше код удаляет карточку без возможности восстановления, при этом другая перегрузка метода позволяет пометить карточку как удалённую (в Windows-клиенте отображается курсивом) без фактического удаления:

userSession.CardManager.DeleteCard(cardId, false); (1)
1 Для возможности восстановления второй параметр должен иметь значение false.

Чтобы восстановить карточку, помеченную к удалению, используйте метод RestoreCard:

userSession.CardManager.RestoreCard(cardId);

Чтобы удалить строку из секции карточки, необходимо использовать метод DeleteRow сущности секции. В качестве примера, удалим первую строку из секции карточки:

CardData card = userSession.CardManager.GetCardData(cardId); (1)

SectionData section = card.Sections[sectionId]; (2)

Guid firstRowId = section.FirstRow.Id; (3)

section.DeleteRow(firstRowId); (4)
1 Получаем карточку, из которой удаляется строка.
2 Получаем сущность секции.

sectionId — идентификатор секции, из которой удаляется строка. Чтобы получить идентификатор секции стандартных карточек, обратитесь к разделу Описание полей стандартной карточки.

3 Получаем идентификатор первой строки.
4 Выполняем удаление.

Обычно идентификатор удаляемой строки заранее известен, поэтому фактически удаление можно привести к виду:

card.Sections[sectionId].DeleteRow(rowId);

Удаление объекта на уровне объектной модели

Данный уровень API предлагает использовать для удаления объектов единый метод контекста объектов — DeleteObject. В качестве примера его применения, удалим один из файлов документа (карточка типа Документ):

Document document = objectContext.GetObject<Document>(cardId); (1)

DocumentFile file = document.Files.First(); (2)

objectContext.DeleteObject(file); (3)
objectContext.AcceptChanges();
1 Получаем карточку типа Документ.
2 Для простоты, выбираем для удаления первый файл по списку.
3 Удаляем файл и сохраняем изменения.

Данный код фактически выполняет удаление строки из секции Файлы карточки Документ, по аналогии с рассмотренным выше примером для базового API. Аналогичным образом может быть удалён и сам документ.

Метод DeleteObject удаляет объект без возможности восстановления. Если требуется пометить карточку как удалённую, используйте базовый API.

Контекст объектов предлагает функциональность по отмене изменений объекта до его сохранения (вызова метода AcceptChanges или SaveObject), основанную на использовании методов RollbackChanges и RollBackObject (см. Режим отложенных изменений).