diadoc / diadocsdk-csharp Goto Github PK
View Code? Open in Web Editor NEWOfficial Diadoc SDK for C#
License: MIT License
Official Diadoc SDK for C#
License: MIT License
При подписании формализованной счет-фактуры со стороны покупателя, для продавца устанавливается статус "Ожидается извещение о получении" и не переходит в статус "Документооборот завершен".
При заходе(просмотре) через ВЕБ-интерфейс в этот документ, статус автоматически меняется на "Документооборот завершен". Что собственно и нужно.
Вопрос: в чем может быть проблема ? Что еще нужно вызвать на строне покупателя, что бы статус изменился на "Документооборот завершен".
Спасибо.
Приветствую уважаемых разработчиков!
Пусть имеется MessageId + EntityId некоторой сущности.
Вопрос: как правильно определить направление (входящая она или исходящая) и кто контрагент (другая сторона документооборота)?
Сейчас я делаю запрос GetMessage по MessageId, далее смотрю на EntityType + AttachmentType сущности и действую в соответствии с ними.
Для краткости IsOurBox(boxId)
- true если мы отправитель (boxId совпадает с нашим)
EntityType | AttachmentType | Как определить контрагента и направление |
---|---|---|
Signature | любой | entity.SignerBoxId != "[email protected]" => direction = IsOurBox(entity.SignerBoxId) ? Outgoing : Incoming |
Attachment | XmlTorg12 or Torg12 or Invoice or InvoiceRevision or InvoiceCorrection or Nonformalized | direction = IsOurBox(GetDocument(..., MessageId, EntityId).CounteragentBoxId) ? Outgoing : Incoming |
Вопросы:
Видел примеры для json, а как это сделать на C# ?
Добрый день.
Очень хочется увидеть поддержку TAP в SDK. Есть ли такое в планах?
Добрый день.
Подскажите пожалуйста по поводу утверждения аннулирования документов. Какой метод класса MessagePatchToPost нужно использовать и какой класс атачмента. Отклонение аннулирования работает без проблем. Утвердить не удается.
Пробуем использовать метод AddReceipt и класс Diadoc.Api.ReceiptAttachment.
Сейчас ошибки:
При утверждении аннулирования продавцом:
DiadocApi: BaseUrl=https://diadoc-api.kontur.ru, PathAndQuery=/V3/PostMessagePatch?operationId=, AdditionalMessage=Команда AddCommonReceipt не поддерживается документом 70a8e9e1-67ac-437b-9b13-056bdc5
При утверждения аннулирования покупателем:
DiadocApi: BaseUrl=https://diadoc-api.kontur.ru, PathAndQuery=/V3/PostMessagePatch?operationId=, AdditionalMessage=Некорректная ссылка на родительский файл, StatusCode=BadRequest, DiadocErrorCode: Doc
Выход в интернет через прокси. Имеется ли возможность указать настройки прокси?
private static GeneratedFile GenerateinvoiceXml(string authToken)
{
var certContent = ReadFileContent(FileWithCertName);
var signer = new Signer
{
SignerCertificate = certContent
};
var content = new InvoiceInfo()
{
// заполняем согласно структуре InvoiceInfo
InvoiceDate = DateTime.Now.ToString(), // дата СФ
InvoiceNumber = "aaa", // номер СФ
Signer = signer,
Total = "1000"
};
return Api.GenerateInvoiceXml(authToken, content);
}
С какими версиями .NET работает апи диадока?
При попытке выполнить код с http://api-docs.diadoc.ru/ru/latest/howto/example_authorization.html
с правильным емэйл\пароль получаю
получаю Необработанное исключение типа "Diadoc.Api.Http.HttpClientException" в DiadocApi.dll
Добрый день коллеги!
Пожалуйста помогите с ориентироваться. Стоит задача интегрировать нашу систему (веб приложение, .Net (C#, ASP)) с системой Диадок для формирования документа и подписания.
На клиентской машине стоит КриптоПро CSP и сертификаты загруженны.
Мы для получения сертификата из хранилища использовали WinApiCrypt но система ищет сертификат (и ключи) на машине сервера.
Подскажите пожалуйста, как правильнее организовать, чтобы сертификат получить из хранилища на клиентской машине?
Заранее благодарен.
Порекомендуйте, пожалуйста, подход в интеграционном решении, по синхронизации документов и статусов документов Диадока и учетной системы.
Т.е. не пытаться же каждый раз перебирать все документы?
Здравствуйте.
Подскажите, где задается валюта для акта?
http://api-docs.diadoc.ru/ru/latest/howto/example_acceptance_certificate.html
Здравствуйте,
Как можно узнать формат загруженного файла в неформализованный документ?
т.е. по GetEntityContent я могу получить тело файла, а как узнать тип/формат этого файла?
Спасибо.
Подскажите, что имеется ввиду под Крипто-API, предоставляемое операционной системой (доступно через класс WinApiCrypt) ? Где это находится, где скачать?
Здравствуйте, уважаемые разработчики!
К сожалению не нашёл иного способа общения с Вами на github - посему пишу сюда.
Имею на руках программный код, генерирующий из данных документы для ЭДО и отправляющий из контрагентам через Вашу систему.
Для генерации документов всегда требуется заполнить тэг СвУчДокОбр (или его аналог СвУчДокОбрСФ):
<СвУчДокОбор ИдОтпр="ДАННЫЕ_ОТПРАВИТЕЛЯ" ИдПок="ДАННЫЕ_ПОЛУЧАТЕЛЯ">
<СвОЭДОтпрСФ НаимОрг="ЗАО "ПФ "СКБ Контур"" ИННЮЛ="6663003127" ИдЭДОСФ="2BM" />
</СвУчДокОбор>
И тут вопрос:
сейчас для заполнения этого тэга при отправке документов приходится вызывать API несколько раз:
Можно ли как-нибудь уменьшить количество вызовов (например создать новую API-функцию GetParticipants(sessionId, myBoxId, counteragentInn, counteragentKpp), возвращающую данные сразу о трёх организациях - моей, Вашей и другой стороны)?
К тому же очень не хочется "костылять", держа захакрдкоденным Ваш ИНН.
Здравствуйте!
Вопрос такой: можно ли добавлять и удалять уже загруженные документы (созданные в Диадоке, т.е. есть EntityId) в пакет?
Или это возможно только при первоначальной выгрузке ?
Уважаемые коллеги!
Скачиваю входящие документы через API (.NET). Хотелось бы при скачивании документа получить ИНН, КПП и название контрагента, данный документ приславшего.
Подскажите, какими функциями для этого воспользоваться.
По аналогии с предыдущим вопросом об определении отправителя-получателя мне требуется для некоторой сущности (про которую известно только то, что она типа Attachment, и задана через пару messageId + entityId) максимально просто ответить на вопросы:
Мой текущий алгоритм действий:
public static GeneratedFile GenerateinvoiceXml(string authToken, string box, string tobox)
{
try
{
var content = new InvoiceInfo()
{
InvoiceDate = "31.01.2016", // дата СФ
InvoiceNumber = "11-012016-2410000000", // номер СФ
Seller = {
BoxId = box
},
Buyer = {
BoxId = tobox
},
Signer = {
SignerCertificate = ReadFileContent(FileWithCertName)
},
PaymentDocuments = {
new PaymentDocumentInfo
{
DocumentDate = "08.08.2016",
DocumentNumber = "№00243015140"
}
},
Items = {
new InvoiceItem
{
Product = "Горячая вода (компонент на тепловую энергию). Прочие",
CountriesOfOrigin = { "23", "3243" } ,
CustomsDeclarationNumbers = { "3243"},
TaxRate = TaxRate.Fraction_10_110,
Subtotal = "321231"
}
},
AdditionalInfos = {
new AdditionalInfo
{
Id = "2312321",
Value = "32423423"
}
},
Total = "1000"
};
return Api.GenerateInvoiceXml(authToken, content);
}
catch (Exception e)
{
logger.Debug("Except{0}", e, null);
Console.Read();
return null;
}
}
получаю diadoc_cnsl.Program.GenerateinvoiceXml Debug: ExceptSystem.NullReferenceException: В экземпляре объекта не задана ссылка на объект.
Подскажите, в каком поле хранятся статусы документов? В частности формализованных актов, накладных, счет-фактур. Как узнать текущий статус документа?
Здравствуйте.
Как можно подписать счет-фактуру с доверенностью?
Например, в акте это можно сделать с помощью объекта Attorney.
Из перечисленных вот здесь http://api-docs.diadoc.ru/ru/latest/proto/DocumentType.html типов документов, чем отличаются и когда какие используются - Torg12 и XmlTorg12, AcceptanceCertificate и XmlAcceptanceCertificate ?
Здравствуйте.
Есть такая штука как Entity.Content. Когда его скачиваешь - это какой-то сериализованый protobuf'ом массив байтов. Какому типу/типам в SDK он соответствует? Есть потребность его десериализовать и получить некоторые данные. (В моём случае имя/должность и др. реквизиты подписавшего входящий документ человека)
В документации http://api-docs.diadoc.ru/ru/latest/http/SearchDocflows.html указано, что можно использовать формат
ключ: значение
Ни одна попытка выполнить запросы типа
Inn: <кучацифр>
или
ИНН: <кучацифр>
не возымела успеха. С кавычками/без, с пробелом/без или другими комбинациями. В то время как обычный запрос
<кучацифр>
выдавал некоторые осмысленные "околонужные" результаты.
Не смог понять фразу из документации:
В выдачу попадают документы, которые содержат указанную пару “ключ-значение” среди пользовательских данных, привязанных к документу.
Таки какие значения может принимать Key?
3. Есть такой класс DocumentsFilter, используется в методе sdk GetDocuments, у него есть св-во DocumentNumber, на что оно влияет при фильтрации? Поскольку перегруженный метод GetDocuments, принимающий DocumentsFilter в качестве параметра, при заданном только DocumentNumber (включая, разумеется необходимые данные, такие как BoxId, FilterCategory etc.) возвращает все документы подряд.
На скрине ниже видно что я имею ввиду. Какой фильтр задаётся и что в получено результате. Могу гарантировать, что в ящике нет 9 тыс. документов с заданным DocumentNumber.
Спасибо.
по примеру http://api-docs.diadoc.ru/ru/latest/howto/example_authorization.html
using System.Windows.Forms;
using System.Security.Cryptography.X509Certificates;
using Diadoc.Api;
using Diadoc.Api.Cryptography;
using Diadoc.Api.Http;
namespace diadoc
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Можно использовать либо аутентификацию по логину/паролю, либо по сертификату
var authTokenLogin = Api.Authenticate(DefaultLogin, DefaultPassword); // по паре логин/пароль
var authTokenPassword = Api.Authenticate(ReadCertContent(DefaultPathToCert)); // по сертификату
}
// URL веб-сервиса Диадок
private const string DefaultApiUrl = "https://diadoc-api.kontur.ru";
// идентификатор клиента
private const string DefaultClientId = "*****";
// Для использования Диадок требуются:
// 1. Крипто-API, предоставляемое операционной системой (доступно через класс WinApiCrypt)
// 2. Экземпляр класса DiadocApi, проксирующий работу с веб-сервисом Диадок
private static WinApiCrypt Crypt = new WinApiCrypt();
public static readonly DiadocHttpApi Api = new DiadocApi(
DefaultClientId,
new HttpClient(DefaultApiUrl),
Crypt);
// Логин для авторизации на сервере Диадок
private const string DefaultLogin = "***";
// Пароль для авторизации на сервере Диадок
private const string DefaultPassword = "***";
// Путь к сертификату для авторизации на сервере Диадок
public const string DefaultPathToCert = "**";
// Для авторизации по сертификату необходимо сертификат преобразовать в массив байтов
public static byte[] ReadCertContent(string pathToCert)
{
var cert = new X509Certificate(pathToCert);
return cert.Export(X509ContentType.Cert);
}
}
}
получаю ошибку
Ошибка CS1503 Аргумент 2: не удается преобразовать из "Diadoc.Api.Http.HttpClient" в "string".
Подскажите пожалуйста в чем может быть проблема?
При попытке авторизации выдается сообщение об ошибке.
Выход в интернет через прокси.
Could not deserialize http response
Request: POST /Authenticate
AdditionalHeaders:
Authorization: DiadocAuth ddauth_api_client_id= //здесь наш код разработчика
Response: 200 (OK)
ResponseHeaders:
Access-Control-Allow-Origin: *
Content-Length: 784
Date: Tue, 20 Sep 2016 07:35:30 GMT
Server: nginx
Content: [784]
0?�� *?H??
���??�?0?�?��
Вопрос по обращению, связанному с этим: некоторое время назад написал на почту поддержки Диадок №10991224 (т.к. в запросе присутствовали ID внутренних документов из абонентского ящика).
Суть вопроса:
При вызове API GetDocument для некоторой счёт-фактуры, отображаемой в веб-клиенте с отметкой "Требуется аннулирование", её RevocationStatus имеет значение RequestsMyRevocation
Однако, если после вызова API GetMessage для сообщения, в котором находится эта СФ, найти в ответе Entity, соответствующую связанному с ней предложению об аннулировании, то можно заметить: значение поля NeedRecipientSignature == false (то есть якобы предложение об аннулировании не требует ответной подписи, что очевидно неверно).
От менеджера мне пришёл Ваш ответ:
Данный флаг используется для документов, смотреть на него не нужно в данном случае.
Проверил где данное поле встречается в документации http://api-docs.diadoc.ru/ru/latest/search.html?q=NeedRecipientSignature&check_keywords=yes&area=default#
Вопросы:
Здравствуйте, уважаемые!
Пытаюсь скачать документы нижеприведенным образом, однако это удается только в редких случаях. В основном выдается ошибка
Ошибка 404:Не найден
try
{
var org = Api.GetMyOrganizations(authTokenLogin);
Diadoc.Api.Proto.Documents.IDocumentZipGenerationResult doc = null;
doc = Api.GenerateDocumentZip(authTokenLogin, org.Organizations[0].Boxes[0].BoxId, dataGridView3.Rows[ind].Cells["MesID"].Value.ToString(), dataGridView3.Rows[ind].Cells["ID"].Value.ToString(), false);
var file = Api.GetFileFromShelf(authTokenLogin, doc.ZipFileNameOnShelf);
saveFileDialog1.FileName = dataGridView3.Rows[ind].Cells["doc"].Value.ToString(); //+ ".zip";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if (saveFileDialog1.FileName != "")
{
File.WriteAllBytes( saveFileDialog1.FileName + ".zip", file);
MessageBox.Show("Документ заархивирован и загружен");
}
}
}
catch (Diadoc.Api.Http.HttpClientException ex)
{
MessageBox.Show(ex.InnerException.Message.ToString(), "Ошибка загрузки файла", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
в таблице dataGridView3
выводится список документов при помощи метода GetDocuments
. Предполагал сначала, что дело в ID документа:
Diadoc.Api.Proto.Documents.DocumentList.Documents[i].EntityId
Однако теперь уже думаю, что проблема в самих документах. Подскажите, пожалуйста, куда копать?
P.S. Если выводить имена файлов проблемных документов, то они пустые, т.е. проблема возникает еще на этапе GenerateDocumentZip
Здравствуйте, уважаемые сотрудники техподдержки.
Подскажите, пожалуйста, есть ли возможность через API (C#) при запросе списка контрагентов или списка документов выводить сразу все, т.е. не по 100 позиций в списке, а единовременным запросом все сразу? Если нет, то можно ли как-то узнать общее кол-во этих позиций, чтобы вывести их в цикле по 100 (максимум) штук?
И еще вопрос по поводу загрузки документа в черновики. Использую метод UploadFileToShelf для этого, но после его успешного выполнения, в веб-интерфейсе в черновиках загруженного документа нет. Возможно, данный метод нужно использовать в совокупности с чем-либо еще?
Заранее благодарен.
Приветствую, уважаемые разработчики!
Некоторое время назад нам потребовалось сделать службу Windows, которая бы выполняла автоматические действия по обработке документов (в частности, автоподпись уведомления о получении).
Запускать службу нам надо из-под доменной учёной записи - однако выяснилось, что из-под неё нельзя инициализировать работу с ЭЦП (откопали такую вот статью https://blogs.msdn.microsoft.com/alejacma/2011/05/19/scardestablishcontext-fails-with-scard_e_no_service-error/).
Переписанное в статье решение под C# не сработало (ошибка при взаимодействии управляемого и неуправляемого кода).
В общем сейчас приходится запускать службу как консольное приложение в автозапуске (огромный костылище); в планах отдельная служба для работы с ЭЦП, запускаемая с учёткой LocalService + взаимодействие с ней через WCF Named Pipe другой службы с доменного аккаунта (костыль, но уже поменьше). Или реализация отдельной службы, которая бы при старте давала права на взаимодействие нашей службе (т.е. решение из статьи).
Подскажите, имеете ли Вы более изящное решение данной проблемы?
Вопрос по авторизации через сертификат и использовании ЭЦП. Библиотека установлена и зарегистрирована, импортированы COM-объекты в дельфи. Закрытые ключи установлены в КриптоПро, открытого ключа нет. Icomcryptapi.GetPersonalCertificates(true,false) находит сертификат, но
При этом авторизация через логин-пароль работает без всяких вопросов.
Вытаскивать файл '.cer' из КриптоПро не вариант, с ним не работает точно так же.
Добрый день коллеги,
Наша компания очень хотела бы использовать функционал вашего API, связанный с распознаванием документов:
http://api-docs.diadoc.ru/ru/latest/MiscellaneousApiFeatures.html?highlight=recognize
В настоящий момент я сформировал xps файл (во вложении) на базе PDF файла, который, в свою очередь был сформирован непосредственно из Контур Диадок.
Запустил процедуру распознавания для этого файла.
recognitionId = «49e0e139-3115-436e-a7f4-c64cc69ca1dd»
Результат распознавания, насколько я могу судить отрицательный:
RecognizedSuccessfully = “False”
ErrorMessage = “Sequence contains no elements”
DocumentType = “UnknownRecognizedDocumentType”
Не могли бы вы подсказать, в чем причина?
С уважением
Евгений
при отправке счет фактуры получаю ид сообщения
var response = Api.PostMessage(authToken, messageToPost);
пытаюсь получить
var invoiceDocument = Api.GetDocument(authToken, box, response.MessageId, null);
boxId: идентификатор ящика;
messageId: идентификатор сообщения, содержащего искомый документ;
entityId: идентификатор сущности типа LetterAttachment внутри сообщения messageId, представляющей искомый документ;
что за entityId? откуда его взять
Добрый день!
Пытаюсь собрать проект, но выдаются ошибки. Лог работы скрипта приложил
BuildLog.docx
Ругается на Cryptography\StreamCrypt.cs(123,60): error CS1056: Unexpected character '$' [D:\Projects\diadocsdk-csharp-master\src\DiadocApi-net35.csproj]
В чем может быть проблема?
как заполнять этот метод?
private GeneratedFile GenerateinvoiceXml(string authToken)
{
var content = new InvoiceInfo()
{
// заполняем согласно структуре InvoiceInfo
};
return Api.GenerateInvoiceXml(authToken, content);
}
В readme файле написано что нужно регистрировать апи. В содержимом батника команды для версии .net 4. Нужно ли регистрировать для 3.5 и каким образом?
Подскажите, имеется поле с Договором (номером, датой) в формализованных документах (актах, накладных, счет-фактурах)? Если есть , то куда смотреть?
Добрый день!
Разбираюсь с вашим API. Хочу получить список подписанных входящих счетов фактур (всех). Делаю следующим образом:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim DefaultApiUrl As String
Dim DeveloperKey As String
Dim Crypt As WinApiCrypt
Dim MyApi As DiadocApi
Dim MyLogin As String
Dim MyPassword As String
Dim MyTokenLogin As String
Dim filterCategory As Object
Dim documents As Diadoc.Api.Proto.Documents.DocumentList
Try
DefaultApiUrl = "https://diadoc-api.kontur.ru"
DeveloperKey = "ключ разработчика"
MyLogin = "логин"
MyPassword = "пароль"
Crypt = New WinApiCrypt
MyApi = New DiadocApi(DeveloperKey, DefaultApiUrl, Crypt)
MyTokenLogin = MyApi.Authenticate(MyLogin, MyPassword)
'MsgBox(MyTokenLogin, MsgBoxStyle.OkOnly, "Information")
filterCategory = "AnyInvoiceDocumentType.InboundFinished"
documents = MyApi.GetDocuments(MyTokenLogin, filterCategory)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
End Try
End Sub
Аутентификация проходит, в итоге получаю пустой список. Что не так?
Приветствую!
Имею заполненную структуру SignedContent для некоторого Attachment'а + тип Attachment'а, который хочу отправить. Хочу добавить его в MessageToPost или MessagePatchToPost (в зависимости от очевидных условий).
Однако, поскольку в каждой сущности за добавление каждого типа Attachment'ов отвечает свой метод (который ещё и добавляет данные в соответствующий список), приходится городить примерно такой вот extension:
public static bool AddAttachment(this MessagePatchToPost diadocMessagePatch,
AttachmentType diadocAttachmentType,
SignedContent fileSignedContent, string diadocParentDocumentId)
{
try
{
// 1. Создаём нужную сущность под Документ + заполняем специфичные именно для указанного типа поля.
IList correspondingMessageList;
dynamic diadocAttachment;
switch (diadocAttachmentType)
{
case AttachmentType.Receipt:
diadocAttachment = new ReceiptAttachment
{
ParentEntityId = diadocParentDocumentId,
};
correspondingMessageList = diadocMessagePatch.Receipts;
break;
case AttachmentType.XmlTorg12BuyerTitle:
diadocAttachment = new ReceiptAttachment
{
ParentEntityId = diadocParentDocumentId,
};
correspondingMessageList = diadocMessagePatch.XmlTorg12BuyerTitles;
break;
case AttachmentType.XmlSignatureRejection:
diadocAttachment = new XmlSignatureRejectionAttachment
{
ParentEntityId = diadocParentDocumentId,
};
correspondingMessageList = diadocMessagePatch.XmlSignatureRejections;
break;
case AttachmentType.InvoiceCorrectionRequest:
diadocAttachment = new CorrectionRequestAttachment
{
ParentEntityId = diadocParentDocumentId,
};
correspondingMessageList = diadocMessagePatch.CorrectionRequests;
break;
default:
return false;
}
// 2. Заполняем поля Документа по запросу с предыдущего шага.
diadocAttachment.SignedContent = fileSignedContent;
correspondingMessageList.Add(diadocAttachment);
return true;
}
catch (Exception e)
{
// Структура объектов изменилась с момента написания кода?
return false;
}
}
(код добавления к Message ещё более витиеватый из-за большего количества типов Attcahment'ов)
Вопрос: может сделаете в коде Diadoc SDK набор интерфейсов, группирующих документы по их типам и наличию-отсутствию определённых полей?
Например чтобы интерфейс IDiadocAttachment реализовывали все Attachment'ы; его уточнение IDiadocAttachmentWithCustomDocumentId давало доступ к полю CustomDocumentId Attachment'а (разумеется, если объект его реализует).
Тогда и dynamic использовать не потребуется, и метод AddAttachment со значительно меньшим количеством срок кода можно будет внести в классы MessageToPost и MessagePatchToPost.
Для формирования XML акта о выполнении работ заполняю структуру AcceptanceCertificateSellerTitleInfo. Дошел до WorkItem. В данной структуре есть поля UnitCode, UnitName. По аналогии со счет-фактурой, о заполнении которой в документации сказано следующее:
Коды единиц измерения InvoiceItem.Unit, коды стран происхождения товара InvoiceItem.CountriesOfOrigin, а также коды иностранных госудраств ForeignAddress.Country можно указывать в буквенном формате, тогда Диадок предпримет попытку сконвертироваить их в соответствующие числовые коды.
, заполняю поле UnitName. UnitCode оставляю пустым. При попытке формирования XML получаю Exception:
'BaseUrl=https://diadoc-api.kontur.ru, PathAndQuery=/GenerateAcceptanceCertificateXmlForSeller, AdditionalMessage=AcceptanceCertificateSellerTitleInfo.Works[0].Items[0].UnitCode is required when AcceptanceCertificateSellerTitleInfo.Works[0].Items[0].Name is filled, StatusCode=BadRequest, DiadocErrorCode: Http.BadRequest'
Если задать значение UnitCode, XML формируется без проблем. При этом содержимое поля UnitName ничего не меняет и не используется. Вопрос: Почему при составлении акта не работает преобразование буквенного формата в числовой как в счет-фактуре? И для чего тогда предназначено поле UnitName? В документации про это ничего не сказано.
Как можно вывести содержимое протобуфера в консоль\файл?
DocumentList documents = Api.GetDocuments(authToken, box, "AnyInvoiceDocumentType.Inbound", tobox, null, null, null, null,null,true,null);
logger.Debug("Except{0}", documents, null);
Console.Read();
пустая строка
Добрый день.
В продолжении вопроса: #57
Были даны рекомендации:
Подтверждение аннулирования - это подпись под запросом на аннулирование. Нужно использовать метод AddSignature и класс DocumentSignature . Предварительно нужно получить контент запроса на аннулирование (например, при помощи GetMessage) и подписать его
Подписали полученный файл предложения об аннулировании и отправили с помощью этого метода и класса. При отправке ошибок нет. Но в ящике говорит: Ошибка при аннулировании документа -
Подписанные данные были искажены после момента подписания.
Проверяю подпись под полученным файлом аннулирования на сайте госсуслуг - ошибок нет.
Метод AddSignature и класс DocumentSignature использовали для утверждения неформализованных документов и таких ошибок не встречали.
в примерах такая строка
var counteragentBoxId = "идентификатор ящика контрагента";
но мне же не будут копировать и посылать свои ююиды компании. как программно узнать?
Добрый день.
Нужно получить diadocapi.dll.
Для этого скопировал файлы diadocsdk-csharp на диск и запускаю generate.bat.
Выскакивает ошибка:
& : Имя ".\build.ps1" не распознано как имя командлета, функции, файла сценария
или выполняемой программы. Проверьте правильность написания имени, а также нал
ичие и правильность пути, после чего повторите попытку.
строка:1 знак:3
Что нужно сделать? Как получить DiadocApi.dll чтобы потом ее использовать для интеграции в нашей erp системе?
Добрый день!
Создавал приложение, которое использовало библиотеку для отправки документов в Вашу систему. Все работало до того как обновил DiadocApi.dll
Теперь система выдает ошибки при связи подписанного документа с непонятным сообщение об ошибки, можете пожалуйста помочь разобраться:
В строке 18 выходит ошибка : Параметр задан неверно.
Версия библиотеки последняя из релиза 1.36.2
До этого была версия : 1.23.0
И все работало.
http://api-docs.diadoc.ru/ru/latest/howto/example_send_invoice.html
беру пример
var invoiceReceipt = Api.GenerateInvoiceDocumentReceiptXml(authToken, invoiceDocument.MessageId, invoiceConfirmation.AttachmentId, signer);
//отправка извещения
var messagePatchToPost = new MessagePatchToPost
{
BoxId = boxId,
MessageId = invoiceDocument.MessageId,
Receipts =
{
new ReceiptAttachment
{
ParentEntityId = invoiceDocument.EntityId,
SignedContent = new SignedContent //файл подписи
{
Content = invoiceDocument.Content,
Signature = new byte[0] //подпись продавца
}
}
}
};
и получаю Ошибка CS1061 'Message" не содержит определения для "AttachmentId" и не удалось найти метод расширения "AttachmentId", принимающий тип "Message" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)
Здравствуйте.
Я пытаюсь получить статус документа. Выполнив метод api GetDocument, получаю у документа пустые статусы (почти все), в том числе ResolutionStatus. Хотя в Вашем приложении (https://diadoc.kontur.ru/) у этого документа статус "Отказано в подписи" и имеется история статусов с дополнительной информацией.
Что я делаю не так?
Какие есть способы получения статусов документа, статусов документооборота, истории статусов? Интересуют все возможные.
Cогласно вашей документации, подать заявку на участие возможно через функцию SendFnsRegistrationMessage .
"Отправка заявления участника ЭДО
При помощи метода SendFnsRegistrationMessage можно отправить заявление участника ЭДО."
Для интеграции мы используем предоставляемое SDK , вызов функции не генерирует никаких исключений. Как понять статус предоставления доступа по добавляемому сертификату? Видимые проблемы, которые могут повлиять на процесс.
Добрый день.
Импортировал библиотеку в качестве COM объекта в Delphi 7.0. Получил исходник DiadocApi_TLB.
Подключение, регистрация, все работает. Пытаюсь сформировать XML для счет-фактуры.
Во время выполнения GenerateInvoiceXml получаю ошибку: "Method 'Unit_' not supported by automation object". Т.е. не получается указать единицы измерения для строк счет-фактуры. Код заполнения данных строки следующий:
Item := TInvoiceItem.Create(Self); Item.Product := 'Электроэнергия'; Item.Unit_ := 'кВт.ч'; Item.Quantity := '1000'; Item.Price := '2.00'; Item.SubtotalWithVatExcluded := '2000'; Item.TaxRateValue := 3; Item.Vat := '360'; Item.SubTotal := '2360';
Если закомментировать строку
// Item.Unit_ := 'кВт.ч';
XML успешно формируется, но вместо единиц измерения в счет-фактуре получаем прочерк. Помогите разобраться с проблемой.
Здравствуйте.
По счет-фактуре в личном кабинете статус "Документооборот завершен", а по api приходит статус "OutboundNotFinished". Не подскажете, в чем может быть проблема?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.