Как загрузить документ с вложениями в Exact Online с помощью REST API

Я хочу загрузить файлы в качестве вложения к документу в Exact Online.

Для создания документа использовался следующий SQL:

insert into exactonlinerest..documents
( salesinvoicenumber
, type
, subject
, account
)
select 16700001
,      10
,      'subject 3'
,      id 
from   Accounts 
where  code like '%24274514'

Это создает документ, связанный со счетом продажи Exact 16700001, и связывает его с учетной записью (клиентом) 24274514.

Когда я выполняю следующий оператор вставки через REST API Exact Online:

insert into exactonlinerest..DocumentAttachments 
( attachment
, document
, filename
)
select attachment
,      'ea2d9221-31b0-4217-a82f-f29c5d517b41'
,      filename 
from   exactonlinerest..documentattachments
where  filename like 'Loonstrook%'

Я получаю сообщение об ошибке:

itgenoda001: Verplicht: Bijlage (https://start.exactonline.nl/api/v1/102673/documents/DocumentAttachments)

Как мне загрузить эти существующие платежные ведомости, содержащиеся в Exact Online, в качестве приложений к новому документу?

PS. GUID ea2d9221... был найден путем запроса документов после их вставки.


person Guido Leenders    schedule 09.12.2016    source источник


Ответы (1)


Столбец attachment таблицы REST API documentattachments всегда имеет значение null при извлечении.

Вы можете использовать псевдостолбец attachmentfromurl, например:

insert into exactonlinerest..DocumentAttachments 
( attachment
, document
, filename
)
select attachmentfromurl
,      'ea2d9221-31b0-4217-a82f-f29c5d517b41'
,      filename 
from   exactonlinerest..documentattachments
where  filename like 'Loonstrook%'

Столбец attachmentfromurl не может быть заменен табличной функцией http_get Invantive SQL или аналогичной нормальной функцией SQL, поскольку токен OAuth2 не добавляется автоматически в HTTP-запрос, поскольку Exact использует URL-адрес, например:

https://start.exactonline. nl/docs/SysAttachment.aspx?ID=f28fd698-756f-4052-bea9-fc2130fe9ab1&Подразделение=102673

когда вложение документа исходит от самого Exact.

Для внешних источников, таких как http://www.cnn.com, это будет работать.

Результат:

Результат добавления вложений несколько раз

РЕДАКТИРОВАТЬ:

Вы также можете загружать файлы из файловой системы, используя такой запрос, как:

insert into exactonlinerest..DocumentAttachments
( attachment
, document
, filename
)
select file_contents
,      dct.some_guid
,      file_path
from   ( select min(id) some_guid from exactonlinerest..documents ) dct
join   files('c:\windows\system32', '*.png', false)@os
join   read_file(file_path)@os
union all
select file_contents
,      dct.some_guid
,      file_path
from   ( select min(id) some_guid from exactonlinerest..documents ) dct
join   files('c:\windows\system32', '*.exe', false)@os
join   read_file(file_path)@os

Обратите внимание, что существует ограничение в 22 МБ на файл.

person Guido Leenders    schedule 09.12.2016