DocumentAttachment

Данные документа любого типа в отправляемом сообщении.

message DocumentAttachment {
    required SignedContent SignedContent = 1;
    optional string Comment = 3;
    optional bool NeedRecipientSignature = 4 [default = false];
    repeated DocumentId InitialDocumentIds = 5;
    repeated DocumentId SubordinateDocumentIds = 6;
    optional string CustomDocumentId = 9;
    optional bool NeedReceipt = 10 [default = false];
    repeated CustomDataItem CustomData = 11;
    required string TypeNamedId = 12;
    optional string Function = 13;
    optional string Version = 14;
    repeated MetadataItem Metadata = 15;
    optional int32 WorkflowId = 16;
    optional bool IsEncrypted = 17 [default = false];
    optional string EditingSettingId = 18;
}
  • SignedContent — содержимое файла вместе с электронной подписью, представленное структурой SignedContent.

  • Comment — комментарий к документу. Длина не более 5000 символов.

  • NeedRecipientSignature — признак того, что под документом требуется подпись получателя.

  • InitialDocumentIds — список идентификаторов документов, к которым привязывается отправляемый документ. Каждый элемент списка представлен структурой DocumentId. Привязка документа работает по следующим правилам:

    • Чтобы установить связь с документом внутри отправляемого сообщения, передайте в поле DocumentId.MessageId пустую строку, а в поле DocumentId.EntityId передайте значение поля CustomDocumentId соответствующего документа.

    • Чтобы установить связь с уже загруженным в систему документом, укажите его идентификатор в поле DocumentId.InitialDocumentIds.

  • SubordinateDocumentIds — список идентификаторов документов, которые должны ссылаться на отправляемый документ. Каждый элемент списка представлен структурой DocumentId. Чтобы установить связь с документом внутри отправляемого сообщения, передайте в поле DocumentId.MessageId пустую строку, а в поле DocumentId.EntityId передайте значение поля CustomDocumentId соответствующего документа.

  • CustomDocumentId — идентификатор документа во внешней системе; используется для выстраивания связей между документами внутри отправляемого сообщения. Должен быть уникальным в рамках структуры MessageToPost. После отправки сообщения этот идентификатор можно получить в поле CustomDocumentId структуры Document.

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

  • CustomData — список пользовательских данных (тегов), привязанных к документу. Каждый элемент списка представлен структурой CustomDataItem.

  • TypeNamedId — строковый идентификатор типа документа.

  • Function — функция документа. Обязательна при отправке зашифрованных документов.

  • Version — версия документа. Обязательна при отправке зашифрованных документов.

  • Metadata — список метаданных документа, представленных структурой MetadataItem. Список доступных и обязательных метаданных для каждого типа документа можно получить с помощью метода GetDocumentTypes (V2). Инструкция о получении данных из метода GetDocumentTypes приведена на странице Получение информации о типе документа.

  • WorkflowId — идентификатор вида документооборота.

  • IsEncrypted — признак того, что содержимое передаваемого документа зашифровано. Узнать, поддерживает ли указанная версия документа отправку в зашифрованном виде, можно с помощью метода GetDocumentTypes (V2). Инструкция о получении данных из метода GetDocumentTypes приведена на странице Получение информации о типе документа.

  • EditingSettingId — идентификатор настройки редактирования содержимого документа.

Примеры использования

Пример заполнения структуры для отправки титула исполнителя для акта о выполнении работ (оказании услуг) в XML-формате (C#):

var attachment = new DocumentAttachment
{
    TypeNamedId = "XmlAcceptanceCertificate",
    SignedContent = new SignedContent { Content = xmlDocumentBytes, Signature = signatureBytes }
};

var messageToPost = new MessageToPost
{
    FromBoxId = senderBoxId,
    ToBoxId = recepientBoxId,
    DocumentAttachments = { attachment }
};

api.PostMessage(token, messageToPost);

Пример заполнения структуры для отправки договора с запросом извещения о получении (C#):

var attachment = new DocumentAttachment
{
    TypeNamedId = "Contract",
    SignedContent = new SignedContent { Content = documentBytes, Signature = signatureBytes },
    Metadata =
    {
        new MetadataItem("FileName", "Договор.pdf"),
        new MetadataItem("DocumentNumber", "196"),
        new MetadataItem("DocumentDate", "27.10.2017"),
        new MetadataItem("ContractType", "Купля-продажа"),
        new MetadataItem("ContractPrice", "3000.00"),
    },
    NeedReceipt = true
};

var messageToPost = new MessageToPost
{
    FromBoxId = senderBoxId,
    ToBoxId = recepientBoxId,
    DocumentAttachments = { attachment }
};

api.PostMessage(token, messageToPost);

Пример заполнения структуры для отправки зашифрованного счета-фактуры в формате приказа №970 (C#):

var attachment = new DocumentAttachment
{
    TypeNamedId = "Invoice",
    Function = "default",
    Version = "utd970_05_03_01",
    SignedContent = new SignedContent
    {
        Content = content,
        Signature = new SignedContent
        {
            Content = encryptedDocumentBytes,
            Signature = signatureBytes
        }
    },
    IsEncrypted = true,
    Metadata =
    {
        new MetadataItem("FileId", "invoice.xml"),
        new MetadataItem("SellerFnsParticipantId", sellerFnsParticipantId),
        new MetadataItem("BuyerFnsParticipantId", buyerFnsParticipantId),
        new MetadataItem("DocumentDate", "01.04.2025"),
        new MetadataItem("DocumentNumber", "169"),
    }
};

var messageToPost = new MessageToPost
{
    FromBoxId = senderBoxId,
    ToBoxId = recepientBoxId,
    DocumentAttachments = { attachment }
};

api.PostMessage(token, messageToPost);

Пример заполнения структуры для отправки неформализованного документа (C#):

var attachment = new DocumentAttachment
{
    TypeNamedId = "Nonformalized",
    SignedContent = new SignedContent { Content = DocumentBytes, Signature = signatureBytes }
    Metadata =
    {
        new MetadataItem("FileName", "Имя файла"),
    }
};

var messageToPost = new MessageToPost
{
    FromBoxId = senderBoxId,
    ToBoxId = recepientBoxId,
    DocumentAttachments = { attachment }
};

api.PostMessage(token, messageToPost);

См. также

Структура используется: