Comments (10)
Уважаемые разработчики. Так что Вы по этому поводу думаете?
from diadocsdk-csharp.
Я не разработчик Diadoc SDK, но разрабатываю интеграционные сервисы для Диадока. На самом деле есть такая проблема и ее хотелось бы решить.
from diadocsdk-csharp.
А откуда вообще эта задача добавлять произвольные вложения берется? Мне кажется, в каждом конкретном месте всегда известно, что именно ты добавляешь, и необходимости в этом методе нет. Я только один пример вижу и то сомнительный - в тестах желание отправить все возможные типы документов, например... А еще?
from diadocsdk-csharp.
Например, у тебя есть отдельный код, который создает вложения и отдельный код, который ставит подписи. Чтобы поставить подписи тебе нужно делать switch по типу вложения, либо через рефлексию обращаться к свойствам. Или нужно получить список номеров документов у полуформализованных.
Вложения имеют общие свойства и эти свойства по логике одинаковы. Поэтому есть смысл работать со списком вложений.
from diadocsdk-csharp.
@trurl123, А как быть с тем, что некоторые типы (например, полуформализованные) позволяют дополнительную информацию передавать?
from diadocsdk-csharp.
@einfoman Для полуформализованных тоже можно отдельный интерфейс завести, который будет наследоваться от базового интерфейса для документа.
from diadocsdk-csharp.
А откуда вообще эта задача добавлять произвольные вложения берется? Мне кажется, в каждом конкретном месте всегда известно, что именно ты добавляешь...
@asvyazin Кроме того случая, когда логика отправки документов отделена от логики их обработки.
Система ЭДО, которую я поддерживаю, является мультипровайдерной и, как следствие, имеет несколько слоёв. В частности, у нас логика обработки ЭД, например, создание подписи, генерации парных служебных документов: титула покупателя для подписи им титула продавца, а также создание ИоП или УоУ, - всё это мы делаем самостоятельно, дабы не зависеть от конкретной реализации этих функций у провайдера; и этот код вынесен на отдельный слой системы.
А работа с непосредственно с API провайдера находится уровнем ниже и строится так, чтобы соответствующие классы были лишь простейшими транслятором между сущностями и операциями нашей системы и сущностями и операциями конкретного провайдера.
Именно поэтому мы и хотим избавиться от копипасты при отправке: функция отправки сообщения в адаптере для провайдера Диадок у нас получает аналог Вашего типа MessageToPost: адрес отправителя + адрес получателя + список объектов на отправку (ближе всего это к помеси Entity + SignedContent) – и по факту всё, что ей надо сделать это вызвать PostMessage. Вот только сейчас для этого приходится использовать монструозный код из примера в первом сообщении.
ЗЫ. Кстати, пример с кодом подписи @trurl123 тоже очень показателен: представьте что для доступа к ЭЦП приходится использовать отдельный сервис наподобие КриптоПро DSS.
from diadocsdk-csharp.
@trurl123, А как быть с тем, что некоторые типы (например, полуформализованные) позволяют дополнительную информацию передавать?
@einfoman Для полуформализованных тоже можно отдельный интерфейс завести, который будет наследоваться от базового интерфейса для документа.
Действительно, вариантов масса. Например для начала сгруппировать дополнительную информацию по её типу и сделать на каждую свой интерфейс:
IAttachmentWithComment
- если у объекта есть комментарийIAttachmentWithRelatedDocuments
- если для объекта можно устанавливать связанные документы и т.п.
А как все такие интерфейсы будут - собрать из них уже составные типа
INonformalizedAttachment : IAttachmentWithComment, IAttachmentWithRelatedDocuments
в которые добавить свойства, которые относятся именно к неформализованным документам и ни к каким либо ещё.
from diadocsdk-csharp.
Спят усталые игрушки, книжки спят... =)
from diadocsdk-csharp.
Оставлю ссылки здесь и закрою тикет:
from diadocsdk-csharp.
Related Issues (20)
- Как подписать неформализированый tovtorg_05_02_01 входящий документ HOT 2
- Документы с промежуточным получателем (proxyBoxId)
- что нужно написать ,для выбора (Доп. соглашение к договору) в (ProformaInvoice) HOT 5
- (ResolutionRequestTask.Send): ##100[Ошибка сервера Диадок]code:404, HTTP
- Как получить из подписи данные юр. лица
- Invalid API client id HOT 1
- Подписание актов Торг2
- Верно ли мы определяем дату приемки - AcceptanceDate
- GetDocflowEvents не возвращает события. HOT 1
- Работа с двутитульными документами
- Ошибка при с МЧД HOT 5
- УПД со сведениями о прослеживаемых товарах. графа 14 Стоимость товара, подлежащего прослеживаемости
- Ошибка - Попытка установить соединение была безуспешной . diadoc-api.kontur.ru:443
- Статус Контрагента
- Ограничение на частоту отправки запросов в API Диадкок
- Получить поле «группа» у контрагента. HOT 4
- Текст ошибки в API при аннулировании в роуминге
- Как получить табличную часть документа? HOT 1
- Отсутствует сущность, на которую ссылается направление на подписание
- Получить документы по id шаблона
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from diadocsdk-csharp.