Документ

Назначение

Карточки данного типа предназначены для работы с файлами: хранения файлов в различных форматах, предварительный просмотр, учет версий, экспорта в различные форматы, наложение электронных подписей в формате .p7s.

Класс карточки

DocsVision.BackOffice.ObjectModel.Document

Для работы с карточкой предназначен сервис IDocumentService, с помощью которого можно выполнять различные операции с документом, начиная с создания документа, и заканчивая работой с файлами и подписями документа.

Доступные операции:
  • Создание документа.

  • Синхронизация свойств с файлом.

  • Управление подписями документа.

  • Работа с файлами документа.

  • Экспорт документа.

Далее перечислены базовые сценарии работы с объектной моделью карточки "Документ", для которых действительно следующее:

  • Контекст объектов может быть получен в соответствии с примером, приведенным в разделе Инициализация контекста объектов.

  • Сервисы получаем стандартным способом:

    IDocumentService documentService = objectContext.GetService<IDocumentService>(); (1)
    ILinkService linkService = objectContext.GetService<ILinkService>(); (2)
    IReferenceListService referenceListService = objectContext.GetService<IReferenceListService>(); (3)
    IStaffService staffService = objectContext.GetService<IStaffService>(); (4)
    IStateService stateService = objectContext.GetService<IStateService>(); (5)
    1 Сервис для работы с документами.
    2 Сервис для работы со "Справочником ссылок".
    3 Сервис для работы со списками ссылок.
    4 Сервис для работы со "Справочником сотрудников".
    5 Сервис для работы с "Конструктором состояний".
  • Воспользуйтесь поиском, чтобы получить информацию по классам и переменным, используемым в примерах.

Создание нового Документа

static void CreateDocument()
{

 KindsCardKind kind = objectContext.GetObject<KindsCardKind>(new Guid("8E40F327-9517-4A43-998D-BF2BD619588D")); (1)


 Document document = documentService.CreateDocument(null, kind);
 document.Description = "Дайджест карточки Документ"; (2)
 document.MainInfo.Name = "Название документа"; (3)
 document.MainInfo.Author = document.MainInfo.Registrar = staffService.GetCurrentEmployee(); (4)
 document.MainInfo["Content"] = "Содержимое документа"; (5)
 objectContext.SaveObject(document);
}
1 Получение вида карточки Исходящий.
2 Создание документа.
3 Отображается в сетке Windows-клиента.
4 Отображается при открытии карточки.
5 Регистратор/подготовил, а также автор.

Добавление основного файла в Документ

static void AddFile()
{
 string filePath = @"z:\Sample.docx"; (1)

 Document document = objectContext.GetObject<Document>(new Guid("00000000-0000-0000-0000-000000000000")); (2)

 documentService.AttachMainFile(document, filePath);
 objectContext.SaveObject<Document>(document); (3)
}
1 Прикрепляемый документ.
2 Получение документа, к которому добавляется файл.
3 Добавление основного документа.

Добавление в "Документ" ссылки на другую карточку

static void AddLink()
{
 Document document = objectContext.GetObject<Document>(new Guid("00000000-0000-0000-0000-000000000000"));
 BaseCard addedCard = objectContext.GetObject<BaseCard>(new Guid("00000000-0000-0000-0000-000000000001")); (1)

 LinksLinkType linkType = linkService.FindLink("В ответ на"); (2)

 referenceListService.CreateReference(document.MainInfo.ReferenceList, linkType, addedCard, "Ссылка на документ", false); (3)
}
1 Получение документа, в который добавляется ссылка на карточку.
2 Получение типа ссылки.
3 Добавление ссылки в список ссылок документа document.

Смена состояния Документа

static void ChangeDocumentState()
{
 Document document = objectContext.GetObject<Document>(new Guid("00000000-0000-0000-0000-000000000000")); (1)

 StatesState endState = stateService.GetStates(document.SystemInfo.CardKind).First(t => t.DefaultName.Equals("Is signed")); (2)

 stateService.ChangeState(document, endState); (3)
}
1 Получение документа.
2 Получение конечного состояния "Документа". В данном случае — Подписан.
3 Смена состояния.

Подписание "Документа" и основных файлов

static void SignDocument()
{

 Document document = objectContext.GetObject<Document>(new Guid("00000000-0000-0000-0000-000000000000")); (1)


 ICollection<CardFieldSetting> fields = documentService.GetKindSettings(document.SystemInfo.CardKind).DocumentSignature.Fields; (2)


 documentService.AddSignature(document, GetCertificate(), false, fields); (3)
 objectContext.SaveObject(document);
}
1 Получение подписываемого документа.
2 Получение списка полей, которые должны быть подписаны. Настройки получаем из "Справочника видов карточек".
3 Подписание документа. Будут подписаны только основные файлы и отдельные поля карточки. Дополнительные файлы подписаны не будут.