Протокол обмена данными представляет из себя json-объект (далее — контейнер), который содержит ряд обязательных к заполнению свойств (полей):
При первичном создании сообщения системой-отправителем указывается тип 0 — Request. В свою очередь после получения целевой системой сообщения и его обработки она должна сформировать контейнер с типом сообщения 1 — Response. Тип 3 — Event указывается, если требуется уведомить целевую систему о каком—то событии в источнике, без передачи данных.
"Properties":[{"Name":"object", "Value":"123"},{"Name":"FilePath", "Value":"C:\Users\1.txt"}]
. ErrorReason | ErrorCode |
---|---|
NoError | 0 |
ValidateError | 1 |
XmlFileError | 2 |
PdfFileError | 3 |
JpgFileError | 4 |
ProcessingError | 5 |
BaseFieldsError | 6 |
В Properties можно передавать специальные пары — команды — сигналы, указывающие что нужно делать целевой системе с содержимым контейнера.
Если передать property с полями Name = command, Value = edmxml, то ожидается, что в целевой системе есть обработка, в которой присутствует команда с таким именем.
В совокупности предполагается, что в контейнер собирается максимальное количество информации об объекте, а также максимально требуемый набор команд, которые могут быть использованы в разных системах относительно этого объекта. Например контейнер уходит в системы А и В. В системе А описано поведение при получении команды rawxml, а в системе В описано поведение с командой rawjson. В таком случае в источнике упаковывается контейнер с обеими командами и всеми свойствами, которые нужны для выполнения команд. Именования свойств также должны быть согласованы между целевой и начальной системами.
Рассмотрим пример добавления документа через Nprotocol. В коллекцию Properties обязательно нужно добавить следующие свойства:
{
"MessageId": "F4B4AF8D-DF51-4CDA-8A04-CF8BF44A47F5",
"CreationDateTime": "2025-04-01",
"SourcePoint": "SourceDataBase",
"TargetPoints": [
"BUH_1C",
"Docoteca"
],
"MessageType": 0,
"Properties": [
{
"Name": "DocumentType",
"Value": "900"
},
{
"Name": "command",
"Value": "api_addDocument"
},
{
"Name": "Fields",
"Value": "[{\"FieldName\":\"Номер документа\", \"FieldValue\":\"105\"},{\"FieldName\":\"Дата документа\", \"FieldValue\":\"30.02.2025\"}]"
}
],
"Attachments": [
{
"Base64String": "Tkjkjujhhjgh",
"FileName": "C:\\НаименованиеКонтрагента\\Приходы\\Год\\КодСущности\\78600.pdf"
}
]
}